首页 > 其他分享 >[InternLM训练营第二期笔记]1. 书生·浦语大模型全链路开源开放体系

[InternLM训练营第二期笔记]1. 书生·浦语大模型全链路开源开放体系

时间:2024-03-30 20:03:30浏览次数:18  
标签:模型 微调 InternLM2 RLHF 奖励 InternLM 链路 浦语


由于想学习一下LLM相关的知识,真好看到上海AI Lab举行的InternLM训练营,可以提高对于LLM的动手能力。
每次课堂都要求笔记,因此我就想在我的CSDN上更新一下,希望和感兴趣的同学共同学习~

本次笔记是第一节课,介绍课。
课程视频:Bilibili
InternLM2 Technical report: arxiv


1. 书生·浦语大模型全链路开放体系

1.1 介绍

当前,人工智能的发展趋势是从专用模型到通用模型迈进。专用模型往往是解决一个特定的问题,而通用模型可以结合多种模态,完成多种任务。

当前,InternLM模型已经完成了多轮的迭代,并在今年的1月,正式升级成为InternLM2:
在这里插入图片描述

InternLM2目前已经开源了7B和20B的两个规格,而每个规格包含了三种模型的版本。InternLM2-Base相当于一个模型基准,通过对Base在各个方向上进行强化,就得到了InternLM。在Base的基础上,经过SFT(Supervised Fine-Tuning,有监督微调)和RLHF(Reinforcement Learning from Human Feedback,以人类反馈为准绳的强化学习),就得到了具有更强共情能力的InternLM2-chat。

在这里插入图片描述
在工程上,从模型到应用的典型流程如下:
在这里插入图片描述
如果业务场景不复杂,那么我们可以直接把已有的模型拿来用,直接进行评测和部署即可;
如果比较复杂,在算力够的情况下,我们可以接着训练,或者做微调,让他适应我们业务的实际场景。如果需要和实际的环境进行交互,则需要构建一个智能体(例如,我们可能需要手动实现一些函数,来让模型学会在场景中调用这个函数实现期待的结果)。

1.2 链路体系

InternLM链路体系如下图所示:

在这里插入图片描述

我们要做一个LLM,首先需要有数据。数据的数量(例如,InternLM采用的数据大小为2T)和种类(多种模态)都必须足够丰富。

数据之后,我们要做预训练。让大模型初步掌握数据域中的知识,能够完成各种任务。

随后是微调。微调的目的是让模型更适应特定领域的知识。InternLM的微调工具是XTuner,它既支持全参数微调,也支持LoRA这种低成本微调。(LorRA的核心思想是通过矩阵低秩分解的角度,来学习真正重要的权重部分,结构如下图:

在这里插入图片描述

在微调之后,模型已经掌握了我们希望它掌握的知识,因此我们需要部署到GPU上,以实现更快的推理。我认为,部署最重要的步骤就是量化,例如对权重采用4bit量化(最近哈工大的团队做到了1bit量化),对key、value进行8bit量化等,可以大大提高速度。此外,还有一些批处理技巧等。

最后,我们要进行评测。评测有多个社区的多个benckmark。上海AI Lab发布了OpenCompass,涵盖了数据污染检查、长文本能力、中英双语、多模态等。

给我有启发意义的是这张图:
在这里插入图片描述
当前的大模型在回答文科或者通用问题上已经比较不错了,但是在理科能力和复杂推理上还有短板,说明还有很大的进步空间。

最终的阶段是应用,那就是对于不同的用户,通过构建智能体的方式达到更精细化的个人需求。

2. Technical Report

整个技术报告中,最核心的有两点:有监督微调(SFT)和人类反馈指导的强化学习(RLHF)。大体上来说,作者通过32k高质量数据有监督地提升模型的长文本能力,使得模型具备200k长度上下文的处理能力。此外,作者提出了有条件的在线RLHF(COOL RLHF),并通过近端策略优化缓解每个阶段出现的奖励黑客攻击(这应该是强化学习里的概念)。COOL RLHF的目的是将模型的价值观与人类的进行对齐。

2.1 SFT

其中,对于SFT,InternLM2模型特别加强了模型对于数学和代码能力的训练,为此,作者筛选了1000万个实例数据,并且保证其是harmless的:

在这里插入图片描述

对于7B和20B的模型,在上述数据下训练一个epoch,采用AdamW,学习率是 4 e − 5 4e^{-5} 4e−5。

2.2 COOL RLHF

在这里插入图片描述

图(a)是LAMMA2的RLHF的方式。LAMMA2采用明确的奖励模型来解决偏好冲突的问题。

偏好冲突(Preference Conflict)通常指的是在处理用户请求或生成文本时,模型可能面临用户给出的多个偏好或指令之间存在不一致或矛盾的情况。例如,用户可能一方面要求生成的内容要创新和独特,另一方面又要求严格遵循某些规则或模板,这两者之间可能存在冲突。

图(b)是COOL RLHF的方式,条件奖励模型使用不同的系统提示来无缝融合来自各个领域的数据。由于奖励模型是从一个已经学会遵循多样化人类指令的SFT模型初始化的,我们也让奖励模型遵循不同的系统提示,以适应不同场景中的多样化偏好。在条件奖励模型中,系统提示不仅是其输入的一个组成部分;它们还是指导奖励分数与不同场景中特定偏好保持一致的重要工具。这样的整合使得可以在一个统一的奖励模型中管理矛盾和复杂的人类偏好,而不会牺牲准确性。

标签:模型,微调,InternLM2,RLHF,奖励,InternLM,链路,浦语
From: https://blog.csdn.net/wjpwjpwjp0831/article/details/137127673

相关文章

  • 【计算机网络篇】数据链路层(4.2)可靠传输的实现机制
    文章目录......
  • centos8.2 创建链路聚合mode4的 也就是bond4
    网卡数据链路层负载均衡是使用mode4,且可以实现物理链路间互备,提供给用户的是一个逻辑上的链路,该逻辑链路的有效网络带宽为全部物理链路带宽之和。Bondingmode4的一些特性:最多支持绑定8个主机的网卡端口;LACP控制协议数据包每秒发送一次,检测主机网卡是否存活的检测包每30秒(fast)......
  • 逻辑链路控制与适配协议(L2CAP)
    逻辑链路控制与适配协议通常简称为L2CAP(LogicalLinkControlandAdaptationProtocol),它向上连接应用层,向下连接控制器层,发挥主机与控制器之间的适配器的作用,使上层应用操作无需关心控制器的数据处理细节。经典蓝牙的L2CAP层比较复杂,它实现了协议复用、数据分段与重组、封装......
  • 【网络】:数据链路层
    数据链路层一.以太网帧格式二.认识MTU三.ARP协议1.ARP协议的工作流程2.ARP数据报的格式3.ARP欺骗四.其他重要协议或技术1.DNS2.ICMP协议3.NAT技术(重点)4.代理服务器五.一些问题认识以太网“以太网”不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内......
  • HCIP —— 链路聚合
    链路聚合背景随着网络规模不断扩大,用户对骨干链路的带宽和可常性提出越来越高的要求,在传统技术中,常用更换高速率的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。而采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,......
  • 数据链路层(三):流量控制和链路管理
    目录1流量控制和链路管理1.1流量控制介绍1、什么是流量控制2、流量控制的功能和方法1.2停止等待1.3滑动窗口1、滑动窗口2、发送方滑动窗口3、接收方滑动窗口4、滑动窗口的流量控制使用滑动窗口如何实现流量控制的为什么滑动窗口的大小比模数小1滑动窗口控制流量采取......
  • 计算机网络——数据链路层(差错控制)
    计算机网络——数据链路层(差错控制)差错从何而来数据链路层的差错控制检错编码奇偶校验码循环冗余校验(CRC)FCS纠错编码海明码海明距离纠错流程确定校验码的位数r确定校验码和数据位置求出校验码的值检错并纠错我们今年天来继续学习计算机网络数据链路层这一小节的......
  • 适应多样化需求:WASM 插件在全链路灰度发布中的应用
    作者:十眠据调研数据显示,约70%的生产故障是由变更引起的。为了消除变更过程存在的风险,在发布过程中,我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。即使新版本有问题,也能及时发现,控制影响面,保障了整体的稳定性,这就是微服务架构下的全链路灰度的能力。MSE在微服......
  • m基于log-MPA检测算法的SCMA通信链路matlab误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       稀疏码多址接入(SparseCodeMultipleAccess,SCMA)是一种非正交多址接入技术,它通过引入码本的稀疏性来实现多用户的高效接入。在SCMA系统中,多用户共享相同的时频资源,每个用户从自己的码本......
  • Spring中getBean的生命周期和整个链路原理
    publicabstractclassAbstractBeanFactoryextendsFactoryBeanRegistrySupportimplementsConfigurableBeanFactory{publicObjectgetBean(Stringname)throwsBeansException{returndoGetBean(name,null,null,false);}protected<T&......