ms-swift微调框架实战:10分钟在单卡3090上微调Qwen2.5-7B,新手也能快速上手

news2026/4/7 19:44:15
ms-swift微调框架实战10分钟在单卡3090上微调Qwen2.5-7B新手也能快速上手想给大模型“教点新东西”让它更懂你的业务但又担心门槛太高、成本太大今天我来带你体验一个“傻瓜式”的微调方案。只用一张消费级显卡比如RTX 3090花10分钟左右的时间就能让Qwen2.5-7B-Instruct模型学会新的知识或技能。整个过程就像搭积木一样简单不需要你懂复杂的分布式训练也不需要你写大段代码。这个神奇的工具就是ms-swift一个由魔搭社区推出的轻量级大模型微调框架。它把那些复杂的训练流程都打包好了你只需要准备数据、敲几行命令就能开始训练。1. 为什么选择ms-swift在开始动手之前我们先看看ms-swift到底有什么过人之处能让我们如此轻松地微调大模型。1.1 对新手极度友好如果你之前尝试过微调大模型可能会被各种环境配置、参数调整、显存不足等问题劝退。ms-swift的设计理念就是“开箱即用”它帮你解决了几个核心痛点一键安装一条pip命令就能装好所有依赖不用折腾各种版本兼容问题。命令行驱动大部分操作通过简单的命令行参数就能完成不需要写复杂的Python脚本。自动适配框架会自动检测你的硬件配置选择合适的训练策略比如用LoRA还是全参数微调。内置数据集提供了150多个预置数据集覆盖各种任务场景直接就能用。1.2 硬件要求亲民很多大模型微调教程动不动就要A100、H100让个人开发者望而却步。ms-swift对硬件的要求非常友好单卡就能跑像Qwen2.5-7B这样的模型用一张24GB显存的RTX 3090就能微调。支持多种硬件除了NVIDIA显卡还支持CPU、MPS苹果芯片甚至国产的Ascend NPU。显存优化到位集成了GaLore、Flash-Attention等显存优化技术让训练更省资源。1.3 功能全面强大别看它简单易用ms-swift的功能可一点都不弱支持600模型从Qwen、ChatGLM到Llama、Mistral主流模型基本都支持。多种训练方式除了基础的指令微调还支持预训练、强化学习DPO、KTO等、Embedding训练等。全链路支持从训练、推理到评测、部署一条龙服务。Web界面如果你不喜欢命令行它还提供了图形化界面点点鼠标就能训练模型。2. 环境准备5分钟搞定好了理论说再多不如动手试试。我们先来搭建环境整个过程大概5分钟就能完成。2.1 基础环境检查首先确认你的机器满足以下条件操作系统Linux推荐Ubuntu 20.04或macOSWindows用户可以用WSL。Python版本Python 3.8-3.11推荐3.10。CUDA版本11.8或12.1根据你的显卡驱动选择。显存至少24GBRTX 3090/4090或同级别显卡。检查你的CUDA是否可用nvidia-smi python -c import torch; print(torch.cuda.is_available())2.2 安装ms-swift安装ms-swift非常简单推荐使用conda创建独立环境# 创建并激活conda环境 conda create -n swift python3.10 conda activate swift # 安装ms-swift包含所有功能 pip install ms-swift[all] -U -i https://pypi.tuna.tsinghua.edu.cn/simple如果你遇到网络问题也可以从源码安装git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e .[llm] -i https://pypi.tuna.tsinghua.edu.cn/simple注意ms-swift依赖torch1.13推荐使用torch2.0.0。安装时会自动处理这些依赖。2.3 准备模型和数据ms-swift支持从ModelScope或HuggingFace下载模型。我们以Qwen2.5-7B-Instruct为例# 从ModelScope下载国内推荐 git clone https://www.modelscope.cn/qwen/Qwen2.5-7B-Instruct.git # 或者从HuggingFace下载 # git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct对于数据ms-swift内置了很多数据集我们这次用它的自我认知数据集做演示。如果你想用自己的数据格式也很简单[ { conversations: [ { from: human, value: 你是谁 }, { from: gpt, value: 我是小蜜一个由ms-swift微调的AI助手。 } ], system: 你是一个有用的助手。 } ]3. 实战10分钟微调Qwen2.5-7B环境准备好了现在进入最激动人心的部分——实际微调。我会带你一步步操作确保你能成功运行。3.1 最简单的微调命令打开终端进入你的工作目录然后运行下面这条命令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 Qwen/Qwen2.5-7B-Instruct指定要微调的模型--train_type lora使用LoRA微调这是目前最流行的轻量微调方法--dataset指定训练数据集这里用了三个数据集每个取500条样本--torch_dtype bfloat16使用bfloat16精度节省显存--gradient_accumulation_steps 16梯度累积步数相当于batch_size16--output_dir output训练结果保存到output目录3.2 训练过程监控命令运行后你会看到类似这样的输出[INFO:swift] Dataset Token Length: 623.427262±104.695225, min387.000000, max1866.000000, size873 Train: 0%| | 0/873 [00:00?, ?it/s] Train: 11%|█▏ | 100/873 [00:4705:43, 2.25it/s] {loss: 1.50913131, acc: 0.60340315, grad_norm: 1.11961412, learning_rate: 1.9e-07, memory(GiB): 18.21, train_speed(iter/s): 0.482103, epoch: 0.0}这里有几个关键信息需要关注loss损失值训练损失一般会逐渐下降稳定在较低水平就说明训练有效acc准确率训练准确率会逐渐上升memory(GiB)显存使用量RTX 3090上大概在18-30GB之间train_speed(iter/s)训练速度每秒处理的样本数在RTX 3090上整个训练过程大概需要7-10分钟。你可以泡杯咖啡回来就看到训练完成了。3.3 训练结果解读训练完成后output目录下会生成检查点文件output/ ├── checkpoint-100/ │ ├── adapter_model.bin │ ├── args.json │ └── ... ├── checkpoint-200/ ├── ... └── checkpoint-873/ # 最后一个检查点每个检查点包含adapter_model.binLoRA权重文件只有几十MBargs.json训练参数配置其他训练状态文件小贴士训练过程中loss值会波动下降acc会波动上升这都是正常现象。只要整体趋势是loss下降、acc上升就说明训练有效。4. 测试微调效果模型训练好了我们来看看效果如何。ms-swift提供了几种测试方式。4.1 命令行交互测试用训练好的LoRA权重进行推理# 使用交互式命令行进行推理 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --temperature 0 \ --max_new_tokens 2048这里的--adapters需要替换成你实际生成的checkpoint路径。运行后会进入交互模式请输入内容 (输入exit退出, 输入clear清空历史): 你是谁 我是小蜜一个由ms-swift微调的AI助手。4.2 合并LoRA权重并加速推理如果你想获得更快的推理速度可以合并LoRA权重到原模型# merge-lora并使用vLLM进行推理加速 CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --merge_lora true \ --infer_backend vllm \ --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 2048使用vLLM后端后推理速度会有明显提升特别适合批量处理。4.3 效果对比为了直观感受微调效果我们对比一下微调前后的回答问题微调前原模型微调后我们的模型你是谁我是通义千问由阿里云开发的大语言模型...我是小蜜一个由ms-swift微调的AI助手。你和模型什么关系我就是这个模型本身...其实我也不是无所不知但如果能和你多聊几句我情愿绞尽脑汁。可以看到微调后的模型已经学会了我们期望的“人设”和回答风格。5. 进阶技巧与问题解决掌握了基础用法后我们来看看一些实用技巧和常见问题的解决方法。5.1 使用自定义数据集如果你想用自己的数据微调只需要准备符合格式的数据集[ { conversations: [ {from: human, value: 用户问题}, {from: gpt, value: 期望回答} ], system: 系统提示可选 } ]然后创建一个数据集描述文件custom_dataset_info.json{ my_dataset: { dataset_path: /path/to/your/data.json } }训练时指定你的数据集swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset my_dataset \ --custom_dataset_info /path/to/custom_dataset_info.json \ ... # 其他参数5.2 调整关键参数根据你的硬件和数据可能需要调整这些参数batch_size相关--per_device_train_batch_size 2 # 增大batch size加快训练 --gradient_accumulation_steps 8 # 减小累积步数学习率相关--learning_rate 2e-4 # 增大学习率收敛更快 --warmup_ratio 0.1 # 增加warmup比例LoRA配置--lora_rank 16 # 增大rank增强微调能力 --lora_alpha 64 # 增大alpha --lora_dropout 0.1 # 添加dropout防止过拟合5.3 常见问题解决问题1显存不足如果遇到OOM内存不足错误可以尝试# 使用QLoRA4bit量化 --train_type qlora # 使用更小的batch size --per_device_train_batch_size 1 --gradient_accumulation_steps 32 # 启用梯度检查点 --gradient_checkpointing true问题2训练速度慢# 使用flash attention加速 --use_flash_attn true # 增加数据加载线程 --dataloader_num_workers 8 # 使用bf16混合精度如果显卡支持 --bf16 true问题3RTX 4000系列显卡报错如果使用RTX 4090等40系显卡可能会遇到NCCL通信问题# 在训练前设置环境变量 export NCCL_IB_DISABLE1 export NCCL_P2P_DISABLE1 # 或者直接写在命令前 NCCL_IB_DISABLE1 NCCL_P2P_DISABLE1 swift sft ...6. 更多实用功能ms-swift不仅仅能做基础微调还有很多高级功能值得探索。6.1 Web界面训练如果你不喜欢命令行ms-swift还提供了Web界面swift web-ui --host 0.0.0.0 --port 7860然后在浏览器打开http://localhost:7860就能看到图形化界面。你可以在这里选择模型和数据集配置训练参数监控训练进度在线测试模型效果6.2 模型部署与分享训练完成后你可以把模型分享给其他人# 推送到ModelScope swift export \ --adapters output/vx-xxx/checkpoint-xxx \ --push_to_hub true \ --hub_model_id your-username/your-model-name \ --hub_token your-token6.3 其他训练任务除了指令微调ms-swift还支持强化学习DPO、KTO、PPO等预训练继续训练基础模型多模态训练图文、视频模型Embedding训练生成文本向量比如用DPO进行偏好对齐swift rlhf \ --rlhf_type dpo \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset your-preference-data \ --train_type lora \ --output_dir dpo_output7. 总结通过今天的实战你应该已经掌握了用ms-swift微调大模型的基本流程。我们来回顾一下关键点ms-swift的核心优势简单易用命令行驱动参数清晰新手友好资源友好单卡3090就能跑7B模型显存优化到位功能全面支持多种训练任务和模型类型生态丰富内置大量数据集社区活跃给新手的建议从小开始先用小数据集、少轮次测试确认流程没问题监控显存训练时用nvidia-smi监控显存使用避免OOM保存检查点多保存几个检查点方便回滚和选择最佳模型测试验证训练后一定要测试确保模型学到了你想要的东西下一步可以尝试用你自己的业务数据微调尝试不同的LoRA配置rank、alpha等探索其他训练任务比如DPO偏好对齐使用Web界面体验更直观的训练过程大模型微调并没有想象中那么难。有了ms-swift这样的工具个人开发者、小团队也能轻松定制自己的AI模型。关键是动手尝试在实践中学习。希望这篇教程能帮你迈出大模型微调的第一步。如果在实践中遇到问题ms-swift的GitHub仓库和文档都有详细的说明和社区支持。祝你训练顺利获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2485429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…