ms-swift快速入门从安装到微调手把手教你训练自己的AI助手想训练一个专属于你的AI助手但又觉得大模型微调门槛太高面对动辄几十GB的显存需求和复杂的分布式配置是不是感觉无从下手今天我要给你介绍一个能让你在单张消费级显卡上用10分钟就能完成大模型微调的神器——ms-swift。这是魔搭社区推出的一站式大模型微调框架它把那些复杂的训练流程、显存优化、分布式部署都封装成了简单的命令行工具。无论你是想给模型注入专业知识还是调整它的回答风格ms-swift都能帮你轻松实现。接下来我就带你从零开始一步步完成你的第一个AI助手训练项目。1. 为什么选择ms-swift在开始动手之前我们先简单了解一下ms-swift到底能帮你解决什么问题。1.1 大模型微调到底有多难传统的大模型微调你需要面对几个头疼的问题显存要求高一个7B参数的模型全参数微调可能需要40GB以上的显存环境配置复杂PyTorch版本、CUDA驱动、各种依赖库配置起来就是一场噩梦代码门槛高需要理解分布式训练、梯度同步、优化器配置等底层细节流程不统一训练、推理、评测、部署每个环节都要用不同的工具这些问题让很多想尝试大模型微调的开发者望而却步。1.2 ms-swift的解决方案ms-swift把这些难题都解决了极低的显存需求通过LoRA、QLoRA等技术7B模型训练只需要9GB显存一键式安装部署几条命令就能完成环境搭建命令行驱动不需要写复杂的Python代码用命令行就能完成训练全流程覆盖从训练、推理到评测、部署一个框架全搞定丰富的模型支持支持600纯文本模型和300多模态模型最重要的是ms-swift提供了Web-UI界面让你可以像使用普通软件一样训练大模型真正做到了零门槛。2. 环境准备与快速安装2.1 硬件要求在开始之前我们先看看需要什么样的硬件环境硬件配置最低要求推荐配置GPU显存8GB24GB以上系统内存16GB32GB存储空间50GB100GB以上操作系统Ubuntu 20.04Ubuntu 22.04如果你有一张RTX 309024GB显存那就可以轻松运行大部分7B模型的微调任务。即使是RTX 306012GB也能通过QLoRA技术训练7B模型。2.2 安装步骤ms-swift的安装非常简单我们通过Docker来确保环境一致性# 1. 拉取官方镜像 docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py3.10-torch2.3.0 # 2. 启动容器 docker run -it --gpus all --name swift-train \ -v /your/local/path:/workspace \ registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py3.10-torch2.3.0 \ bash # 3. 在容器内安装ms-swift pip install ms-swift -U如果你不想用Docker也可以直接在本机安装# 创建Python虚拟环境 conda create -n swift python3.10 conda activate swift # 安装ms-swift pip install ms-swift -U # 验证安装 swift --version安装完成后你会看到类似这样的输出ms-swift version: 1.10.02.3 快速验证为了确保一切正常我们先运行一个简单的测试# 测试命令行工具是否可用 swift --help # 测试模型下载这里我们下载一个小模型测试 swift download --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct如果能看到模型下载进度说明环境配置成功了。3. 你的第一个微调项目让AI认识自己现在我们来完成一个实际的任务训练一个知道自己身份的AI助手。这个任务在技术上叫做自我认知微调就是让模型记住自己的身份信息。3.1 准备训练数据ms-swift内置了很多数据集我们可以直接使用。对于自我认知任务框架已经准备好了专门的数据集# 查看可用的数据集 swift dataset list | grep self-cognition你会看到swift/self-cognition这个数据集它就是专门用于自我认知训练的。3.2 开始训练这是最激动人心的部分——用一条命令开始训练。我们以Qwen2.5-7B-Instruct模型为例# 在单卡3090上训练需要约22GB显存 CUDA_VISIBLE_DEVICES0 \ 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 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让我解释一下这些参数的含义--model指定要微调的模型这里用的是通义千问7B指令版--train_type lora使用LoRA微调方法只训练少量参数--dataset训练数据集我们混合了中英文指令数据和自我认知数据--lora_rank 8LoRA的秩这个值越小参数越少训练越快--model_author和--model_name设置AI助手的作者和名称训练开始后你会看到类似这样的输出[INFO] Loading model... [INFO] Model loaded: Qwen/Qwen2.5-7B-Instruct [INFO] Loading dataset... [INFO] Start training... Epoch: 0%| | 0/100 [00:00?, ?it/s]训练过程大概需要10-30分钟具体取决于你的显卡性能。在这个过程中ms-swift会自动下载模型和数据集准备训练环境开始微调训练定期保存检查点输出训练日志3.3 训练过程中的小技巧如果你在训练中遇到显存不足的问题可以尝试这些优化# 使用QLoRA进一步降低显存只需要9GB显存 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --quantization_bit 4 \ # 4-bit量化 --dataset swift/self-cognition#500 \ --output_dir output_q \ ... # 其他参数保持不变或者使用更小的模型# 使用0.5B小模型显存需求更低 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-0.5B-Instruct \ # 改为0.5B模型 --train_type lora \ --dataset swift/self-cognition#500 \ --output_dir output_small \ ...4. 测试训练效果训练完成后我们来测试一下效果。训练好的模型会保存在output目录下。4.1 使用命令行测试# 使用交互式命令行进行推理 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ # 替换为你的checkpoint路径 --stream true \ # 流式输出 --temperature 0 \ # 确定性输出 --max_new_tokens 2048运行后你会进入一个交互式对话界面。试着问它你是谁如果训练成功它会回答我是swift-robot由swift开发的AI助手。再问一些其他问题看看它是否还记得自己的通用能力帮我写一个Python函数计算斐波那契数列它应该能正常回答技术问题这说明微调没有破坏模型的原有能力。4.2 使用vLLM加速推理如果你想要更快的推理速度可以合并LoRA权重并使用vLLM加速# merge-lora并使用vLLM进行推理加速 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --merge_lora true \ # 合并LoRA权重到原模型 --infer_backend vllm \ # 使用vLLM后端 --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 2048vLLM能显著提升推理速度特别是在批量处理请求时。4.3 使用Web界面测试如果你更喜欢图形界面ms-swift也提供了Web-UI# 启动Web界面 CUDA_VISIBLE_DEVICES0 swift app \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --lang zh # 中文界面然后在浏览器中打开http://localhost:7860你就能看到一个类似ChatGPT的聊天界面可以直接在网页上和你的AI助手对话。5. 使用自己的数据训练刚才我们用了内置的数据集现在来学习如何用你自己的数据训练模型。5.1 准备自定义数据集ms-swift支持多种数据格式最简单的是JSON格式。创建一个my_data.json文件[ { instruction: 翻译以下英文句子为中文, input: Hello, how are you?, output: 你好最近怎么样 }, { instruction: 总结文章的主要内容, input: 人工智能是当前科技发展的热点..., output: 本文主要讨论了人工智能的发展现状和未来趋势... }, { instruction: 写一首关于春天的诗, input: , output: 春风拂面花香浓燕子归来筑巢忙... } ]如果你有对话数据可以使用这种格式[ { conversations: [ { role: user, content: 推荐几本好看的小说 }, { role: assistant, content: 我推荐《三体》、《活着》、《平凡的世界》... } ] } ]5.2 开始训练自定义数据# 使用自定义数据集训练 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --dataset ./my_data.json \ # 使用本地文件 --output_dir my_output \ ... # 其他参数与之前类似5.3 处理大规模数据如果你的数据量很大可以考虑这些优化# 使用流式加载避免内存溢出 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset ./large_data.json \ --streaming true \ # 启用流式加载 --num_workers 8 \ # 多进程加载 --preprocessing_num_workers 8 \ ...6. 进阶技巧让训练效果更好掌握了基础用法后我们来看看如何提升训练效果。6.1 调整LoRA参数LoRA有几个关键参数会影响训练效果# 调整LoRA配置 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --lora_rank 16 \ # 增加秩提升表达能力 --lora_alpha 64 \ # 调整alpha值 --lora_dropout 0.1 \ # 添加dropout防止过拟合 --target_modules q_proj,k_proj,v_proj,o_proj \ # 只训练注意力层 ...6.2 使用更好的优化策略# 使用AdamW优化器配合学习率调度 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --optim adamw_8bit \ # 8-bit AdamW节省显存 --lr_scheduler_type cosine \ # 余弦退火学习率 --warmup_ratio 0.1 \ # 10%的步骤用于warmup --weight_decay 0.01 \ # 权重衰减 ...6.3 多轮对话训练如果你的数据包含多轮对话需要特殊处理# 处理多轮对话数据 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset ./multi_turn_data.json \ --chat_template qwen \ # 使用Qwen的对话模板 --max_length 4096 \ # 增加最大长度 --packing true \ # 启用数据packing提升训练效率 ...7. 模型部署与分享训练好的模型你可能会想要部署使用或者分享给他人。7.1 本地部署为API服务# 部署为OpenAI兼容的API服务 CUDA_VISIBLE_DEVICES0 swift deploy \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --infer_backend vllm \ --port 8000 \ --api_key your_api_key_here启动后你就可以用curl或者Python客户端调用import openai client openai.OpenAI( base_urlhttp://localhost:8000/v1, api_keyyour_api_key_here ) response client.chat.completions.create( modelqwen, messages[ {role: user, content: 你是谁} ] ) print(response.choices[0].message.content)7.2 分享到ModelScope社区如果你想分享模型可以推送到ModelScope# 首先登录ModelScope如果没有token需要先注册 pip install modelscope from modelscope import login login() # 按照提示输入token # 推送模型 CUDA_VISIBLE_DEVICES0 \ swift export \ --adapters output/vx-xxx/checkpoint-xxx \ --push_to_hub true \ --hub_model_id your-username/your-model-name \ --hub_token your-sdk-token7.3 模型量化减小体积如果要在资源受限的环境部署可以对模型进行量化# 使用AWQ量化到4-bit CUDA_VISIBLE_DEVICES0 swift export \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --quant_bits 4 \ --quant_method awq \ --dataset AI-ModelScope/alpaca-gpt4-data-zh \ --output_dir qwen-7b-awq量化后的模型体积会大大减小推理速度也会提升。8. 常见问题与解决方案在实际使用中你可能会遇到一些问题这里我总结了一些常见问题的解决方法。8.1 显存不足怎么办问题训练时出现CUDA out of memory错误。解决方案使用QLoRA4-bit量化--quantization_bit 4 --train_type lora减小批次大小和序列长度--per_device_train_batch_size 1 --gradient_accumulation_steps 16 --max_length 1024使用梯度检查点--gradient_checkpointing true8.2 训练速度太慢怎么办问题训练一个epoch需要很长时间。解决方案启用FlashAttention加速--use_flash_attn true使用bf16混合精度--torch_dtype bfloat16增加数据加载进程--dataloader_num_workers 8 --preprocessing_num_workers 88.3 模型过拟合怎么办问题在训练集上表现很好但在新数据上表现差。解决方案增加Dropout--lora_dropout 0.1使用更小的学习率--learning_rate 5e-5早停策略--eval_steps 100 --save_steps 100 --early_stopping_patience 38.4 如何监控训练过程ms-swift支持多种监控方式# 1. 使用TensorBoard tensorboard --logdir output/runs # 2. 使用WandB需要先注册 pip install wandb wandb login # 在训练命令中添加 --report_to wandb9. 总结通过这篇文章我们完整走过了使用ms-swift进行大模型微调的全过程。从环境安装、数据准备到训练调优、部署分享每一步都有具体的代码示例。让我总结一下ms-swift的核心优势简单易用命令行驱动无需编写复杂代码资源友好小显存也能训大模型功能全面训练、推理、评测、部署一站式解决生态丰富支持600模型和300多模态模型生产就绪支持分布式训练、模型量化、API部署无论你是AI初学者还是有经验的开发者ms-swift都能大大降低大模型微调的门槛。它把那些复杂的底层细节都封装好了让你可以专注于数据和业务逻辑。下一步建议从简单的自我认知任务开始熟悉整个流程尝试用你自己的数据训练一个专业领域的助手探索ms-swift的高级功能如多模态训练、强化学习将训练好的模型部署到实际应用中大模型微调不再是大公司的专利现在每个人都可以训练自己的AI助手。ms-swift让这个梦想变得触手可及。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
ms-swift快速入门:从安装到微调,手把手教你训练自己的AI助手
ms-swift快速入门从安装到微调手把手教你训练自己的AI助手想训练一个专属于你的AI助手但又觉得大模型微调门槛太高面对动辄几十GB的显存需求和复杂的分布式配置是不是感觉无从下手今天我要给你介绍一个能让你在单张消费级显卡上用10分钟就能完成大模型微调的神器——ms-swift。这是魔搭社区推出的一站式大模型微调框架它把那些复杂的训练流程、显存优化、分布式部署都封装成了简单的命令行工具。无论你是想给模型注入专业知识还是调整它的回答风格ms-swift都能帮你轻松实现。接下来我就带你从零开始一步步完成你的第一个AI助手训练项目。1. 为什么选择ms-swift在开始动手之前我们先简单了解一下ms-swift到底能帮你解决什么问题。1.1 大模型微调到底有多难传统的大模型微调你需要面对几个头疼的问题显存要求高一个7B参数的模型全参数微调可能需要40GB以上的显存环境配置复杂PyTorch版本、CUDA驱动、各种依赖库配置起来就是一场噩梦代码门槛高需要理解分布式训练、梯度同步、优化器配置等底层细节流程不统一训练、推理、评测、部署每个环节都要用不同的工具这些问题让很多想尝试大模型微调的开发者望而却步。1.2 ms-swift的解决方案ms-swift把这些难题都解决了极低的显存需求通过LoRA、QLoRA等技术7B模型训练只需要9GB显存一键式安装部署几条命令就能完成环境搭建命令行驱动不需要写复杂的Python代码用命令行就能完成训练全流程覆盖从训练、推理到评测、部署一个框架全搞定丰富的模型支持支持600纯文本模型和300多模态模型最重要的是ms-swift提供了Web-UI界面让你可以像使用普通软件一样训练大模型真正做到了零门槛。2. 环境准备与快速安装2.1 硬件要求在开始之前我们先看看需要什么样的硬件环境硬件配置最低要求推荐配置GPU显存8GB24GB以上系统内存16GB32GB存储空间50GB100GB以上操作系统Ubuntu 20.04Ubuntu 22.04如果你有一张RTX 309024GB显存那就可以轻松运行大部分7B模型的微调任务。即使是RTX 306012GB也能通过QLoRA技术训练7B模型。2.2 安装步骤ms-swift的安装非常简单我们通过Docker来确保环境一致性# 1. 拉取官方镜像 docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py3.10-torch2.3.0 # 2. 启动容器 docker run -it --gpus all --name swift-train \ -v /your/local/path:/workspace \ registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py3.10-torch2.3.0 \ bash # 3. 在容器内安装ms-swift pip install ms-swift -U如果你不想用Docker也可以直接在本机安装# 创建Python虚拟环境 conda create -n swift python3.10 conda activate swift # 安装ms-swift pip install ms-swift -U # 验证安装 swift --version安装完成后你会看到类似这样的输出ms-swift version: 1.10.02.3 快速验证为了确保一切正常我们先运行一个简单的测试# 测试命令行工具是否可用 swift --help # 测试模型下载这里我们下载一个小模型测试 swift download --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct如果能看到模型下载进度说明环境配置成功了。3. 你的第一个微调项目让AI认识自己现在我们来完成一个实际的任务训练一个知道自己身份的AI助手。这个任务在技术上叫做自我认知微调就是让模型记住自己的身份信息。3.1 准备训练数据ms-swift内置了很多数据集我们可以直接使用。对于自我认知任务框架已经准备好了专门的数据集# 查看可用的数据集 swift dataset list | grep self-cognition你会看到swift/self-cognition这个数据集它就是专门用于自我认知训练的。3.2 开始训练这是最激动人心的部分——用一条命令开始训练。我们以Qwen2.5-7B-Instruct模型为例# 在单卡3090上训练需要约22GB显存 CUDA_VISIBLE_DEVICES0 \ 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 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让我解释一下这些参数的含义--model指定要微调的模型这里用的是通义千问7B指令版--train_type lora使用LoRA微调方法只训练少量参数--dataset训练数据集我们混合了中英文指令数据和自我认知数据--lora_rank 8LoRA的秩这个值越小参数越少训练越快--model_author和--model_name设置AI助手的作者和名称训练开始后你会看到类似这样的输出[INFO] Loading model... [INFO] Model loaded: Qwen/Qwen2.5-7B-Instruct [INFO] Loading dataset... [INFO] Start training... Epoch: 0%| | 0/100 [00:00?, ?it/s]训练过程大概需要10-30分钟具体取决于你的显卡性能。在这个过程中ms-swift会自动下载模型和数据集准备训练环境开始微调训练定期保存检查点输出训练日志3.3 训练过程中的小技巧如果你在训练中遇到显存不足的问题可以尝试这些优化# 使用QLoRA进一步降低显存只需要9GB显存 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --quantization_bit 4 \ # 4-bit量化 --dataset swift/self-cognition#500 \ --output_dir output_q \ ... # 其他参数保持不变或者使用更小的模型# 使用0.5B小模型显存需求更低 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-0.5B-Instruct \ # 改为0.5B模型 --train_type lora \ --dataset swift/self-cognition#500 \ --output_dir output_small \ ...4. 测试训练效果训练完成后我们来测试一下效果。训练好的模型会保存在output目录下。4.1 使用命令行测试# 使用交互式命令行进行推理 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ # 替换为你的checkpoint路径 --stream true \ # 流式输出 --temperature 0 \ # 确定性输出 --max_new_tokens 2048运行后你会进入一个交互式对话界面。试着问它你是谁如果训练成功它会回答我是swift-robot由swift开发的AI助手。再问一些其他问题看看它是否还记得自己的通用能力帮我写一个Python函数计算斐波那契数列它应该能正常回答技术问题这说明微调没有破坏模型的原有能力。4.2 使用vLLM加速推理如果你想要更快的推理速度可以合并LoRA权重并使用vLLM加速# merge-lora并使用vLLM进行推理加速 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --merge_lora true \ # 合并LoRA权重到原模型 --infer_backend vllm \ # 使用vLLM后端 --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 2048vLLM能显著提升推理速度特别是在批量处理请求时。4.3 使用Web界面测试如果你更喜欢图形界面ms-swift也提供了Web-UI# 启动Web界面 CUDA_VISIBLE_DEVICES0 swift app \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --lang zh # 中文界面然后在浏览器中打开http://localhost:7860你就能看到一个类似ChatGPT的聊天界面可以直接在网页上和你的AI助手对话。5. 使用自己的数据训练刚才我们用了内置的数据集现在来学习如何用你自己的数据训练模型。5.1 准备自定义数据集ms-swift支持多种数据格式最简单的是JSON格式。创建一个my_data.json文件[ { instruction: 翻译以下英文句子为中文, input: Hello, how are you?, output: 你好最近怎么样 }, { instruction: 总结文章的主要内容, input: 人工智能是当前科技发展的热点..., output: 本文主要讨论了人工智能的发展现状和未来趋势... }, { instruction: 写一首关于春天的诗, input: , output: 春风拂面花香浓燕子归来筑巢忙... } ]如果你有对话数据可以使用这种格式[ { conversations: [ { role: user, content: 推荐几本好看的小说 }, { role: assistant, content: 我推荐《三体》、《活着》、《平凡的世界》... } ] } ]5.2 开始训练自定义数据# 使用自定义数据集训练 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --dataset ./my_data.json \ # 使用本地文件 --output_dir my_output \ ... # 其他参数与之前类似5.3 处理大规模数据如果你的数据量很大可以考虑这些优化# 使用流式加载避免内存溢出 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset ./large_data.json \ --streaming true \ # 启用流式加载 --num_workers 8 \ # 多进程加载 --preprocessing_num_workers 8 \ ...6. 进阶技巧让训练效果更好掌握了基础用法后我们来看看如何提升训练效果。6.1 调整LoRA参数LoRA有几个关键参数会影响训练效果# 调整LoRA配置 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --lora_rank 16 \ # 增加秩提升表达能力 --lora_alpha 64 \ # 调整alpha值 --lora_dropout 0.1 \ # 添加dropout防止过拟合 --target_modules q_proj,k_proj,v_proj,o_proj \ # 只训练注意力层 ...6.2 使用更好的优化策略# 使用AdamW优化器配合学习率调度 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --optim adamw_8bit \ # 8-bit AdamW节省显存 --lr_scheduler_type cosine \ # 余弦退火学习率 --warmup_ratio 0.1 \ # 10%的步骤用于warmup --weight_decay 0.01 \ # 权重衰减 ...6.3 多轮对话训练如果你的数据包含多轮对话需要特殊处理# 处理多轮对话数据 CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset ./multi_turn_data.json \ --chat_template qwen \ # 使用Qwen的对话模板 --max_length 4096 \ # 增加最大长度 --packing true \ # 启用数据packing提升训练效率 ...7. 模型部署与分享训练好的模型你可能会想要部署使用或者分享给他人。7.1 本地部署为API服务# 部署为OpenAI兼容的API服务 CUDA_VISIBLE_DEVICES0 swift deploy \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --infer_backend vllm \ --port 8000 \ --api_key your_api_key_here启动后你就可以用curl或者Python客户端调用import openai client openai.OpenAI( base_urlhttp://localhost:8000/v1, api_keyyour_api_key_here ) response client.chat.completions.create( modelqwen, messages[ {role: user, content: 你是谁} ] ) print(response.choices[0].message.content)7.2 分享到ModelScope社区如果你想分享模型可以推送到ModelScope# 首先登录ModelScope如果没有token需要先注册 pip install modelscope from modelscope import login login() # 按照提示输入token # 推送模型 CUDA_VISIBLE_DEVICES0 \ swift export \ --adapters output/vx-xxx/checkpoint-xxx \ --push_to_hub true \ --hub_model_id your-username/your-model-name \ --hub_token your-sdk-token7.3 模型量化减小体积如果要在资源受限的环境部署可以对模型进行量化# 使用AWQ量化到4-bit CUDA_VISIBLE_DEVICES0 swift export \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output/vx-xxx/checkpoint-xxx \ --quant_bits 4 \ --quant_method awq \ --dataset AI-ModelScope/alpaca-gpt4-data-zh \ --output_dir qwen-7b-awq量化后的模型体积会大大减小推理速度也会提升。8. 常见问题与解决方案在实际使用中你可能会遇到一些问题这里我总结了一些常见问题的解决方法。8.1 显存不足怎么办问题训练时出现CUDA out of memory错误。解决方案使用QLoRA4-bit量化--quantization_bit 4 --train_type lora减小批次大小和序列长度--per_device_train_batch_size 1 --gradient_accumulation_steps 16 --max_length 1024使用梯度检查点--gradient_checkpointing true8.2 训练速度太慢怎么办问题训练一个epoch需要很长时间。解决方案启用FlashAttention加速--use_flash_attn true使用bf16混合精度--torch_dtype bfloat16增加数据加载进程--dataloader_num_workers 8 --preprocessing_num_workers 88.3 模型过拟合怎么办问题在训练集上表现很好但在新数据上表现差。解决方案增加Dropout--lora_dropout 0.1使用更小的学习率--learning_rate 5e-5早停策略--eval_steps 100 --save_steps 100 --early_stopping_patience 38.4 如何监控训练过程ms-swift支持多种监控方式# 1. 使用TensorBoard tensorboard --logdir output/runs # 2. 使用WandB需要先注册 pip install wandb wandb login # 在训练命令中添加 --report_to wandb9. 总结通过这篇文章我们完整走过了使用ms-swift进行大模型微调的全过程。从环境安装、数据准备到训练调优、部署分享每一步都有具体的代码示例。让我总结一下ms-swift的核心优势简单易用命令行驱动无需编写复杂代码资源友好小显存也能训大模型功能全面训练、推理、评测、部署一站式解决生态丰富支持600模型和300多模态模型生产就绪支持分布式训练、模型量化、API部署无论你是AI初学者还是有经验的开发者ms-swift都能大大降低大模型微调的门槛。它把那些复杂的底层细节都封装好了让你可以专注于数据和业务逻辑。下一步建议从简单的自我认知任务开始熟悉整个流程尝试用你自己的数据训练一个专业领域的助手探索ms-swift的高级功能如多模态训练、强化学习将训练好的模型部署到实际应用中大模型微调不再是大公司的专利现在每个人都可以训练自己的AI助手。ms-swift让这个梦想变得触手可及。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。