魔搭社区官网
中文  |  English 
SWIFT支持近200种LLM和MLLM(多模态大模型)的训练、推理、评测和部署。开发者可以直接将我们的框架应用到自己的Research和生产环境中,实现模型训练评测到应用的完整链路。我们除支持了PEFT提供的轻量训练方案外,也提供了一个完整的Adapters库以支持最新的训练技术,如NEFTune、LoRA+、LLaMA-PRO等,这个适配器库可以脱离训练脚本直接使用在自己的自定流程中。
为方便不熟悉深度学习的用户使用,我们提供了一个Gradio的web-ui用于控制训练和推理,并提供了配套的深度学习课程和最佳实践供新手入门。
此外,我们也在拓展其他模态的能力,目前我们支持了AnimateDiff的全参数训练和LoRA训练。
--lisa_activated_layers=2
来开启LISA(显存使用降低至全参训练的30%),指定 --tuner_backend unsloth
来使用unsloth,用更少的显存(30%或更少)更快的速度(5x)训练一个超大模型!--deepspeed zero3-offload
, 提供了默认zero3-offload配置文件来使用zero3+cpu offload.USE_HF
兼容HuggingFace生态, 切换成使用HF中的模型和数据集, 可以查看HuggingFace生态兼容文档.弱智吧
系列数据集. 在支持的模型和数据集文档中搜索ruozhiba
来找到数据集并开始训练!swift export
, 对模型进行AWQ/GPTQ量化导出, 以及推送ModelScope Hub. 具体可以查看文档: LLM量化文档.--train_dataset_mix_ratio 2.0
开启训练!同时我们也开源了通用知识数据集 ms-bench.--merge_lora
参数.--deepspeed default-zero3
即可.swift web-ui
开启freeze_parameters
参数, 作为lora和全参数训练的折中方案. 对应的sh可以查看full_freeze_ddp. 支持disable_tqdm
, lazy_tokenize
, preprocess_num_proc
参数, 具体可以查看命令行参数.use_flash_attn
参数.Swift.prepare_model(model, NEFTuneConfig())
即可开启.使用Swift CLI运行
章节.SWIFT在Python环境中运行。请确保您的Python版本高于3.8。
# 全量能力
pip install 'ms-swift[all]' -U
# 仅使用LLM
pip install 'ms-swift[llm]' -U
# 仅使用AIGC
pip install 'ms-swift[aigc]' -U
# 仅使用Adapters
pip install ms-swift -U
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'
SWIFT依赖torch>=1.13,建议torch>=2.0.0。
# China-Hangzhou image
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.13.1
# US-west image
docker pull registry.us-west-1.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.13.1
本章节介绍基本使用,更丰富的使用方式请查看文档部分。
swift web-ui
你可以参考以下脚本来自定义属于你的训练脚本.
训练过程 | 训练方式 |
---|---|
预训练 | 文本生成 |
微调 | 单轮/多轮 Agent训练/自我认知 多模态视觉/多模态语音 |
人类对齐 | DPO |
文生图 | DreamBooth等 |
文生视频 | - |
通过如下命令启动单卡微调:
LoRA:
# 实验环境: A100
# 显存需求: 20GB
# 运行时长: 3.1小时
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
全参数:
# 实验环境: A100
# 显存需求: 80GB
# 运行时长: 2.5小时
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type full \
--output_dir output \
--eval_steps 500 \
# 实验环境: 2 * A100
# 显存需求: 10GB + 13GB
# 运行时长: 3.4小时
CUDA_VISIBLE_DEVICES=0,1 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
# 实验环境: 4 * A100
# 显存需求: 4 * 30GB
# 运行时长: 0.8小时
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
模型并行与数据并行结合:
# 实验环境: 4 * A100
# 显存需求: 2*14GB + 2*18GB
# 运行时长: 1.7小时
NPROC_PER_NODE=2 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
Deepspeed支持对GPTQ和AWQ量化模型进行训练.
ZeRO2:
# 实验环境: 4 * A100
# 显存需求: 4 * 21GB
# 运行时长: 0.9小时
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
--deepspeed default-zero2 \
ZeRO3:
# 实验环境: 4 * A100
# 显存需求: 4 * 19GB
# 运行时长: 3.2小时
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \
--model_type qwen1half-7b-chat \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
--deepspeed default-zero3 \
ZeRO3-Offload:
# 实验环境: 4 * A100
# 显存需求: 4 * 12GB
# 运行时长: 60小时
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \
--model_id_or_path AI-ModelScope/WizardLM-2-8x22B \
--dataset blossom-math-zh \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
--deepspeed zero3-offload \
# node0
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
NNODES=2 \
NODE_RANK=0 \
MASTER_ADDR=127.0.0.1 \
NPROC_PER_NODE=8 \
swift sft \
--model_id_or_path qwen1half-32b-chat \
--sft_type full \
--dataset blossom-math-zh \
--output_dir output \
--deepspeed default-zero3 \
# node1
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
NNODES=2 \
NODE_RANK=1 \
MASTER_ADDR=xxx.xxx.xxx.xxx \
NPROC_PER_NODE=8 \
swift sft \
--model_id_or_path qwen1half-32b-chat \
--sft_type full \
--dataset blossom-math-zh \
--output_dir output \
--deepspeed default-zero3 \
原始模型:
CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-7b-chat
# 使用VLLM加速
CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-7b-chat \
--infer_backend vllm --max_model_len 8192
LoRA微调后:
CUDA_VISIBLE_DEVICES=0 swift infer --ckpt_dir xxx/checkpoint-xxx --load_dataset_config true
# 使用VLLM加速
CUDA_VISIBLE_DEVICES=0 swift infer \
--ckpt_dir xxx/checkpoint-xxx --load_dataset_config true \
--merge_lora true --infer_backend vllm --max_model_len 8192
CUDA_VISIBLE_DEVICES=0 swift eval --model_type qwen1half-7b-chat --eval_dataset mmlu ceval
原始模型:
CUDA_VISIBLE_DEVICES=0 swift export --model_type qwen1half-7b-chat \
--quant_bits 4 --quant_method awq
LoRA微调后:
CUDA_VISIBLE_DEVICES=0 swift export \
--ckpt_dir xxx/checkpoint-xxx --load_dataset_config true \
--quant_method awq --quant_bits 4 \
--merge_lora true \
原始模型:
CUDA_VISIBLE_DEVICES=0 swift deploy --model_type qwen1half-7b-chat
# 使用VLLM加速
CUDA_VISIBLE_DEVICES=0 swift deploy --model_type qwen1half-7b-chat \
--infer_backend vllm --max_model_len 8192
LoRA微调后:
CUDA_VISIBLE_DEVICES=0 swift deploy --ckpt_dir xxx/checkpoint-xxx
# 使用VLLM加速
CUDA_VISIBLE_DEVICES=0 swift deploy \
--ckpt_dir xxx/checkpoint-xxx --merge_lora true \
--infer_backend vllm --max_model_len 8192
完整的支持模型和数据集可以查看支持的模型和数据集列表.
模型类型 | 模型介绍 | 语言 | 模型大小 | 模型类型 |
---|---|---|---|---|
Qwen Qwen1.5 |
通义千问1.0和1.5系列模型 | 中文 英文 |
0.5B-110B 包含量化版本 |
base模型 chat模型 MoE模型 代码模型 |
ChatGLM2 ChatGLM3 Codegeex2 |
智谱ChatGLM系列模型 | 中文 英文 |
6B | base模型 chat模型 代码模型 长文本模型 |
Baichuan Baichuan2 |
百川1和百川2 | 中文 英文 |
7B-13B 包含量化版本 |
base模型 chat模型 |
Yuan2 | 浪潮源系列模型 | 中文 英文 |
2B-102B | instruct模型 |
XVerse | 元象系列模型 | 中文 英文 |
7B-65B | base模型 chat模型 长文本模型 MoE模型 |
LLaMA2 | LLaMA2系列模型 | 英文 | 7B-70B 包含量化版本 |
base模型 chat模型 |
LLaMA3 | LLaMA3系列模型 | 英文 | 8B-70B 包含量化版本 |
base模型 chat模型 |
Mistral Mixtral |
Mistral系列模型 | 英文 | 7B-8x22B | base模型 instruct模型 MoE模型 |
YI | 01AI的YI系列模型 | 中文 英文 |
6B-34B 包含量化版本 |
base模型 chat模型 长文本模型 |
InternLM InternLM2 InternLM2-Math |
浦江实验室书生浦语系列模型 | 中文 英文 |
1.8B-20B | base模型 chat模型 数学模型 |
DeepSeek DeepSeek-MoE DeepSeek-Coder DeepSeek-Math |
幻方系列模型 | 中文 英文 |
1.3B-67B | base模型 chat模型 MoE模型 代码模型 数学模型 |
MAMBA | MAMBA时序卷积模型 | 英文 | 130M-2.8B | base模型 |
Gemma | Google Gemma系列模型 | 英文 | 2B-7B | base模型 instruct模型 |
MiniCPM | OpenBmB MiniCPM系列模型 | 中文 英文 |
2B-3B | chat模型 MoE模型 |
OpenBuddy | OpenBuddy系列模型 | 中文 英文 |
7B-67B | base模型 chat模型 |
Orion | 猎户星空系列模型 | 中文 英文 |
14B | base模型 chat模型 |
BlueLM | VIVO蓝心大模型 | 中文 英文 |
7B | base模型 chat模型 |
Ziya2 | 封神榜系列模型 | 中文 英文 |
13B | base模型 chat模型 |
Skywork | 昆仑天工系列模型 | 中文 英文 |
13B | base模型 chat模型 |
Zephyr | 基于Mistral的zephyr系列模型 | 英文 | 7B | chat模型 |
PolyLM | 通义实验室自研的PolyLM系列模型 | 多语种 | 13B | base模型 |
SeqGPT | 通义实验室自研的文本理解模型,用于信息抽取和文本分类 | 中文 | 560M | 语义理解模型 |
SUS | 南方科技大学基于YI Fine-Tune的模型 | 中文 英文 |
34B | chat模型 |
Tongyi-Finance | 通义金融系列模型 | 中文 英文 |
14B | base模型 chat模型 金融模型 |
CodeFuse-CodeLLaMA CodeFuse-Codegeex2 CodeFuse-Qwen |
蚂蚁CodeFuse系列模型 | 中文 英文 |
6B-34B | chat模型 代码模型 |
phi2/phi3 | 微软PHI2模型 | 英文 | 3B/4B | base模型 指令模型 代码模型 |
Grok | X-ai | 英文 | 300B | base模型 |
TeleChat | Tele-AI | 中文 英文 |
7B-12B | chat模型 |
dbrx | databricks | 英文 | 132B | base模型 chat模型 |
mengzi3 | Langboat | 中文 英文 |
13B | base模型 |
c4ai-command-r | c4ai | 多语种 | 35B-104B | chat模型 |
WizardLM2 | WizardLM2系列模型 | 多语种 | 7B-8x22B 包含量化版本 |
chat模型 MoE模型 |
Atom | Atom | 中文 | 7B | base模型 chat模型 |
Chinese-LLaMA-Alpaca-2 | Chinese-LLaMA-Alpaca-2 | 中文 | 1.3B-13B | base模型 chat模型 长文本模型 |
ModelScope-Agent | ModelScope Agent系列 | 中文 | 7B-14B | agent模型 |
模型类型 | 模型介绍 | 语言 | 模型大小 | 模型类型 |
---|---|---|---|---|
Qwen-VL | 通义千问视觉模型 | 中文 英文 |
7B 包含量化版本 |
base模型 chat模型 |
Qwen-Audio | 通义千问语音模型 | 中文 英文 |
7B | base模型 chat模型 |
YI-VL | 01AI的YI系列视觉模型 | 中文 英文 |
6B-34B | chat模型 |
XComposer2 | 浦江实验室书生浦语视觉模型 | 中文 英文 |
7B | chat模型 |
DeepSeek-VL | 幻方系列视觉模型 | 中文 英文 |
1.3B-7B | chat模型 |
MiniCPM-V | OpenBmB MiniCPM视觉模型 | 中文 英文 |
3B | chat模型 |
CogVLM CogAgent |
智谱ChatGLM视觉问答和Agent模型 | 英文 | 17B-18B | chat模型 |
Llava | Llava系列模型 | 英文 | 7B-34B | chat模型 |
mPLUG-Owl | mPLUG-Owl系列模型 | 英文 | 11B | chat模型 |
模型类型 | 模型介绍 | 语言 | 模型类型 |
---|---|---|---|
AnimateDiff | AnimateDiff动画模型 | 英文 | 文生视频 |
SD1.5/SD2.0/SDXL | StabilityAI系列扩散模型 | 英文 | 文生图 |
数据集类型 | 训练任务 | 文档 |
---|---|---|
通用 | 微调 | 🔥ruozhiba, 🔥ms-bench, 🔥ms-bench-mini, 🔥alpaca-en(gpt4), 🔥alpaca-zh(gpt4), multi-alpaca-all, instinwild-en, instinwild-zh, cot-en, cot-zh, firefly-all-zh, instruct-en, gpt4all-en, sharegpt-en, sharegpt-zh, tulu-v2-sft-mixture, wikipedia-zh, open-orca, open-orca-gpt4, sharegpt-gpt4, 🔥sharegpt-gpt4-mini. |
Agent | 微调 | 🔥ms-agent, ms-agent-for-agentfabric-default, ms-agent-for-agentfabric-addition, damo-mini-agent-zh, damo-agent-zh, agent-instruct-all-en. |
通用 | 人类对齐 | 🔥hh-rlhf-cn, stack-exchange-paired, hh-rlhf-harmless-base, hh-rlhf-helpful-base, hh-rlhf-helpful-online, hh-rlhf-helpful-rejection-sampled, hh-rlhf-red-team-attempts, hh-rlhf-cn-harmless-base-cn, hh-rlhf-cn-helpful-base-cn, hh-rlhf-cn-harmless-base-en, hh-rlhf-cn-helpful-base-en. |
代码 | 微调 | code-alpaca-en, 🔥leetcode-python-en, 🔥codefuse-python-en, 🔥codefuse-evol-instruction-zh. |
医疗 | 微调 | medical-en, medical-zh, medical-mini-zh, 🔥disc-med-sft-zh. |
法律 | 微调 | lawyer-llama-zh, tigerbot-law-zh, 🔥disc-law-sft-zh. |
数学 | 微调 | 🔥blossom-math-zh, school-math-zh, open-platypus-en. |
SQL | 微调 | text2sql-en, 🔥sql-create-context-en. |
文本生成 | 微调 | 🔥advertise-gen-zh, 🔥dureader-robust-zh. |
分类 | 微调 | cmnli-zh, 🔥cmnli-mini-zh, 🔥jd-sentiment-zh, 🔥hc3-zh, 🔥hc3-en. |
量化辅助 | 量化 | pileval. |
其他 | 微调 | finance-en, poetry-zh, webnovel-zh, generated-chat-zh, cls-fudan-news-zh, ner-jave-zh. |
视觉 | 微调 | coco-en, 🔥coco-mini-en, coco-mini-en-2, capcha-images. |
音频 | 微调 | aishell1-zh, 🔥aishell1-mini-zh. |
硬件环境 | 备注 |
---|---|
CPU | |
RTX20系列/30系列/40系列等 | 30序列之后可使用BF16和FlashAttn |
计算卡系列 T4/V100等 | 不支持BF16和FlashAttn |
计算卡系列 A10/A100等 | 支持BF16和FlashAttn |
华为昇腾NPU |
make docs
# 浏览器查看docs/build/html/index.html
文档名称 |
---|
使用Web-UI |
使用Tuners |
LLM推理 |
LLM微调 |
LLM评测 |
LLM量化 |
LLM部署 |
DPO人类对齐训练 |
AnimateDiff训练 |
文档名称 |
---|
命令行参数 |
支持的模型和数据集列表 |
自定义新模型和数据集 |
运行速度与显存Benchmark |
HuggingFace生态兼容 |
最佳实践名称 |
---|
Agent微调最佳实践 |
自我认知微调最佳实践 |
Qwen1.5最佳实践 |
多模态模型训练最佳实践 |
NPU推理与微调最佳实践 |
教程名称 |
---|
深度学习入门 |
大模型基础知识 |
提示词工程 |
Transformer结构介绍 |
训练技术选型 |
数据预处理 |
量化 |
训练 |
推理 |
部署 |
评估 |
本框架使用Apache License (Version 2.0)进行许可。模型和数据集请查看原资源页面并遵守对应License。
@Misc{swift,
title = {SWIFT:Scalable lightWeight Infrastructure for Fine-Tuning},
author = {The ModelScope Team},
howpublished = {\url{https://github.com/modelscope/swift}},
year = {2024}
}
您可以通过加我们的微信群, 来和我们联系和交流:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。