书生·浦语大模型实战营 第一节
书生·浦语大模型全链路开源体系
标题和摘要中包含Language Model和Large Language Model关键词的论文,有一个指数级的增长。尤其是在ChatGPT发布以后,迅速成为了最热门的研究方向。
OpenAI从2018年的GPT1到2020年的GPT3把这条技术路线坚持了下来。ChatGPT发布以后,两个月月活破亿,成为了当时最快破亿的应用,打破了TikTok的记录。原因之一是大模型成为发展通用人工智能的一个重要途径。
2006 深度学习理论突破 —>2011 大规模语音识别 —>2012 ImageNet竞赛 —>2014 人脸识别超过人类 —>2016 AlphaGo围棋比赛击败人类 —>2019 德州扑克 —>2021 AlphaFold 蛋白质结构预测准确率新高
人工智能的发展路径是从专用模型到通用模型这样的一个过程。针对特定任务,一个模型解决一个问题到一个模型应对多种任务、多种模态。(所以通用模型也是要针对每个局部模型的功能进行定向开发的,相当于只用一个模型框架,但是每个具体的任务也要具体的、对应的去构建。)
ChatGPT:只要是以文本作为输入和输出,能够完成如情绪识别、命名实体识别、QA等任务都可以解决。
GPT4:将模态从单纯的语言模态拓展到了视觉模态,模型的通用性也大大提升。
【书生·浦语】大模型介绍
能力类型与测试集:
- 综合考试:MMLU、C-Eval(val)、AGI-Eval;
- 知识问答:BoolQ、TriviaQA、NaturalQuestions;
- 阅读理解:CMRC、CSL、RACE(middle)、RACE(high)、XSum;
- 推理:WinoGrande、BBH、GSM8K、PIQA;
- 编程:HumanEval、MBPP。
以不到三分之一的参数量,达到了Llama2-70B的水平。
从模型到应用
- 模型选型(评测):针对应用场景筛选在所需维度上能力较强的模型,本质是模型评测;
- 业务场景是否足够复杂:
- 简单:直接使用模型,使用Prompt Engineering接入场景;
- 复杂:对模型进行微调。
- 算力充沛与否:
- 足够:模型的续训、全参数微调;
- 受限:部分参数微调(如LoRA等)将大部分参数固定住,只调一小部分参数。
- 是否需要和环境交互:
- 需要:如调用外部API、和已有的数据库进行交互等,构建智能体;
- 不需要:直接在业务场景中进行试用。
- 模型上线前的评测:
- 不通过:重新微调或者在研发环境中进行迭代;
- 通过:模型部署。
- 模型部署:如何用较少的资源部署模型、如何提升整个应用的吞吐量。
【书生·浦语】全链条开源开放体系
数据
书生·万卷
2TB开源数据,涵盖多种模态与任务
-
多模态融合:包含多模态数据
- 文本数据:50亿个文档,数据量超1TB;
- 图像-文本数据:超2200万个文件,数据量超140GB;
- 视频数据:超1000个文件,数据量超900GB。
包含多模态数据,涵盖科技、文学、媒体、教育和法律等多个领域。
该数据集对模型的知识内容、逻辑推理和泛化能力的提升有显著效果。 -
精细化处理:
运用在大模型研发过程中积累下来的数据预处理(数据清洗)技术对数据集进行了精细化处理,处理后的数据开源了出来。
精细数据处理:语言筛选、文本提取、格式标准化、数据过滤和清洗(基于规则和模型)、多尺度去重、数据质量评估等。 -
价值观对齐:
将数据内容与主流中国价值观进行对齐,并通过算法和人工评估的结合提高语料库的纯净度。
开放数据平台 OpenDataLab
并提供了智能标注的一些工具
预训练
InternLM-Train
并行训练,极致优化
速度达到3600 tokens/sec/gpu
一个比较全面的预训练算法框架,拥有如下特点:
- 高可扩展:支持八卡到千卡训练,千卡加速效率达92%;
- 极致性能优化:Hybrid Zero技术 + 极致优化 —> 能够对整体的模型训练加速50%;
- 兼容主流:能够无缝接入HuggingFace等技术生态,支持各类轻量化技术;
- 开箱即用:支持多种规格的语言模型,只要修改配置即可进行训练。
微调
XTuner
支持全参数微调,支持LoRA等低成本微调
在大语言模型的下游应用中,增量续训和有监督微调是经常会用到的两种方式。
增量续训(训练的形式和格式基本上和预训练是一致的)
使用场景:让基座模型学习到一些新知识,如某个垂类领域知识。
训练数据:文章、书籍、代码等。
有监督微调
使用场景:让模型学会理解和遵循各种指令,或者注入少量领域知识。
训练数据:高质量的对话、问答数据。(数据量会小一些)
右下角图例为部分参数微调LoRA的示意图。把预训练权重固定住,引入一些新的比较小的可训练参数,来进行部分参数微调,这样可以大大节省整个训练的代价。
高效微调框架XTuner
- 适配多种生态:
- 多种微调算法:兼容多种微调策略与算法(如LoRA、QLoRA等),覆盖各类SFT场景;
- 适配多种开源生态:支持直接加载HuggingFace、ModelScope模型或数据集;
- 自动优化加速:开发者无需关注复杂的显存优化与计算加速等细节,XTuner可以自己管理和实现。
- 适配多种硬件:
- 训练方案覆盖NVIDIA 20系以上所有显卡:
- 消费级显卡:2080、2080ti;30603090ti;40604090;
- 数据中心:Tesla T4、V100、A10、A100、H100。
- 最低只需8GB显存即可微调7B模型。
- 训练方案覆盖NVIDIA 20系以上所有显卡:
- 具体细节:
- 可微调的任务类型: 增量预训练、指令微调、工具类指令微调;
- 兼容常用数据集的数据格式: Alpaca、MOSS、OpenAI、Guanacao…
- 兼容的训练引擎:HuggingFace、MMEngine;
- 优化加速:Flash Attention、DeepSpeed ZeRO、Pytorch FSDP;
- 支持算法:QLoRA微调、LoRA微调、全量参数微调。
- 可支持的模型:InternLM、Llama、QWen、BaiChuan、ChatGLM、Mixtral MoE等。
XTuner是第一个能够在8GB显存上对7B模型进行微调的框架。不同的微调算法(优化算法)有不同的显存消耗。再加上一些其他的优化,可以做到在2080/4060这样的显卡上调试7B的模型。
评测
OpenCompass
全方位评测,性能可复现
80套测评集,40万道题目
还提供了一些公开的Leaderboard
目前的评测体系,主要是针对客观评测,有一些包含了客观主观,从整体评测的全面性来讲的话,不太能够满足现在大模型的一些发展,因此提出了OpenCompass大模型开源评测体系。
大模型能力的六大维度:
- 学科:初中考试、中国高考、大学考试、语言能力考试、职业资格考试;
- 语言:字词释义、成语习语、语义相似、指代消解、翻译;
- 知识:知识问答、多语种知识问答;
- 理解:阅读理解、内容分析、内容总结;
- 推理:因果推理、常识推理、代码推理、数学推理;
- 安全:偏见、有害性、公平性、隐私性、真实性、合法性。
所有的评测集依照着这六大维度进行分类和构建,以此来形成比较全面的评测体系,避免只关注大模型的某个方面,或者只关注某个能力维度。
平台架构:
- 工具层(可供大家使用的一些评测的核心工具):分布式评测、提示词工程、评测数据库上报、评测榜单发布、评测报告生成;
- 方法层(评测方法):自动化客观评测、基于模型辅助的主观评测、给予人类反馈的主观评测;
- 能力层:
- 通用能力:学科、语言、知识、理解、推理、安全;
- 特色能力:长文本、代码、工具、知识增强(比较专门的一些能力维度,会随着大模型领域的发展不断更新);
- 模型层(整个Leaderboard上包括了超过100个模型):
- 通用能力:基座模型;
- 特色能力:对话模型。
OpenCompass的亮点:
- 丰富的模型支持:对开源模型、商用API等,模型可以一站式评测;
- 分布式高效评测:支持千亿参数模型在海量数据集上分布式评测;
- 便捷的数据集接口:支持社区用户根据自身需求快速添加自定义数据集;
- 敏捷的能力迭代:每周更新大模型能力榜单,每月提升评测工具能力。
Meta也将OpenCompass作为官方推荐的评测工具之一,是目前唯一一个由由国内开发者主要开发的评测工具。
OpenCompass支持的模型:主流的、常见的模型基本上都已经覆盖到了。
部署
LMDeploy
全链路部署,性能领先
每秒生成 2000+ tokens
大语言模型的特点
- 内存开销巨大:
- 庞大的参数量;
- 采用自回归生成token,需要缓存k/v;
- 动态Shape:
- 请求数不固定;
- token逐个生成,且数量不稳定;
- 模型结构相对简单:
- transformer结构,大部分是decoder-only。
技术挑战
- 设备:
- 低存储设备(消费级显卡、移动端等)如何部署?
- 推理:
- 如何加速token的生成速度;
- 如何解决动态shape,让推理可以不间断;
- 如何有效管理和利用内存;
- 服务:
- 提升系统整体吞吐量;
- 降低请求的平均响应时间。
部署方案
技术点:
- 模型并行;
- 低比特量化;
- Attention优化;
- 计算和访存优化;
- Continuous Batching。
LMDeploy提供大模型在GPU上部署的全流程解决方案,包括模型轻量化、推理和服务。
接口:Python、gRPC、RESTful
核心功能模块
轻量化:4bit权重量化、8bit k/v量化
推理引擎:turbomind(基于fast transformer魔改的推理引擎)、pytorch
服务模块:openai-server、gradio、triton inference server
高效推理引擎
- 持续批处理技巧;
- 深度优化的低比特计算kernel;
- 支持模型并行;
- 高效的k/v缓存管理机制。
完备易用的工具链
- 量化、推理、服务全流程;
- 无缝对接OpenCompass评测推理精度;
- 和OpenAI接口高度兼容的API server(可以把已有的代码和工具更容易的实现迁移)。
智能体
Lagent(轻量级的智能体搭建框架)
AgentLego(提供了供大模型调用的丰富工具箱和标准化的工具接口)
支持多种智能体,支持代码解释器等多种工具
大语言模型的局限性
- 最新信息和知识的获取;
- 回复的可靠性;
- 数学计算;
- 外部工具的使用和交互。
基于这样的需求,我们需要让大语言模型能够驱动智能体或者一些更复杂的外部应用。
搭建一个包括不同模块的智能体框架。智能体通常是以大语言模型为核心,来进行规划、推理和执行。
轻量级智能体框架 Lagent
- 支持多种类型的智能体能力:
- ReAct:输入—>选择工具—>执行工具—>结束条件—>结束;
- ReWoo:输入—>计划拆分—>DAG—>计划执行—>结束;
- AutoGPT:输入—>选择工具—>人工干预—>执行工具—>结束条件—>结束;
- 灵活支持多种大语言模型:GPT-3.5/4、InternLM、HuggingFace Transformers、Llama;
- 简单易扩展,支持丰富的工具:
- AI工具:文生图、文生语音、图片描述;
- 能力拓展:搜索、计算器、代码解释器;
- Rapid API(API集合的一个网站,提供了上万种API):出行API、财经API、体育资讯API。
左图,调用Python代码解释器去求解一个数学题。
右图,零样本泛化,使用多模态的AI工具完成指令。
多模态智能体工具箱 AgentLego
(定位不同于Lagent,聚焦在大模型可调用的工具集合)
- 丰富的工具集合,尤其是提供了大量视觉、多模态相关领域的前沿算法功能;
- 支持多个主流智能体系统,如LangChain,Transformers Agent,Lagent等;
- 灵活的多模态工具调用接口,可以轻松支持各类输入输出格式的工具函数;
- 一键式远程工具部署,轻松使用和调试大模型智能体。
(二维码是开源工具InternLM地址:https://github.com/InternLM/InternLM)
InternStudio
🧙 大模型时代最高效的大型炼丹炉
🎯 愿景
为大型模型开发者提供强大的 GPU 算力资源和高效的开发工具,最大程度的简化他们的工作流程。
⛳️ 产品简介
InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。
📢 产品介绍
1. 概述
InternStudio 旨在为开发者提供一个先进、高效、易于使用的云端机器学习平台。基于强大的 InternLM 算法库,InternStudio 不仅与 🤗 HuggingFace 开源生态完美兼容,还提供了多种便捷工具和资源,以助力开发者在大语言模型领域的探索和创新。
2. 主要功能
- 云端开发机:InternStudio 提供了容器化的开发环境,支持多种深度学习 Docker 镜像。开发者可以轻松进行大语言模型的微调、增量训练和部署。平台还支持单机单卡、多卡多种规格的云端开发机,以适应不同的开发需求。
- 在线 IDE:平台支持在浏览器内直接使用云端开发机。开发者可以选择使用 vscode 网页版或 JupyterLab 这两种 WebIDE,同时,Tensorboard 日志可视化工具也为用户提供了极大的便利。
- 在线云盘:InternStudio 的在线云盘功能支持文件的批量上传和下载,提供了可视化界面,大大简化了文件管理的过程。
- 丰富的数据集资源:平台收集了大量常用的大语言模型微调数据集,并采用 Huggingface model repo 格式存储,支持诸如 transformers、xtuner 等流行算法库的快速读取。
- 个人中心:平台为用户提供了包含用户名、头像、邮箱、手机号等基本信息的个人中心,方便用户管理其在平台上的个人资料。
- 算力点系统:InternStudio 创新地引入了算力点系统,通过算力点来控制用户开发机的运行时长。这一系统尤其适用于面向活动运营,如课程、比赛等,可为用户定向赠送算力点,以便完成课程作业或参与比赛。
- SSH 连接:平台还支持用户通过 VSCode、PyCharm 等 IDE 本地连接开发机,进一步提高了开发效率和便利性。
3. 产品策略
目前,InternStudio 采用邀请制,将 GPU 资源免费对特邀 InternLM 社区开发者开放。这一策略不仅能保证资源的高效利用,也能构建一个积极、专业的开发者社区。
JumpStart
1. 专业名词解释
云原生名词:
云原生 (Clould - Native)
云原生应用程序通常借助容器、微服务架构、自动化、持续集成/持续交付(CI/CD)等现代技术和实践来提供更高的敏捷性、可靠性和可扩展性。
(Docker) 容器
在 InternStudio 中您使用的开发机就是一个 Docker 容器。容器中通常包含运行一个应用程序的依赖,并且实现了计算资源的隔离。
(Docker) 镜像
Docker 镜像是容器的构建模块,可以理解为容器的运行环境。它是一个轻量级的、可执行的软件包,包括了软件所需的依赖项和配置文件。因此,docker 镜像非常适合应用为模型训练的开发环境,帮助用户进行敏捷的环境切换。
微调名词:
SFT (Supervised-Finetuning)
SFT 是有监督微调的缩写,通常用于针对特定任务或应用程序微调预训练(基座)的深度学习模型,如 BERT、GPT、或其他自然语言处理(NLP)或计算机视觉模型,从而通过更少量的数据,训练更少的参数以达到快速适配下游任务的效果。
PEFT (Parameter-Efficient Finetuning)
是伴随大模型兴起的一种参数友好型微调方法。与传统的全量微调模型参数、微调模型部分参数不同,PEFT 类型的微调方法具有参与训练参数数量少、对硬件资源依赖小且效果与传统微调方法相当的特点。Xtuner 库支持了目前使用的最主流 PEFT 方法:LORA、QLORA
LORA (Low Rank Adaption of LLM)
目前最主流的大模型微调方法之一,特点是将模型中的权重矩阵低秩分解,分解成2个参数量极小的矩阵来加入微调任务,而不微调模型本身。优势是:1. 训练所需显存极小 2. 部署灵活。
Adapter
伴随 PEFT 方法出现的名词。通常情况下,使用 PEFT 方法如 LORA,会训练出一个模型 Adapter,它区分于预训练模型本身,在部署时会作为模型的适配器共同部署,从而改变模型的推理结果。换句话说,PEFT 方法不会训练预训练模型本身,而是训练出一个 Adapter,从而使大模型的部署更加灵活。