马斯克开源Grok:3140亿参数免费可商用

代码和模型权重已上线GitHub。官方信息显示,此次开源的Grok-1是一个3140亿参数的混合专家模型——是当前开源模型中参数量最大的一个。目前Grok-1的GitHub仓库已揽获4.5k标星,还在增长中。

此次开源,xAI发布了Grok-1的基本模型权重和网络架构。

具体来说是2023年10月预训练阶段的原始基础模型,没有针对任何特定应用(例如对话)进行微调。

结构上,Grok-1采用了混合专家(MoE)架构,包含8个专家,总参数量为314B(3140亿),处理Token时,其中的两个专家会被激活,激活参数量为86B。

单看这激活的参数量,就已经超过了密集模型Llama 2的70B,对于MoE架构来说,这样的参数量称之为庞然大物也毫不为过。

不过,在GitHub页面中,官方也提示,由于模型规模较大(314B参数),需要有足够GPU和内存的机器才能运行Grok。

这里MoE层的实现效率并不高,选择这种实现方式是为了避免验证模型的正确性时需要自定义内核。模型的权重文件则是以磁力链接的形式提供,文件大小接近300GB。

而且这个“足够的GPU”,要求不是一般的高——YC上有网友推测,如果是8bit量化的话,可能需要8块H100。

除了参数量前所未有,在工程架构上,Grok没有采用常见的Python、PyTorch或Tensorflow,而是选用了Rust编程语言以及深度学习框架新秀JAX。

而在官方通告之外,还有许多大佬通过扒代码等方式揭露了Grok的更多技术细节。

比如来自斯坦福大学的Andrew Kean Gao,就针对Grok的技术细节进行了详细解释。

首先,Grok采用了使用旋转的embedding方式,而不是固定位置embedding,旋转位置的embedding大小为 6144,与输入embedding相同。

当然,还有更多的参数信息:

窗口长度为8192tokens,精度为bf16

Tokenizer vocab大小为131072(2^17),与GPT-4接近;

embedding大小为6144(48×128);

Transformer层数为64,每层都有一个解码器层,包含多头注意力块和密集块;

key value大小为128;

多头注意力块中,有48 个头用于查询,8 个用于KV,KV 大小为 128;

密集块(密集前馈块)扩展因子为8,隐藏层大小为32768。

除了Gao,还有英伟达AI科学家Ethan He(何宜晖)指出,在专家系统的处理方面,Grok也与另一知名开源MoE模型Mixtral不同——Grok对全部的8个专家都应用了softmax函数,然后从中选择top2专家,而Mixtral则是先选定专家再应用softmax函数。

另外,值得一提的是,Grok-1采用的是Apache 2.0 license,也就是说,商用友好