当前位置: 首页 > news >正文

大模型微调实战 -基于SWIFT框架

📝 简介

🍲 ms-swift是魔搭社区提供的大模型与多模态大模型微调部署框架,现已支持500+大模型与200+多模态大模型的训练(预训练、微调、人类对齐)、推理、评测、量化与部署。其中大模型包括:Qwen3、Qwen3-MoE、Qwen2.5、InternLM3、GLM4、Mistral、DeepSeek-R1、Yi1.5、TeleChat2、Baichuan2、Gemma2等模型,多模态大模型包括:Qwen2.5-VL、Qwen2-Audio、Llama4、Llava、InternVL3、MiniCPM-V-2.6、GLM4v、Xcomposer2.5、Yi-VL、DeepSeek-VL2、Phi3.5-Vision、GOT-OCR2等模型。

🍔 除此之外,ms-swift汇集了最新的训练技术,包括LoRA、QLoRA、Llama-Pro、LongLoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth、和Liger等轻量化训练技术,以及DPO、GRPO、RM、PPO、GKD、KTO、CPO、SimPO、ORPO等人类对齐训练方法。ms-swift支持使用vLLM、SGLang和LMDeploy对推理、评测和部署模块进行加速,并支持使用GPTQ、AWQ、BNB等技术对大模型进行量化。ms-swift还提供了基于Gradio的Web-UI界面及丰富的最佳实践。

为什么选择ms-swift?

  • 🍎 模型类型:支持500+纯文本大模型、200+多模态大模型以及All-to-All全模态模型、序列分类模型、Embedding模型训练到部署全流程
  • 数据集类型:内置150+预训练、微调、人类对齐、多模态等各种类型的数据集,并支持自定义数据集。
  • 硬件支持:CPU、RTX系列、T4/V100、A10/A100/H100、Ascend NPU、MPS等。
  • 轻量训练:支持了LoRA、QLoRA、DoRA、LoRA+、ReFT、RS-LoRA、LLaMAPro、Adapter、GaLore、Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。
  • 分布式训练:支持分布式数据并行(DDP)、device_map简易模型并行、DeepSpeed ZeRO2 ZeRO3、FSDP、Megatron等分布式训练技术。
  • 量化训练:支持对BNB、AWQ、GPTQ、AQLM、HQQ、EETQ量化模型进行训练。
  • 🍊 RLHF训练:支持纯文本大模型和多模态大模型的DPO、GRPO、RM、PPO、GKD、KTO、CPO、SimPO、ORPO等人类对齐训练方法。
  • 🍓 多模态训练:支持对图像、视频和语音不同模态模型进行训练,支持VQA、Caption、OCR、Grounding任务的训练。
  • 🥥 Megatron并行技术:支持使用Megatron并行技术对CPT/SFT/DPO进行加速,现支持200+大语言模型。
  • 界面训练:以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路。
  • 插件化与拓展:支持自定义模型和数据集拓展,支持对loss、metric、trainer、loss-scale、callback、optimizer等组件进行自定义。
  • 🍉 工具箱能力:不仅提供大模型和多模态大模型的训练支持,还涵盖其推理、评测、量化和部署全流程。
  • 推理加速:支持PyTorch、vLLM、SGLang和LmDeploy推理加速引擎,并提供OpenAI接口,为推理、部署和评测模块提供加速。
  • 模型评测:以EvalScope作为评测后端,支持100+评测数据集对纯文本和多模态模型进行评测。
  • 模型量化:支持AWQ、GPTQ、FP8和BNB的量化导出,导出的模型支持使用vLLM/SGLang/LmDeploy推理加速,并支持继续训练。

🛠️ 安装

使用pip进行安装:

pip install ms-swift -U

由于对python版本有要求,建议使用conda进行安装。

conda create -n py310 python=3.10
conda activate py310
pip install ms-swift -U

从源代码安装:

# pip install git+https://github.com/modelscope/ms-swift.gitgit clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .

运行环境:

范围推荐备注
python>=3.93.10
cudacuda12使用cpu、npu、mps则无需安装
torch>=2.0
transformers>=4.334.51.3
modelscope>=1.23
peft>=0.11,<0.16
trl>=0.13,<0.190.18RLHF
deepspeed>=0.140.16.9训练
vllm>=0.5.10.8.5.post1推理/部署/评测
sglang0.4.6.post5推理/部署/评测
lmdeploy>=0.5,<0.90.8推理/部署/评测
evalscope>=0.11评测

更多可选依赖可以参考这里。

🚀 快速开始

10分钟在单卡3090上对Qwen2.5-7B-Instruct进行自我认知微调:

命令行

# 22GB
CUDA_VISIBLE_DEVICES=0 \
swift sft \--model Qwen/Qwen2.5-7B-Instruct \--train_type lora \--dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \'AI-ModelScope/alpaca-gpt4-data-en#500' \'swift/self-cognition#500' \--torch_dtype bfloat16 \--num_train_epochs 1 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--learning_rate 1e-4 \--lora_rank 8 \--lora_alpha 32 \--target_modules all-linear \--gradient_accumulation_steps 16 \--eval_steps 50 \--save_steps 50 \--save_total_limit 2 \--logging_steps 5 \--max_length 2048 \--output_dir output \--system 'You are a helpful assistant.' \--warmup_ratio 0.05 \--dataloader_num_workers 4 \--model_author swift \--model_name swift-robot

小贴士:

  • 如果要使用自定义数据集进行训练,你可以参考这里组织数据集格式,并指定--dataset <dataset_path>
  • --model_author--model_name参数只有当数据集中包含swift/self-cognition时才生效。
  • 如果要使用其他模型进行训练,你只需要修改--model <model_id/model_path>即可。
  • 默认使用ModelScope进行模型和数据集的下载。如果要使用HuggingFace,指定--use_hf true即可。

训练完成后,使用以下命令对训练后的权重进行推理:

  • 这里的--adapters需要替换成训练生成的last checkpoint文件夹。由于adapters文件夹中包含了训练的参数文件args.json,因此不需要额外指定--model--system,swift会自动读取这些参数。如果要关闭此行为,可以设置--load_args false
# 使用交互式命令行进行推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \--adapters output/vx-xxx/checkpoint-xxx \--stream true \--temperature 0 \--max_new_tokens 2048# merge-lora并使用vLLM进行推理加速
CUDA_VISIBLE_DEVICES=0 \
swift infer \--adapters output/vx-xxx/checkpoint-xxx \--stream true \--merge_lora true \--infer_backend vllm \--vllm_max_model_len 8192 \--temperature 0 \--max_new_tokens 2048

最后,使用以下命令将模型推送到ModelScope:

CUDA_VISIBLE_DEVICES=0 \
swift export \--adapters output/vx-xxx/checkpoint-xxx \--push_to_hub true \--hub_model_id '<your-model-id>' \--hub_token '<your-sdk-token>' \--use_hf false

效果:
在这里插入图片描述

http://www.dtcms.com/a/309492.html

相关文章:

  • 南太平洋金融基建革命:斐济-巴新交易所联盟的技术破局之路 ——从关税动荡到离岸红利,跨境科技如何重塑太平洋资本生态
  • 使用Gemini API开发领域智能聊天机器人的思路
  • js判断是个变量和属性是否是有效值
  • PixelCNN介绍:VQ-VAE的前一步探索
  • 2025年Python Web框架之争:Django、Flask还是FastAPI,谁将主宰未来?
  • JsHook入门
  • 什么是爬虫协议?
  • 如何优雅删除Docker镜像和容器(保姆级别)
  • 热能小车cad【12张】三维图+设计说明书
  • 机械学习中的一些优化算法(以逻辑回归实现案例来讲解)
  • 【Flutter3.8x】flutter从入门到实战基础教程(五):Material Icons图标的使用
  • 燃气营商环境测评:以用户反馈推动服务升级​(第三方市场调查)
  • 逻辑回归----银行贷款模型优化
  • 嵌入式教学的云端革命:高精度仿真如何重塑倒车雷达实验与工程教育——深圳航天科技创新研究院赋能新一代虚实融合实训平台
  • IIS 让asp.net core 项目一直运行
  • Linux文件系统理解2
  • OpenGL Camera
  • 【03】海康MVS V4.3.0 ——安装教程、查看示例、库、头文件、开发指南
  • vue项目预览pdf隐藏工具栏和侧边栏
  • YOLOv8/YOLOv11 C++ OpenCV DNN推理
  • 人机协作!智慧环卫如何实现按需清扫?
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step7—Mariadb初始化
  • 链接脚本中. = ALIGN(4);的作用?
  • C++ --- stack和queue的使用以及简单实现
  • 高级11-Java日志管理:使用Log4j与SLF4J
  • 【Electron】打包后图标不变问题,图标问题
  • 支持selenium的chrome driver更新到138.0.7204.183
  • uv 常用指令
  • GitLab Docker Compose 迁移后 Redis 权限问题排查与解决
  • 计算机网络:点分十进制如何转化为32位4字节二进制表现形式