探秘Grok-1-马斯克旗下xAI开源的大模型,参数量3140亿
作者: AINLP 来源: AINLP
引言
Grok-1是由马斯克旗下的人 工智能初创公司 xAl 开发的一款大型语言模型,是一个混合专家 (MoE)模型,拥有3140 亿 参数,使其成为目前参数量最大的开源大语言模型。Grok-1 的开发和训练过程遵循了开源的原则,其权重和网络架构已经公开,基于Apache 2.0许可,允许用户自由地使用、修改和分发,用于个人和商业用途 。
Grok-1
Grok-1信息如下 :
Grok-1
介绍
-
官方文档介绍:https://x.ai/blog/grok-os
-
github地址:https://github.com/xai-org/grok-1/tree/main
-
Hugging face地址:xai-org/grok-1 · Hugging Face
-
模型权重下载链接:magnet:?xt=urn:btih:5f96d43576e3d386c9ba65b883210a393b68210e&tr=https%3A%2F%2Facademictorrents.com%2Fannounce.php&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce
参数细节
ZozOGW
根据官方给出的信息可以窥探到Grok-1的参数细节包含以下几部分:
*基础模型和训练 :Grok-1是基于大量文本数据进行训练的,没有针对任何具体任务进行微调。它是一个通用的语言模型,可以应用于多种不同的自然语言处理任务。它的训练从头开始,使用JAX库和Rust语言组成的自定义训练堆栈。
参数数量 :Grok-1拥有3140亿个参数(839B),是目前参数量最大的开源大语言模型。这些参数在给定token上的激活权重为25%,表明了模型的规模和复杂性。
*混合专家模型(MoE) :Grok-1采用了混合专家系统的设计,这是一种将多个专家网络(expert networks)结合起来的方法,以提高模型的效率和性能。在Grok-1中,每个token从8个专家中选择2个进行处理。
*激活参数 :Grok-1的激活参数数量为860亿,这比Llama-2的70B参数还要多,表明其在处理语言任务时的潜在能力。
*嵌入和位置嵌入 :Grok-1使用旋转嵌入而非固定位置嵌入,这是一种处理序列数据的方法,可以提高模型处理长文本的能力。Tokenizer词汇大小为131,072,类似于GPT-4,嵌入大小为6,144。
*Transformer层 :模型包含64个Transformer层,每层都包含一个解码器层,由多头注意力块和密集块组成。多头注意力块有48个头用于查询,8个头用于键/值(KV),KV大小为128。密集块(密集前馈块)的加宽因子为8,隐藏层大小为32,768。
*量化 :Grok-1还提供了一些权重的8bit量化内容,这有助于减少模型的存储和计算需求,使其更适合在资源有限的环境中运行。
*运行要求 :由于Grok-1是一个规模较大的模型(314B参数),因此需要有足够的GPU内存的机器才能运行。据估计,可能需要一台拥有628GB GPU内存的机器(每个参数2字节)。
模型效果
参考链接:华尔街见闻
Grok 仍然是一个非常早期的测试版产品 —— 这是我们通过两个月的训练能够达到的最佳效果 —— 因此,希望在您的帮助下,它能在测试中迅速改进。
xAI 表示,Grok-1 的研发经历了四个月。在此期间,Grok-1 经历了多次迭代。
在公布了 xAI 创立的消息之后,他们训练了一个 330 亿参数的 LLM 原型 ——Grok-0。这个早期模型在标准 LM 测试基准上接近 LLaMA 2 (70B) 的能力,但只使用了一半的训练资源。之后,他们对模型的推理和编码能力进行了重大改进,最终开发出了 Grok-1,这是一款功能更为强大的 SOTA 语言模型,在 HumanEval 编码任务中达到了 63.2% 的成绩,在 MMLU 中达到了 73%。
xAI 使用了一些旨在衡量数学和推理能力的标准机器学习基准对 Grok-1 进行了一系列评估:
dXT5m4
在这些基准测试中,Grok-1 显示出了强劲的性能,超过了其计算类中的所有其他模型,包括 ChatGPT-3.5 和 Inflection-1。只有像 GPT-4 这样使用大量训练数据和计算资源训练的模型才能超越它。xAI 表示,这展示了他们在高效训练 LLM 方面取得的快速进展。
不过,xAI 也表示,由于这些基准可以在网上找到,他们不能排除模型无意中在这些数据上进行了训练。因此,他们在收集完数据集之后,根据去年 5 月底(数据截止日期之后)公布的 2023 年匈牙利全国高中数学期末考试题,对他们的模型(以及 Claude-2 和 GPT-4 模型)进行了人工评分。结果,Grok 以 C 级(59%)通过考试,Claude-2 也取得了类似的成绩(55%),而 GPT-4 则以 68% 的成绩获得了 B 级。xAI 表示,他们没有为应对这个考试而特别准备或调整模型。
8xKj64
综上所述,Grok-1 显示出了强劲的性能,超过了ChatGPT-3.5 和 Inflection-1,但还是低于GPT4和Claude2,可以说是开源模型中极具竞争力的存在 。
代码解析
下面让我们跟着代码细细探究Grok的结构:
代码链接:https://github.com/xai-org/grok-1/blob/main/model.py
代码解析如下:
1.Transformer Class :
-
定义了一个标准的Transformer模型,其中包含了自注意力层(MultiHeadAttention )和前馈网络(DenseBlock )。
-
call 方法接收嵌入向量、掩码和一个可选的记忆体结构并执行整个Transformer堆栈。
-
Transformer堆栈由DecoderLayer 实例组成,每个实例可能包含自注意力和前馈网络。
*DecoderLayer :
-
表示一个Transformer解码器层,包含一个自注意力模块 (MHABlock ) 和一个前馈网络 (DenseBlock )。
-
可能包含一个MoE层 (MoELayer ),该层使用Router 来动态将输入分配到不同的专家(experts )中。
*MHABlock :
-
执行多头自注意力操作,它调用MultiHeadAttention 模块。
-
支持使用cache来存储以前的key和value(用于增量解码)。
*MultiHeadAttention :
-
标准的多头自注意力实现。
-
支持旋转位置编码(RoPE),这是一种相对位置编码方法。
-
包括对于queries、keys和values的线性投影。
*MoELayer :
-
实现一个基于门控机制的MoE层,允许网络根据输入动态调用不同的专家。
-
结合了一个路由器(Router ),它负责计算将输入路由到不同专家的概率。
*Router :
-
提供了对输入进行软路由的能力,决定输入应该被发送到哪些专家处理。
-
每个专家以独立的网络层(如前馈网络)的形式存在。
*DenseBlock :
- 实现了前馈网络层,包含两个线性变换和一个GELU激活函数。
*InOutEmbed :
-
这是一个嵌入层,用于将输入token转换成嵌入向量。
-
也被用于将Transformer的输出嵌入转换回词汇表的大小,以得到最终的logits(与输入嵌入共享权重)。
*LanguageModel :
-
这个类包装了Transformer并提供了一个语言模型的接口。
-
它接收一系列tokens,运行模型,并输出logits,可以用来预测下一个token。
特别点和技术
1.位置编码 :
- 旋转位置编码(RoPE)将相对位置信息被整合到自注意力操作中。
*分片和并行化 :
-
使用JAX提供的分片操作(with_sharding_constraint ),可能用于在TPU或其他加速器上并行运行模型。
-
PartitionSpec 用于定义各种张量应如何分布在不同的设备上。
-
shard_map 用于映射MoE层的慢速矩阵乘法,以便利用数据并行性。
*混合精度 :
- 模型使用了bfloat16 数据类型,这是一种在深度学习中常见的混合精度技术,用于减少内存使用并加速计算。
*Mixture-of-Experts (MoE) :
- 代码实现了的门控网络,可以根据输入动态地选择最合适的“专家”子网络进行处理。这是大规模模型优化的一种策略,可以提高模型的容量而不显著增加计算成本。
*权重量化 :
- `QuantizedWeight8bit`类表明代码可能支持权重量化,这是模型压缩的一种方法,可以降低模型的存储空间要求。
*增量解码 :
- `KVMemory`类和其在`MultiHeadAttention`中的使用表明模型支持增量解码。
*动态规模的初始化 :
- 初始化函数中的`init_scale`参数允许动态调整模型权重的初始比例,这可以帮助训练过程的稳定性。
进技术交流群请添加AINLP小助手微信(id: ainlp2)
请备注具体方向+所用到的相关技术点
![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。
![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
更多AI工具,参考Github-AiBard123,国内AiBard123