このかた チャットグット 诞生以来,LLM(大语言模型)的参数量似乎就成为了各个公司的竞赛指标。GPT-1 参数量为 1.17 亿(117M),而它的第四代 GPT-4 参数量已经刷新到了 1.8 万亿(1800B)。
像其他 LLM 模型例如 Bloom(1760 亿,176B)和 Chinchilla(700 亿,70B)的参数量也在不断飙升。参数的数量直接影响了模型的性能和能力,更多的参数意味着模型能够处理更复杂的语言模式,理解更丰富的上下文信息,并在多种任务上表现出更高的智能水平。
但是,这些巨量参数也会直接影响 LLM 的训练成本和开发环境,也限制了大多数普通研究公司对于 LLM 的探索,导致大语言模型逐渐成为了大公司之间的军备竞赛。
近日,新兴 AI 公司 TensorOpera 发布了开源小语言模型 FOX,向业内证明了小语言模型(SLM)也可以在智能体领域展现足够的实力。
FOX 是一个专为云计算和边缘计算设计的小型语言模型。与动辄上百亿参数的大语言模型不同,FOX 仅有 16 亿参数,却能在多项任务中展现出惊人的性能。
论文题目:
FOX-1 TECHNICAL REPORT
论文链接:
https://arxiv.org/abs/2411.05281
TensorOpera 是谁
TensorOpera 是一家位于加州硅谷的创新人工智能公司。他们之前开发了 TensorOpera® AI Platform 生成型 AI 生态系统和 TensorOpera® FedML 联邦学习和分析平台。公司名称 TensorOpera, 是技术和艺术的结合,象征着 GenAI 最终实现多模态和多模型复合 AI 系统的发展趋。
TensorOpera 的联合创始人兼 CEO Jared Kaplan 博士表示:"FOX 模型的设计初衷是为了在保持高性能的同时,大幅降低计算资源需求。这不仅让 AI 技术更加亲民,也为企业降低了使用门槛。"
Fox 模型是怎么做的
为了通过较小的参数量达到与 LLM 相同的效果,Fox-1 模型仅采用解码器架构,并引入了各种改进和重新设计以获得更好的性能。其包括
① 网络层数:在模型架构设计中,更宽且更浅的神经网络拥有更好的记忆能力,而更深且更瘦的网络则呈现出更强的推理能力。根据这一原则,Fox-1 使用的架构比大多数现代 SLMs 更深。具体来说,Fox-1 由 32 个自注意力层组成,比 Gemma-2B(18 层)深 78%,比 StableLM-2-1.6B(24 层)和 Qwen1.5-1.8B(24 层)深 33%。
② 共享嵌入:Fox-1 采用 2,048 的隐藏维度去构建共计 256,000 的词汇表,其数据量大约有 5 亿参数。更大的模型通常对输入层(词汇表到嵌入表达)和输出层(嵌入表达到词汇表)使用单独的嵌入层。对于 Fox-1,仅嵌入层就需要 10 亿参数。为了减少总参数数量,共享输入和输出嵌入层,可以最大限度地提高权重利用率。
③ 预归一化:Fox-1 对每个变换层的输入使用 RMSNorm 进行归一化。RMSNorm 是现代大型语言模型中预归一化的首选,它比 LayerNorm 表现出更好的效率。
④ 旋转式位置编码(RoPE):Fox-1 默认接受最多 8K 长度的 input token。为了提高更长上下文窗口的性能,Fox-1 采用了旋转式位置编码,其中 θ 设置为 10,000,以便于编码 トークン 之间的相对位置依赖性。
⑤ 分组查询注意力(GQA):分组查询注意力将多头注意力层的查询头分为组,每个组共享相同的一组键值头。Fox-1 配备 4 个键值头和 16 个注意力头,以提高训练和推理速度,并减少内存使用。
除了模型结构改良之外,FOX-1 也在分词(Tokenization)和训练上进行改进.
分词方面,Fox-1 采用基于 SentencePiece 的 Gemma 分词器,它提供了 256K 的词汇表大小。增加词汇表大小至少有两个主要好处。首先,由于每个 token 编码了更密集的信息,上下文的隐藏信息长度得以延长。例如,大小为 26 的词汇表只能在[a-z]中编码一个字符,但大小为 262 的词汇表可以同时编码两个字母,这使得在固定长度的 token 中可以表示更长的字符串。其次,更大的词汇表大小减少了未知单词或短语的概率,从而在实践中实现了更好的下游任务性能。Fox-1 采用的大词汇表对于给定的文本语料库产生较少的 token,这可以产生更好的推理性能。
Fox-1 的预训练数据来源于 Redpajama、SlimPajama、Dolma、Pile 和 Falcon 数据集,共计 3 万亿个文本数据。为了缓解因其注意力机制导致的长序列的预训练效率低下,Fox-1 在预训练阶段引入了一个三阶段的课程学习策略,其中训练样本的 chunk 长度逐渐从 2K 增加到 8K,以小成本确保长上下文能力。为了与三阶段课程预训练管道保持一致,Fox-1 将原始数据重新组织成三个不同的集合,包括无监督和指令调优数据集,以及代码、网络内容、数学和科学文档等不同领域的数据。
Fox-1 的训练可以分为三个阶段.
- 第一阶段包括整个预训练过程中约 39% 的总数据样本,其中 1.05 万亿 token 的数据集被分割成长度为 2,000 的样本,batch size 大小为 2M。在此阶段使用了 2,000epoch 的线性预热。
- 第二阶段包括约 59% 的样本,有 1.58 万亿 token,并将 chunk 长度从 2K 增加到 4K 和 8K。实际的 chunk 长度因不同数据源而异。考虑到第二阶段花费的时间最长,且涉及不同数据集的不同来源,batch size 也增加到 4M 以提高训练效率。
- 最后在第三阶段,Fox 模型使用 62 亿 token(约总量的 0.02%)的高质量数据进行训练,为不同的下游任务能力打下基础,如指令遵循、闲聊、特定领域的问答等。
Fox-1 表现如何
和其他 SLM 模型(Gemma-2B, Qwen1.5-1.8B, StableLM-2-1.6B 和 OpenELM1.1B)相比,FOX-1 在 ARC Challenge (25-shot), HellaSwag (10-shot), TruthfulQA(0-shot),MMLU (5-shot),Winogrande (5-shot),GSM8k (5-shot)六项任务的 benchmark 的平均分数最高,且在 GSM8k 上优势明显。
除此之外,TensorOpera 还评估了 Fox-1、Qwen1.5-1.8B 和 Gemma-2B 使用 vLLM 与 TensorOpera 服务平台在单个 NVIDIA H100 上的端到端的推理效率。
Fox-1 实现了每秒超过 200 个 token 的吞吐量,超过了 Gemma-2B,并在相同的部署环境中与 Qwen1.5-1.8B 相匹配。在 BF16 精度下,Fox-1 仅需要 3703MiB 的 GPU 内存,而 Qwen1.5-1.8B、StableLM-2-1.6B 和 Gemma-2B 分别需要 4739MiB、3852MiB 和 5379MiB。
参数虽小,依旧有竞争力
目前各家 AI 公司都在大语言模型上开展竞争,而 TensorOpera 另辟蹊径,在 SLM 领域进行突破,仅用 1.6B 实现了与 LLM 相似的效果,在各种基准测试中表现出色。
即使在有限的数据资源下,TensorOpera 也可以预训练出具有竞争力表现的语言模型,为其他 AI 公司的研发提供了一种新思路。