admin管理员组

文章数量:1516870

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

9月20日,上海人工智能实验室(上海AI实验室)与商汤科技联合香港中文大学和复旦大学正式推出书生·浦语大模型(InternLM)200亿参数版本InternLM-20B,并在阿里云魔搭社区(ModelScope)开源首发。

  • 代码库:://ernLM
  • 魔搭社区:://

书生·浦语目前开源了三个量级的大模型:

上海AI实验室联合多家机构推出了中量级参数的InternLM-20B大模型,性能先进且应用便捷,以不足三分之一的参数量,达到了当前被视为开源模型标杆的Llama2-70B的能力水平。

一个大模型的正式落地,需要经历模型选型(评测)、考虑业务场景、参数微调、构建智能体、模型评测,到最终的模型部署,环环相扣,步步为营!

下面将介绍书生·浦语大模型全链路工具体系。

数据来源

书生·万卷1.0 为书生·万卷多模态语料库的首个开源版本,包含文本数据集、图文数据集、视频数据集三部分,数据总量超过2TB。

代码库:.0

基于大模型数据联盟构建的语料库,上海AI实验室对其中部分数据进行细粒度清洗、去重以及价值对齐,形成了书生·万卷1.0,具备多元融合、精细处理、价值对齐、易用高效等四大特征。

  • 在多元融合方面,书生·万卷1.0包含文本、图文、视频等多模态数据,范围覆盖科技、文学、媒体、教育、法律等多个领域,在训练提升模型知识含量、逻辑推理和泛化能力方面具有显著效果。
  • 在精细处理方面,书生·万卷1.0经历了语言甄别、正文抽取、格式标准化、基于规则及模型的数据过滤与清洗、多尺度去重、数据质量评估等精细化数据处理环节,因而能更好地适配后续的模型训练需求。
  • 在价值对齐方面,研究人员在书生·万卷1.0的构建过程中,着眼于内容与中文主流价值观的对齐,通过算法与人工评估结合的方式,提升了语料的纯净度。
  • 在易用高效方面,研究人员在书生·万卷1.0采用统一格式,并提供详细的字段说明和工具指导,使其兼顾了易用性和效率,可快速应用于语言、多模态等大模型训练。

文本数据集:

  • Composition
  • Sample

图文数据集:

  • Composition
  • Sample

视频数据集:

  • Composition
  • Sample

除此之外,opendatalab也开放了多样的数据集。

预训练

对LLM模型进行预训练,可以进行多卡扩展,支持千卡训练,兼容主流的huggingface技术生态,适当进行了底层的并行优化。

大模型微调

大模型的下游应用,增量训练和有监督微调是主流的两种方式。

  • 增量训练:一般用于让基座模型学习知识,如某一个垂直领域的知识,一般将文章、书籍、代码作为训练数据;
  • 有监督微调:用于让模型理解、遵循各种指令,或注入少量领域知识,一般将对话数据、问答数据作为训练数据。

Lora参数微调

上海人工智能实验室开发了低成本大模型训练工具箱 XTuner,旨在让大模型训练不再有门槛。

支持多种格式数据源的混合使用:

  • Alpaca 格式,斯坦福大学开源数据集的格式,也是社区开源项目使用较多的一种格式
  • MOSS 格式,复旦大学开源指令微调数据集的格式,包含多轮对话和工具调用
  • Gunacao 格式,QLoRA 项目中所使用数据集的格式
  • OpenAI 格式,GPT-3.5-Turbo Finetune 接口要求的数据集格式
  • 更多数据集格式正在持续添加中......

XTuner 首次尝试将 HuggingFace 与 OpenMMLab 进行结合,兼顾易用性和可配置性。支持使用 MMEngine Runner 和 HuggingFace Trainer 两种训练引擎.

代码语言:javascript代码运行次数:0运行复制
pip install xtuner

# 使用 MMEngine Runner 训练
xtuner train internlm_7b_qlora_oasst1_e3

# 使用 HugingFace Trainer 训练
xtuner train internlm_7b_qlora_oasst1_e3_hf

通过 XTuner,最低只需 8GB 显存,就可以打造专属于你的 AI 助手! 微调时会自动进行显存优化,开发者不必关注细节。

模型评测

目前国内外大模型的评测现状:

opencompass 作为全球领先的大模型开源评测体系(具有6大维度、80+评测集,40w+评测题目)

opencompass开源评测平台架构如下:

  • 具有丰富的模型支持;
  • 分布式的高效评测;
  • 便捷的数据集接口;
  • 敏捷并发的迭代能力。

用户广泛分布于国内外的知名企业与科研机构。

模型部署

LLM模型的特点带来了相应的技术挑战, 需要采用不同的优化部署方案。

LMDeploy 由 MMDeploy 和 MMRazor 团队联合开发,涵盖了 LLM 任务的全套轻量化、部署和服务解决方案,提供大模型在GPU部署的全流程解决方法。

这个强大的工具箱提供以下核心功能:

  • 高效推理引擎 TurboMind:基于 FasterTransformer,实现了高效推理引擎 TurboMind,支持 InternLM、LLaMA、vicuna等模型在 NVIDIA GPU 上的推理。
  • 交互推理方式:通过缓存多轮对话过程中 attention 的 k/v,记住对话历史,从而避免重复处理历史会话。
  • 多 GPU 部署和量化:我们提供了全面的模型部署和量化支持,已在不同规模上完成验证。
  • persistent batch 推理:进一步优化模型执行效率。

具有如下高效的推理引擎、完备工具链。

具备领先同行的推理性能!

模型应用-智能体

大语言模型在信息可靠性、数值计算、工具使用交互具有局限性。智能体将完美的补上这个短板。

Lagent是轻量级框架,用于构建基于LLM(Logical Layered Modeling)的代理。设计目的是为了简化和提高基于这种模型的代理的开发效率。LLM模型用于模拟和管理复杂的系统,而Lagent就是这种模型的实现。

轻量级智能体框架lagent具有以下优势:

  • 高效的推理引擎:Lagent 支持 lmdeploy turbomind,高效推理引擎,让你的代理运行得更快、更流畅。
  • 多代理支持:Lagent 支持 ReAct、AutoGPT 还是 ReWOO。
  • 极简易扩展:需大约 20 行代码,可以打造自己的代理。Lagent 还支持 Python 解释器、API 调用和谷歌搜索等工具,让你的代理更加全能。
  • 支持多种 LLM:从 GPT-3.5/4 到 LLaMA 2 和 InternLM,Lagent 支持各种大型语言模型,让你的选择更加多样。

多模态智能体工具箱agentlego,提供大量视觉、多模态领域的算法;支持多个主流智能体系统,如langchain、lagent;多模态根据调用接口;一键远程工具部署。

AgentLego 工具库具有以下特点:

  • 丰富的工具集合,提供了大量视觉、多模态相关领域的前沿算法功能;涉及图像理解、音频文字转换、图像生成等功能,让你的 LLM 能力大大增强。
  • 支持主流智能体系统,如 LangChain,Transformers Agent,lagent 等;
代码语言:javascript代码运行次数:0运行复制
from agentlego import load_tool
tool = load_tool('ImageCaption')

# 在 LangChain 中
from langchain import initialize_agent
agent = initialize_agent(
    agent="structured-chat-zero-shot-react-description",
    tools=[tool.to_langchain()],
    ...
)

# 在 Transformers Agent 中
from transformers import HfAgent
agent = HfAgent(
    '',
    additional_tools=[tool.to_transformers_agent()],
)

# 在 Lagent 中
from lagent import ReAct, ActionExecutor
agent = ReAct(
    action_executor=ActionExecutor(actions=[tool.to_lagent()]),
    ...
)
  • 多模态工具调用接口,可以轻松支持各类输入输出格式的工具函数。通过统一的多模态输入输出接口,在不同的 Agent 系统中自动进行数据格式转换。
  • 一键式远程工具部署,轻松使用和调试大模型智能体。

用一行命令启动工具服务器,并指定在该工具服务器上运行的工具列表:

代码语言:javascript代码运行次数:0运行复制
python server.py ImageCaption TextToImage VQA OCR

Agent 系统运行的平台,只需要配置最基本的环境,配合 RemoteTool,即可通过网络通讯的方式,调用远程机器上部署的工具。

代码语言:javascript代码运行次数:0运行复制
from agentlego.tools.remote import RemoteTool 
 tools = RemoteTool.from_server('Tool server address')

今天的分享到此为止,谢谢大家!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-01-03,如有侵权请联系 cloudcommunity@tencent 删除工具模型数据开源部署

本文标签: 书生浦语大模型全链路开源开放体系