当前位置: 首页 > news >正文

#魔乐新年征文赛·微调日志# 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
http://www.rkmt.cn/news/1299476.html

相关文章:

  • 别再手动折腾了!用Docker Compose 5分钟搞定ChirpStack LoRaWAN服务器部署(附配置文件详解)
  • 开源火车模拟器Libre-TrainSim:模块化架构与核心模块实现解析
  • Go语言轻量级规则引擎Airules:高性能架构与微服务实践
  • 杀虫灯哪个厂家做得好?这 5 家国内外厂家给出答案
  • GoLang简便模板缓存实现
  • 告别手酸困扰!D3KeyHelper:暗黑3玩家的智能按键助手
  • GPT-5.5 vs Grok4.3:语言模型实测对比
  • 上海GEO优化公司硬核优选排行:2026年行业头部梯队实力盘点
  • STM32F4的FPU白开了?手把手教你用对arm_math.h,让浮点运算真正起飞
  • 基于MCP协议与Puppeteer的AI浏览器自动化实战指南
  • matlab绘图,如何改变线条颜色
  • AI智能体文件管理:从零构建统一资产仓库与版本控制系统
  • 面试题:PEFT 参数高效微调详解——什么是 PEFT、为什么需要 PEFT、LoRA/QLoRA/Adapter 原理与优缺点全解析
  • 美国无人机合规飞行指南:FAA注册、Part 107规则与安全操作全解析
  • ElevenLabs菲律宾语语音突然变卡顿?紧急排查清单:DNS劫持、Token过期、区域节点错配(含curl诊断脚本)
  • 奥里亚语语音合成准确率骤降?揭秘ElevenLabs最新v4.2模型在Odisha方言中的5大发音偏差与3步校准法
  • 阿里云百炼 - Claude Code 配置指南
  • 为什么92%的设计师用错--Midjourney碳素印相提示词结构错误清单,含3组经柯达实验室验证的prompt模板
  • 蒸汽烘干散热器哪家好 行业口碑优选 适配多场景烘干需求
  • CSS中的filter属性详解
  • 交换综合实验
  • Rider对非商业用途免费全球最受喜爱的 .NET 和游戏开发 IDE
  • Nix封装Cursor AI编辑器:实现可复现的开发环境与AI编程助手集成
  • 从零搭建基于Prometheus的监控告警系统:架构、部署与生产实践
  • 穿透表象,直抵内核:学习本质的深度剖析与实践路径
  • 1987年8月25日晚上19-21点出生性格、运势和命运
  • 容器内存监控与优化:从cgroup原理到eBPF实践
  • VUE组件配置项(零)概述
  • Bootstrap5 Jumbotron 深入解析
  • 2024年遥感图像变化检测前沿:从扩散模型到轻量化架构的实战代码解析