SWIFT基本使用

news/2024/12/23 16:00:31/

安装

# 全量能力
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

or

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e '.[llm]'

快速开始

swift web-ui
单卡训练

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 \

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 \--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

全参数full

# 实验环境: 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 \
模型并行训练
# 实验环境: 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
# 显存需求: 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训练

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 \
预训练
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

评测

原始模型:

CUDA_VISIBLE_DEVICES=0 swift eval --model_type qwen1half-7b-chat \--eval_dataset ARC_c --infer_backend vllm

LoRA微调后:

CUDA_VISIBLE_DEVICES=0 swift eval --ckpt_dir xxx/checkpoint-xxx \--eval_dataset ARC_c --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 \

部署

原始模型:

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


http://www.ppmy.cn/news/1557506.html

相关文章

单片机与MQTT协议

MQTT 协议简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布 / 订阅(publish/subscribe)模式的 “轻量级” 通讯协议,该协议构建于 TCP/IP 协议上&#xf…

【证书】免费的证书+1 Ai Prompt Engineer

碎片化的时间利用起来,获得个免费🆓的证书📖吧。 简单了解下相关知识,然后考试,几分钟🕰️就可以获得🉐个🆓的证书。超级超级简单的💕💕。 没什么含金量的哈…

前端数据可视化库介绍Echarts、D3.js、Plotly、Matplotlib

目录 一、Echarts 1. 简介 2. 优点 3. 缺点 4. 代码示例 二、D3.js 1. 简介 2. 优点 3.缺点 4. 代码示例 三、Plotly 1.简介 2.优点 3.缺点 四、Matplotlib 1.简介 2.优点 3.缺点 一、Echarts 1. 简介 Echarts 是一个由百度开源的数据可视化库,…

jenkins针对大文件进行拉取

pipeline { agent { kubernetes { inheritFrom maven containerTemplate{ name maven image jenkins_pipiline_base:latest } } } stages { stage(构建发布) { steps { container(maven) { script { …

智慧社区系统源码社区服务软件家政跑腿月嫂保洁维修小程序

应用场景 社区服务软件在现代社区生活中扮演着至关重要的角色,其应用场景涵盖了居民生活的方方面面,主要包括以下几个方面: 家政与生活服务: 家电维修与家庭保洁:居民可以通过软件预约专业的家电维修和家庭保洁服务&a…

前端优化之图片

前言 除了图片压缩外图片体验技巧来优化 实现 background-image .pic_container {width: 300px;height: 375px;background-image: url("../assets/origin.jpg"), url("../assets/small.jpg");background-repeat: no-repeat;background-size: 100% 100%…

MFC/C++学习系列之简单记录——序列化机制

MFC/C学习系列之简单记录——序列化机制 前言简述六大机制序列化机制使用反序列化总结 前言 MFC有六大机制,分别是程序启动机制、窗口创建机制、动态创建机制、运行时类信息机制、消息映射机制、序列化机制。 简述六大机制 程序启动机制:全局的应用程序…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值? 1.2. 什么价值创造 (1)、定义 (2)、影响价值创造的因素 (3)、价值创造的三个过程 (4)、价值创造的实践 (5&…