MS-SWIFT微调Qwen3

目录

一、MS-SWIFT简介

二、Qwen3简介

三、微调Qwen3

1、安装NS-SWIFT环境

2、准备训练数据

3、Lora微调

4、GROP训练

5、Megatron并行训练


一、MS-SWIFT简介

        SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是魔搭ModelScope开源社区推出的一套完整的轻量级训练、推理、评估和部署工具,支持200+大模型、15+多模态大模型以及10+轻量化Tuners,让AI爱好者能够使用自己的消费级显卡玩转大模型和AIGC。

        SWIFT 框架主要特征特性:

  • 具备SOTA特性的Efficient Tuners:用于结合大模型实现轻量级(在商业级显卡上,如RTX3080、RTX3090、RTX4090等)训练和推理,并取得较好效果
  • 使用ModelScope Hub的Trainer:基于transformers trainer提供,支持LLM模型的训练,并支持将训练后的模型上传到ModelScope Hub中
  • 可运行的模型Examples:针对热门大模型提供的训练脚本和推理脚本,并针对热门开源数据集提供了预处理逻辑,可直接运行使用
  • 支持界面化训练和推理

二、Qwen3简介

        Qwen3 是 Qwen 系列最新一代的大型语言模型,提供了一套全面的密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令遵循、代理能力和多语言支持方面实现了突破性的进展。

  • 旗舰模型Qwen3-235B-A22B在代码、数学、通用能力等基准测试中,与一众顶级模型(DeepSeek-R1、OpenAI-o1、OpenAI-o3-mini、Grok-3 和 Gemini-2.5-Pro)相比,表现出极具竞争力的结果。
  • 小型MoE模型Qwen3-30B-A3B的激活参数数量是QwQ-32B 10%,表现更胜一筹。Qwen3-4B 这样的小模型也能匹敌 Qwen2.5-72B-Instruct 的性能。

        核心亮点:

  • 多种思考模式:Qwen3 模型支持思考模式、非思考模式两种思考模式(可以通过在用户提示或系统消息中添加 /think 和 /no_think 来逐轮切换模型的思考模式)。
  • 多语言:Qwen3 模型支持 119 种语言和方言。这一广泛的多语言能力为国际应用开辟了新的可能性,让全球用户都能受益于这些模型的强大功能。
  • 增强的 Agent 能力:Qwen3 为即将到来的智能体 Agent 和大模型应用爆发提供了更好的支持。团队优化了 Qwen3 模型的编码和 Agent 能力,并增强了对 MCP 的支持。

三、微调Qwen3

1、安装NS-SWIFT环境

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

pip install liger-kernel transformers -U

2、准备训练数据

  • 微调数据集

{"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "<think>\nxxx\n</think>\n\n浙江的省会在杭州。"}]}

  • GRPO训练数据集

# llm
{"messages": [{"role": "system", "content": "You are a useful and harmless assistant"}, {"role": "user", "content": "Tell me tomorrow's weather"}]}
{"messages": [{"role": "system", "content": "You are a useful and harmless math calculator"}, {"role": "user", "content": "What is 1 + 1?"}, {"role": "assistant", "content": "It equals 2"}, {"role": "user", "content": "What about adding 1?"}]}
{"messages": [{"role": "user", "content": "What is your name?"}]}

# mllm
{"messages": [{"role": "user", "content": "<image>What is the difference between the two images?"}], "images": ["/xxx/x.jpg"]}
{"messages": [{"role": "user", "content": "<image><image>What is the difference between the two images?"}], "images": ["/xxx/y.jpg", "/xxx/z.png"]}

数据集整理具体可参考官方网站:自定义数据集 — swift 3.4.0.dev0 文档

3、Lora微调

# 训练显存:22GB
# 你可以指定`--dataset AI-ModelScope/alpaca-gpt4-data-zh`来跑通实验
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Qwen/Qwen3-8B \
    --train_type lora \
    --dataset '<dataset-path>' \
    --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 4 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --max_length 2048 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4 \
    --packing true \
    --user_liger_kernel true

4、GROP训练

# 70G*8
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
NPROC_PER_NODE=8 \
swift rlhf \
    --rlhf_type grpo \
    --model Qwen/Qwen3-8B \
    --train_type full \
    --dataset AI-MO/NuminaMath-TIR \
    --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 2 \
    --per_device_eval_batch_size 2 \
    --learning_rate 1e-6 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --output_dir output \
    --gradient_accumulation_steps 1 \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4 \
    --max_completion_length 4096 \
    --vllm_max_model_len 8192 \
    --reward_funcs accuracy \
    --num_generations 16 \
    --use_vllm true \
    --vllm_gpu_memory_utilization 0.4 \
    --sleep_level 1 \
    --offload_model true \
    --offload_optimizer true \
    --gc_collect_after_offload true \
    --deepspeed zero3 \
    --num_infer_workers 8 \
    --tensor_parallel_size 1 \
    --temperature 1.0 \
    --top_p 0.85 \
    --report_to wandb \
    --log_completions true \
    --overlong_filter true 

    GROP训练详细使用请参考官方文档:GRPO — swift 3.4.0.dev0 文档

5、Megatron并行训练

        SWIFT引入了Megatron的并行技术来加速大模型的训练,包括数据并行、张量并行、流水线并行、序列并行,上下文并行,专家并行。支持Qwen3、Qwen3-MoE、Qwen2.5、Llama3、Deepseek-R1蒸馏系等模型的预训练和微调。

# https://help.aliyun.com/zh/pai/user-guide/general-environment-variables
# 请确保两个节点的保存权重路径相同
NNODES=$WORLD_SIZE \
NODE_RANK=$RANK \
megatron sft \
    --load Qwen3-30B-A3B-Base-mcore \
    --dataset 'liucong/Chinese-DeepSeek-R1-Distill-data-110k-SFT' \
    --tensor_model_parallel_size 2 \
    --expert_model_parallel_size 8 \
    --moe_grouped_gemm true \
    --moe_shared_expert_overlap true \
    --moe_aux_loss_coeff 0.01 \
    --micro_batch_size 1 \
    --global_batch_size 16 \
    --packing true \
    --recompute_granularity full \
    --recompute_method uniform \
    --recompute_num_layers 1 \
    --train_iters 2000 \
    --eval_iters 50 \
    --finetune true \
    --cross_entropy_loss_fusion true \
    --lr 1e-5 \
    --lr_warmup_iters 100 \
    --min_lr 1e-6 \
    --save megatron_output/Qwen3-30B-A3B-Base \
    --eval_interval 200 \
    --save_interval 200 \
    --max_length 8192 \
    --num_workers 8 \
    --dataset_num_proc 8 \
    --no_save_optim true \
    --no_save_rng true \
    --sequence_parallel true \
    --use_flash_attn true

    Megatron训练详细使用请参考官方文档:Megatron-SWIFT训练 — swift 3.4.0.dev0 文档

<think>嗯,用户想用LLaMA-Factory对Qwen2-VL模型进行微调。首先,我需要回忆一下相关的引用内容。根据引用[1]、[2]和[3],LLaMA-Factory支持Qwen2系列的微调,包括Qwen2-VL。用户可能需要具体的步骤指导,比如环境配置、数据准备、参数设置等。 首先,用户的环境配置可能需要安装必要的库,比如modelscope和LLaMA-Factory,这部分在引用[2]里提到过安装步骤。然后是模型下载,Qwen2-VL可能在ModelScope上有,用户需要下载到本地路径,并在LLaMA-Factory的配置中指定路径,这点引用[2]里的步骤四有说明。 接下来是数据准备。引用[3]提到需要准备图像和文本的多模态数据集,格式可能是JSON,包含图片路径和指令对。用户需要确保数据集的结构符合要求,可能需要参考教程里的数据准备部分。 然后是启动LLaMA-Factory的UI界面,用户需要访问本地端口,配置模型路径,选择正确的模型类型,比如Qwen2-VL。在微调参数设置时,可能需要选择LoRA等高效微调方法,调整学习率、批次大小等参数。引用[2]中的步骤七有详细的操作实践,包括训练参数预览和开始训练。 用户可能还会遇到如何导出微调后的模型的问题,引用[2]提到模型合并导出,可能需要指导用户如何操作。此外,在微调多模态模型时,需要注意图像处理部分,确保模型能正确处理图像输入,可能需要参考引用[3]中的配置。 最后,常见问题比如CUDA内存不足,可能需要建议调整批次大小或使用梯度累积。用户的问题可能还涉及如何验证微调后的模型效果,引用[1]中的启动命令可以用来进行交互测试。 需要确保步骤清晰,分点说明,并引用相关的引用内容。可能还需要提醒用户注意版本兼容性,确保LLaMA-Factory支持Qwen2-VL,以及数据格式的正确性。如果有遗漏的步骤,比如环境配置的依赖安装,可能需要补充说明。</think>以下是使用LLaMA-Factory微调Qwen2-VL模型的详细步骤: ### 一、环境准备 1. 安装基础框架: ```bash pip install "modelscope[llm]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ``` 2. 克隆LLaMA-Factory仓库: ```bash git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[metrics] ``` ### 二、模型与数据准备 1. 下载Qwen2-VL模型: 通过ModelScope下载模型至本地路径(示例路径:`/path/to/qwen2_vl`)[^2] 2. 准备多模态数据集: ```json [ { "image": "images/dog.jpg", "conversations": [ {"from": "human", "value": "图片中有哪些物体?"}, {"from": "gpt", "value": "一只金毛犬在草地上奔跑"} ] } ] ``` 数据集应包含图像路径和指令对话对[^3] ### 三、配置微调参数 1. 启动Web UI: ```bash CUDA_VISIBLE_DEVICES=0 python src/train_web.py ``` 访问`http://localhost:7860`[^2] 2. 关键配置项: - 模型路径:`/path/to/qwen2_vl` - 微调方法:LoRA(低秩适配) - 学习率:3e-4 - 批处理大小:根据GPU显存调整(建议从2开始) - 训练轮次:3-5 ### 四、执行微调 1. 在Web界面完成配置后: - 点击"预览命令"验证参数 - 点击"开始训练"启动微调 2. 监控训练过程: ```text Loss下降曲线应平稳收敛 每个epoch约消耗2小时(A100 80G) ``` ### 五、模型推理 1. 加载微调后的模型: ```bash llamafactory-cli chat examples/inference/qwen2_vl.yaml ``` 2. 测试多模态能力: ```python 输入:"请描述这张图片的内容" 上传测试图像验证输出质量 ``` ### 常见问题解决 1. CUDA内存不足: - 减小`per_device_train_batch_size` - 启用梯度累积`gradient_accumulation_steps` 2. 多模态数据处理异常: - 验证图像路径是否正确 - 检查EXIF格式图片是否经过预处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37559973

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值