设有这样一种架构, 它对激活分片予以支持, 同时也支持8位量化, 这些技术能够对提高模型的效率以及性能起到助力作用。其中, 激活分片属于一种优化技术, 其意在对内存消耗予以降低 , 以此加速推断进程。位于神经网络里, 进行相关活动之后输出的才被称作激活, 这里的相关活动指的是在每层网络里经由激活函数作用之后。触发激活, 把这些被激活的数据划分成好多片段(shards), 每一个片段都代表神经网络里面的一部分激活输出。借由把激活数据切割成片段, 模型能够更高效地管理内存, 并且能够在多个用于计算的设施上, 并行处理不一样的激活片段, 进而提升推断的速度以及效率。
拥有8位量化之称的8-bit Quantization, 是一项能减少模型计算以及存储需求的技术, 它借助把浮点数参数还有激活值转化成更小的整数或者定点数来达成, 8位量化特别指的是将参数或者激活值给呈现为8位也就是一个字节的整数, 8位量化能够明显削减模型于内存以及计算资源方面的需求, 进而加快推断速度并降低功耗, 适用于像移动设备或者边缘计算环境这类资源受限的场景。
(9)最大序列长度(上下文): 8192个令牌, 此为其具体数值, 代表着特定的长度范围。
架构所支持的, 最大的上下文序列长度, 是8192个Token, 而这, 对架构能够处理的输入序列的最大长度, 形成了限制。
2.2 科学计算库
用于科学计算的Grok-1采用了名为JAX的库, JAX也就是可加速的Python, 它是一种开源软件库, 用于高性能数值计算以及深度学习, 该库由Google开发, 它能够提供NumPy的 功能, 并且还让用户可以利用 GPU、TPU等加速器来进行高效的计算, JAX是依照函数式编程、自动微分和XLA编译器等方面的理念设计的, 这使得它成为了像Flax、Haiku等许多深度学习框架的底层支持。JAX不但支持自动微分, 而且能够把用户所编写的Python代码转变成高效的XLA内核, 进而提升计算性能, 这致使JAX一跃成为深度学习研究以及实践里的重要工具当中的一个。
2.3 开发语言
把Grok - 1作为编程语言来采用的是Rust, Rust是一种经由Mozilla开发出来的系统级编程语言, 是被设计成安全、并发以及实用的编程语言, 其目的在于解决像C、C++那些语言所具存的安全性与内存安全性的问题, Rust具备好多特性, 像零成本抽象、模式匹配、类型系统、所有权系统等等, 这些特性让编写高性能且安全的软件变得越发易于实现, Rust还对并发编程予以支持, 给出了轻量级的线程以及通道机制, 让编写并发程序变得更为简易且安全。Rust在特定领域得到了广泛应用, 这些领域包括系统编程, 嵌入式开发, 网络服务等, 原因在于其在性能以及安全性方面具备优势。
Rust是一种系统编程语言, 它注重安全, 注重并发, 注重性能, 它旨在帮助开发者构建软件, 这软件是高效的, 也是可靠的, 且不牺牲速度, 不牺牲低级 控制 , 这使得Rust在系统编程领域, 在网络服务领域, 在并发应用领域, 在嵌入式设备等领域越来越受欢迎, 许多公司和项目已经采用Rust来提高其软件的性能, 也来提高安全性, 这些公司和项目包括Mozilla, 包括Dropbox, 包括Cloudflare等, 美国政府内部的一些机构和项目开始探索Rust, 也开始采用Rust, 特别是那些关注软件安全的部门,特别 是那些关注软件性能的部门。比如, 由美国国家安全局也就是NSA所发布的一份报告里面, 推荐运用内存安全语言, 像Rust这种, 以此来强化软件开发的安全性。
2.4 训练架构
一种采用人工神经网络的训练架构是MoE—混合专家架构(Mixture-of-Experts), 它最早由Jacobs等人在1991年提出, 那篇论文是《Adaptive Mixtures of Local Experts》。其核心思想是一种方法, 这种方法把多个局部专家模型组合起来, 目的是适应不同的输入数据分布, 而且这些专家模型能够动态地分配权重。在MoE里, 每个专家模型都历经训练, 目的是解决特定的子问题, 而门控网络的作用是, 在给定输入情形下, 决定哪个专家模型应当负责给出最终的输出。MoE出现的时间比较早, 它是为解决算法复杂性、提升训练性能、降低成本而被提出的。与Transformer不一样, 其架构充分借助GPU集群的分布式计算能力, 把多任务执行从算法结构层面转移至GPU集群层面, 进而降低算法的结构复杂性。
经典MoE示意图
Mixture-of-Experts架构的主要组成部分:
存在着这么一种被称作专家模型(Expert Models)的事物, 其中, 每一个专家模型均为一个独立的神经网络, 这些神经网络, 它们被精心设计成, 是用来解决特定之某类子问题的, 或者在特定的那种输入数据分布状况之下能够有着良好表现的。每一个专家模型, 都对输入数据予以接收, 并且输出与之相对应的预测结果。
门控网络, 也就是Gating Network , 其用途是用于动态地对各个专家模型分配权重, 给定输入数据后, 由门控网络去计算每个专家模型针对当前输入数据的相关性或者说重要性, 而这些权重通常借助softmax函数来进行归一化, 目的是为了确保它们的总和为1。
在混合操作(Mixture Operation)里, 先把每个专家模型的输出, 与门控网络计算得出的权重进行相乘, 之后再相加, 这样便可得到最终的输出, 每个专家模型的输出都要被乘以相应的权重, 接着再相加, 以此来产生最终的输出。
训练策略方面, MoE 架构一般运用端到端的反向传播算法来开展训练, 于训练进程当中, 专家模型的参数会被调整, 门控网络的参数同样会被调整, 目的是将模型在训练数据上的损失函数降至最低, 门控网络的训练目标通常是把模型的整体性能提升至最高, 并且它也能够借助额外的正则化策略来增强模型的泛化能力。
总的来说, Mixture - of - Experts架构借助把多个专家模型予以组合, 靠着门控网络不断进行权重的动态分配, 能够提升模型的灵活程度以及适应能力, 进而在应对复杂的输入数据分布状况时收获更为出色的性能展现。MoE架构的专家能够是任意神经网络, 像多层感知器(即MLP)、卷积神经网络(也就是CNN)等。
早在1991年就已问世的MoE, 那时的专家模型主要运用知识库以及规则引擎。随着NLP各类神经网络算法和架构不断演进, MoE架构也跟着演进。从Grok - 1的技术详情能够看出, Grok在MoE架构当中依旧结合了Transformer, 它是通过把MoE组件嵌入到Transformer的每层当中的方式, 来增强每层的表达能力的。

MoE+Transformer混合架构示意图
如图所示, 在每一个Transformer层当中, 能够把输入划分成多个子空间, 并且给每个子空间配置一个MoE组件。这些MoE组件会并行地去处理各个子空间的信息, 进而产生相应的输出。之后, 把这些输出进行组合, 以此作为下一层Transformer的输入。如此一来, 每个Transformer层都能够从多个专家的信息里受益, 并且在整个模型中达成更强大的建模能力。将每个MoE层构成的个体予以剖析, 它是由那些作为“专家”的、单个的、独立的前馈神经网络集合所共同组建而成的, 并且, 存在着这样一个门控函数, 它会使用softmax激活函数, 以此种方式, 来对那些作为“专家”的神经网络集合的概率分布展开建模。
每个MoE层也就是底部块, 和Transformer层即上部块相互交错, 对于每个输入Token像是“roses”, 门控模块会从多个专家模型里动态挑选出两个最为相关的专家, 这在MoE层里是用蓝色网格表示的, 然后, 由这两位专家模型输出的加权平均值会被传送到上层的Transformer层, 对于输入序列里的下一个Token, 会挑选两个不一样的专家系统。
3. 为什么不用经典Transformer?
3.1 支持超大规模参数和复杂任务
教育部允许在不明显增添计算成本的情形下扩充模型容量。科技部架构借助在处理输入之际仅仅激活跟输入有关联的专家子集来达成这点。也就是说, 针对每一个输入, 唯有与之相关的一部分专家会被激活, 而别的专家则处于未激活状态。
因仅有部分专家被激活, 所以MoE架构事实上仅需处理一部分模型参数, 并非整个模型的参数。这致使模型的参数量得以增多, 然而实际的计算负载却只是增添了少量或者并未增加。也就是说, 虽然模型的容量有所增加, 可是由于仅有部分参数被激活 , 于是模型的计算成本并没有明显增加。
MoE架构因这种设计, 得以更好地运用参数, 去应对更为复杂的任务, 以及规模更大的数据情况, 然而却不会明显增添计算成本。
3.2 更好的计算效率和性能
MoE提升了计算效率, 原因在于它能够依据输入动态激活模型的各异部分, 这表示针对每一处输入, 仅有一小部分专家会被运算, 进而削减了不必要的计算并加快了处理速度, 研究显示, MoE架构在多个任务以及基准测试里提供了优于经典Transformer架构的性能, 借助合适的专家挑选以及路由策略, MoE能够提供更为丰富的数据表征以及更为精细的决策能力。
3.3 灵活性和专业化考虑
在MoE架构里, 每一个“专家”, 都能够进行学习, 而且专门去处理输入空间的不一样的部分。这表明在MoE架构中, 不同的专家, 被设计成承担处理输入数据的不同方面, 或不同子空间的职责, 并非不加区分地处理整个输入。这种专业化的设计, 致使模型能够更灵活地适应多样化的数据特征, 以及复杂的任务需求。
假设有用于自然语言处理任务的一个MoE架构, 在这个模型里, 能有一个负责处理词义理解的专家, 可有另一个负责处理句法结构分析的专家, 还会有另一个负责处理上下文信息推理的专家等 , 每个专家在训练进程中会学到针对自身负责那部分输入数据的特定特征以及模式, 进而让模型能够更好地理解并利用输入数据的不同方面。
借助这种专业化设计, MoE架构能够更优地顺应多样化数据特征以及复杂任务需求, 故而提升了模型的灵活性与泛化能力。这亦是MoE架构于诸多任务及基准测试里表现优异的缘由之一。
3.4 拥有天然的可扩展性和并行
设计MoE架构时允许不同专家在不同处理单元各自独立运行, 每个专家仅处理输入空间的一部分故而它们之间不存在直接依赖关系, 这意味着每个专家能够在独立处理单元并行执行, 无需等待其他专家结果, 这种天然并行性致使MoE架构能在并行计算环境高效运行。
因为MoE架构能够并行地对输入数据予以处理, 所以它在延伸至大型数据集以及复杂任务之际具备很强的能力, 于处理大规模数据集之时, 能够把数据分派给多个处理单元, 每个处理单元负责独立自主地处理一部分数据, 如此不但能够加快处理速度, 还能够对计算资源予以有效利用。
该架构的并行计算特性致使其能够有效地运用计算资源, 进而维持高效的资源利用率状态。凭借运用现代计算平台的并行计算能力, MoE架构可在多个处理单元上并行执行专家网络, 实现高效的计算成效。
3.5 节省成本和能耗
MoE架构运用稀疏激活的专家混合架构去扩展模型容量, 与此同时, 跟密集变体相较, 其训练成本大幅降低。相关研究显示, 当存在1.2万亿个参数时, MoE训练架构的参数量大概是GPT - 3的7倍, 然而却仅消耗了训练GPT - 3能耗的1/3, 并且在推理时需要一半的计算触发器, 同时在29个NLP任务里依旧达成了更好的零次、一次以及少次学习性能。
当然, MoE存在一个问题, 那便是静态内存占用量大。虽说运用稀疏门控网络能够降低计算成本, 然而参数总数会伴随专家数量的增多呈线性或者亚线性增长。增添专家数量得保留大量硬件设备。所以, 节省了动态(已使用)功率, 却未节省静态(保留)功率。节能技术要有在不使用硬件设备时使其处于低功率状态的能力, 如此有助于降低保留能耗。
4. 最后
具有广泛适用性的分治原理, 是贯穿应用数学以及计算机科学始终的, 通过把复杂问题分解成更简单的子问题, 并且借助组合这些子问题的解决方案, 从而能够更高效地解决复杂问题, Grok - 1采用Mixture-of-Experts(MoE)架构, 也是基于类似的分治原理。以这样的架构, 能让运用较低成本去处理规模超大参数量的大型语言模型的训练具备可行性。这需依据把模型划分成多个专家的方式, 再针对每个专家开展单独处理, 最后把它们各自的输出予以组合, 借此达成具备更高效率、更为优雅的算法结构。这样一种分治的办法, 为处理复杂的计算问题供给了一种具有效用的方式, 为未来的研究以及应用给予了全新的思路还有可能性。
标签: Grok架构 激活分片 8位量化 MoE架构 混合专家架构
还木有评论哦,快来抢沙发吧~