书生浦语笔记一

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)策略,通过迭代式学习提高模型的数学问题解决能力。
相关推荐
bohu836 分钟前
sentinel学习笔记8-系统自适应与黑白名单限流
笔记·sentinel·系统自适应·authorityslot·paramflowslot
滴_咕噜咕噜34 分钟前
学习笔记(prism--视频【WPF-prism核心教程】)--待更新
笔记·学习·wpf
Pandaconda4 小时前
【Golang 面试题】每日 3 题(六)
开发语言·笔记·后端·面试·职场和发展·golang·go
2301_815389374 小时前
【笔记】linux虚拟机与windows的文件共享之Samba服务基本配置
linux·运维·笔记
get_money_5 小时前
代码随想录Day52 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿。
java·开发语言·笔记·算法·深度优先·图论
ironmao5 小时前
ROS自学笔记三十:话题消息输出并转换为Excel形式
笔记
Rinai_R5 小时前
计算机组成原理的学习笔记(10)-- CPU·其二 组合逻辑控制器和微程序
笔记·学习
Dack4665 小时前
1.1、Python3基础语法
笔记·python
红色的山茶花8 小时前
YOLOv9-0.1部分代码阅读笔记-train.py
笔记·深度学习·yolo
胡西风_foxww9 小时前
【ES6复习笔记】Map(14)
前端·笔记·es6·map