#魔乐新年征文赛·微调日志# Qwen3.5-4B在昇腾NPU上的LoRA微调实战
写在前面在成功完成模型部署后我决定挑战更高难度的模型微调。本次微调的目标是让通义千问Qwen3.5-4B模型能够更好地理解和描述机器人图像。整个过程在魔乐社区的昇腾NPU环境下完成使用LLaMA-Factory工具进行LoRA微调。一、微调任务与数据集介绍1.1 微调目标让Qwen3.5-4B模型能够准确识别图片中的机器人并描述其特征如外观、颜色、结构等。1.2 数据集说明使用 mllm_robot 数据集包含机器人图像和对应的描述文本格式ShareGPT格式内容机器人图片 描述文本数据量约500条对话数据数据集结构示例json{messages: [{role: user, content: 请识别并描述图片中的机器人及其特征},{role: assistant, content: 这是一个白色的服务机器人有圆形头部和机械臂...}],images: [robot_001.png]}二、环境配置2.1 基础环境组件 版本操作系统 openEuler 22.03Python 3.11.13PyTorch 2.8.0torch_npu 2.8.0LLaMA-Factory 0.9.5.dev0Transformers 4.57.32.2 验证NPU可用性bashpython -c import torch; import torch_npu; print(fNPU可用: {torch.npu.is_available()})输出: NPU可用: True三、微调代码与参数说明3.1 训练配置文件 train_qwen.yamlyaml模型参数model_name_or_path: /home/openmind/Qwen3.5-4Btemplate: qwentrust_remote_code: true训练参数stage: sft # 监督微调do_train: truefinetuning_type: lora # 使用LoRAlora_target: q_proj,k_proj,v_proj,o_proj # LoRA作用模块dataset: mllm_robot # 训练数据集learning_rate: 1.0e-4 # 学习率num_train_epochs: 5.0 # 训练轮数per_device_train_batch_size: 1 # 每卡batch sizegradient_accumulation_steps: 16 # 梯度累积bf16: true # 使用bf16混合精度输出参数output_dir: /home/openmind/Qwen3.5-4B/loralogging_steps: 10save_steps: 500overwrite_output_dir: true3.2 数据集注册在 data/dataset_info.json 中添加json{mllm_robot: {file_name: mllm_robot.json,formatting: sharegpt,columns: {messages: messages,images: images}}}3.3 启动训练bashexport TORCH_DEVICE_BACKEND_AUTOLOAD0export ASCEND_RT_VISIBLE_DEVICES0llamafactory-cli train train_qwen.yaml四、训练过程与资源消耗4.1 训练日志text***** Running training *****Num examples 450Num epochs 5Batch size per device 1Gradient accumulation steps 16Total train batch size 1Total optimization steps 141{loss: 2.345, learning_rate: 0.0001, epoch: 0.1}{loss: 2.123, learning_rate: 0.0001, epoch: 0.2}...{loss: 1.633, learning_rate: 0.0001, epoch: 5.0}4.2 资源消耗指标 数值训练总时长 1小时29分钟训练样本速度 0.377 samples/秒最终损失 1.633NPU显存占用 约8-10 GB模型文件大小 约200 MB (LoRA权重)4.3 训练曲线[此处插入loss下降曲线截图]五、微调前后效果对比5.1 原始模型回答微调前bashcurl -X POST http://localhost:8000/v1/chat/completions-H Content-Type: application/json-d {model: Qwen3.5-4B,messages: [{role: user, content: 请识别并描述图片中的机器人及其特征}],max_tokens: 512}回答示例textThe model is a powerful tool for generating text and answering questions.It can be used to create chatbots, language models, and other applicationsthat require natural language understanding.❌ 模型没有理解图片中的机器人只是泛泛介绍AI模型5.2 微调后模型回答加载LoRA权重后bashllamafactory-cli api--model_name_or_path /home/openmind/Qwen3.5-4B--adapter_name_or_path /home/openmind/Qwen3.5-4B/lora--template qwen回答示例text这是一个白色的服务机器人具有以下特征圆形头部配备有摄像头和传感器两只可活动的机械臂末端有夹爪机身前方有LED显示屏底部有万向轮可灵活移动整体尺寸约50cm×40cm×30cm✅ 模型能够准确识别机器人并详细描述其特征5.3 对比总结对比项 原始模型 微调后模型理解图片内容 ❌ 无法识别 ✅ 准确识别描述详细程度 ❌ 泛泛而谈 ✅ 详细具体回答相关性 ❌ 偏离主题 ✅ 高度相关[此处插入微调前后回答对比截图]六、踩坑与解决方案6.1 版本不匹配问题现象ImportError: undefined symbol: _ZNK3c1010TensorImpl...解决确保 torch 和 torch_npu 版本严格匹配都是2.8.06.2 模板识别错误现象ValueError: model type qwen3_5 not recognized解决将 template: qwen3_5 改为 template: qwen6.3 数据集注册错误现象Extra data: line 765 column 1解决检查 dataset_info.json 的JSON格式确保括号匹配七、成果与链接7.1 微调模型仓库https://modelers.cn/luo2005/Qwen3.5-4B-lora-robot包含文件adapter_model.safetensors、adapter_config.json、tokenizer等7.2 配套脚本仓库https://modelers.cn/luo2005/deploy-qwen-deepseek-ascent包含文件train_qwen.yaml - 训练配置文件dataset_info.json - 数据集注册配置test_lora.sh - 模型测试脚本7.3 环境信息bashllamafactory-cli envPython版本3.11.13PyTorch版本2.8.0 (NPU)NPU类型Ascend910B2CANN版本8.3.RC2八、总结与展望通过本次微调实践我成功让Qwen3.5-4B模型具备了机器人图像识别和描述能力。整个过程验证了✅ 昇腾NPU能够稳定支持大模型微调✅ LLaMA-Factory LoRA 是高效的微调方案✅ 国产算力 国产模型 的组合已经成熟可用后续计划尝试更大规模的微调数据集探索全参数微调的效果将微调后的模型部署到实际应用作者ryo3344日期2026年3月23日魔乐社区主页https://modelers.cn/luo2005微调模型https://modelers.cn/luo2005/Qwen3.5-4B-lora-robot配套脚本https://modelers.cn/luo2005/deploy-qwen-deepseek-ascent

相关新闻

最新新闻

日新闻

周新闻

月新闻