modelscope / swift
- суббота, 25 мая 2024 г. в 00:00:08
ms-swift: Use PEFT or Full-parameter to finetune 200+ LLMs or 15+ MLLMs
ModelScope Community Website
中文 | English
SWIFT supports training, inference, evaluation and deployment of nearly 200 LLMs and MLLMs (multimodal large models). Developers can directly apply our framework to their own research and production environments to realize the complete workflow from model training and evaluation to application. In addition to supporting the lightweight training solutions provided by PEFT, we also provide a complete Adapters library to support the latest training techniques such as NEFTune, LoRA+, LLaMA-PRO, etc. This adapter library can be used directly in your own custom workflow without our training scripts.
To facilitate use by users unfamiliar with deep learning, we provide a Gradio web-ui for controlling training and inference, as well as accompanying deep learning courses and best practices for beginners.
Additionally, we are expanding capabilities for other modalities. Currently, we support full-parameter training and LoRA training for AnimateDiff.
SWIFT has rich documentations for users, please check here.
SWIFT web-ui is available both on Huggingface space and ModelScope studio, please feel free to try!
phi3-vision-128k-instruct
to train.deepseek-v2-lite
and deepseek-v2-lite-chat
telechat-12b-v2
and telechat-12b-v2-gptq-int4
BOFT
, Vera
and Pissa
. use --sft_type boft/vera
to use BOFT or Vera, use --init_lora_weights pissa
with --sft_type lora
to use Pissa.--model_type yi-1_5-9b-chat
to begin!pip install .[seq_parallel]
, then add --sequence_parallel_size n
to your DDP script to begin!llava-llama-3-8b-v1_1
.--lisa_activated_layers=2
to use LISA(to reduce the memory cost to 30 percent!), specify --tuner_backend unsloth
to use unsloth to train a huge model(full or lora) with lesser memory(30 percent or lesser) and faster speed(5x)!--deepspeed zero3-offload
and provided default zero3-offload configuration file for zero3+cpu offload usage.USE_HF
, switching to use models and datasets from HF. Please refer to the HuggingFace ecosystem compatibility documentation.ruozhiba
in this documentation to begin training!swift export
to quantize models using AWQ/GPTQ and push to ModelScope Hub. See documentation: LLM Quantization.--train_dataset_mix_ratio 2.0
to enable training! We also open sourced the general knowledge dataset ms-bench.--merge_lora
parameter in AnimateDiff training.--deepspeed default-zero3
.swift web-ui
after installing ms-swift to start.freeze_parameters
parameter as a compromise between lora and full-parameter training. Corresponding sh can be found in full_freeze_ddp. Support disable_tqdm
, lazy_tokenize
, preprocess_num_proc
parameters, see command line arguments for details.use_flash_attn
parameter.Swift.prepare_model(model, NEFTuneConfig())
to enable.Usage with Swift CLI
section below for details.SWIFT runs in the Python environment. Please ensure your Python version is higher than 3.8.
# Full capabilities
pip install 'ms-swift[all]' -U
# LLM only
pip install 'ms-swift[llm]' -U
# AIGC only
pip install 'ms-swift[aigc]' -U
# Adapters only
pip install ms-swift -U
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'
SWIFT depends on torch>=1.13, recommend 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
This section introduces basic usage, see the Documentation section for more ways to use.
Web-UI is a gradio-based interface for zero-threshold training and deployment. It is easy to use and perfectly supports multi-GPU training and deployment:
SWIFT_UI_LANG=en swift web-ui
You can refer to the following scripts to customize your own training script.
Training Process | Training Method |
---|---|
Pretraining | Text Generation |
Fine-tuning | Single-turn/Multi-turn Agent Training/Self-cognition Multi-modal Vision/Multi-modal Speech |
Human Alignment | DPO ORPO |
Text-to-Image | DreamBooth, etc. |
Text-to-Video | - |
Start single GPU fine-tuning with the following command:
LoRA:
# Experimental Environment: A100
# GPU Memory Requirement: 20GB
# Runtime: 3.1 hours
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 \
--eval_steps 200 \
Full-parameter:
# Experimental Environment: A100
# GPU Memory Requirement: 80GB
# Runtime: 2.5 hours
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 \
# Experimental Environment: 2 * A100
# GPU Memory Requirement: 10GB + 13GB
# Runtime: 3.4 hours
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 \
# Experimental Environment: 4 * A100
# GPU Memory Requirement: 4 * 30GB
# Runtime: 0.8 hours
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 \
Combining Model Parallelism and Data Parallelism:
# Experimental Environment: 4 * A100
# GPU Memory Requirement: 2*14GB + 2*18GB
# Runtime: 1.7 hours
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 supports training of quantized GPTQ and AWQ models.
ZeRO2:
# Experimental Environment: 4 * A100
# GPU Memory Requirement: 4 * 21GB
# Runtime: 0.9 hours
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:
# Experimental Environment: 4 * A100
# GPU Memory Requirement: 4 * 19GB
# Runtime: 3.2 hours
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:
# Experimental Environment: 4 * A100
# GPU Memory Requirement: 4 * 12GB
# Runtime: 60 hours
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 \
In DLC product, WORLD_SIZE is the node number, RANK is the node index, this is different from the definition of torchrun.
NNODES=$WORLD_SIZE \
NODE_RANK=$RANK \
swift sft \
--model_id_or_path qwen1half-32b-chat \
--sft_type full \
--dataset blossom-math-zh \
--output_dir output \
--deepspeed default-zero3
Original model:
CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-7b-chat
# use VLLM
CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-7b-chat \
--infer_backend vllm --max_model_len 8192
LoRA fine-tuned:
CUDA_VISIBLE_DEVICES=0 swift infer --ckpt_dir xxx/checkpoint-xxx --load_dataset_config true
# use 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
Original model:
CUDA_VISIBLE_DEVICES=0 swift export --model_type qwen1half-7b-chat \
--quant_bits 4 --quant_method awq
LoRA fine-tuned:
CUDA_VISIBLE_DEVICES=0 swift export \
--ckpt_dir xxx/checkpoint-xxx --load_dataset_config true \
--quant_method awq --quant_bits 4 \
--merge_lora true \
Original model:
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 fine-tuned:
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
The complete list of supported models and datasets can be found at Supported Models and Datasets List.
Model Type | Model Introduction | Language | Model Size | Model Type |
---|---|---|---|---|
Qwen Qwen1.5 |
Tongyi Qwen 1.0 and 1.5 series models | Chinese English |
0.5B-110B including quantized versions |
base model chat model MoE model code model |
ChatGLM2 ChatGLM3 Codegeex2 |
Zhipu ChatGLM series models | Chinese English |
6B | base model chat model code model long text model |
Baichuan/Baichuan2 | Baichuan 1 and Baichuan 2 | Chinese English |
7B-13B including quantized versions |
base model chat model |
Yuan2 | Langchao Yuan series models | Chinese English |
2B-102B | instruct model |
XVerse | XVerse series models | Chinese English |
7B-65B | base model chat model long text model MoE model |
LLaMA2 | LLaMA2 series models | English | 7B-70B including quantized versions |
base model chat model |
LLaMA3 | LLaMA3 series models | English | 8B-70B including quantized versions |
base model chat model |
Mistral Mixtral |
Mistral series models | English | 7B-22B | base model instruct model MoE model |
Yi Yi1.5 |
01AI's YI series models | Chinese English |
6B-34B including quantized |
base model chat model long text model |
InternLM InternLM2 InternLM2-Math |
Pujiang AI Lab InternLM series models | Chinese English |
1.8B-20B | base model chat model math model |
DeepSeek DeepSeek-MoE DeepSeek-Coder DeepSeek-Math DeepSeek-V2 |
DeepSeek series models | Chinese English |
1.3B-236B | base model chat model MoE model code model math model |
MAMBA | MAMBA temporal convolution model | English | 130M-2.8B | base model |
Gemma | Google Gemma series models | English | 2B-7B | base model instruct model |
MiniCPM | OpenBmB MiniCPM series models | Chinese English |
2B-3B | chat model MoE model |
OpenBuddy | OpenBuddy series models | Chinese English |
7B-67B | base model chat model |
Orion | OrionStar AI series models | Chinese English |
14B | base model chat model |
BlueLM | VIVO BlueLM large model | Chinese English |
7B | base model chat model |
Ziya2 | Fengshenbang series models | Chinese English |
13B | base model chat model |
Skywork | Skywork series models | Chinese English |
13B | base model chat model |
Zephyr | Zephyr series models based on Mistral | English | 7B | chat model |
PolyLM | Tongyi Lab self-developed PolyLM series models | Multilingual | 13B | base model |
SeqGPT | Tongyi Lab self-developed text understanding model for information extraction and text classification | Chinese | 560M | semantic understanding model |
SUS | Southern University of Science and Technology model fine-tuned on YI | Chinese English |
34B | chat model |
Tongyi-Finance | Tongyi finance series models | Chinese English |
14B | base model chat model financial model |
CodeFuse-CodeLLaMA CodeFuse-Codegeex2 CodeFuse-Qwen |
Ant CodeFuse series models | Chinese English |
6B-34B | chat model code model |
phi2/phi3 | Microsoft's PHI series models | English | 3B/4B | base model instruct model code model |
Grok | X-ai | English | 300B | base model |
TeleChat | Tele-AI | Chinese English |
7B-12B | chat model |
dbrx | databricks | English | 132B | base model chat model |
mengzi3 | Langboat | Chinese English |
13B | base model |
c4ai-command-r | c4ai | Multilingual | 35B-104B | chat model |
WizardLM2 | WizardLM2 series models | English | 7B-8x22B including quantized versions |
chat model MoE model |
Atom | Atom | Chinese | 7B | base model chat model |
Chinese-LLaMA-Alpaca-2 | Chinese-LLaMA-Alpaca-2 | Chinese | 1.3B-13B | base model chat model long text model |
Chinese-LLaMA-Alpaca-3 | Chinese-LLaMA-Alpaca-3 | Chinese | 8B | base model chat model |
ModelScope-Agent | ModelScope Agent series models | Chinese | 7B-14B | agent model |
Model Type | Model Introduction | Language | Model Size | Model Type |
---|---|---|---|---|
Qwen-VL | Tongyi Qwen vision model | Chinese English |
7B including quantized versions |
base model chat model |
Qwen-Audio | Tongyi Qwen speech model | Chinese English |
7B | base model chat model |
YI-VL | 01AI's YI series vision models | Chinese English |
6B-34B | chat model |
XComposer2 | Pujiang AI Lab InternLM vision model | Chinese English |
7B | chat model |
DeepSeek-VL | DeepSeek series vision models | Chinese English |
1.3B-7B | chat model |
MiniCPM-V MiniCPM-V-2 MiniCPM-V-2_5 |
OpenBmB MiniCPM vision model | Chinese English |
3B-9B | chat model |
CogVLM CogVLM2 CogAgent |
Zhipu ChatGLM visual QA and Agent model | Chinese English |
17B-19B | chat model |
Llava | Llava series models | English | 7B-34B | chat model |
Llava-Next | Llava-Next series models | Chinese English |
8B-110B | chat model |
mPLUG-Owl | mPLUG-Owl series models | English | 11B | chat model |
InternVL | InternVL | Chinese English |
25.5B including quantized version |
chat model |
Llava-llama3 | xtuner | English | 8B | chat model |
Phi3 | Microsoft | English | 4B | chat model |
Model Type | Model Introduction | Language | Model Type |
---|---|---|---|
AnimateDiff | AnimateDiff animation model | English | text-to-video |
SD1.5/SD2.0/SDXL | StabilityAI series diffusion models | English | text-to-image |
Dataset Type | Training Task | Documentation |
---|---|---|
General | Fine-tuning | 🔥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 | Fine-tuning | 🔥ms-agent, 🔥ms-agent-for-agentfabric, ms-agent-multirole, 🔥toolbench-for-alpha-umi, damo-agent-zh, damo-agent-zh-mini, agent-instruct-all-en. |
General | Human Alignment | hh-rlhf, 🔥hh-rlhf-cn, stack-exchange-paired. |
Code | Fine-tuning | code-alpaca-en, 🔥leetcode-python-en, 🔥codefuse-python-en, 🔥codefuse-evol-instruction-zh. |
Medical | Fine-tuning | medical-en, medical-zh, 🔥disc-med-sft-zh. |
Legal | Fine-tuning | lawyer-llama-zh, tigerbot-law-zh, 🔥disc-law-sft-zh. |
Math | Fine-tuning | 🔥blossom-math-zh, school-math-zh, open-platypus-en. |
SQL | Fine-tuning | text2sql-en, 🔥sql-create-context-en. |
Text Generation | Fine-tuning | 🔥advertise-gen-zh, 🔥dureader-robust-zh. |
Classification | Fine-tuning | cmnli-zh, 🔥jd-sentiment-zh, 🔥hc3-zh, 🔥hc3-en. |
Quantization Assist | Quantization | pileval. |
Other | Fine-tuning | finance-en, poetry-zh, webnovel-zh, generated-chat-zh, cls-fudan-news-zh, ner-jave-zh. |
Vision | Fine-tuning | coco-en, 🔥coco-en-mini, coco-en-2, coco-en-2-mini, capcha-images. |
Audio | Fine-tuning | aishell1-zh, 🔥aishell1-zh-mini. |
Technology Name |
---|
🔥LoRA: LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS |
🔥LoRA+: LoRA+: Efficient Low Rank Adaptation of Large Models |
🔥GaLore:GaLore: Memory-Efficient LLM Training by Gradient Low-Rank Projection |
🔥LISA: LISA: Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning |
🔥UnSloth: https://github.com/unslothai/unsloth |
🔥LLaMA PRO: LLAMA PRO: Progressive LLaMA with Block Expansion |
🔥SCEdit: SCEdit: Efficient and Controllable Image Diffusion Generation via Skip Connection Editing < arXiv \ |
🔥NEFTune: Noisy Embeddings Improve Instruction Finetuning |
LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models |
Adapter: Parameter-Efficient Transfer Learning for NLP |
Vision Prompt Tuning: Visual Prompt Tuning |
Side: Side-Tuning: A Baseline for Network Adaptation via Additive Side Networks |
Res-Tuning: Res-Tuning: A Flexible and Efficient Tuning Paradigm via Unbinding Tuner from Backbone < arXiv \ |
Tuners provided by PEFT, such as IA3, AdaLoRA, etc. |
Hardware Environment | Notes |
---|---|
CPU | |
RTX 20/30/40 series, etc. | After 30 series, BF16 and FlashAttn can be used |
Computing cards T4/V100, etc. | BF16 and FlashAttn not supported |
Computing cards A10/A100, etc. | Support BF16 and FlashAttn |
Huawei Ascend NPU |
make docs
# Check docs/build/html/index.html in web-browser
Document Name |
---|
Using Web-UI |
Using Tuners |
LLM Inference |
LLM Fine-tuning |
LLM Evaluation |
LLM Quantization |
LLM Deployment |
DPO Human Alignment Training |
ORPO Human Alignment Training |
AnimateDiff Training |
Document Name |
---|
Command Line Arguments |
Supported Models and Datasets List |
Customizing New Models and Datasets |
Runtime Speed and Memory Benchmark |
Best Practices Name |
---|
Agent Fine-Tuning Best Practice |
Self-Cognition Fine-Tuning Best Practice |
Qwen1.5 Best Practice |
Multi-Modal Model Training Best Practice |
NPU Best Practice |
This framework is licensed under the Apache License (Version 2.0). For models and datasets, please refer to the original resource page and follow the corresponding License.
@Misc{swift,
title = {SWIFT:Scalable lightWeight Infrastructure for Fine-Tuning},
author = {The ModelScope Team},
howpublished = {\url{https://github.com/modelscope/swift}},
year = {2024}
}
You can contact us and communicate with us by adding our WeChat group: