书生浦语笔记一

2023年6月,InternLM的第一代大模型正式发布。仅一个月后,该模型以及其全套工具链被开源。随后,在8月份,多模态语料库chat7B和lagent也被开源。而在接下来的9月份,InternLM20B的开源发布进一步加强了全线工具链的更新。最终,2024年1月17日,InternLM2也正式开源。

InternLM2提供了两种不同参数量级的模型,分别是7B(Billion)和20B。前者更轻量级,适用于一般性应用,而后者则能够支持更复杂的场景。

每个参数规格都包含三种不同的模型版本:

  • InternLM2-Base:基座模型,提供了基本的功能和性能。
  • InternLM2:在基座模型的基础上进行了多方面的增强。
  • InternLM2-Chat:在基座模型的基础上,通过SFT(Supervised Fine-Tuning,监督微调)和RLHF(基于人类反馈的强化学习)进行了人类对齐,专门针对对话交互场景进行了优化。

模型预训练方面的信息如下:

  • 数据集:

    • 书生·万卷1.0:包含2TB的多模态数据。
    • 书生·万卷CC:包含400GB的多源数据,质量高且覆盖长时间跨度。
  • 预训练框架:采用Intern-Train框架,支持从8卡到千卡的加速。开箱即用:只需修改配置文件,即可开始预训练。

  • 模型微调框架:使用Xtuner框架。

  • 增量续训:支持增量学习,能够在保持模型旧知识的条件下注入新知识。

  • 有监督微调:通过少量的领域知识进行微调,使模型更好地适应特定领域场景。

  • 智能体构建:采用Lagent框架,支持多种能力,包括react、reward和autogpt,并适配多种模型。简单易扩展:内置多模态工具箱AgentLego,便于扩展。

  • 模型评测:采用OpenCompass,在适配了100多个评测集的基础上进行循环评测,包括数据污染检查、模型推理接入、长文本能力评测和中英文双语主观评测。

  • 模型部署:使用LMDeploy进行部署。

  • 模型轻量化:支持4bit权重,以减小模型的大小。

  • 推理引擎:支持pytorch、turbomind以及并行优化。

  • 部署服务:采用openai-server和gradio。

模型预训练框架

InternEvo

  • 高效训练框架:InternEvo是一个专为InternLM2设计的高效训练框架,它支持大规模并行训练,包括数据、张量、序列和管道并行,以及Zero Redundancy Optimizer(ZeRO)技术,以优化内存使用和计算效率。
  • GPU资源高效利用:InternEvo通过减少通信规模和使用适应性分片技术,有效地降低了GPU间的通信成本,实现了在保持高吞吐量的同时,随着GPU数量增加,模型FLOPs利用率(MFU)保持稳定。
  • 适应性硬件管理:框架能够根据训练规模调整硬件资源,支持256,000 tokens的长序列训练,并通过内存管理技术如统一内存管理和内存池来减少碎片,确保在处理长文本时的内存效率。
  • 故障容忍性:针对GPU数据中心的挑战,InternEvo设计了故障容忍系统,包括实时备份和恢复机制,确保在硬件故障时能快速恢复训练,减少数据丢失。
  • 交互式训练:在RLHF阶段,InternEvo支持多模型的交互式训练,通过与Ray的集成,构建了一个灵活且可扩展的框架,支持不同模型执行引擎和算法设计,确保了训练过程的高效性。
  • Model Structure: InternLM2基于Transformer架构,但采用了LLaMA的设计改进,如使用RMSNormSwiGLU,以提高训练效率和性能。模型结构的标准化和兼容性设计使其与LLaMA等其他知名模型系列兼容,同时保持了高效性。

训练

资料中介绍了InternLM2的预训练过程,包括数据处理、模型结构和训练设置。

  1. 预训练数据
  • 文本数据:网页、论文、专利和书籍,经过标准化、过滤、格式化和安全检查,确保数据质量。
  • 代码数据:收集自GitHub等平台,通过统一格式化和质量筛选,确保编程语言相关数据的高质量。
  • 长文本数据:针对长文本数据,进行长度筛选、统计分析和复杂性过滤,以提高数据质量并减少冗余。

分词(Tokenization):选择GPT-4的tokenization方法,结合中文和编程语言的特性,构建了容量为100,256的词汇表。

超参数设置:包括模型的层数、维度、头数等,以及学习率、优化器类型和衰减策略。见下图

预训练的不同阶段

  • 4k 文本训练:主要阶段,使用不超过4096字节的文本进行训练。
  • 长文本训练:扩展到32,000字节的上下文,采用GQA技术和长序列处理技术。
  • 特定能力提升训练:针对特定能力的增强训练,使用精心筛选的高质量数据集。

对齐

InternLM2模型如何与人类观念靠近,使模型具备对世界知识有内在理解,对事物的偏好把握对齐人类

有监督微调(SFT,Supervised Fine-Tuning): 使用1000万高质量的指令数据进行微调,以确保其能够理解和执行各种任务,如对话、NLP任务和数学问题。

COOL RLHF

Conditional OnLine RLHF

  • 条件奖励模型(Conditional Reward Model):引入了条件系统提示,允许模型根据特定条件动态调整对不同偏好(如帮助性和无害性)的关注,解决了偏好冲突问题
  • 在线人类反馈强化学习(Online RLHF)**:**使用最近邻策略优化(PPO,Proximal Policy Optimization)使模型与条件奖励模型得到人类偏好对齐,其通过快速路径(快速修复奖励模型)和慢速路径(长期奖励模型优化)两者的结合,提高了模型的稳定性和可靠性。

PPO训练细节

  1. 长文本微调: 在SFT和RLHF阶段继续使用长文本数据,确保模型在处理长序列任务时的性能。
  2. 工具增强
  • 通用工具调用:引入了"environment"角色,支持通用工具调用,如代码解释器和外部插件,以增强模型处理工具相关任务的能力。
  • 代码解释器:将Python代码解释器作为工具,与特定的指令格式结合,用于解决数学问题,如RICO(Reasoning Interleaved with Coding)策略,通过迭代式学习提高模型的数学问题解决能力。
相关推荐
不会调制解调的猫1 小时前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记
程序员大雄学编程2 小时前
「机器学习笔记7」决策树学习:从理论到实践的全面解析(上)
笔记·决策树·机器学习
聪明的笨猪猪3 小时前
Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
bnsarocket4 小时前
Verilog和FPGA的自学笔记3——仿真文件Testbench的编写
笔记·fpga开发·verilog·自学
丰锋ff4 小时前
2025 年真题配套词汇单词笔记(考研真相)
笔记·考研
小熊猫程序猿6 小时前
Datawhale 算法笔记 AI硬件与机器人大模型 (五) Isaac Sim 入门
人工智能·笔记·机器人
不太可爱的叶某人10 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
张人玉11 小时前
C# TCP 客户端开发笔记(TcpClient)
笔记·tcp/ip·c#
不太可爱的叶某人14 小时前
【学习笔记】kafka权威指南——第6章 可靠的数据传递
笔记·学习·kafka
研猛男15 小时前
0、FreeRTOS编码和命名规则
笔记·stm32·freertos