【浦语大模型开源探索】InternLM实战营第二期:技术笔记与全链路解析

本次课程链接在GitHub上:
InternLM/Tutorial at camp2 (github.com)

第一次课程录播链接:
书生·浦语大模型全链路开源体系_哔哩哔哩_bilibili

InternLM2技术报告:
arxiv.org/pdf/2403.17297.pdf

一、书生·浦语大模型全链路开源体系笔记

InternLM2是在2.6万亿token的高质量语料上训练得到的。沿袭第一代书生·浦语(InternLM)的设定,InternLM2包含
7B及20B
两种参数规格及基座、对话等版本,满足不同复杂应用场景需求。

书生·浦语大模型开元历程

  1. 20230607 -
    InternLM千亿参数语言大模型
    发布
  2. 20230706 -
    InternLM千亿参数大模型
    全面升级,支持 8K 语境、26 种语言,全面开源,免费商用,InternLM-7B 模型、全链条开源工具体系
  3. 20230814 - 书生·万卷 1.0
    多模态
    预训练语料库开源发布
  4. 20230821 - 升级版对话模型
    InternLM-Chat-7B
    v1.1 发布,
    开源智能体框架 Lagent
    支持从语言模型到智能体升级转换
  5. 20230828 - InternLM 干亿参数模型参数量升级至
    123B
  6. 20230920 - 增强版
    InternLM-20B
    开源,
    开源工具链全线升级
  7. 20240117 - InternLM 2 开源

主要亮点

相比较于1代的InternLM,2代的InterLM2实现了全方位的性能提升(吊打)

    1. 20w上下文,
    1. 推理数学代码能力提升,
    1. 结构化创作
    1. 工具调用能力
    1. 内生计算、代码解释

书生·浦语全链条开源开放体系

数据、预训练、微调、部署、评测、应用

模型的构建离不开数据作为基础,开放高质量语料数据集可以在OpenDataLab上获取:https://opendatalab.org.cn

大模型的下游应用中,增量续训(如:以文章书籍代码等为训练数据,让基座模型学习到某个领域的一些新知识)和有监督微调(如:以高质量对话、问答数据等为训练数据,让模型学会理解各种指令进行对话,或者注入少量领域知识)是经常会用到的两种方式。

微调

  1. 增量续训
    1. 使用场景 - 新知识,垂类领域知识
    2. 训练数据 - 文章、书籍、代码
  2. 有监督微调(全量参数微调、部分参数微调)
    1. 使用场景 - 注入少量领域知识,对话
    2. 训练数据 - 高质量对话&问答数据

部署

LMDeploy
是一个全面的开源平台,是一个高效部署、优化和管理机器学习模型及其在GPU加速系统上的推理工作流程。它的目标是为开发者提供一个全链条、开放且高性能的解决方案。

Agent智能体

基于开源轻量级的智能体框架Lagent和多模态的智能体工具箱AgentLego,其中Lagent可以支持多种类型的智能体能力,支持ReAct,ReWoo,AutoGPT不同的智能体Pipeline,灵活支持多种大模型,简单易拓展,支持丰富的工具。而AgentLego提供了一系列多功能的工具集合,支持多个主流智能体系统例如LangChain等,灵活的多模态工具调用接口,支持多模态扩展,包括视觉感知、图像生成与编辑、语音处理以及视觉-语言推理等功能,一键式远程工具部署,轻松使用和调试大模型智能体。

二、InternLM2技术报告笔记

概述

InternLM2是一个开源的大型语言模型(LLM),它在多个维度和基准测试中展现出了超越先前方法的能力。该模型通过创新的预训练和优化技术,在长序列建模和开放性主观评估方面表现突出。报告详细阐述了InternLM2的基础设施、模型结构、预训练数据、预训练设置、预训练阶段、对齐策略、评估和分析等内容。

主要贡献

  1. 模型开源与发布
    • InternLM2以不同规模(18亿、70亿和200亿参数)的模型形式公开发布,这些模型在主观和客观评估中都展现出了卓越的性能。
    • 报告还发布了不同训练阶段的模型,以便社区能够分析监督微调(SFT)和基于人类反馈的条件在线强化学习(Conditional Online RLHF)训练后的模型变化。
  2. 长序列处理能力
    • InternLM2设计了具有200k上下文窗口的能力,使其在长序列任务中表现出色。特别是在“大海捞针”实验中,使用200k上下文几乎完美地识别出所有目标。
    • 报告分享了在整个训练过程中(预训练、SFT和RLHF)训练长序列语言模型的经验和策略。
  3. 数据准备指南
    • 报告详细阐述了数据准备的各个环节,包括预训练数据、领域特定增强数据、SFT数据和RLHF数据的收集、处理和使用。
    • 这些详细的数据准备指南将有助于社区更好地理解和训练LLMs,提高模型性能和泛化能力。
  4. 创新的RLHF训练技术
    • 报告引入了条件在线RLHF(COOL RLHF)方法,用于协调不同的偏好,从而显著提高了InternLM2在各种主观对话评估中的性能。
    • 报告还进行了初步的主观和客观RLHF结果的分析和比较,为社区提供了对RLHF技术的深入理解。

基础设施

在人工智能领域,特别是在自然语言处理(NLP)方面,高效且强大的训练框架对于模型的开发和优化至关重要。InternEvo作为一个训练框架,在预训练、SFT(Supervised Fine-Tuning,有监督微调)以及RLHF(Reinforcement Learning from Human Feedback,从人类反馈中进行的强化学习)等关键阶段都发挥了关键作用。

InternEvo作为训练框架,在预训练、SFT和RLHF阶段展现了高效性和扩展性,通过数据并行等技术优化训练效率,支持灵活微调,并整合人类反馈优化模型表现,为大型语言模型的开发提供了坚实基础。

模型架构

该模型架构基于LLaMA的设计原则,不仅继承了RMSNorm和SwiGLU激活函数的优点,还在权重矩阵和注意力机制方面进行了创新。具体来说,模型对权重矩阵Wk、Wq、Wv进行了精心调整,以更好地支持不同的张量并行转换,从而显著提高了训练速度。这一改进使得模型在处理大规模数据时能够更加高效。

为了支持长上下文的处理,模型引入了分组查询注意力(GQA)结构。这种结构使得模型在处理非常长的上下文时能够保持高速运算和低GPU显存消耗,从而扩展了模型的应用范围。GQA结构通过分组处理查询向量,有效降低了计算复杂度和内存需求,使得模型在处理长文本时更加高效稳定。

预训练数据

预训练数据是构建大型语言模型(LLM)的基石,对于模型的性能至关重要。在本项目中,使用了海量的文本数据作为预训练数据,这些数据涵盖了多个领域,包括新闻、科技、文学、社交媒体等。通过收集这些多样化的数据,确保了模型能够从多个角度学习语言的规律和结构。

在数据预处理阶段,对原始数据进行了清洗和过滤,去除了重复、低质量和与任务不相关的内容。同时,还进行了分词、词频统计等处理,以便模型更好地理解和处理文本数据。

预训练设置

在预训练阶段,采用了多机多卡的方式进行分布式训练,以充分利用计算资源。具体来说,我们使用了数百个GPU进行并行训练,以加速模型的收敛速度。

在模型设置方面,采用了LLaMA的结构设计原则,并在此基础上进行了一些改进。使用了RMSNorm作为归一化方法,并采用了SwiGLU作为激活函数。这些选择有助于提高模型的稳定性和性能。

此外,还对模型的超参数进行了精心调整,包括学习率、批处理大小、训练轮数等。通过多次实验和调优,找到了一组适合本项目的超参数设置。

预训练阶段

预训练阶段是整个模型构建过程中最为耗时的部分。在这个阶段,模型通过无监督学习的方式从预训练数据中学习语言的规律和结构。采用了大规模并行化的训练策略,以加快训练速度。

在训练过程中,使用了梯度下降等优化算法来更新模型的参数。同时,还采用了学习率衰减、梯度裁剪等技术来防止模型过拟合和梯度爆炸等问题。

随着训练的进行,模型的性能逐渐提升,能够更好地理解和生成自然语言文本。

对齐策略

在对齐策略方面,采用了对齐损失函数来确保模型在生成文本时能够保持与原始文本的一致性。具体来说,计算了生成文本与原始文本之间的相似度或距离,并将其作为损失函数的一部分进行优化。

通过优化对齐损失函数,能够使模型在生成文本时更好地保留原始文本的信息和意图,提高生成文本的质量和相关性。

评估和分析

为了评估模型的性能,采用了多种评估指标,包括困惑度(Perplexity)、BLEU分数、ROUGE分数等。这些指标能够从不同角度评估模型在文本生成和理解方面的能力。

通过对模型在不同数据集和任务上的评估,发现模型在多个方面都取得了显著的性能提升。同时,还对模型的内部表示进行了可视化分析,以更好地理解其工作原理和性能瓶颈。

结论

InternLM2是一个功能强大且开源的大型语言模型,它在多个方面展现出了卓越的性能和创新能力。通过发布不同训练阶段和模型大小的版本,报告为社区提供了宝贵的洞察和参考。同时,训练框架InternEvo的高效性和可扩展性也为大型语言模型的训练提供了有力支持。这些贡献将有助于推动LLM领域的发展和应用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

v-html 空格/换行不生效

接口返回的内容如下&#xff1a;有空格有换行&#xff0c;但 使用v-html无效 需加css样式 white-space: pre-wrap; <div class"pretty-html" v-html"Value"></div>.pretty-html {white-space: pre-wrap; /* 保留空格和换行&#xff0c;并允许…

震撼发布!4M-21:苹果多模态AI巨擘,一键解锁21种模态

前沿科技速递&#x1f680; 来自洛桑联邦理工学院&#xff08;EPFL&#xff09;与苹果科研巨擘的强强联手&#xff0c;震撼发布全新跨时代成果——4M-21模型&#xff01;这一革命性单一模型&#xff0c;突破性地覆盖了数十种高度多样化的模态&#xff0c;通过大规模多模态数据集…

数据洞察:从零到一的数据仓库与Navicat连接全攻略【实训Day04】[完结篇]

一、数据分析 1 实现数据仓库(在hadoop101上) 1) 创建jobdata数据库 # cd $HIVE_HOME # bin/hive hive>create database jobdata; hive>use jobdata; 2) 创建原始职位数据事实表ods_jobdata_orgin(在hadoop101上) create table ods_jobdata_origin( city string CO…

【测试开发】【postman】按顺序循环执行接口

postman按顺序循环执行接口 新建接口接口排序执行请求集合 新建接口 Request 001 Request 002 Request 003 接口排序 在Request 001的Tests中添加代码 postman.setNextRequest("Request 002");在Request 002的Tests中添加代码 postman.setNextRequest("Requ…

ASP.NET Core 使用Log4net

1. Nuget安装log4net&#xff0c;图里的两个 2.项目根目录下添加log4net.config.添加下面的代码: <?xml version"1.0" encoding"utf-8"?> <configuration><!-- This section contains the log4net configuration settings --><log…

“免费”的可视化大屏案例分享-智慧园区综合管理平台

一.智慧园区是什么&#xff1f; 智慧园区是一种融合了新一代信息与通信技术的先进园区发展理念。它通过迅捷信息采集、高速信息传输、高度集中计算、智能事务处理和无所不在的服务提供能力&#xff0c;实现了园区内及时、互动、整合的信息感知、传递和处理。这样的园区旨在提高…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本&#xff0c;环境&#xff1a;k8s版本为&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

IDEA如何引入外部jar包

导了3次&#xff0c;记不住&#xff0c;写篇博客记一下&#xff1b; 1、File->Project Structure->项目名称->JARs or Dircetories... 2、选择所要导入的jar包【可多选】&#xff1b;此处图片略&#xff1b; 3、选中后点击确定&#xff0c;jar会显示在idea的目录中&…

零基础必看html5

文本格式化标签 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&g…

6月30日功能测试Day10

3.4.4拼团购测试点 功能位置&#xff1a;营销-----拼团购 后台优惠促销列表管理可以添加拼团&#xff0c;查看拼团活动&#xff0c;启动活动&#xff0c;编辑活动&#xff0c;删除活动。 可以查看拼团活动中已下单的订单以状态 需求分析 功能和添加拼团 商品拼团活动页 3…

【python】Python中常用的数据结构——列表、元组和字典

python中的数据结构 列表、元组、字典的区别元组&#xff0c;字典&#xff0c;列表三者之间如何实现嵌套生成一个单一元素的元组、列表列表的地址列表、元组和字典的增删改查 列表、元组、字典的区别 列表、元组和字典是Python中常用的数据结构&#xff0c;它们各自有不同的特…

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比&#xff0c;同时还可以兼容ubuntu、安卓等多种操作系统&#xff0c;今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…

14-28 剑和诗人2 - 高性能编程Bend和Mojo

介绍&#xff1a; 在不断发展的计算世界中&#xff0c;软件和硬件之间的界限变得越来越模糊。随着我们不断突破技术可能性的界限&#xff0c;对能够利用现代硬件功能的高效、可扩展的编程语言的需求从未如此迫切。 Bend和 Mojo是编程语言领域的两种新秀&#xff0c;它们有望弥…

RT-Thread Studio与CubeMX联合编程之rtthread启动

看到了好多文章&#xff0c;在rtthread studio中启用mx&#xff0c;后总是复制mx相关msp函数到rt的board.c文件下&#xff0c;实际使用过程中发现并不需要&#xff0c;这里我们看下rt启动流程&#xff0c;看下到底需要不。 1.打开startup_stm32h743xx.S文件&#xff0c;看下芯片…

法国工程师IMT联盟 密码学及其应用 2023年期末考试补考题

1 JAVA 安全 1.1 问题1 1.1.1 问题 用 2 或 3 句话解释 Java 执行模型&#xff08;Java 虚拟机machine virtuelle Java)&#xff09;中引入introduit沙箱bac sable机制 mcanisme d’excution par isolation的目的。 1.1.2 问题解释 在 Java 执行模型&#xff08;Java 虚拟机…

【车载开发系列】J-Link/JFlash 简介与驱动安装方法

【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法一. 软件介绍二. 下载安装包二. 开始安装三. 确认安装四. J-Flash的使用 一. 软件介绍 J-Link是SEGGER公司为支持仿真…

昇思25天学习打卡营第07天 | 函数式自动微分

昇思25天学习打卡营第07天 | 函数式自动微分 文章目录 昇思25天学习打卡营第07天 | 函数式自动微分函数与计算图微分函数与梯度Stop GradientAuxiliary data 神经网络梯度计算总结打卡 神经网络的训练主要使用反向传播算法&#xff0c;首先计算模型预测值&#xff08;logits&am…

【IC】mismatch model

由于工艺和制造偏差的存在,相同设计参数的器件会存在参数间额差异,称为mismatch,通常用Monte Carlo去仿真多个mismatch叠加对设计的总影响。 器件偏差mismatch是工艺和制造偏差导致的,在Lot to Lot、Wafer to Wafer、Die to Die 以及in die的Device to Deview之间可见。 …

OZON怎么查看竞品数据,OZON怎么找竞品数据

在跨境电商的激烈竞争中&#xff0c;了解和分析竞品数据是每一位卖家优化销售策略、提升市场竞争力的关键步骤。OZON作为俄罗斯领先的电商平台&#xff0c;为卖家提供了丰富的数据分析工具&#xff0c;而萌啦ozon数据作为第三方数据分析平台&#xff0c;更是为卖家提供了更为全…