新一代书生·浦语大模型(InternLM3)沐曦训推实践
1月15日,由上海人工智能实验室(上海AI实验室)推出的书生·浦语3.0(InternLM3)正式开源,通过精炼数据框架,大幅提升了数据效率,并实现思维密度的跃升。仅使用4T训练数据的InternLM3-8B-Instruct,其综合性能超过了同量级开源模型,节约训练成本75%以上;同时,书生·浦语3.0首次在通用模型中实现了常规对话与深度思考能力融合,可应对更多真实使用场景。
基于上海AI实验室的DeepLink人工智能开放计算体系,书生·浦语3.0与沐曦达成合作,支持使用开源工具LMDeploy和XTuner,在沐曦曦云C系列产品上实现书生·浦语3.0的高效推理与微调训练。
沐曦旗舰产品曦云C系列产品采用全自主研发的通用GPU IP,内置大容量显存、支持多卡互联。自研MXMACA 原生支持国际主流深度学习算法框架,配套自研Compiler、Libraries、Runtime API、Tools & Documents等一系列整套GPU编程工具,并全面兼容国际主流GPU生态,可大幅降低新兴GPU的迁移适配成本。曦云C系列GPU适用于智算、通用计算、数据处理等多种应用场景。
本文将介绍如何使用开源工具LMDeploy和XTuner,结合DeepLink在沐曦曦云C系列产品上实现书生·浦语3.0的高效推理与微调训练。
InternLM 开源链接:
https://github.com/InternLM/InternLM
DeepLink dlinfer 开源链接:
https://github.com/DeepLink-org/dlinfer
LMDeploy 开源链接:
https://github.com/InternLM/lmdeploy
XTuner 开源链接:
https://github.com/InternLM/xtuner
1.使用LMDeploy进行高效推理
1.1 LMDeploy 与 dlinfer简介
LMDeploy涵盖了LLM任务的全套轻量化、部署和服务解决方案。
DeepLink团队开发的dlinfer提供了一套将新兴硬件接入大模型推理框架的解决方案。对上承接大模型推理框架,对下在eager模式下调用各厂商的融合算子,在graph模式下调用厂商的图引擎。dlinfer 根据主流大模型推理框架与主流硬件厂商的融合算子粒度,定义了大模型推理的融合算子接口。目前,dlinfer正在全力支持LMDeploy适配包括沐曦在内的多款新兴芯片品牌。
1.2 推理环境准备
获取模型推理镜像
登录沐曦开放平台软件中心获取docker镜像:
vllm:maca2.27.0.9-py38-ubuntu22.04-amd64
可联系沐曦business@metax-tech.com获取软件中心地址和账号
安装 dlinfer 和 LMDeploy
dlinfer 安装:
DEVICE=maca python3 setup.py develop
LMDeploy安装:
LMDEPLOY_TARGET_DEVICE=maca pip3 install -e .
1.3 进行推理
环境变量设置
export MACA_PATH=/opt/maca
export PATH=${MACA_PATH}/bin:${PATH}
export LD_LIBRARY_PATH=${MACA_PATH}/lib:${MACA_PATH}/mxgpu_llvm/lib:${LD_LIBRARY_PATH}
推理代码示例如下:
import lmdeploy
from lmdeploy import PytorchEngineConfig
if name == "__main__":
pipe = lmdeploy.pipeline("internlm/internlm3-8b-instruct",
backend_config = PytorchEngineConfig(tp=1,
cache_max_entry_count=0.8, device_type="maca", block_size=16))
question = ["Shanghai is", "Please introduce China", "How are you?"]
response = pipe(question, request_output_len=256, do_preprocess=False)
for idx, r in enumerate(response):
print(f"Q: {question[idx]}")
print(f"A: {r.text}")
print()
使用XTuner进行微调训练
XTuner是一个高效、灵活、全能的轻量化大模型微调工具库。
训练环境准备
获取模型训练镜像
登录沐曦开放平台软件中心获取docker镜像:
deepspeed:maca2.27.0.10-py38-ubuntu22.04-amd64
可联系沐曦business@metax-tech.com获取软件中心地址和账号
安装XTuner
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -r requirements.txt
pip install -e .
依赖安装
升级pip并安装transformers库:
pip install --upgrade pip
pip install transformers
安装适配沐曦曦云C系列产品的torch2.4
登录沐曦开软件中心下载适配沐曦GPU的torch 2.4并安装:
pip install torch*.whl
训练数据与模型准备
准备训练数据文件
向sft.jsonl
中填入样例SFT格式数据:
{"messages": [{"role": "user", "content": "Hello"}, {"role": "assistant", "content": "Hello!"}]}
{"messages": [{"role": "user", "content": "Hello"}, {"role": "assistant", "content": "Hello!"}]}
{"messages": [{"role": "user", "content": "Hello"}, {"role": "assistant", "content": "Hello!"}]}
下载模型文件
modelscope download --model Shanghai_AI_Laboratory/internlm3-8b-instruct --local_dir pth_to_internlm3_8b
启动微调训练
环境变量设置
export MACA_PATH=/opt/maca
export PATH=${MACA_PATH}/bin:${PATH}
export LD_LIBRARY_PATH=${MACA_PATH}/lib:${MACA_PATH}/mxgpu_llvm/lib:${LD_LIBRARY_PATH}
启动微调
torchrun --nnodes=1 --nproc_per_node=4 --master_port=12983 \
tools/fsdp_sft.py \
--llm pth_to_internlm3_8b \
--tokenizer pth_to_internlm3_8b \
--datasets internlm3/data/sft.jsonl \
--dset-file-types .jsonl \
--dset-cache-dir cached \
--dset-formats openai \
--dset-pack-level soft \
--group-by-length \
--max-length 2048 \
--sp-size 4 \
--global-batch-size 4 \
--lr 2e-6 \
--wd 0.0 \
--warmup-ratio 0.03 \
--num-workers 1 \
--work-dir saves/output/ \
2>&1 | tee -a $logfile;
通过以上步骤,您可以使用开源工具DeepLink、LMDeploy 和 XTuner,在沐曦曦云C系列产品上实现书生·浦语3.0的高效推理与微调训练。