AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


零一万物系列模型最新技术报告解读
发布日期:2024-05-09 07:26:55 浏览次数: 3349 来源:AI闲谈


一、背景介绍

零一万物早已发布了多个模型,其整体能力也很不错,但相关的技术细节却很少,正好看到其发布了相应的技术报告,其应用了很多我们之前介绍过的技术,也得到了很多业内类似的结论,因此这些我们再对其进行简单总结。

我们之前介绍过的相关文档可参考:

  1. 有关数据处理可参考:LLM 预训练语料、预处理和数据集索引、加载总结

  2. 有关上下文扩展可参考:

    1. Google 最新多模态大模型 Gemini 1.5 Pro:支持 1000万 Token

    2. 伯克利LWM:百万Token+多模态+生成=世界模型?

  3. 有关多模态模型可参考:Yi-VL-34B&CMMMU:零一万物最新多模态大模型和高质量评估基准

  4. 有关模型扩展可参考:7 种 LLM 融合扩展总结:LLaMA-Pro、SOLAR、MoE 等

  5. 有关推理优化可参考:

    1. 揭秘 LLM 推理:全面解析 LLM 推理性能的关键因素

    2. LLM 推理性能优化最佳实践

对应的技术报告为:[2403.04652] Yi: Open Foundation Models by 01.AI

对应的的代码库为:GitHub - 01-ai/Yi: A series of large language models trained from scratch by developers @01-ai

对应的模型为:https://huggingface.co/01-ai

二、摘要

Yi 系列模型是零一万物发布的一系列具有强大多维能力的语言和多模态模型。Yi 系列模型包含:

  • 6B(Yi-6B) 和 34B(Yi-34B) 的预训练语言模型

  • 基于此扩展出了 chat 模型(Yi-6B-Chat、Yi-34B-Chat)

  • 支持 200K 上下文的模型(Yi-6B-200k、Yi-34B-200k)

  • 从 6B 模型通过深度扩展的 9B 模型(Yi-9B)

  • 相应的多模态模型(Yi-VL-6B、Yi-VL-34B)

  • 还包含一系列的量化模型

对于预训练,作者通过各种数据清洗、过滤流程构建了 3.1T Token 的高质量英文和中文语料库。对于微调,作者打磨了一个小规模(小于 10K)的指令数据集,并且每个样本都经过他们的数据工程师进行验证。对于视觉-语言训练,作者采用了类似 LLaVA 的结构,将视觉编码器与 Yi 语言模型结合起来,并训练模型以将视觉表征与语言模型的语义空间对齐。对于长文本训练,作者通过筛选部分长文本进行持续预训练,进一步将上下文长度扩展到 200K,并获得了强大的 needle-in-a-haystack 检索能力。对于深度扩展的 9B 模型,作者是通过将 6B 模型的中间层重复拷贝实现的。

作者训练的基础模型在 MMLU 等各种基准中取得了优异的成绩,经过微调的聊天模型也在 AlpacaEval 和 Chatbot Arena 等主要评估平台上获得强大的人类偏好率。

三、预训练

3.1. 数据处理

如下图 Figure 1 所示,作者从来自 Common Crawl 的网络数据开始,通过各种数据清洗手段获得了高质量的预训练数据集,包括:CCNet pipeline 的语言识别和困惑度打分,以及各种过滤、去重等操作。

经过以上处理过程获得了 3.1T Token 的英文和中文高质量数据集,其数据分布如下图所示,可见网页占据 80.86% 左右,代码占据 8.53% 左右:

之后,作者采用 SentencePiece 中的 BPE 对预训练数据进行分词,对应的词表大小为 64000,可以获得更好的计算效率与单词理解的平衡。

3.2. 模型结构

Yi 的模型结构与 LLaMA 2 的模型结构基本一致,主要的不同是 LLaMA 2 只在比较大的 70B 模型中采用了 GQA(Grouped Query Attention),而 Yi 模型在 6B 和 34B 模型中都采用了 GQA,并且发现在 6B 模型中采用 GQA 并没有出现性能下降。具体的配置如下图 Table 1 所示:

此外,Yi 默认是在 4K 的上下文窗口上进行预训练,训练完之后从预训练数据集中筛选了 10B Token 的长序列(主要来自书籍),然后在 200K 的上下文窗口上继续训练。此外,作者观察到,只需 1-2B 左右 Token 即可实现 200K 的损失和 4K 的损失差不多,并且轻量级的微调进一步诱导了近乎完美的长上下文检索能力。基于这一观察,作者倾向于认为,对于比预训练长度(4K)更长的依赖性进行建模的能力是一种内在能力,而不是通过后训练注入的。也就是说,即使模型预训练的上下文窗口比较短,其依然具备了比 4K 依赖性更长的建模能力,只是后训练/微调过程释放了这一能力。(这也与最近的 Paper  [2402.10171] Data Engineering for Scaling Language Models to 128K Context 中观察的结论一致)

四、微调

4.1. 数据处理

作者采用的微调数据集由不到 10K 的多轮指令-响应对话对组成,每个条目都经过多次迭代和用户反馈构建、完善。作者之所以采用这种方法,是因为在初步实验中观察到,与数十万条开源数据集相比,较小的人工标注的高质量数据集的结果更胜一筹,这与 Gemini 等团队的结果一致。

作者采用了以下技术来改进提示分布选择、响应格式和思维链格式,也做了一系列工作来减少幻觉和重复。此外,为了确保不同功能的覆盖范围,还包含了广泛的开源提示,包括问答、创意写作、对话、推理、数学、代码、安全和双语能力等。此外还设计了一种以多样性为重点的采样算法,以平衡指令在各种标签之间的分布。

4.2. 训练方法

同样采用下一个单词预测损失,不过只计算响应部分对应的损失,而忽略系统指令和用户指令相关的损失。训练中依旧使用 4K 的上下文窗口,batch size 为 64,训练了 300 个 Step。

五、基础设施

作者构建了一个支持数据处理、预训练、微调和推理服务的全栈基础设施。

5.1. 计算资源管理

LLM 训练通常需要大规模的资源,比如可能需要数月、数千 GPU 的资源,因此作者构建了一个高效的多云任务调度算法来管理不同优先级的预训练、SFT 和 RLHF 任务。还构建了一个高性能的内部训练框架,允许根据可用 GPU 数量自动将预训练作业扩展到不同的节点规模,相应的预训练参数也会同时缩放。

同时,在 LLM 预训练阶段也会经常发生各种故障,从 GPU 崩溃(比如常见的 ECC Error)到通信异常(比如网络抖动,通过添加 NCCL 的通信重试次数可以明显缓解,比如增加 NCCL_IB_RETRY_CNT 的值),再到 loss 抖动以及其他硬件故障。为了应对这些挑战,作者采用了以下的策略:

  1. 对不同类型的软件/硬件错误类别应用节点的自动检查、预测和标记。标记为异常的节点将暂时从资源池中删除,直到错误被修复。

  2. 实现了一个任务队列系统,具备与检查能力,并能在任务失败时快速自动恢复

  3. 开发了一个用户友好的多任务提交和管理控制台,可以无缝管理和追踪训练任务和超参

5.2. 性能和成本效益

内存和通信约束是大规模模型训练的两大挑战,除了添加更多 GPU 之外,通常还要结合各种方案,作者采用了:

  1. ZeRO-1,对优化器状态进行切分以减少内存消耗。

  2. 节点内张量并行(Tensor Parallel)与流水线并行(Pipeline Parallel)相结合,避免节点间通信瓶颈;精细化设计 3D 并行策略,避免激活 Checkpointing 和 PP 气泡。

  3. GPU 内核融合技术,例如 flash-attention 和 JIT,以减少冗余的全局显存访问和消耗。

  4. 拓扑感知资源分配(排序策略),以最小化不同层交换机之间的通信。

5.3. 微调框架

与预训练不同,微调 LLM 可能需要编排多个模型,如 DPO 和 PPO。为此,作者构建了一个多模型调度框架,以支持单个作业中多个不同 LLM 后端。例如,当使用 DPO 微调语言模型时,可以缓存和重用参考模型的中间结果,从而提高训练速度和降低了资源成本。

5.4. 快速、高效推理

作者采用了量化动态 batching、Paged Attention 来提升解码速度,减少内存使用。

  1. 采用 4-bit 模型权重量化和 8-bit KV Cache 量化,可以大幅降低显存占用而精度损失很小(在 MMLU 和 CMMLU 上精度损失小于 1%)。与我们自己测试测结论也类似:使用 AWQ INT4 量化和 8-bit KV Cache 量化损失比较小,13B 模型量化后的速度、评估精度很可能优于 7B 未量化模型。这也与最近的论文 [2402.18158] Evaluating Quantized Large Language Models 中的结论类似。

  2. 使用 dynamic batching,比如 Continuous Batching 技术可以有效扩展 Batch Size,提升吞吐。

  3. 使用 Paged Attention 可以有效提升显存利用率。

5.5. 长上下文窗口支持

作者实现并改进了计算-通信间的重叠,以及序列并行通信压缩,以支持高达 200K 上下文的继续预训练和微调。这些完全基于工程手段,不会像其他框架那样使用稀疏、局部或滑动窗口注意力,即使输入为 200K,模型依然使用全局注意力

六、能力扩展

6.1. 长上下文建模

如下图 Figure 6 所示,作者使用 Yi-34B-200K 模型在经典的 Needle-in-a-Haystack 上测试,可以看出,其几乎获得了全绿的表现,表明其具有很强的长上下文检索能力:

此外,作者进一步使用 MMLU 进行验证,发现扩展为长上下文后,200K 的模型在短文本上的能力相比 4K 模型并没有下降太多:

6.2. 视觉-语言建模

作者进一步将语言模型建模为视觉-语言模型,Yi-VL 模型与之前介绍的 LMM 结构一致(参考了 LLaVA 的实现),包含 3 个核心组件:

  • Vision Transformer(ViT):使用 CLIP ViT-H/14,用于图像编码。

  • Projection Module(投影模块):具有 layer normalizaton 的两层 MLP,用于将图像特征与文本特征空间对齐。

  • Large Language Model(LLM):使用 Yi-34B-Chat 或 Yi-6B-Chat。

Yi-VL 经过三阶段训练,能很好地实现视觉信息与语义信息的对齐,三阶段分别为:

  • 第一阶段:使用 224x224 图像分辨率训练 ViT 和 Projection Module,LLM 保持冻结。训练使用来自 LAION-400M 的 1 亿个图像-文本对的图像描述数据集。主要目标是增强 ViT 的知识获取,并实现 ViT 和 LLM 之间更好地一致性。

  • 第二阶段:将 ViT 图像分辨率放大到 448x448 分辨率,同样只训练 ViT 和 Projection Module。其目的是进一步提高模型辨别复杂视觉细节的能力。本阶段数据集包含 2500 万个图文对,来自 LAION-400M、CLLaVA、LLaVAR、Flickr、VQAv2、RefCOCO 和 Visual7w 等。

  • 第三阶段:继续使用 448x448 分辨率训练整个模型,也就是 LLM 也解冻。主要目标是提高模型在多模态交互场景下的熟练程度,从而赋予其集成视觉、语言输入的能力。训练集包含多种来源的 100 万个图文对,包括 GQA、VizWiz VQA、TextCaps、OCR-VQA、Visual Genome、LAION GPT4V 等。为了确保数据平衡,作者对任何单一来源的数据贡献设置了上限,将其限制为不超过 50,000 对。

6.3. 模型深度扩展

[2312.15166] SOLAR 10.7B: Scaling Large Language Models with Simple yet Effective Depth Up-Scaling 中,作者提出了在现有预训练模型基础上通过堆叠的方式来适当扩大模型规模,并大幅提升模型效果的方案。具体来说:

  • Step 1-1:首先,将原始 LLM (Mistral 7B)复制一份,假设包含 n 层 Transformer Block(n=32)。

  • Step 1-2:然后,删除原始模型的后 m 层,和副本模型的前 m 层(m=8),并将两个新的模型拼接在一起,新的模型包含 2*(n-m)=48 层 Transformer Block。

  • Step 2:在新的模型上继续预训练。

本文中作者采用了类似的方案,Yi-6B 包含 32 层,因此作者是将中间的 12-28 层复制,总共复制了 16 层,最终得到 48 层的 Yi-9B 模型,然后在 800B 左右的 Token 上继续训练,如下图 Table 8 所示为 Yi-6B、Yi-9B Init(未继续训练)和 Yi-9B(继续训练后)的结果对比,Yi-9B 在所有指标上都取得了最优的结果:

七、评估

其他地方已经具体介绍了 Yi 相关的评估指标,我们这里就不再具体介绍,只列一些最基础的。

7.1. 基础模型性能

如下图 Table 3 所示,作者将 Yi 的基础模型与其他基础模型进行了对比,主要评估了 GSM8k、MATH、Human-Eval 和 MBPP 等指标:

7.2. Chat 模型性能

如下图 Table 4 所示为与其他 Chat 模型的对比:

八、参考链接

  1. https://arxiv.org/abs/2403.04652

  2. https://github.com/01-ai/Yi

  3. https://huggingface.co/01-ai

  4. https://arxiv.org/abs/2402.10171

  5. https://arxiv.org/abs/2402.18158

  6. https://arxiv.org/abs/2312.15166


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询