InternLM 技术报告解读(一)- 训练框架,模型架构,数据处理

        大型语言模型的发展包括预训练、监督微调(SFT )和基于人类反馈的强化学习( RLHF
等主要阶段。
        过去关于LLM 的技术报告 很少关注预训练数据的处理。 InternLM2详细描述了如何为预训练 准备文本、代码和长文本数据。
        如何有效地延长LLM 的上下文长度目前是研究的热点,因为许多下游应用,如检索增强生成(RAG 和代理模型 ,依赖于长上下文。
        本次技术报告就详细的阐述关于数据处理,预训练以及微调模型的技术细节。

一. 训练框架以及模型架构

1.1 InternEvo

        在开始之前,我们首先选择我们的训练框架,我们使用的高效的轻量级预训练框架InternEvo进行模型训练。 这个框架使得我们能够在数 千个 GPU 上扩展模型训练。它通过数据( Data Parallelism )、张量( Tensor Parallelism, 2019 )、序列( Sequence Parallelism, 2023 )和管道( Pipeline Parallelism, 2019 )并行技 术来实现这一点。为了进一步提升 GPU 内存效率, InternEvo 整合了各种 Zero Redundancy  Optimizer (ZeRO, 2020 )策略,显著减少了训练所需的内存占用。此外,为了提高硬件利用 我们还引入了 FlashAttention 技术( 2023 )和混合精度训练( Mixed Precision Training, 2017 ),使用 BF16。
        
        InternEvo在序列长度方面也表现出强大的扩展性, 支持训练不同规模的 LLM , 例如
256,000 个令牌的序列长度下训练 InternLM-7B , 可以达到接近 88% MFU 。 相比之
下, DeepSpeed-Ulysses Megatron-LM 只能达到大约 65% MFU 。对于更大规模的 LLM
300 亿或 700 亿参数的模型,训练性能的提升也同样明显。

1.2 模型架构

         我们选择遵循 LLaMA 的结构设计原则。 为了提高效率,我们将W k W q W v 矩阵合并,这在预训练阶段带来了超过 5% 的训练加速。此外,为了 更好地支持多样化的张量并行(tp )变换,我们重新配置了矩阵布局。对于每个头的 W k W q W v ,我们采用了交错的方式,如下图所示。

二. 训练数据集

2.1 文本数据

        我们的预训练数据集中的文本数据可以根据来源分为网页、论文、专利和书籍。为了将这
些来源转化为预训练数据集,我们首先将所有数据标准化为特定格式,按类型和语言分类,
并以 JSON Lines (jsonl) 格式存储。然后,我们对所有数据应用一系列处理步骤,包括基于
规则的过滤、数据去重、安全过滤和质量过滤。这最终形成了丰富、安全且高质量的文本
数据集。
        
        整个数据处理流程首先将来自 不同来源的数据标准化,得到格式化数据 Format data )。接着,通过应用启发式统计规则 进行数据筛选,获取清洗数据 Clean data )。然后,使用局部敏感哈希( LSH )方法进行 数据去重,得到去重数据 Dedup data )。随后,我们采用复合安全策略过滤数据,得到 安 全数据( Safe data )。针对不同来源的数据,我们采用了不同的质量过滤策略,最终获得 高 质量预训练数据( High-quality pre-training data

2.2 代码数据        

        同时,我们也加入了大量的代码数据, 我们从多个来源收集数据,包括直接从 GitHub 爬取,公共数据集,以及与编 程和编码相关的在线资源(如问答论坛、教程网站和 API 文档),数据来源统计如图。
         所有数据转换为统一的 Markdown 格式。然而,一小部分数据仍然存在损坏
HTML XML格式。 代码数据的去重与处理自然语言类似,只是在分词( tokenization )上有所区别, 这影响了超参数的选择。
3.3 长文本数据
         处理非常长的上下文( ¿32K 个令牌)在研究大语言模型( LLMs )中越来越受到关注,这拓
宽了应用范围,包括书籍摘要、支持长期对话以及处理涉及复杂推理步骤的任务。预训练
数据是扩展模型上下文窗口的关键因素。我们遵循 Lv et al. ( 2024 ) 中提到的长文本预训练数
据准备过程,包括数据过滤管道,统计过滤器,语言模型困惑度过滤器,阈值选择等。
        
        所有提议过滤器前后的数据分布。整个过滤过程去除了大部分网页数据 (Common Crawl)和专利数据,而书籍和论文数据大部分得以保留。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 13:30:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 13:30:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 13:30:06       82 阅读
  4. Python语言-面向对象

    2024-03-30 13:30:06       91 阅读

热门阅读

  1. Openreview公式不能正常显示

    2024-03-30 13:30:06       42 阅读
  2. linux终端介绍

    2024-03-30 13:30:06       42 阅读
  3. ChatGPT助力学术写作:快速提升论文质量

    2024-03-30 13:30:06       45 阅读
  4. React中使用antDesign框架

    2024-03-30 13:30:06       32 阅读
  5. 使用 React Router v6.22 进行导航

    2024-03-30 13:30:06       39 阅读
  6. C 指针的算术运算

    2024-03-30 13:30:06       43 阅读