【InternLM实战营第二期笔记】01:书生浦语大模型全链路开源体系+InternLM2技术报告

文章目录

  • 课程笔记
    • InternLM2 在数据处理上的进步
    • 2.0 版本的主要 features
    • 从模型到应用
    • 评测
  • InternLM2 技术报告 阅读笔记
    • Infra
      • 训练框架:InternEvo
      • 模型架构
    • 预训练
      • 数据
        • 文本
        • 代码
        • 长上下文
      • 预训练设置
        • Tokenization
        • 预训练超参数
      • 预训练阶段
    • Alignment
      • COOL RL
      • 长上下文微调
      • 工具调用
    • 评估和分析
      • 下游性能
      • 对齐
      • 污染检查
    • 附录

课程文档:https://github.com/InternLM/Tutorial/tree/camp2
第一课录播:https://www.bilibili.com/video/BV1Vx421X72D
InternLM2 技术报告:arxiv.org/pdf/2403.17297.pdf


为啥已经有些 AI 基础还要再来学下这门课呢?主要考虑是重新走走整条链路,把推的太前的知识巩固巩固,另外也是受到茴香豆项目的影响——白牛大佬在知乎的帖子里有课程链接。于是自然而然就报名了。
闲话少说,以下是笔记。视频课信息量不算大,技术报告是真复杂, 很多内容我也没来得及消化,日后看需要再看要不要往下挖吧。


课程笔记

第一节视频课定位扫盲。业内已经熟知的内容就不记录了,放一些个人觉得有意思或有一定启发性的内容。

InternLM2 在数据处理上的进步

在这里插入图片描述
预训练质量高低或是能力水平,基本由预训练数据决定。InternLM2 总结了三个方面的处理思路:

  • 对原始语料库做多角度评估:文本质量、信息质量、信息密度应该对应了三类评估数据质量的 metrics,细节不知道是否在 tech report 中有所披露
  • 基于已有高质量语料寻找相似语料:在“高质量数据”上 scaling up
  • 针对性增强:目前公认大模型的推理能力来自这三个方面,对应的榜单通常是 MMLU、GSM8K/MATH、HumanEval/MBPP

下左图对比两代 7B 模型,可以看到 2 代分布明显左移,侧面意味着训练层面 2 代在更多高质量语料上接受了训练;右侧表明最新一代(V3)上,下游任务性能随训练数据量增长平稳单调提升,亦即 V3 数据对下游任务只有增益而无明显副作用。两张图合起来表明 V3 数据处理方法的有效性。
(这里提个小意见,两张图理解上不是很直观,下右还丢了一个图例,不太严谨哈。)

2.0 版本的主要 features

在这里插入图片描述

  • 超长上下文按照现在的观点并不惊艳了,技术路径也越发明确,不过在去年底今年初还算得上很 sexy
  • 推理能力提升,估计主要来自数据质量提升、补充更多思维链数据以及代码、数学数据的比例提升
  • 指令性数据应该经过了校准,输入输出的相关度或针对性得到增强
  • function call/agent,现在也挺火
  • 再强调下数学、代码和推理?代码解释指的应该是类似 PoT 能力,让模型用代码解决一些有挑战性的问题
    在这里插入图片描述
    这里是 chat wrapper 加了类似 code interpreter 的功能?

从模型到应用

在这里插入图片描述

  • 第一步在垂域上可能没有大家想得那么简单。比如法律大模型,目前的通用基座在遇到具体问题的时候胡说八道或不精确太正常了。只能用自己的业务数据去测,算法不能完全不懂业务。
  • 图上是作为一次性流程描述的,但实际做的时候肯定是循环迭代。

在这里插入图片描述
连上这张图就懂了,浦语针对性地提供了解决方案。但恕我直言,这些东西目前开源社区相对还是比较丰富的,更多基于实际场景上的调优 know how 才是最值钱的,当然可能也就没人愿意公开去聊了。
在这里插入图片描述
万卷1.0 目前在业内还是挺大的,对没能力自己收集数据的团队很有帮助;万卷CC 是对 CC 的精选吧。两者的定位或特性差异没讲很清楚,有点可惜。

在这里插入图片描述
这图别的没啥,就是想暗搓搓问下为啥课程的某位讲师不用 xtuner 而是用了老外做的 axolotl/蝾螈 hhhhhh(开玩笑,跟讲师请教过,说就是随手用来做实验的,没考虑很多)

评测

在这里插入图片描述
OpenCompass 贡献也挺大的,在中文生态的模型评测上提供了一些标准化的实现和相对可靠的结果。
在这里插入图片描述
在这里插入图片描述
居然有这么大规模的评测,改天瞅瞅去。
而且有些没发布过自家大模型的企业的logo也在里面,狠狠的好奇了。
另外前几天阿里的魔搭终于启动了一个中文的 Chatbot Arena 评测项目,值得期待下。

在这里插入图片描述
选择题也确实会有这样问题,基于统计概率的模型有时仍然不太能区分选项和选项标号的关系。

部署、Agent 工具确实没了解和体验过,后面可能需要去学习下相关代码了。

InternLM2 技术报告 阅读笔记

英文水平有限,借助沉浸式翻译节省了部分理解时间。
我记得 InternLM2 模型其实出得比较早,技术报告相对晚了不少,CodeQwen、llama3 也类似。
摘要和介绍部分,2代主要强调了几个方面:

  • 长上下文的扩展:4k->32K by 训练,200k by 外推;额外 32K 指令数据提高长文本处理
  • 数据质量;预训练、代码数据的准备
  • COOL RLHF,一种在线RL策略

Infra

不是搞这块的看得似懂非懂

训练框架:InternEvo

做了多个方面的优化工作。他们有专门的 infra 团队,这块的实力确实不容小觑。

模型架构

follow llama 架构但融合相关算子,模型通用但计算上效率更高;GQA 保证长上下文场景下的推理效率

预训练

戏肉来了。

数据

通用文本、编程相关、长文本

文本
  • 标准化为 JSON 格式,固定处理步骤包括

    • 规则过滤
    • 去重
    • 安全
    • 质量
  • 数据源:分成三种类型,网页、书籍、技术文献
    在这里插入图片描述

    • 网络数据量比较大,总计占到86%
  • 处理管道
    在这里插入图片描述

    • 格式化:提取、语言检测和分类、标识符、存储
    • 规则过滤:去掉解析错误、格式错误和非自然语言;基于启发式文本,重点关注分隔符和换行、异常字符频率、标点分布。这块挺耗人力的,不知道啥时候能有一些生产级的开源
    • 去重:MiniHash,标准操作
    • 安全过滤:从 GPT-4o 来看国产大模型遥遥领先(bushi)。域名、词汇、分类器,13M 域名+36K 词表黑名单,分词也做了精细考虑;用 Kaggle 数据微调一个“毒性分类器”,用 Perspective API 标注涩情分类数据产生“涩情分类器”,这两个分类器用来做二次过滤
      -质量过滤: 过滤网页数据中的广告和缺乏连贯性的内容,分别人工标注得到两个分类器,同样方法过滤
代码

在这里插入图片描述

  • 数据来源:包括 GitHub、公共数据集、代码相关网站。我好奇 GitHub 数据做了哪些处理,StarCoder 项目很小心地根据 license 排除了大量仓库且开放了检测和删除申请,就这还整天被人找。做闭源模型的厂家反而很少听说因此受到责难。
  • 格式清理:所有数据均转换为 markdown 格式——这个操作很有价值。
  • 去重:tokenizer 很关键,方法跟处理自然语言类似。去重粒度保持在文件级别
    在这里插入图片描述
  • 质量过滤:同样引入人类标注员但并不容易做。采用混合的多级过滤,基于规则和模型,模型评分与人类标注一致性比较差且跟语言相关,所以最后只用了一致性较高的模型作为过滤器。在构建质量模型过程中,采用了迭代式策略,即得到初版模型后做出预测,人工标注员只检查其输出“置信度”较大的样本。
  • 依赖排序:DeepSeekCoder 也做了类似工作(拓扑排序),把 repository 重新组织成从前到后的顺序依赖关系。
长上下文
  • 过滤管道:>32K 的文本;识别删除异常数据;困惑度过滤。所选数据都来自标准预训练语料。参考了同组织的 Longwanjuan
    • 统计过滤:词汇,语言特征,过滤掉无意义的数据而不是选择高质量数据,对长文本更有效因为其统计特征一致性更充分
    • 困惑度过滤器:确保两个片段是顺承关系,做法是估计 S1(靠前文档)、S2的条件概率 P(S2|S1),如果两者强关联,则P应该高于P(S2),否则S1是无关上文。常见错误包括 HTML 解析失败,社交媒体段落、原始数据带有复杂 layout 的情况。
    • 阈值选择:两个教训,针对每个任务(domain)指定阈值,例如对长代码、教科书、论文、小说,都需要设定不同的阈值;使用校验集,仅关注边界case
      在这里插入图片描述
      网页、专利减少,图书、文献基本保留(这里没看懂,看不出专利被大幅过滤啊……)

预训练设置

Tokenization

复用GPT-4的方法,参考cl100k词表,使用前60Ktoken+32K中文token+147备用token,最终使其达到256的整数倍以提升效率。

预训练超参数

在这里插入图片描述

预训练阶段

三个阶段:(1)<=4k->(2)50%的<=32k->(3)特定能力增强
每个阶段都混合中英文和代码

  • 4K阶段:涵盖90%的steps,超过的部分强制截断
  • 长上下文阶段:50%的数据仍然是<=4k的,占总steps数的9%,RoPE base 从50K提升到1M,该阶段训练速度下降40%
  • 专项提升:在 huggingface 检索得到 24B tokens,经过污染测试。该阶段 lr 和 bz 设置都比较小
    在这里插入图片描述

Alignment

  • 千万级 SFT 数据。我其实挺好奇如何保证这部分内容的质量,以及如何有效减少因为微调数据分布差异而产生幻觉的倾向
    数学,代码,价值观
  • COOL RL 算法,看起来有点像用不同的 system prompt 使对于不同任务的偏好融合到同一个奖励模型中。下面的内容由于知识水平和实践经验所限没有读得很明白,所以会有胡乱记的情况出现。
    在这里插入图片描述

COOL RL

  • 数据构成:二值化偏好数据达到了240万条
  • 损失函数:将原始排名损失修改为带有焦点的排名公式
  • 训练细节:复刻 InstructGPT 基本方法
  • Online RLHF:两种不同路径,以减少 RL 阶段模型容易走捷径的倾向
    • 快速路径:比较早期和后期 PPO 模型生成的结果,识别出特定模式的偏好对,将其调整后重新加入训练过程
    • 慢速路径:使用模型各个阶段的生成结果产生比较对,人工标注放在回路中
  • PPO 训练:略

长上下文微调

数据主要由书籍和 GitHub 仓库中的特定样本组成;数据分析能力来自 DS-1000 使用的代码库例如 Pandas、Sklearn等,并且搜索了高星仓库中包含对这些代码库的引用的集合……细节如下图
在这里插入图片描述

工具调用

  • 修改 ChatML 格式引入环境角色实现,并且定义两个特殊的关键词支持代码解释器和外部插件
  • 代码解释器的数据构造参考 InternLM-Math

评估和分析

分出来两大类:下游任务指标和对齐效果。评估库主要使用 OpenCompass

下游性能

几个要点:

  • Cool RL 对考试结果影响不大
  • InternLM2在推理、数学、代码上表现优秀
  • 强化训练的提升显著
  • 长上下文评测明显强于同级别模型

对齐

接近 SoTA,不过专门测指令遵循的 IFEval 上国产模型表现都不算好,Mistral 以及后面的 llama3 在这方面都非常强,看来需要研究下 IFEval 到底在测什么了。

污染检查

通过构造相似的新数据集并计算在其上的 loss 差异,计算基座对 GSM8K 的过拟合程度,发现 Qwen 有比较严重的刷题倾向,Baichuan13B、InternLM-SFT 其次。这点我还挺意外的, RSFT、MetaMath 都是阿里的工作而且被广泛认可,为啥 Qwen 好像体现出更好的能力来。

附录

有些内容值得摘录下:

  • 包含工具调用的一个交互示例
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1429956.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux连接主机xshell,Linux vi编辑器使用教程

Linux连接主机xshell Linux vi编辑器使用教程 以下是Linux中vi编辑器的使用教程&#xff1a; 打开终端并输入vi命令&#xff0c;然后按回车键打开vi编辑器。 默认情况下&#xff0c;vi编辑器处于命令模式。在命令模式下&#xff0c;你可以执行一些编辑操作。例如&#xff1a…

从0开始学统计-t检验

1.什么是t检验&#xff1f; t检验是一种用于比较两个样本均值之间差异是否显著的统计方法。它通常用于以下几种情况&#xff1a; &#xff08;1&#xff09;单样本 t 检验&#xff1a;用于检验一个样本的平均值是否与一个已知的总体平均值&#xff08;或者一个假设的总体平均…

SpringCache+redis实现缓存

SpringCacheredis实现缓存 介绍注解入门程序环境准备1). 数据库准备2). 导入基础工程3). 注入CacheManager4). 引导类上加EnableCachingCachePut注解1). 在save方法上加注解CachePut2). 测试 CacheEvict注解1). 在 delete 方法上加注解CacheEvict2). 测试3). 在 update 方法上加…

# 文件或目录损坏且无法读取 的解决方案

文件或目录损坏且无法读取 的解决方案 一、问题描述&#xff1a; windows 系统下&#xff0c;当对某一个文件或文件夹操作时&#xff0c;出现【文件或目录损坏且无法读取】&#xff0c;这时不管对其进行修改、删除、更改属性等操作&#xff0c;都不能正常进行&#xff0c;在 …

揭秘《庆余年算法番外篇》:范闲如何使用维吉尼亚密码解密二皇子密信

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

高斯过程学习笔记

目录 基础知识 例子 推荐 A Visual Exploration of Gaussian Processes (distill.pub) AB - Introduction to Gaussian Processes - Part I (bridg.land) 基础知识 高斯过程回归&#xff08;Gaussian Process Regression&#xff09; - 知乎 (zhihu.com) 高斯过程&#x…

Linux自动重启系统脚本测试工具

前言 脚本允许用户指定重启的次数和重启间隔时间&#xff0c;并自动生成相应的定时任务。通过使用这个脚本&#xff0c;系统管理员可以轻松地设置重启测试。每次重启操作都会被记录下来&#xff0c;以便用户随时了解测试情况。 一、脚本 #!/bin/bashif [ "$1" &qu…

CAD二次开发(4)-编辑图形

工具类&#xff1a;EditEntityTool.cs using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Th…

20道经典自动化测试面试题

概述 觉得自动化测试很难&#xff1f; 是的&#xff0c;它确实不简单。但是学会它&#xff0c;工资高啊&#xff01; 担心面试的时候被问到自动化测试&#xff1f; 嗯&#xff0c;你担心的没错&#xff01;确实会被经常问到&#xff01; 现在应聘软件测试工程师的岗位&…

神经网络不确定性综述(Part V)——Uncertainty measures and quality

相关链接&#xff1a; 神经网络不确定性综述(Part I)——A survey of uncertainty in deep neural networks-CSDN博客 神经网络不确定性综述(Part II)——Uncertainty estimation_Single deterministic methods-CSDN博客 神经网络不确定性综述(Part III)——Uncertainty est…

基于深度学习和去卷积的盲源分离方法在旋转机械上的应用

关键词&#xff1a;预测性维护、盲源分离、振动分析、传递函数移除、二阶循环平稳性、轴承监测、机器学习 振动是旋转机械中主要的故障指示器&#xff0c;它们主要来源于两个方面&#xff1a;一个是与齿轮相关的振动&#xff08;主要源于齿轮啮合过程中的冲击和不平衡负载&…

图像处理案例01

案例01 例011.1 目标1.2 步骤1.3 代码 例01 1.1 目标 找出图形中的圆弧。 1.2 步骤 读入图像。彩色图转灰度图。图像处理。读灰度图阈值分割&#xff0c;得到img_thre&#xff0c;除掉图中的蓝色和绿色&#xff0c;只留下白色。对img_thre做水平梯度得到gx&#xff0c;这样…

算法:树状数组

文章目录 面试题 10.10. 数字流的秩327. 区间和的个数315. 计算右侧小于当前元素的个数 树状数组可以理解一种数的存储格式。 面试题 10.10. 数字流的秩 假设你正在读取一串整数。每隔一段时间&#xff0c;你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。 请实现数据结构…

Python 静态网页信息爬取

在当今数字化时代&#xff0c;数据的价值不言而喻。对于研究人员、开发者和数据分析师来说&#xff0c;能够从互联网的海量信息中提取所需数据&#xff0c;无疑是一项宝贵的技能。Python&#xff0c;作为一种广泛使用的编程语言&#xff0c;提供了多种工具来实现这一目标&#…

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,支持自然语言查询

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端&#xff0c;支持自然语言查询 The professional GUI, IDE and client for MongoDB 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t/&#xff0c;查看最新版。原创作品&#xff…

Autodesk 3DS Max v2025 解锁版安装教程 (3D 建模软件)

前言 Autodesk 3ds Max 是一款功能强大的 3D 建模和动画解决方案&#xff0c;游戏开发人员、视觉效果艺术家和平面设计师使用它来创建庞大的世界、令人惊叹的场景和引人入胜的虚拟现实 (VR) 体验。 Autodesk 3DS MAX是业界使用最广泛的3D建模和动画软件程序之一&#xff0c;它…

基于FPGA的VGA显示

文章目录 一、VGA介绍二.VGA显示字符三、VGA显示彩色条纹四、VGA显示彩色图片五、参考 一、VGA介绍 VGA&#xff08;Video Graphics Array&#xff09;视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共…

21.Happens-Before原则

文章目录 Happens-Before原则1.Happens-Before规则介绍2.规格介绍2.1.顺序性规则(as-if-serial)2.2.volatile规则2.3.传递性规则2.4.监视锁规则2.5.start规则2.6.join()规则 Happens-Before原则 JVM内存屏障指令对Java开发工程师是透明的&#xff0c;是JMM对JVM实现的一种规范和…

基于MetaGPT构建LLM 订阅 Agent

前言 在上一篇文章中&#xff0c;我们学习了如何利用MetaGPT框架构建单智能体和多智能体&#xff0c;并通过一个技术文档撰写Agent和课后作业较为完整的理解一个Agent的需求分析和开发流程&#xff1b;但是技术要和应用结合才能得到更广泛的推广&#xff1b;在本文中&#xff0…

【css3】04-css3转换

目录 1 2D转换 2 3D转换 3 案例&#xff1a;旋转的魔方 1 2D转换 ## 2D转换 ☞ 位移 transform: translate(100px,100px); 备注&#xff1a; 位移是相对元素自身的位置发生位置改变 ☞ 旋转 transform: rotate(60deg); 备注&am…
最新文章