鹤啸九天 自律更自由,平凡不平庸 Less is More

MS-Swift 框架介绍

2025-01-12
鹤啸九天
阅读量

Notes(温馨提示):

  1. ★ 首次阅读建议浏览:导航指南, 或划到本页末尾, 或直接点击跳转, 查看全站导航图
  2. 右上角工具条搜索文章,右下角二维码关注微信公众号(鹤啸九天),底栏分享、赞赏、评论
  3. ★ 转载请注明文章来源,知识点积累起来不容易,水滴石穿,绳锯木断,谢谢理解
  4. ★ 如有疑问,邮件讨论,欢迎贡献优质资料


Swift 框架

【2024-7-4】 阿里推出训练框架 (Scalable lightWeight Infrastructure for Fine-Tuning)

介绍

ms-swift 是 ModelScope 社区提供的官方框架,用于微调和部署大型语言模型和多模态大型模型。

目前支持 450+ 大型模型和 150+ 多模态大型模型的训练(预训练、微调、人工对齐)、推理、评估、量化和部署。

ms-swift

  • 采用最新训练技术,包括 LoRA、QLoRA、Llama-Pro、LongLoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth 和 Liger 等轻量级技术,以及 DPO、GRPO、RM、PPO、KTO、CPO、SimPO 和 ORPO 等人工对齐训练方法。
  • 支持使用 vLLM 和 LMDeploy 加速推理、评估和部署模块,并支持使用 GPTQ、AWQ 和 BNB 等技术进行模型量化。
  • 提供了基于 Gradio 的 Web UI 和丰富的最佳实践

Swift 框架(Scalable lightWeight Infrastructure for Fine-Tuning)由魔搭社区(ModelScope)开发, 基于PyTorch的轻量级、灵活且高效的模型微调与推理,开源框架。专为大模型(LLM)和多模态大模型(MLLM)的开发设计,支持从数据处理到模型部署的全流程操作,适用于科研、企业和个人开发者。

功能

核心功能与特点

  • Swift 框架支持超过 450 种大语言模型(如 GPT、Llama、ChatGLM)和 150 种多模态模型(如图像、视频、语音任务)。
  • 集成多种高效微调技术,包括 LoRA、QLoRA 和 ResTuning,能够显著降低显存需求和训练成本。框架还支持分布式训练、量化模型、RLHF(人类偏好对齐)等功能,适配多种硬件平台(如 RTX 系列、A100、H100、Ascend NPU)。
  • Swift 提供了丰富工具箱能力,包括推理加速引擎(如 vLLM、LmDeploy)和全面的模型评测体系(EvalScope)。开发者可以通过简单的接口实现模型训练、推理、评测和部署,甚至支持多种 tuner 的混合使用。

优点

优点

  • (1)全模态覆盖能力
    • 与主流框架专注于单一模态(如纯文本)不同,MS-Swift 支持 450+ 纯文本大模型、150+ 多模态大模型(涵盖图像、视频、语音),包括 LLaVA、MiniCPM-V、Phi3.5-Vision 等复杂模型。
  • (2)轻量化技术创新: MS-Swift 集成了 20+ 高效微调技术,显存占用和训练成本显著低于同类产品
    • 参数优化:持 LoRA、QLoRA、DoRA 等主流轻量化方法,独创 GaLore 技术,预训练内存节省 65%
    • 量化加速:支持 GPTQ/AWQ 4/8 比特量化,相比传统全量微调显存需求降低 80%;兼容 Unsloth 加速引擎,吞吐量提升 2 倍
  • (3)全流程工具链
    • MS-Swift 提供 从训练到部署的一站式解决方案,覆盖其他框架未涉及的环节
    • 训练阶段:
      • 内置 150+ 预训练/微调数据集,支持自定义数据自动预处理
      • 集成 DPO、PPO 等 8 种 RLHF 对齐算法,优化模型指令遵循能力
    • 推理阶段:
      • 支持 vLLM、LMDeploy 加速引擎,推理速度提升 3-5 倍
      • 提供 Gradio WebUI 和 OpenAI 风格 API,降低部署门槛
    • 生产级支持:
      • 分布式训练(DeepSpeed ZeRO3、FSDP)支持 8 卡 A100 并行,速度提升 400%
      • 企业级功能如多模态任务模板、生产环境量化导出等
  • (4)开发者友好生态
    • 相比同类工具,MS-Swift 更注重降低使用门槛与生态整合:零代码(webui+命令行工具封装)、生态兼容(modelscope+huggingface)、扩展灵活性
  • (5)行业场景适配性:MS-Swift 在垂直领域优化上表现突出
    • 低成本部署:通过量化技术(如 4 比特 GPTQ)在边缘设备运行百亿模型
    • 多语言支持:优化中文、英语等混合训练,适配全球化客服场景
    • 长文本处理:集成 LongLoRA 和 RoPE 扩展技术,上下文窗口提升至 32k tokens

竞品分析

对比优势:

  • Unsloth 虽能加速训练但缺乏多模态支持
  • XTuner 需依赖 LMDeploy 等外部工具完成部署
  • MS-Swift 提供端到端的量化训练与推理加速闭环

使用场景

  • Swift 框架广泛应用于多种场景,包括智能客服、内容生成、企业级软件定制、智能物联网和多模态任务(如图像识别与自然语言处理结合)。例如,在智能客服中,Swift 可通过 RLHF 技术训练模型,使其更好地理解用户意图并提供自然的回答。
  • SWIFT支持300+ LLM和50+ MLLM(多模态大模型)的训练(预训练、微调、对齐)、推理、评测和部署。开发者可以直接将我们的框架应用到自己的Research和生产环境中,实现模型训练评测到应用的完整链路。我们除支持了PEFT提供的轻量训练方案外,也提供了一个完整的Adapters库以支持最新的训练技术,如NEFTune、LoRA+、LLaMA-PRO等,这个适配器库可以脱离训练脚本直接使用在自己的自定流程中。

swift vs llama-factory

【2025-11-13】【开源框架】ms-swift为什么比llama-factory好?

ms-swift优势:

  • 1、ms-swift 提倡 “training is not the end”,将inference、deploy、evaluation 集成的很深入(在llm时代更one-stop),llama-facotry 虽然这些工具能力也支持,但支持很有限
  • 2、ms-swift 自定义参数、算法更多,例如 loss计算位置、moe负载均衡策略、megatron支持更好(llama-factory最近也支持)、高效微调的算法等

llama-factory 专注 “模型训练”框架,核心是三大核心模块(Model Loader、Data Worker、Trainer),和一些其他工具能力(llamaboard、model_inference、model_evaluation)

【2025-3-16】MS-Swift部署实战:微调大模型MS-Swift开源解决方案

特性 MS-Swift 同类框架(如 LLaMA-Factory)
模型覆盖 450+ LLM + 150+ MLLM 100+ LLM(侧重文本)
多模态支持 图像/视频/语音全模态 仅文本或有限多模态
显存优化 GaLore + QLoRA(显存降80%) 标准 LoRA(显存降50%–70%)
部署便捷性 内置 WebUI + vLLM 加速 依赖第三方工具链
企业级功能 RLHF 对齐 + 生产量化导出 侧重学术研究场景

架构

ms-swift “以训练为中心,上下游全链路整合”

  • Models 提供基础模型加载器,支持自定义配置, ms-swift/swift/llm/model
  • Datasets 支持 ModelScope 数据集、Hugging Face 数据集、自定义本地数据集(CSV/JSONL),统一转换为标准格式, ms-swift/swift/llm/dataset
  • Trainer 目录 ms-swift/swift/trainers/trainers.py
    • 使用Transformers库中Trainer 用于 SFT / 预训练,使用 TRL 库用于 RLHF(DPO/ORPO/KTO 等)
    • 使用 Megatron-LM库并行预训练,支持 Mamba 等非 Attention 结构模型
  • Post-Traing Utilities
    • Inference:使用 PyTorch Native、vLLM、LMDeploy 三种后端
    • Deployment:使用 FastAPI 库实现 OpenAI 兼容接口,支持工具调用
    • Evaluator:使用基于 EvalScope 库,覆盖 100+ 纯文本和多模态评估集
    • Exporter:支持 Transformers 格式与 Megatron 格式的双向转换,支持导出为 Ollama 兼容格式
  • Post-Traing Utilities

分布式训练

ms-swift 原生支持多种分布式训练策略:

  • 数据并行 (DDP): 最简单的多卡训练方式。
  • DeepSpeed ZeRO: 显存优化神器,特别是ZeRO-3阶段,可以将优化器状态、梯度和参数都分散到多张卡上。
  • 完全分片数据并行 (FSDP): PyTorch官方的全参数分片方案。
  • Megatron 并行: 支持更极致的模型并行(TP)、流水线并行(PP)等,适合超大规模模型训练。

ms-swift 支持使用 Megatron 并行技术加速训练,包括大规模集群训练和MoE模型训练。

  • 预训练、SFT
  • RL系列:grpo、dpo、kto、rm等
  • embedding
  • reranker
  • 序列分类

安装

命令安装

# 设置pip全局镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 安装ms-swift
pip install ms-swift
pip install ms-swift[all] -U # 全量能力
pip install ms-swift[llm] -U # 仅使用LLM
pip install ms-swift[aigc] -U # 仅使用AIGC
pip install ms-swift -U # 仅使用adapters
# 配套设施
pip install swanlab

源码安装

#从源码安装
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .[llm]

# 环境对齐 (如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试)
pip install -r requirements/framework.txt  -U
pip install -r requirements/llm.txt  -U

问题

【2026-3-24】Mac OS上安装swift,启动时报错

error: unable to invoke subcommand: swift-web-ui (No such file or directory)

原因:官方issue

  • Mac 上有两个 swift,跟 mac默认安装的swift语言重复

解决办法

  • 使用全路径启动
  • 换别名

使用

【2026-1-28】ms-swift命令行参数详解

支持多种方式

  • Web UI
  • CLI
  • 代码推理

CLI

CLI 用法

所有命令都以 swift [子命令] 开头,比如 swift sft 是微调,swift infer 是推理

ms-swift 所有命令都围绕三件事展开:训练(sft/pt/rlhf)→ 推理(infer)→ 部署(deploy/eval/export)

动作 常用子命令 典型用途 注意
训练 swift sft
swift pt
swift rlhf
微调指令、预训练、强化学习对齐 参数最多、最易出错,本文重点覆盖
推理 swift infer
swift app
本地测试、Web界面交互、批量生成 参数精简,重在“快跑通”
部署评测 swift eval
swift deploy
swift export
模型打分、服务化上线、量化导出 多数参数可默认,优先保证--model--infer_backend正确

训练代码

CUDA_VISIBLE_DEVICES=0 \
swift infer \
  --model_type qwen1half-7b-chat \
  --model_id_or_path /jppeng/app/models/Qwen1.5-7B-Chat \
  --eval_human true \

完整参数

# 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 5 \
    --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 \
    --report_to swanlab \
    --swanlab_project swift-robot

推理代码

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from swift.llm import ModelType, InferArguments, infer_main
infer_args = InferArguments(
    model_type='qwen1half-7b-chat',
    model_id_or_path='/jppeng/app/models/Qwen1.5-7B-Chat',
    eval_human=True)
infer_main(infer_args)

开启 SwanLab 实验可视化

  • ms-swift CLI中添加--report_to--swanlab_project两个参数,即可使用SwanLab进行实验跟踪与可视化
swift sft \
    ...
    --report_to swanlab \ 
    --swanlab_project swift-robot \ 
    ...

参数:

  • swanlab_token: SwanLab的api-key
  • swanlab_project: swanlab的project
  • swanlab_workspace: 默认为None,会使用api-key对应的username
  • swanlab_exp_name: 实验名,可以为空,为空时默认传入–output_dir的值
  • swanlab_mode: 可选cloud和local,云模式或者本地模式

Web UI

启动WebUI方式:swift web-ui

启动后,会自动打开浏览器,显示微调界面(或者访问 http://localhost:7860/ ):

SWIFT 支持界面化的训练和推理,参数支持和脚本训练相同

swift web-ui --lang zh # 中文
swift web-ui --lang en # 英文
# share模式,请添加--share true 参数
swift web-ui --lang zh --server_port 8081 --server_name wqw
swift web-ui --lang zh --server_port 8081 --server_name wqw --share

web-ui 特性:

  • 每个超参数描述都带有 –xxx 标记,与命令行参数的内容是一致的
  • 一台多卡机器上并行启动多个训练/部署任务
  • 服务关闭后,后台服务是仍旧运行,这防止了web-ui被关掉后影响训练进程,如果需要关闭后台服务,只需要选择对应的任务后在界面上的运行时tab点击杀死服务
  • 重新启动web-ui后,如果需要显示正在运行的服务,在运行时tab点击找回运行时任务即可
  • 训练界面支持显示运行日志,请在选择某个任务后手动点击展示运行状态,在训练时运行状态支持展示训练图表,图标包括训练loss、训练acc、学习率等基本指标,在人类对齐任务重界面图标为margin、logps等关键指标
  • 训练不支持PPO,该过程比较复杂,建议使用examples的shell脚本直接运行

ms-swift额外支持了界面推理模式(即Space部署):

swift app --model '<model>' --studio_title My-Awesome-Space --stream true
# 或者
swift app --model '<model>' --adapters '<adapter>' --stream true
# 或更多参数
CUDA_VISIBLE_DEVICES=0 swift app \
    --model Qwen/Qwen2.5-7B-Instruct \
    --stream true \
    --infer_backend transformers \
    --max_new_tokens 2048 \
    --lang zh

Web UI 上启动微调模型

  • swift web-ui

CLI

# 直接使用web-ui
CUDA_VISIBLE_DEVICES=0 \
swift app-ui\
    --model_type qwen1half-7b-chat \
    --model_id_or_path /jppeng/app/models/Qwen1.5-7B-Chat \
    --ckpt_dir /jppeng/gitapp/swift/output/qwen1half-7b-chat/v0-20240324-001719/checkpoint-62 \
    --eval_human true \
    --server_name 0.0.0.0 \
    --server_port 8000 \
    --share True \
   
# Merge LoRA增量权重并使用web-ui
swift merge-lora --ckpt_dir 'xxx/vx_xxx/checkpoint-xxx'
CUDA_VISIBLE_DEVICES=0 \
swift app-ui \
    --ckpt_dir xxx/vx_xxx/checkpoint-xxx \
    --eval_human true \

代码调用

使用python 启动 lora 微调模型

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from swift.llm import InferArguments, merge_lora_main, app_ui_main

best_model_checkpoint = '/jppeng/gitapp/swift/output/qwen1half-7b-chat/v0-20240324-001719/checkpoint-62'

infer_args = InferArguments(
    model_type='qwen1half-7b-chat',
    model_id_or_path='/jppeng/app/models/Qwen1.5-7B-Chat',
    ckpt_dir=best_model_checkpoint,
    eval_human=True)
# merge_lora_main(infer_args)
result = app_ui_main(infer_args)

推理

CLI: infer

swift infer 命令核心参数

  • model:可选,要推理的初始模型,非 lora
    • 示例 swift infer --model Qwen/Qwen2.5-7B-Instruct
  • adapters:可选,但LoRA必用; 指向 –output_dir 下的具体checkpoint文件夹
    • 示例 --adapters output/vx-xxx/checkpoint-100
    • 如果–adapters路径下有args.json,ms-swift会自动读取训练时的–model、–system等参数
  • –temperature: 推荐填,写代码/答事实:0(最严谨);创意写作/聊天:0.7~0.9(有灵感但不胡说)
  • –max_new_tokens:必填,最多生成多少字符
  • –stream:推荐开,流式输出
# 直接推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --model_type qwen1half-7b-chat \
    --model_id_or_path /jppeng/app/models/Qwen1.5-7B-Chat \
    --ckpt_dir /jppeng/gitapp/swift/output/qwen1half-7b-chat/v0-20240324-001719/checkpoint-62 \
    --eval_human true \

# gpu 推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

# Merge LoRA增量权重并推理
swift merge-lora --ckpt_dir 'xxx/vx_xxx/checkpoint-xxx'
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir xxx/vx_xxx/checkpoint-xxx \
    --eval_human true \

# 合并 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

代码推理

Python 接入

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from swift.llm import ModelType, InferArguments, infer_main
infer_args = InferArguments(
    model_type='qwen1half-7b-chat',
    model_id_or_path='/jppeng/app/models/Qwen1.5-7B-Chat',
    eval_human=True)
infer_main(infer_args)

Swift trainer 集成自 transformers,所以可直接使用swanlab与huggingface集成的SwanLabCallback:

from swanlab.integration.transformers import SwanLabCallback
from swift import Seq2SeqTrainer, Seq2SeqTrainingArguments

···

#实例化SwanLabCallback
swanlab_callback = SwanLabCallback(project="swift-visualization")

trainer = Seq2SeqTrainer(
    ...
    callbacks=[swanlab_callback],
    )

trainer.train()

微调方式

微调方式

  • CLI
  • 代码微调

CLI

微调命令

# Experimental environment: A10, 3090, V100, ...
# 22GB GPU memory

# 单卡: DP
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model_type qwen1half-7b-chat \
    --model_id_or_path /jppeng/app/models/Qwen1.5-7B-Chat \
    --dataset alpaca-zh alpaca-en \
    --train_dataset_sample 500 \
    --eval_steps 20 \
    --logging_steps 5 \
    --output_dir output \
    --lora_target_modules ALL \
    --self_cognition_sample 500 \
    --model_name 测试模型 'DEMO' \
    --model_author wqw

# 多卡: DDP
CUDA_VISIBLE_DEVICES=0,1 \
NPROC_PER_NODE=2 \
swift sft ...(同上)...

# CPU 推理:模型规模更小
CUDA_VISIBLE_DEVICES=-1 \
swift sft ...(同上)...

Python 微调

# Experimental environment: A10, 3090, V100, ...
# 18GB GPU memory
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from swift.llm import DatasetName, ModelType, SftArguments, sft_main

sft_args = SftArguments(
    model_type='qwen1half-7b-chat',
    model_id_or_path='/jppeng/app/models/Qwen1.5-7B-Chat',
    dataset=[DatasetName.alpaca_zh, DatasetName.alpaca_en],
    train_dataset_sample=500,
    eval_steps=20,
    logging_steps=5,
    output_dir='output',
    lora_target_modules='ALL',
    self_cognition_sample=500,
    model_name=['我的测试模型', 'JPPeng'],
    model_author=['长信', 'Changxin'])
output = sft_main(sft_args)
best_model_checkpoint = output['best_model_checkpoint']
print(f'best_model_checkpoint: {best_model_checkpoint}')

微调方法

方法

  • pt
  • sft
  • rl

训练目标:

  • 指令监督微调 (SFT): swift sft (我们刚才用的)
  • 人类偏好对齐 (RLHF):
    • DPO (直接偏好优化): swift rlhf --rlhf_type dpo
    • KTO (Kahneman-Tversky优化): swift rlhf --rlhf_type kto
    • GRPO (组相对策略优化): swift rlhf --rlhf_type grpo
  • 预训练 (PT): swift pt (在海量无标注文本上继续训练)
  • 奖励模型训练 (RM): swift rlhf --rlhf_type rm
  • 序列分类 & 嵌入模型训练: 也都有对应的命令支持。

核心参数

核心参数

  • –model: 必填,Hugging Face或ModelScope上的模型ID,比如 Qwen/Qwen2.5-7B-Instruct 或 AI-ModelScope/qwen2-7b-instruct
    • ❌ 不要天本地路径(除非加了–model_path)
    • ❌ 不要漏掉斜杠(Qwen/Qwen2.5-7B-Instruct ≠ QwenQwen2.5-7B-Instruct)
  • –dataset:必填,训练数据集,可以多个,用空格分开,#控制采样量
    • 示例; --dataset 'AI-ModelScope/alpaca-gpt4-data-zh' 'swift/self-cognition#500'
    • ❌ 单引号必须加!尤其含空格或#时,否则shell会报错
    • ❌ #500 表示只取前500条,不是“第500条”,别写成 #0500
  • –train_type:必填,全参数训 还是 轻量微调
    • 候选:
    • full:A100/H100,显存≥40GB
    • lora:LoRA微调,7B模型单卡3090(24GB)
    • qlora:显存再砍一半,适合24GB以下显卡
  • –per_device_train_batch_size:必填
    • 3090/4090(24GB):填 1 或 2
    • A100(40GB):可填 4
    • 显存爆了?立刻减小
    • --gradient_accumulation_steps一起控制“实际batch size”,先填1保稳
  • –gradient_accumulation_steps:推荐填
    • batch size = per_device_train_batch_size × gradient_accumulation_steps × GPU数量
    • 安全值:从 8 或 16 开始,显存不够就往上加
  • –torch_dtype:推荐填,计算精度,直接影响显存和速度
    • bfloat16:推荐,速度快、显存省、效果稳(A100/V100/RTX3090+必备)
    • float16:兼容性更好,老卡可用
    • float32:别用!慢且费显存,仅调试用

LoRA 微调

如果选了 –train_type lora,这三个参数必须成套出现,缺一不可。

  • –lora_rank(必填!)LoRA 矩阵“宽度”,越大越强、越费显存
    • 7B模型:8(安全)、16(进阶)
    • 13B模型:8(保稳)、16(推荐)
  • –lora_alpha(必填!)LoRA更新“力度”,一般设为 alpha = rank × 2
    • –lora_rank 8 → –lora_alpha 16;
    • –lora_rank 16 → –lora_alpha 32
  • –target_modules(必填!)LoRA插在哪几层
    • all-linear:自动找所有线性层(最省心,首选)
    • q_proj,v_proj,k_proj,o_proj:手动指定(进阶用,需查模型结构)

训练流程:控制节奏的3个参数

  • –num_train_epochs(推荐填!)
    • 指令微调(sft):1~3 足够(数据多时1轮就够)
    • 预训练(pt):10~100+(数据流式加载,看–max_steps)
  • –max_steps(可选,但推荐!)训多少步就停,比epochs更精准
    • max_steps 和 –num_train_epochs 二选一,同时填会冲突!
  • –learning_rate(必填!)模型“学习有多猛”,太大训飞、太小训不动
    • LoRA微调:1e-4(0.0001)是黄金值
    • 全参数训:2e-5~5e-5(0.00002~0.00005)

CPT

# 8*A100
NPROC_PER_NODE=8 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
swift pt \
    --model Qwen/Qwen2.5-7B \
    --dataset swift/chinese-c4 \
    --streaming true \
    --tuner_type full \
    --deepspeed zero2 \
    --output_dir output \
    --max_steps 10000 \
    ...

SFT

分全参微调、局部参数微调

NPROC_PER_NODE=2 CUDA_VISIBLE_DEVICES=0,1 megatron sft \
    --model Qwen/Qwen2.5-7B-Instruct \
    --save_safetensors true \
    --dataset AI-ModelScope/alpaca-gpt4-data-zh \
    --tuner_type lora \
    --output_dir output \
    ...

RLHF

ms-swift支持丰富GRPO族算法:grpo、dapo、gspo、sapo、rloo等等

rlhf_type

  • dpo
  • grpo
CUDA_VISIBLE_DEVICES=0 swift rlhf \
    --rlhf_type dpo \
    --model Qwen/Qwen2.5-7B-Instruct \
    --dataset hjh0119/shareAI-Llama3-DPO-zh-en-emoji \ # 一个包含偏好对的数据集
    --train_type lora \
    --output_dir dpo_output

部署

核心参数

  • infer_backend(同eval,必填!)部署也得选引擎,逻辑一致。
  • host & –port(推荐填!)指定API服务跑在哪个IP和端口
    • --host 0.0.0.0 --port 8000

本地部署 deploy

模型部署成标准的OpenAI兼容的API服务

CUDA_VISIBLE_DEVICES=0 swift deploy \
    --model Qwen/Qwen2.5-7B-Instruct \
    --adapters output/vx-xxx/checkpoint-xxx \
    --infer_backend vllm

通过 url 接口来调用你的模型了,和调用ChatGPT的API一模一样

  • http://localhost:8000/v1/completions
  • http://localhost:8000/v1/chat/completions

模型量化: quant_bits

# 将模型量化为4-bit AWQ格式,显著减小模型体积
CUDA_VISIBLE_DEVICES=0 swift export \
    --model Qwen/Qwen2.5-7B-Instruct \
    --adapters output/checkpoint-xxx \ # 可选,导出微调后的模型
    --quant_bits 4 --quant_method awq \
    --dataset AI-ModelScope/alpaca-gpt4-data-zh \ # 量化需要少量校准数据
    --output_dir Qwen2.5-7B-Instruct-AWQ

模型导出 export

将模型推送到 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

评测 eval

核心参数

参数

  • eval_dataset(必填!)用哪个标准题库考模型
    • 填评测集名字,比如 gsm8k(数学题)、mmlu(综合知识)、ceval(中文考试)
    • 去官方评测集列表 Ctrl+F搜关键词,比如搜“数学”看到gsm8k,直接抄。
  • infer_backend(必填!)用什么引擎跑推理,决定速度和显存
    • pt:PyTorch原生,兼容最好,新手首选
    • vllm:最快!但需A100/V100/RTX4090+,显存≥24GB
    • lmdeploy:国产优化,华为昇腾/NPU用户选它
  • eval_limit(推荐填!)只考前N道题,避免等1小时出结果
    • –eval_limit 100(考100题),新手从50起步
    • 1分钟出分,快速验证模型是否训对。

示例

# 使用 OpenCompass 评测框架,在ARC_c数据集上评估模型
CUDA_VISIBLE_DEVICES=0 swift eval \
    --model Qwen/Qwen2.5-7B-Instruct \
    --adapters output/checkpoint-xxx \ # 可选,评测微调后的模型
    --infer_backend lmdeploy \ # 使用LMDeploy引擎加速推理
    --eval_backend OpenCompass \
    --eval_dataset ARC_c

结束


支付宝打赏 微信打赏

~ 海内存知已,天涯若比邻 ~

Share

Related Posts

标题:LLaMA-Factory 使用指南

摘要:分布式训练知识点

标题:Agent 智能体应用

摘要:大模型 LLM 驱动的智能体如何应用?

站内可视化导航

文章可视化导读:鼠标划过图形块时,如果出现蓝色光环, 点击即可跳转到对应主题

Comments

--disqus--

    Content
    My Moment ( 微信公众号 )
    欢迎关注鹤啸九天