SWIFT支持300+ LLM和50+ MLLM(多模态大模型)的训练(预训练、微调、对齐)、推理、评测和部署。开发者可以直接将我们的框架应用到自己的Research和生产环境中,实现模型训练评测到应用的完整链路。我们除支持了PEFT提供的轻量训练方案外,也提供了一个完整的Adapters库以支持最新的训练技术,如NEFTune、LoRA+、LLaMA-PRO等,这个适配器库可以脱离训练脚本直接使用在自己的自定流程中。
为方便不熟悉深度学习的用户使用,我们提供了一个Gradio的web-ui用于控制训练和推理,并提供了配套的深度学习课程和最佳实践供新手入门。 可以在Huggingface space 和 ModelScope创空间 中体验SWIFT web-ui功能了。
SWIFT具有丰富全面的文档,请查看我们的文档网站:
请扫描下面的二维码来加入我们的交流群:
Discord Group | 微信群 |
---|---|
- 🔥2024.08.02: 支持Fourier Ft训练. 使用方式为
--sft_type fourierft
, 参数可以参考这里. - 🔥2024.07.29: 支持使用lmdeploy对LLM和VLM模型进行推理加速. 文档可以查看这里.
- 🔥2024.07.24: 人类偏好对齐算法支持视觉多模态大模型, 包括DPO/ORPO/SimPO/CPO, 训练参考文档. 支持数据集RLAIF-V.
- 🔥2024.07.24: 支持使用megatron对qwen2系列进行CPT和SFT. 可以查看megatron训练文档.
- 🔥2024.07.24: 支持llama3.1系列模型. 包含8b, 70b, 405b. 支持openbuddy-llama3_1-8b-chat.
- 2024.07.20: 支持mistral-nemo系列模型. 使用
--model_type mistral-nemo-base-2407
以及--model_type mistral-nemo-instruct-2407
开始训练和推理. - 🔥2024.07.19: 支持Q-Galore算法, 该算法可以减少显存使用约60% (qwen-7b-chat, full, 80G -> 35G), 使用命令行:
swift sft --model_type xxx --use_galore true --galore_quantization true
来开始训练! - 2024.07.17: 支持InternVL2系列新模型:
model_type
分别为internvl2-1b, internvl2-40b, internvl2-llama3-76b. 最佳实践可以查看这里. - 2024.07.17: 支持NuminaMath-7B-TIR的训练和推理. model_type可以使用
numina-math-7b
. - 🔥2024.07.16: 支持ollama和bitsandbytes导出. 可以使用命令:
swift export --model_type xxx --to_ollama true
或者swift export --model_type xxx --quant_method bnb --quant_bits 4
. - 2024.07.08: 支持cogvlm2-video-13b-chat. 最佳实践可以查看这里.
- 2024.07.08: 支持internlm-xcomposer2_5-7b-chat. 最佳实践可以查看这里.
- 🔥2024.07.06: 支持llava-next-video系列模型: llava-next-video-7b-instruct, llava-next-video-7b-32k-instruct, llava-next-video-7b-dpo-instruct, llava-next-video-34b-instruct. 可以查看llava-video最佳实践了解更多.
- 🔥2024.07.06: 支持InternVL-2系列: internvl2-2b, internvl2-4b, internvl2-8b, internvl2-26b.
- 2024.07.06: 支持codegeex4-9b-chat.
- 2024.07.04: 支持internlm2_5-7b系列: internlm2_5-7b, internlm2_5-7b-chat, internlm2_5-7b-chat-1m.
- 2024.07.02: 支持使用vllm对多模态大模型: llava系列, phi3-vision模型进行推理加速和部署. 可以查看多模态&vLLM推理加速文档获取更多信息.
- 2024.07.02: 支持
llava1_6-vicuna-7b-instruct
,llava1_6-vicuna-13b-instruct
等llava-hf模型. 最佳实践可以查看这里. - 🔥2024.06.29: 支持eval-scope&open-compass评测! 我们支持了包含
BoolQ, ocnli, humaneval, math, ceval, mmlu, gsk8k, ARC_e
等50+标准数据集在内的评测流程, 请查看我们的评测文档来使用。下个迭代我们会支持多模态评测和Agent评测,记得持续关注我们: ) - 🔥2024.06.28: 支持Florence系列模型: 可以查看Florence最佳实践.
- 🔥2024.06.28: 支持Gemma2系列模型: gemma2-9b, gemma2-9b-instruct, gemma2-27b, gemma2-27b-instruct.
- 🔥2024.06.18: 支持DeepSeek-Coder-v2系列模型! 使用model_type
deepseek-coder-v2-instruct
和deepseek-coder-v2-lite-instruct
来开启训练和推理. - 🔥2024.06.16: 支持KTO和CPO训练,使用
swift rlhf --rlhf_type kto
和swift rlhf --rlhf_type cpo
来开始训练,可以参考文档. - 2024.06.11: 支持符合OpenAI接口的工具调用Agent部署, 可以查看Agent部署最佳实践.
- 🔥2024.06.07: 支持Qwen2系列LLM, 包括0.5B、1.5B、7B、72B的Base和Instruct模型, 以及对应的gptq-int4、gptq-int8、awq-int4量化版本. 使用双卡80GiB A100对Qwen2-72B-Instruct进行自我认知微调并推理部署的最佳实践可以查看这里.
- 🔥2024.06.05: 支持glm4系列大模型和glm4v-9b-chat多模态大模型, 可以查看glm4v最佳实践.
- 🔥2024.06.01: 支持SimPO训练,使用
swift simpo
来开始训练,最佳实践可以查看这里 - 🔥2024.06.01: 支持多模态大模型部署, 可以查看多模态部署文档.
- 2024.05.31: 支持Mini-Internvl多模态模型, 使用model_type
mini-internvl-chat-2b-v1_5
和mini-internvl-chat-4b-v1_5
来训练.
更多
- 2024.05.24: 支持Phi3多模态模型, 使用model_type
phi3-vision-128k-instruct
来训练. - 2024.05.22: 支持DeepSeek-V2-lite系列模型, model_type为
deepseek-v2-lite
和deekseek-v2-lite-chat
- 2024.05.22: 支持TeleChat-12b-v2模型和量化版本, model_type为
telechat-12b-v2
和telechat-12b-v2-gptq-int4
- 🔥2024.05.21: 支持 MiniCPM-Llama3-V-2_5 的推理与微调, 可以查看minicpm-v-2.5最佳实践.
- 🔥2024.05.20: 支持 cogvlm2-llama3-chinese-chat-19B, cogvlm2-llama3-chat-19B 的推理与微调, 可以查看cogvlm2最佳实践.
- 🔥2024.05.17: 支持peft=0.11.0. 同时支持了三个新的tuner方法:
BOFT
,Vera
和Pissa
. 使用--sft_type boft/vera
开启BOFT或者Vera, 使用--init_lora_weights pissa
以及--sft_type lora
来使用 Pissa. - 2024.05.16: 支持Llava-Next (Stronger)系列模型,最佳实践可以查看这里.
- 🔥2024.05.13: 支持Yi-1.5系列模型,使用
--model_type yi-1_5-9b-chat
等开始体验 - 2024.05.11: 支持使用hqq和eetq进行qlora训练和量化推理,可以查看LLM量化文档
- 2024.05.10: 支持序列并行. 先安装
pip install .[seq_parallel]
, 之后在DDP环境中添加--sequence_parallel_size n
即可使用! - 2024.05.08: 支持DeepSeek-V2-Chat模型, 训练参考这个脚本。支持InternVL-Chat-V1.5-Int8模型,最佳实践参考这里.
- 🔥2024.05.07: 支持ORPO训练,使用
swift orpo
来开始训练, 最佳实践可以查看这里 - 2024.05.07: 支持来自xtuner的Llava-Llama3模型,model_type为
llava-llama-3-8b-v1_1
. - 2024.04.29: 支持InternVL-Chat-V1.5的推理与微调, 最佳实践可以查看这里.
- 🔥2024.04.26: 支持LISA 和 unsloth训练!指定
--lisa_activated_layers=2
来开启LISA(显存使用降低至全参训练的30%),指定--tuner_backend unsloth
来使用unsloth,用更少的显存(30%或更少)更快的速度(5x)训练一个超大模型! - 🔥2024.04.26: 支持Qwen1.5-110B和Qwen1.5-110B-Chat模型的推理与微调, 使用这个脚本来开始训练!
- 2024.04.24: 支持Phi3系列模型的推理与微调. 包括: phi3-4b-4k-instruct, phi3-4b-128k-instruct.
- 2024.04.22: 支持chinese-llama-alpaca-2系列模型的推理与微调和部署等. 包括:chinese-llama-2-1.3b, chinese-llama-2-7b, chinese-llama-2-13b, chinese-alpaca-2-1.3b, chinese-alpaca-2-7b和chinese-alpaca-2-13b以及对应的16k和64k长文本模型.
- 2024.04.22: 支持Llama3 GPTQ-Int4, GPTQ-Int8, AWQ系列模型的推理与微调. 支持chatglm3-6b-128k, Openbuddy-llama3的推理与微调.
- 2024.04.20: 支持Atom系列模型的推理, 微调和部署等. 包括: Atom-7B and Atom-7B-Chat. 使用这个脚本来开始训练!
- 2024.04.19: 支持NPU的单卡、DDP、ZeRO2和ZeRO3的训练与推理, 可以查看NPU推理与微调最佳实践.
- 2024.04.19: 支持Llama3系列模型的推理, 微调和部署等. 包括: Llama-3-8B, Llama-3-8B-Instruct, Llama-3-70B, Llama-3-70B-Instruct. 使用这个脚本开始训练叭!
- 2024.04.18: 支持模型: wizardlm2-7b-awq, wizardlm2-8x22b, yi-6b-chat-awq, yi-6b-chat-int8, yi-34b-chat-awq, yi-34b-chat-int8. 支持
--deepspeed zero3-offload
, 提供了默认zero3-offload配置文件来使用zero3+cpu offload. - 2024.04.18: 支持使用环境变量
USE_HF
兼容HuggingFace生态, 切换成使用HF中的模型和数据集, 可以查看HuggingFace生态兼容文档. - 2024.04.17: 支持OpenAI样式的接口评测, 可以查看评测参数接口文档来查看使用方法.
- 🔥2024.04.17: 支持 CodeQwen1.5-7B系列: CodeQwen1.5-7B, CodeQwen1.5-7B-Chat, CodeQwen1.5-7B-Chat-AWQ, 使用这个脚本来开始训练!
- 2024.04.16: 支持llava-v1.6-34b的推理与微调, 最佳实践可以查看这里.
- 2024.04.13: 支持Mixtral-8x22B-v0.1模型的推理与微调, 使用这个脚本来开始训练!
- 2024.04.13: 支持新推出的MiniCPM系列: MiniCPM-V-2.0、MiniCPM-2B-128k、MiniCPM-MoE-8x2B和MiniCPM-1B。使用这个脚本来开始训练!
- 🔥2024.04.11: 支持一键式模型评测能力! 首批数据集包含MMLU、CEval、ARC等,也支持用户自定义数据集,具体可以这个文档。同时, 我们支持了一个比较trick的方法来做多个消融实验的管理,查看这个文档来使用。
- 🔥2024.04.11: 支持c4ai-command-r系列: c4ai-command-r-plus, c4ai-command-r-v01。使用这个脚本来开始训练!
- 2024.04.10: 使用swift微调qwen-7b-chat模型增强模型function call能力,并结合Modelscope-Agent使用,最佳实践可以查看这里。
- 🔥2024.04.09: 支持
弱智吧
系列数据集. 在支持的模型和数据集文档中搜索ruozhiba
来找到数据集并开始训练! - 2024.04.08: 支持XVERSE-MoE-A4.2B模型的推理与微调, 使用这个脚本来开始训练!
- 2024.04.04: 支持使用QLoRA+FSDP来使用两张24G显卡训练70B模型, 使用这个脚本开始训练.
- 🔥2024.04.03: 支持Qwen1.5-32B系列: Qwen1.5-32B, Qwen1.5-32B-Chat, Qwen1.5-32B-Chat-GPTQ-Int4。使用这个脚本来开始训练!
- 🔥2024.04.02: 支持Mengzi3-13B-Base模型的推理与微调, 使用这个脚本来开始训练!
- 🔥2024.04.01: 支持dbrx系列, dbrx-base和dbrx-instruct, 使用这个脚本来开始训练!.
- 🔥2024.03.29: 支持Qwen1.5-MoE系列: Qwen1.5-MoE-A2.7B, Qwen1.5-MoE-A2.7B-Chat, Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4.
- 🔥2024.03.29: 支持Grok-1 300B MoE模型的推理与微调, 最佳实践可以查看这里.
- 🔥2024.03.25: 支持TeleChat-7b和TeleChat-12b模型的训练和推理, 使用这个脚本来开始训练!.
- 🔥2024.03.20: 支持llava系列的推理与微调, 最佳实践可以查看这里.
- 🔥2024.03.12: 支持deepseek-vl系列推理和微调, 最佳实践可以查看这里.
- 🔥2024.03.11: 支持GaLore, 用于在全参数训练中有效减小显存占用至原来的1/2.
- 🔥2024.03.10: Qwen1.5-7B-Chat与Qwen1.5-72B-Chat从微调到部署全流程最佳实践.
- 🔥2024.03.09: 支持MAMBA模型的训练和推理, 使用这个脚本来开始训练!.
- 2024.03.09: 支持AQLM量化模型的训练和推理, 使用这个脚本开始训练!
- 2024.03.06: 支持AWQ量化模型的训练和推理, 使用这个Qwen1.5-AWQ模型脚本开始训练, 并支持yi-9b的训练和推理.
- 🔥2024.02.29: 支持LLaMA PRO, 使用这个脚本即可开始训练.
- 🔥2024.02.29: 支持LoRA+, 使用这个脚本即可开始训练.
- 2024.02.25: 支持
swift export
, 对模型进行AWQ/GPTQ量化导出, 以及推送ModelScope Hub. 具体可以查看文档: LLM量化文档. - 2024.02.22: 支持gemma系列: gemma-2b, gemma-2b-instruct, gemma-7b, gemma-7b-instruct.
- 2024.02.16: 支持deepseek-math系列: deepseek-math-7b, deepseek-math-7b-instruct, deepseek-math-7b-chat.
- 🔥2024.02.05: 支持Qwen1.5系列模型, 支持的所有Qwen1.5系列模型请查看模型列表. 提供了qwen1half-7b-chat, qwen1half-7b-chat-int8微调的脚本.
- 2024.02.05: 支持扩散模型如SDXL, SD, ControlNet的训练, 同时也支持DreamBooth的训练, 详情可以查看对应的训练脚本.
- 2024.02.01: 支持minicpm系列: minicpm-2b-sft-chat, minicpm-2b-chat.
- 🔥2024.02.01: 支持数据集打混来减少 灾难性遗忘问题. 使用
--train_dataset_mix_ratio 2.0
开启训练!同时我们也开源了通用知识数据集 ms-bench. - 🔥2024.02.01: 支持Agent训练!Agent训练算法源自这篇论文. 我们也增加了ms-agent这个优质的agent数据集. 使用这个脚本开启Agent训练!
- 🔥2024.02.01: 支持在DPO训练中增加SFT loss来减少KL散度loss造成的生成重复问题.
- 2024.02.01: 支持在训练中使用AdaLoRA和IA3两个adapter.
- 2024.02.01: 支持在AnimateDiff训练中使用
--merge_lora
参数. - 2024.01.30: 支持internlm-xcomposer2-7b-chat.
- 🔥2024.01.30: 支持ZeRO-3, 只需要指定
--deepspeed default-zero3
即可. - 2024.01.29: 支持internlm2-math系列: internlm2-math-7b, internlm2-math-7b-chat, internlm2-math-20b, internlm2-math-20b-chat.
- 🔥2024.01.26: 支持yi-vl-6b-chat, yi-vl-34b-chat.
- 2024.01.24: 支持codefuse-codegeex2-6b-chat, codefuse-qwen-14b-chat.
- 2024.01.23: 支持orion系列: orion-14b, orion-14b-chat.
- 2024.01.20: 支持xverse-13b-256k, xverse-65b-v2, xverse-65b-chat.
- 🔥2024.01.17: 支持internlm2系列: internlm2-7b-base, internlm2-7b, internlm2-7b-sft-chat, internlm2-7b-chat, internlm2-20b-base, internlm2-20b, internlm2-20b-sft-chat, internlm2-20b-chat.
- 2024.01.15: 支持yuan系列: yuan2-2b-instruct, yuan2-2b-janus-instruct, yuan2-51b-instruct, yuan2-102b-instruct.
- 🔥2024.01.12: 支持deepseek-moe系列: deepseek-moe-16b, deepseek-moe-16b-chat.
- 🔥2024.01.04: 支持VLLM部署, 兼容OpenAI API样式, 具体可以查看VLLM推理加速与部署.
- 2024.01.04: 更新Benchmark, 方便查看不同模型训练的速度和所需显存.
- 🔥 2023.12.29: 支持web-ui进行sft训练和推理,安装ms-swift后使用
swift web-ui
开启 - 🔥 2023.12.29: 支持 DPO RLHF(Reinforcement Learning from Human Feedback) 和三个用于此任务的数据集: AI-ModelScope/stack-exchange-paired 以及 AI-ModelScope/hh-rlhf 以及 AI-ModelScope/hh_rlhf_cn. 查看文档开启训练!
- 🔥 2023.12.28: 支持SCEdit! 该tuner可显著降低U-Net中的显存占用,并支持低显存可控图像生成(取代ControlNet),阅读下面的章节来了解详细信息
- 2023.12.23: 支持codegeex2-6b.
- 2023.12.19: 支持phi2-3b.
- 2023.12.18: 支持VLLM进行推理加速.
- 2023.12.15: 支持deepseek, deepseek-coder系列: deepseek-7b, deepseek-7b-chat, deepseek-67b, deepseek-67b-chat, openbuddy-deepseek-67b-chat, deepseek-coder-1_3b, deepseek-coder-1_3b-instruct, deepseek-coder-6_7b, deepseek-coder-6_7b-instruct, deepseek-coder-33b, deepseek-coder-33b-instruct.
- 2023.12.13: 支持mistral-7b-instruct-v2, mixtral-moe-7b, mixtral-moe-7b-instruct.
- 2023.12.09: 支持
freeze_parameters
参数, 作为lora和全参数训练的折中方案. 对应的sh可以查看full_freeze_ddp. 支持disable_tqdm
,lazy_tokenize
,preprocess_num_proc
参数, 具体可以查看命令行参数. - 2023.12.08: 支持sus-34b-chat, 支持yi-6b-200k, yi-34b-200k.
- 2023.12.07: 支持Multi-Node DDP训练.
- 2023.12.05: 支持模型: zephyr-7b-beta-chat, openbuddy-zephyr-7b-chat. 支持数据集: hc3-zh, hc3-en.
- 🔥 2023.12.02: 自我认知微调最佳实践, 10分钟对大模型进行自我认知微调, 创建专属于自己的大模型.
- 🔥 2023.11.30: 支持qwen-1_8b, qwen-72b, qwen-audio系列模型的训练的推理. 对应的sh脚本可以查看qwen_1_8b_chat, qwen_72b_chat, qwen_audio_chat
- 🔥 2023.11.29: 支持AnimateDiff的训练和推理
- 🔥 2023.11.24: 支持yi-34b-chat, codefuse-codellama-34b-chat模型. 对应的sh脚本可以查看yi_34b_chat, codefuse_codellama_34b_chat.
- 🔥 2023.11.18: 支持tongyi-finance-14b系列模型: tongyi-finance-14b, tongyi-finance-14b-chat, tongyi-finance-14b-chat-int4. 对应的sh脚本可以查看tongyi_finance_14b_chat_int4.
- 2023.11.16: 支持更多模型的flash attn支持: qwen系列, qwen-vl系列, llama系列, openbuddy系列, mistral系列, yi系列, ziya系列. 请使用
use_flash_attn
参数. - 🔥 2023.11.11: 支持NEFTune, 使用
Swift.prepare_model(model, NEFTuneConfig())
即可开启. - 🔥 2023.11.11: 支持命令行训练推理和Web-UI推理, 详情可以查看下方的
使用Swift CLI运行
章节. - 🔥 2023.11.11: 支持模型训练后的部署链路(vllm/chatglm.cpp/xinference),详情可以查看官方文档.
- 🔥 2023.11.10: 支持bluelm系列模型: bluelm-7b, bluelm-7b-chat, bluelm-7b-32k, bluelm-7b-chat-32k. 对应的sh脚本可以查看bluelm_7b_chat.
- 🔥 2023.11.08: 支持xverse-65b模型的训练和推理流程,脚本在xverse_65b.
- 🔥 2023.11.07: 支持yi-6b, yi-34b模型的训练和推理流程,脚本在yi_6b, yi_34b.
- 🔥 2023.10.30: 支持 QA-LoRA 和 LongLoRA两种新的tuners.
- 🔥 2023.10.30: 支持使用ROME(Rank One Model Editing)来编辑模型,在无需训练的情况下即可给模型灌注新知识!
- 2023.10.30: 支持skywork-13b系列模型: skywork-13b, skywork-13b-chat. 对应的sh脚本可以查看skywork_13b.
- 🔥 2023.10.27: 支持chatglm3系列模型: chatglm3-6b-base, chatglm3-6b, chatglm3-6b-32k. 对应的sh脚本可以查看chatglm3_6b.
- 🔥 2023.10.17: 支持int4, int8模型的SFT: qwen-7b-chat-int4, qwen-14b-chat-int4, qwen-vl-chat-int4, baichuan2-7b-chat-int4, baichuan2-13b-chat-int4, qwen-7b-chat-int8, qwen-14b-chat-int8.
- 2023.10.15: 支持ziya2-13b系列模型: ziya2-13b, ziya2-13b-chat.
- 2023.10.12: 支持mistral-7b系列模型: openbuddy-mistral-7b-chat, mistral-7b, mistral-7b-instruct.
- 🔥 2023.10.07: 支持DeepSpeed ZeRO-2, 使得lora(不仅仅是qlora)可以在双卡A10上运行DDP.
- 2023.10.04: 支持更多数学, 法律, SQL, 代码领域的数据集: blossom-math-zh, school-math-zh, text2sql-en, sql-create-context-en, lawyer-llama-zh, tigerbot-law-zh, leetcode-python-en.
- 🔥 2023.09.25: 支持qwen-14b系列: qwen-14b, qwen-14b-chat.
- 2023.09.18: 支持internlm-20b系列: internlm-20b, internlm-20b-chat.
- 2023.09.12: 支持MP+DDP对全参数训练进行加速.
- 2023.09.05: 支持openbuddy-llama2-70b-chat.
- 2023.09.03: 支持baichuan2系列: baichuan2-7b, baichuan2-7b-chat, baichuan2-13b, baichuan2-13b-chat.
SWIFT在Python环境中运行。请确保您的Python版本高于3.8。
- 方法1:使用pip命令安装SWIFT:
# 全量能力
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
- 方法2:通过源代码安装SWIFT(方便运行训练推理脚本),请运行以下命令:
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'
SWIFT依赖torch>=1.13,建议torch>=2.0.0。
- 方法3:在我们的Docker镜像中使用SWIFT
# 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
本章节介绍基本使用,更丰富的使用方式请查看文档部分。
Web-UI是基于gradio界面技术的零门槛训练部署界面方案。Web-UI配置简单,且完美支持多卡训练和部署:
swift web-ui
你可以参考以下脚本来自定义属于你的训练脚本.
- full: qwen1half-7b-chat (A100), qwen-7b-chat (2*A100)
- full+ddp+zero2: qwen-7b-chat (4*A100)
- full+ddp+zero3: qwen-14b-chat (4*A100)
- lora: chatglm3-6b (3090), baichuan2-13b-chat (2*3090), yi-34b-chat (A100), qwen-72b-chat (2*A100)
- lora+ddp: chatglm3-6b (2*3090)
- lora+ddp+zero3: qwen-14b-chat (4*3090), qwen-72b-chat (4*A100)
- qlora(gptq-int4): qwen-14b-chat-int4 (3090), qwen1half-72b-chat-int4 (A100)
- qlora(gptq-int8): qwen-14b-chat-int8 (3090)
- qlora(bnb-int4): qwen-14b-chat (3090), llama2-70b-chat (2 * 3090)
训练过程 | 训练方式 |
---|---|
预训练 | 文本生成 |
微调 | 单轮/多轮 Agent训练/自我认知 多模态视觉/多模态语音 |
人类对齐 | DPO ORPO SimPO KTO CPO |
文生图 | 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 \
# 如果非共用磁盘请在各机器sh中额外指定`--save_on_each_node true`.
# 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_type 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_type qwen1half-32b-chat \
--sft_type full \
--dataset blossom-math-zh \
--output_dir output \
--deepspeed default-zero3 \
DLC环境变量中,WORLD_SIZE指代node数量,RANK指代node序号,这一点和torchrun定义不同,需要注意。
NNODES=$WORLD_SIZE \
NODE_RANK=$RANK \
swift sft \
--model_type qwen1half-32b-chat \
--sft_type full \
--dataset blossom-math-zh \
--output_dir output \
--deepspeed default-zero3
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift pt \
--model_type qwen1half-7b \
--dataset chinese-c4#100000 \
--num_train_epochs 1 \
--sft_type full \
--deepspeed default-zero3 \
--output_dir output \
--lazy_tokenize true
# We support rlhf_type dpo/cpo/simpo/orpo/kto
CUDA_VISIBLE_DEVICES=0 \
swift rlhf \
--rlhf_type dpo \
--model_type qwen1half-7b-chat \
--dataset shareai-llama3-dpo-zh-en-emoji \
--num_train_epochs 5 \
--sft_type lora \
--output_dir output \
原始模型:
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
原始模型:
# 推荐使用vLLM加速 (半分钟评测完arc):
CUDA_VISIBLE_DEVICES=0 swift eval --model_type qwen1half-7b-chat \
--eval_dataset ARC_e --infer_backend vllm
LoRA微调后:
CUDA_VISIBLE_DEVICES=0 swift eval --ckpt_dir xxx/checkpoint-xxx \
--eval_dataset ARC_e --infer_backend vllm \
--merge_lora true \
原始模型:
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 \
客户端使用OpenAI API进行调用,具体可以查看LLM部署文档
原始模型:
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 Qwen2 |
通义千问1.0和1.5系列模型 | 中文 英文 |
0.5B-110B 包含量化版本 |
base模型 chat模型 MoE模型 代码模型 |
ChatGLM2 ChatGLM3 Codegeex2 GLM4 Codegeex4 |
智谱ChatGLM系列模型 | 中文 英文 |
6B-9B | 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.1 |
LLaMA3系列模型 | 英文 | 8B-70B 包含量化版本 |
|
Mistral Mixtral |
Mistral系列模型 | 英文 | 7B-8x22B | base模型 instruct模型 MoE模型 |
Yi Yi1.5 |
01AI的YI系列模型 | 中文 英文 |
6B-34B 包含量化版本 |
base模型 chat模型 长文本模型 |
InternLM InternLM2 InternLM2-Math InternLM2.5 |
浦江实验室书生浦语系列模型 | 中文 英文 |
1.8B-20B | base模型 chat模型 数学模型 |
DeepSeek DeepSeek-MoE DeepSeek-Coder DeepSeek-Math DeepSeek-V2 DeepSeek-Coder-V2 |
幻方系列模型 | 中文 英文 |
1.3B-236B | base模型 chat模型 MoE模型 代码模型 数学模型 |
MAMBA | MAMBA时序卷积模型 | 英文 | 130M-2.8B | base模型 |
Gemma Gemma2 |
Google Gemma系列模型 | 英文 | 2B-27B | base模型 instruct模型 |
MiniCPM | OpenBmB MiniCPM系列模型 | 中文 英文 |
2B-3B | chat模型 MoE模型 |
OpenBuddy | OpenBuddy系列模型 | 中文 英文 |
7B-70B | 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模型 长文本模型 |
Chinese-LLaMA-Alpaca-3 | Chinese-LLaMA-Alpaca-3 | 中文 | 8B | base模型 chat模型 |
ModelScope-Agent | ModelScope Agent系列 | 中文 | 7B-14B | agent模型 |
Numina | AI-MO | 英文 | 7B | 数学模型 |
模型类型 | 模型介绍 | 语言 | 模型大小 | 模型类型 |
---|---|---|---|---|
Qwen-VL | 通义千问视觉模型 | 中文 英文 |
7B 包含量化版本 |
base模型 chat模型 |
Qwen-Audio | 通义千问语音模型 | 中文 英文 |
7B | base模型 chat模型 |
YI-VL | 01AI的YI系列视觉模型 | 中文 英文 |
6B-34B | chat模型 |
XComposer2 XComposer2.5 |
浦江实验室书生浦语视觉模型 | 中文 英文 |
7B | chat模型 |
DeepSeek-VL | 幻方系列视觉模型 | 中文 英文 |
1.3B-7B | chat模型 |
MiniCPM-V MiniCPM-V-2 MiniCPM-V-2_5 |
OpenBmB MiniCPM视觉模型 | 中文 英文 |
3B-9B | chat模型 |
CogVLM CogAgent CogVLM2 CogVLM2-Video GLM4V |
智谱ChatGLM视觉问答和Agent模型 | 中文 英文 |
9B-19B | chat模型 |
Llava1.5 Llava1.6 |
Llava系列模型 | 英文 | 7B-34B | chat模型 |
Llava-Next Llava-Next-Video |
Llava-Next系列模型 | 中文 英文 |
7B-110B | chat模型 |
mPLUG-Owl | mPLUG-Owl系列模型 | 英文 | 11B | chat模型 |
InternVL Mini-InternVL InternVL2 |
InternVL | 中文 英文 |
1B-40B 包含量化版本 |
chat模型 |
Llava-llama3 | xtuner | 英文 | 8B | chat model |
Phi3-Vision | 微软 | 英文 | 4B | chat model |
PaliGemma | 英文 | 3B | chat model | |
Florence | 微软 | 英文 | 0.23B-0.77B | chat model |
模型类型 | 模型介绍 | 语言 | 模型类型 |
---|---|---|---|
AnimateDiff | AnimateDiff动画模型 | 英文 | 文生视频 |
SD1.5/SD2.0/SDXL | StabilityAI系列扩散模型 | 英文 | 文生图 |
数据集类型 | 训练任务 | 文档 |
---|---|---|
通用 | 微调 | 🔥ruozhiba, 🔥ms-bench, 🔥alpaca-en(gpt4), 🔥alpaca-zh(gpt4), multi-alpaca, instinwild, cot-en, cot-zh, firefly-zh, instruct-en, gpt4all-en, sharegpt, tulu-v2-sft-mixture, wikipedia-zh, open-orca, sharegpt-gpt4, deepctrl-sft, coig-cqia. |
Agent | 微调 | 🔥ms-agent, 🔥ms-agent-for-agentfabric, ms-agent-multirole, 🔥toolbench-for-alpha-umi, damo-agent-zh, damo-agent-zh-mini, agent-instruct-all-en. |
通用 | 人类对齐 | hh-rlhf, 🔥hh-rlhf-cn, stack-exchange-paired. |
代码 | 微调 | code-alpaca-en, 🔥leetcode-python-en, 🔥codefuse-python-en, 🔥codefuse-evol-instruction-zh. |
医疗 | 微调 | medical-en, medical-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, 🔥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-en-mini, coco-en-2, coco-en-2-mini, capcha-images. |
音频 | 微调 | aishell1-zh, 🔥aishell1-zh-mini. |
硬件环境 | 备注 |
---|---|
CPU | |
RTX20系列/30系列/40系列等 | 30序列之后可使用BF16和FlashAttn |
计算卡系列 T4/V100等 | 不支持BF16和FlashAttn |
计算卡系列 A10/A100等 | 支持BF16和FlashAttn |
华为昇腾NPU |
- DATASET_ENABLE_CACHE:在预处理数据集时启用缓存,您可以使用
1/True
或0/False
,默认值为False
- WEBUI_SHARE:共享web-ui,可以使用
1/True
或0/False
,默认值为False
- SWIFT_UI_LANG:web-ui语言,您可以使用
en
或zh
,默认值为zh
- WEBUI_SERVER:web-ui可访问的IP
0.0.0.0
表示所有路由,127.0.0.1
仅用于本地网络。默认值为127.0.0.1
- WEBUI_PORT:web-ui端口
- USE_HF:使用huggingface endpoint或ModelScope endpoint下载模型和数据集。您可以使用
1/True
或0/False
,默认值为False
- FORCE_REDOWNLOAD:强制重新下载数据集
其他变量如CUDA_VISIBLE_DEVICES
也支持,但未在此列出。
教程名称 |
---|
深度学习入门 |
大模型基础知识 |
提示词工程 |
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}
}