一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

模型训练方法和装置与流程

2022-03-16 03:32:11 来源:中国专利 TAG:


1.本公开涉及自然语言处理领域,具体而言,涉及一种模型训练方法和装置。


背景技术:

2.近年来,预训练成为自然语言处理以及跨模态表示学习等领域关注的焦点,但随着参数规模和模型能力的增长,越来越多的工作涉及探索如何使用有限资源实现高效超大规模的预训练。这是因为,当预训练扩展到千亿及以上参数的超大规模时,对硬件资源的需求,尤其是对模型加速单元的需求,将大幅增加。但是在实际项目中,一方面,考虑到预训练虽然可以通过并行策略放在若干台服务器上执行,但是这种代码实现起来非常复杂,因此,通常使用一台服务器执行预训练,即将预训练所需的所有模型加速单元都集成在一台服务器中,但是一台服务器上能够集成的模型加速单元一般具有上限,当达到上限时,就只能增加训练时间来达到训练目的。


技术实现要素:

3.有鉴于此,本公开实施例提出一种技术方案(称为mixture-of-experts,moe),和现有技术相比,以更少资源和相对高效地完成超大规模的模型训练或预训练。
4.根据本公开实施例的第一方面,提供一种模型训练方法,包括:
5.对第一模型进行训练,以获得训练后的第一模型的参数集,所述第一模型中的第一多个层之间共享相同的权值参数;
6.将所述参数集复制多次,作为第二模型的第二多个层的权值参数;
7.对所述第二模型进行训练,以实现模型收敛,
8.其中,所述第一模型和所述第二模型具有相同的计算图,所述第二多个层等于或者多于所述第一多个层。
9.在一些实施例中,所述模型训练方法还包括:
10.在所述对第一模型进行训练的步骤之前,通过在待训练模型中指定所述第一多个层之间共享权值参数以得到所述第一模型;以及
11.在所述将所述参数集复制多次的步骤之前,通过在第一模型中指定所述第一多个层之间不共享权值参数以得到所述第二模型。
12.在一些实施例中,还包括:在所述对第一模型进行训练和所述将所述参数集复制多次之间,判断所述第一模型的实际结果与预期结果之间的误差是否满足设定条件,如果满足,则执行所述将所述参数集复制多次的步骤。
13.在一些实施例中,在包括一个中央处理器和多个图形处理单元的服务器上执行所述对第一模型进行训练以及所述对所述第二模型进行训练的步骤,其中,所述对所述第二模型进行训练的步骤采用cpu offload模式。
14.在一些实施例中,所述计算图为transformer或bert结构。
15.根据本公开实施例的第二方面,提供一种模型训练装置,包括:
16.第一训练单元,用于对第一模型进行训练,以获得训练后的第一模型的参数集,所述第一模型中的第一多个层之间共享相同的权值参数;
17.参数复制单元,用于将所述参数集复制多次,作为第二模型的第二多个层的权值参数;
18.第二训练单元,用于对所述第二模型进行训练,以实现模型收敛,其中,所述第一模型和所述第二模型具有相同的计算图,所述第二多个层等于或者多于所述第一多个层。
19.在一些实施例中,所述模型训练装置还包括:
20.第一配置单元,用于通过在待训练模型中指定第一多个层之间共享权值参数以得到所述第一模型;
21.第二配置单元,用于通过在所述待训练模型中指定所述第一多个层之间不共享权值参数以得到所述第二模型。
22.在一些实施例中,所述计算图为transformer或bert结构。
23.根据本公开实施例的第三方面,提供一种服务器,包括存储器、调度器和多个模型加速单元,所述存储器还存储可由所述处理器和所述多个模型加速单元执行的计算机指令,所述计算机指令被执行时,实现上述的模型训练方法。
24.根据本公开实施例的第四方面,提供一种计算机可读介质,所述计算机可读介质存储有可由电子设备执行的计算机指令,所述计算机指令被执行时,实现上述的模型训练方法。
25.总体上,本实施例提供的方法和现有方案相比,训练时间和服务器集成的模型加速单元的数量至少一个会减少。
附图说明
26.通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
27.图1是应用服务的部署示意图;
28.图2是本公开一实施例提供的训练用的服务器的示意图;
29.图3是一个示例性模型的网络结构的示意图;
30.图4是本公开一实施例提供的一种针对特定网络结构的模型训练方法的流程图;
31.图5是本公开一实施例提供的针对特定网络结构的模型训练装置的示意图。
具体实施方式
32.以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
33.关于神经网络,一般指人工神经网络(artificial neural network,简写为ann),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法网络。一个经典的神经网络,也是最简单的神经网络结构,包含三个层次:输入层、输出层和中间层(又称隐藏层)。输入层、输出层和中间层又各自包括多个节点。节点是神经网络中的最小处理单元。经
由大量、简单功能的神节点的广泛的互相连接能够形成非常复杂的神经网络结构。
34.关于神经网络模型,在神经网络中,将节点数学化,产生节点的数学模型,神经网络中的大量的节点的数学模型构成了神经网络模型。
35.关于预训练(pre-trained),众所周知,模型训练通常需要大量资源,包括但不局限于大量需要标注的训练样本以及执行训练的计算机资源,因此模型训练并不容易执行。而通过预训练,可提供具有较优权值参数的“半成品”的模型,我们通常将其称为预训练模型。在将预训练模型应用到真实场景下之前,还可采用真实场景下采集到的样本数据对预训练模型进行一个增量训练,通过增量训练,实现对预训练模型中的权值参数进行微调,从而得到适用于真实场景下的“成品”模型,我们通常将其称为已经训练好的模型。但是预训练扩展到千亿及以上参数的超大规模时,预训练所需要的计算资源和超长时间都构成了挑战。
36.关于模型加速单元,是包括诸如npu(嵌入式神经网络处理器)、tpu(张量处理单元)等各种由不同公司生产的、专用于特定神经网络模型的硬件执行单元。
37.关于计算图(computation graph),目前深度学习框架主要有声明式编程和命令式编程两种编程方式。声明式编程,程序代码先定义一个神经网络模型结构,用于描述了计算逻辑,但不立即执行,只有在调用该网络模型结构的程序代码执行时,该神经网络模型结构才被执行,该神经网络模型结构包括多个算子(或者算子的符号表达式)以及它们之间的连接关系,并可采用图形化方式示出,因此该神经网络模型结构被称为静态计算图。而命令式编程,程序代码直接返回运算的结果,神经网络模型结构的定义和执行同步。通常来说,静态图方便对整体上的神经网络模型做编译优化,更有利于性能的提升,而动态图则非常便于用户对具体程序进行调试。
38.本公开的设想是将针对超大规模的训练(包括预训练),分为两个阶段执行,在第一阶段,仅让模型使用少量权值参数(有些文章中称为权重、权重系数、权值参数)进行高效的训练,以实现模型收敛,然后在第二阶段,根据第一阶段得到的模型继续进行训练,让模型可以在较低的损失水平开始收敛,大幅降低大模型收敛所需的训练步数。在此条件下,第二阶段的训练则可以采用cpu offload模式,cpu offload模式是指通过将数据和计算从专用处理单元(例如gpu)卸载到中央处理器(例如将每次前向运算没有用到的参数储存在cpu内存中,而专用处理器要用到时,从cpu内存中读取),来减少神经网络训练期间对于专用处理单元的内存占用的方法,以此来大幅降低训练时对专用处理单元的内存占用,以时间换空间,实现低资源的超大规模预训练。由于训练用的专用处理单元(例如gpu)通常价格昂贵,因此,通过这种两个阶段的训练方法能够降低模型训练的成本。而且二阶段由于一阶段的成果,其训练并不需要耗费大量的训练时间,由此实现了总体上训练成本和训练时间的均衡。为了方便,下文将统一使用“训练”表征训练或预训练。下面详细介绍本公开各个实施例。
39.图1是应用服务的部署示意图。如图上所示,部署图包括经由网络101联通的终端103和服务器集群102。
40.网络101为基于交换信号实现的各种通信技术之一或多种通信技术的组合,包括但不限于采用电和/或光传导线缆的有线技术,以及采用红外、射频和/或其它形式的无线技术。在不同的应用场景下,网络101可以是互联网、广域网或局域网,可以是有线网络或无
线网络。例如网络101为公司内部的局域网。
41.服务器集群102由多个物理服务器构成。终端103可以是智能手机、平板电脑、笔记本电脑、台式计算机等电子设备。服务器集群102上部署各种应用系统,终端103可以经由网络101获取这些应用系统提供的服务。
42.随着云计算的发展,服务器集群102可以部署云服务系统。云服务系统能够汇聚云服务器集群中的软硬件资源,并根据来自终端103的请求提供软硬件服务。例如,云服务系统可以向用户提供一个具有指定配置的计算机(可能是虚拟机),其中指定配置包括诸如处理器型号、内存大小、硬盘大小、操作系统类型、在操作系统之上部署的各种软件(例如文本处理软件、视频播放软件)类型,等等。用户通过终端103远程访问并使用这个计算机以完成多种工作,例如,将其作为一个研发服务器进行代码研发工作。再例如,云服务系统基于用户请求提供一个指定大小的存储空间,使得用户可在该存储空间内存储电子资料。利用云服务系统,研发人员还申请一个训练服务器,以便于研发人员可基于本公开各个实施例实施超大规模的模型训练。
43.图2是本公开一实施例提供的训练用的服务器的示意图。如图上所示,服务器200作为执行模型训练或模型执行的专用电子设备,可以包括但不限于:经由总线205耦接的调度器201、存储单元203、i/o接口204、多个专用处理单元202。
44.存储单元203可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)和/或高速缓存存储单元。存储单元203还可以包括非易失性存储单元形式的可读介质,例如,只读存储单元(rom)、闪存存储器和各种磁盘存储器。
45.存储单元203可以存储各种程序模块和数据,各种程序模块包括操作系统、提供诸如文本处理、视频播放、软件编辑和编译等功能的应用程序。这些应用程序的可执行代码被调度器201从存储单元203中读出并执行,以达到这些程序模块预定提供的功能。调度器201一般为中央处理器(cpu)。
46.总线205可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
47.服务器200可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该服务器200交互的设备通信,和/或与使得服务器200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口204进行。并且,服务器200还可以通过网络适配器(未示出)与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。例如通过网络适配器,图1中的终端103可访问服务器200。应当明白,尽管图中未示出,基于服务器200可使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
48.在本公开中,在存储单元中存储的各种程序模块和数据包括初始模型、实现训练的代码、训练样本、中间状态的模型、最终模型。初始模型(权值参数为初始状态的神经网络框架)、中间状态的模型和最终模型通过训练得到,由于训练不会改变模型的网络结构,因此初始模型、中间状态的模型和最终模型都具有相同的网络结构。训练的过程是从初始模型出发,不断地修正权值参数以产生中间状态的模型,并得到最终模型。训练涉及的功能包
括:模型部署、梯度误差计算、权值参数修正、等等。模型可以以静态文件或者动态的代码文件的形式存在。可使用模型集成开发软件实现模型开发。目前,神经网络领域的科学家们已经研发出多个集编辑、编译、部署等功能于一体的模型集成开发软件平台,每个集成开发软件平台至少专用于一个特定模型的集成开发,因此本公开所要进行的训练也可基于一个适配的集成开发软件平台实现。
49.在本公开中,训练样本不限定于多模态或单模态。诸如视觉信息、文本信息、音频信息等中的每一个被称为一种模态,相应地,多模态是指样本中包括两个或以上模态,单模态是指样本中只包括一种模态。训练样本可以是强监督数据,也可以是弱监督或无监督数据。
50.如图上所示,服务器200包括多个专用处理单元202。专用处理单元202例如为模型加速单元。由于传统的处理器架构设计,逻辑控制方面十分有效,而在大规模并行计算方面则效率不够,因此对模型计算并不高效。为此,开发出了模型加速单元,模型加速单元例如为神经网络加速单元(npu)。npu采用数据驱动并行计算的架构,用于处理各神经网络节点的大量运算(例如卷积、池化等)的处理单元。再例如,专用处理单元202例如为图形处理单元(gpu)。专用处理单元202还例如为图形处理单元。图形处理单元是专门做图像和图形相关运算工作的微处理器,由于它采用大量用于专门做图形计算的计算单元,使显卡减少了对cpu的依赖,承担了cpu原来承担的一些计算密集的图形图像处理工作,因此对于图像数据的处理效率大大提高。
51.多个专用处理单元202接受调度器201的控制。调度器201部署模型代码,将需要在多个专用处理单元202执行的代码发送给多个专用处理单元202。多个专用处理单元202在执行这些代码时,从存储单元203中的指定位置获取训练样本。
52.图3是一个示例性模型的网络结构的示意图。本公开实施例中所指的模型都可以具有如图3所示的网络结构。
53.参考图上所示,该模型是一个bert模型,包括输入层302、n个叠加起来的中间层301,各个中间层具有相同的拓扑结构,即各个中间层都包含相同的处理单元且各个处理单元之间的连接关系相同。各个处理单元如图上所示,包括多头自注意力机制层3011、求和和归一化层3012、前馈神经网络层3013和求和归一化层3014。各个处理单元之间的连接关系通过两者之间的虚线或实线示出。
54.进一步地,上述的每个中间层都可以表示为:layernorm(x sublayer(x)),sublayer(x)是分别是自注意力层3011和全连接前馈网络3013实现的函数。自注意力层3011实现的函数如下所示:
55.x*wq=q
ꢀꢀ
(1)
56.x*wk=k
ꢀꢀ
(2)
57.x*wv=v
ꢀꢀ
(3)
58.其中,x表示输入矩阵,权重矩阵wq,wk,wv表示权值参数,q、k和v表示查询矩阵(query)、键矩阵(key)和值矩阵(value)。
59.然后用公式(4)得到输出,并将输出给求和与归一化层302。
60.61.表示键向量的维数的平方根,t表示矩阵的转置。
62.全连接前馈网络3013包括两个线性交换,然后使用函数relu作为激活函数。
63.ffn(x)=relu(xw1 b1)w2 b2ꢀꢀ
(5)
64.x是输出矩阵,w1和w2是权值参数,b1和b2是偏置参数。
65.相应地,各个中间层具有相同的拓扑结构是指各个中间层对应的函数相同,模型训练就是为了能够获得各个层的函数使用的较优取值的权值参数,模型训练时,通过前向传播算法计算模型的实际结果,然后根据预期结果和实际结果计算误差,基于误差后向传播算法计算并逐层计算并修正权值参数。初始模型中各个层的函数可以统一采用初始权值参数,但在逐个层计算并修正各个层中的权值参数时,各个层的权值参数变得不同。
66.根据本公开的设想,提出一种模型训练方法,该模型训练方法针对的第一模型具有多个层,多个层具有相同拓扑结构(例如图3中的多个层301)。图4是该模型训练方法的流程图,包括:
67.步骤s01,对第一模型进行训练,以获得训练后的第一模型的参数集;
68.步骤s02,将训练后的第一模型的参数集复制多次,作为第二模型的第二多个层的权值参数;
69.步骤s03,对第二模型进行训练,以实现模型收敛。
70.在本实施例,步骤s01是针对第一模型的训练。由于第一模型中指定其包含的n1个层之间共享权值参数,因此训练后得到的参数集实际上是一个层的权值参数,但是由于第一模型是各个层共享权值参数,因此其他层的权值参数也指向这个参数集。步骤s02用于将经过训练得到的参数集复制n2次作为第二模型包含的n2个层的权值参数。步骤s03是针对步骤s02之后的第二模型进行模型训练,第二模型包含的n2个层各自具有独立的参数集,训练过程是将n2个层的参数集不断调整,以使得模型收敛。这里第一模型和第二模型可以具有相同的计算图,n1和n2个层具有同一拓扑结构,例如n1和n2个层均如图3中的层301,n1和n2大于或者等于2,且n2大于或等于n1。
71.本实施例所提供的模型训练方法,包括两次训练,第一次训练通过各个层之间共享权值参数使得需要训练的权值参数大为减少,然后将第一次训练得到的较优的权值参数复制到各个层之间不共享权值参数的模型中,进行第二次训练,以得到最终模型。举例说明。前文所述的12层的网络结构,每层有1万亿个权值参数,指定这12个层共享权值参数,则步骤s01是通过模型训练得到1万亿个权值参数,步骤s02将步骤s01获得的1万亿个较优的权值参数通过复制扩展为12万亿个权值参数,步骤s03是对具有12万亿个权值参数的模型进行训练以得到最终模型。可以理解,步骤s01可使用比现有方案集成更少的专用处理单元的服务器进行训练,s03同样可使用比现有方案集成更少的专用处理单元的服务器进行训练,由于步骤s03是在较优的权值参数集的基础上进行训练,因此可以使服务器以cpu offload模式进行训练,从而以空间换时间的方式获得训练结果。或者,如果步骤s01和s03的服务器中集成的专用处理单元的数量和现有方案一致,如此步骤s01和s03的训练时间将大幅减少。
72.因此总体上,本实施例提供的方法和现有方案相比,训练时间和服务器集成的模型加速单元的数量至少一个会减少。
73.此外,本领域的技术人员已知,模型训练一般包含两个过程:前向(forward)过程
与反向(backword)过程。前向过程是从训练样本输出实际结果,而反向过程就是梯度累积,或者误差反向传播,即按照反向的每个层的实际结果与预期结果之间的误差(或梯度累积)计算并修正每个层中的权值参数。而在梯度计算上,本实施例可使用accumulate n(累乘)而非add n(累加)的算子,将梯度大小的峰值降低至约2/l。由于第二阶段是计算所有的权值参数,因此第二阶段的权值参数计算量是第一阶段的l(l为模型层数)倍。
74.应理解,本实施例适用于训练任意具有多个层且所述多个层具有相同拓扑结构的模型,因此符合这一标准的模型,例如transformer和bert都可以应用本实施例。
75.在进一步的实施例中,第一模型可以视为一个伪模型,并可通过以下方式得到:通过在待训练模型中指定待训练模型的n1个层之间共享权值参数以将待训练模型转换为第一模型。然后,在第一模型中指定n1个层之间不共享权值参数并且将得到的一个层的权值参数复制n1次作为n1个层的权值参数,从而得到第二模型。
76.在进一步的实施例中,根据待训练模型构建第一模型,例如通过复制待训练模型得到第一模型,但在复制操作完成之后,将第一模型的n个层设置为各个层之间共享权值参数。
77.在进一步的实施例中,步骤s01和s02通过一个判断步骤实现自然过渡,具体地,基于步骤s01的每一轮训练结束之后,判断第一模型的实际结果与预期结果之间的误差是否满足设定条件(例如误差减小幅度小于设定标准),如果是,则结束步骤s01,开始执行步骤s02,如果否,则继续基于步骤s01进行下一轮训练。
78.在进一步的实施例中,根据要在其上执行模型训练的服务器中的专用处理单元的数量确定n1。例如,前文所述的12层的网络结构,每层有1万亿个权值参数,如果训练用的服务器中集成了例如4096个图形处理单元,根据4096个图形处理单元确定将每层的一半权值参数作为各个层之间共享的权值参数。
79.图5是本公开一实施例提供的模型训练装置的示意图。该模型训练装置500包括:第一训练单元601、参数复制单元602和第二训练单元603。
80.第一训练单元601用于对第一模型进行训练,以获得训练后的第一模型的参数集,第一模型中的n1个层之间共享相同的权值参数。
81.参数复制单元602将参数集复制多次,作为第二模型的n2个层的权值参数。
82.第二训练单元603用于对第二模型进行训练,以实现模型收敛。其中,第一模型和第二模型具有相同的计算图,n1和n2个层具有同一拓扑结构,例如n1和n2个层均如图3中的层301,n1和n2大于或者等于2,且n2大于或等于n1。
83.根据本实施例,第一训练单元601经由训练第一模型输出初始权值参数集502,参数复制单元602将初始权值参数集502复制为n2份作为第二模型的n2个层各自独立的权值参数。第二训练单元603对第二模型(第二模型使用n2个初始权值参数集502作为n2个层的权值参数)进行训练得到第一权值参数集503至第n2权值参数集503,由此即得到了可以实际应用的训练好的模型。
84.更具体地,结合图2所示,首先,由调度器201执行部署代码以将第一模型部署到专用处理单元202,专用处理单元202在执行完一轮训练之后,可基于模型的实际结果结合预期结果计算误差,并根据误差计算并修正权值参数,还可根据相邻两轮训练的误差减小幅度决定是否执行下一轮的训练,如果相邻两轮训练的误差减小幅度小于设定阈值,则不再
继续执行训练,而是将训练结果传递给调度器201。调度器201将初始权值参数集复制n2次作为第二模型的n2个层的权值参数,并执行部署代码以将待训练模型部署到专用处理单元202,专用处理单元202在执行完一轮训练之后,可基于模型的实际结果结合预期结果计算误差,并根据误差计算并修正权值参数,直到得到满足条件的第一权值参数集503至第n2权值参数集503。
85.本实施例的模型训练装置和本实施例提供的模型训练方法对应,并且都能够实现以下技术效果:和当前方案相比,训练时间和服务器集成的专用处理单元的数量至少一个会减少。
86.在一些实施例中,该模型训练装置还包括:第一配置单元,用于通过在待训练模型中指定n1个层之间共享权值参数以得到第一模型;第二配置单元,用于通过在第一模型中指定n1个层之间不共享权值参数以得到第二模型。
87.在一些实施例中,模型训练装置500还包括:判断单元,用于判断第一模型的实际结果与预期结果之间的误差是否满足设定条件,如果满足,则触发执行参数复制单元602。
88.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读介质上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
89.计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
90.计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
91.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,以及上述任意合适的组合。
92.可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如java、c ,还可以包括常规的过程式程序设计语言,例如c。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
93.以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献