在魔乐社区使用llama-factory微调Qwen3.5-4B模型

在魔乐社区使用llama-factory微调Qwen3.5-4B模型

微调前期准备

下载qwen3.5-4B模型

# 首先保证已安装git-lfs(https://git-lfs.com)git lfs installgit clone https://modelers.cn/Qwen-AI/Qwen3.5-4B.git 

下载Llama-factory

git clone --depth1 https://gh.llkk.cc/https://github.com/hiyouga/LlamaFactory.git 
在这里插入图片描述

微调环境搭建

我们依然是搭建一个miniconda

#清除当前shell会话中的PYTHONPATH环境变量unset PYTHONPATH # 安装minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh conda config --set auto_activate_base falsebash#加载conda配置source ~/.bashrc # 接受main通道的条款 conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main # 接受r通道的条款  conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r # 创建python3.11环境 conda create --name LlamaFactory python=3.11-y conda activate LlamaFactory 

安装LlamaFactory环境依赖

cd LlamaFactory pip install-e.# 可以安装 flash-linear-attention 获得训练推理加速效果 pip uninstall fla-core flash-linear-attention -y&& pip install-U git+https://github.com/fla-org/flash-linear-attention #因为我们使用的昇腾的npu的算力,所以我们还需要额外装一个torch-npu和decorator pip install torch-npu ==2.10.0rc2 pip install decorator 

可以使用下面的命令验证是否安装成功:

llamafactory-cli version 
在这里插入图片描述

显示llamafactory的版本,则表示安装成功

完成环境的搭建之后我们还需要将昇腾的环境启动命令跑一遍,使用以下的命令

source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/nnal/asdsip/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh 

下载数据集

根据llamafactory的要求我们需要把数据集放到LlamaFactory/data

cd LlamaFactory/data 

我们先下载数据集,数据集的制作的过程比较繁琐,这里我们使用准备好的数据集,大家也可以使用自己制作的数据集(这里我是拿的官方给的测试数据集):

#下载数据集git clone https://modelers.cn/chicheng/mllm_robot.git # 移动数据集到LlamaFactory/data文件夹cd mllm_robot mv mllm_robot.zip /home/openmind/LlamaFactory/data #然后我们到LlamaFactory/data目录来解压数据集cd LlamaFactory/data # 解压 python3 -c"import zipfile; zipfile.ZipFile('mllm_robot.zip').extractall()"
在这里插入图片描述

修改 dataset_info.json 文件,将我们刚刚下载的数据集添加进去

"mllm_robot":{"file_name":"mllm_robot.json", "formatting":"sharegpt", "columns":{"messages":"messages", "images":"images"}, "tags":{"role_tag":"role", "content_tag":"content", "user_tag":"user", "assistant_tag":"assistant"}}, "mllm_robot_en":{"file_name":"mllm_robot_en.json", "formatting":"sharegpt", "columns":{"messages":"messages", "images":"images"}, "tags":{"role_tag":"role", "content_tag":"content", "user_tag":"user", "assistant_tag":"assistant"}}, 
在这里插入图片描述

模型微调

训练脚本准备

因为魔乐社区的体验空间是终端的形式,我们现在暂时无法使用LlamaFactory的Web_UI,使用我们需要写一个训练的yaml文件

# 模型参数model_name_or_path: /home/openmind/Qwen3.5-4B # 或您的本地模型路径template: qwen3_5 # 模型模板trust_remote_code:true# 对于Qwen模型通常需要# 训练参数stage: sft # 监督微调do_train:truefinetuning_type: lora # 使用LoRAlora_target: q_proj,k_proj,v_proj,o_proj # LoRA作用模块 (可按需调整)dataset: mllm_robot,mllm_robot_en # 使用两个数据集 (用逗号分隔)learning_rate:1.0e-4num_train_epochs:5.0per_device_train_batch_size:1# 根据显存调整 (使用多卡可以自行调整这里)gradient_accumulation_steps:16# 确保总batch_size合适bf16:true# 昇腾910B支持bf16,可开启以节省显存# 输出参数output_dir: /home/openmind/Qwen3.5-4B/lora/train_Qwen3.5-4B # 与教程对应的输出目录logging_steps:10save_steps:500overwrite_output_dir:true# 硬件与分布式相关 fp16:false# 已启用bf16,关闭fp16避免冲突ddp_timeout:180000# 分布式超时设置

命令解释的内容:

# ==================== 模型参数 ==================== model_name_or_path: /home/openmind/Qwen3.5-4B # 模型路径:可以是本地路径(如本例),也可以是 Hugging Face 模型 ID(例如 "Qwen/Qwen2.5-7B")# 如果从 Hugging Face 下载,确保网络通畅且有权访问。 template: qwen3_5 # 对话模板:根据模型系列选择,常见值:# - qwen3_5: 通义千问 Qwen3.5 系列# - qwen: 通用 Qwen 系列(包括 Qwen1.5/2/2.5)# - llama3: Llama-3 系列# - default: 基础模板(若不确定可先用此)# 模板影响输入格式(如角色标签、系统消息等),选错可能导致训练异常。 trust_remote_code: true# 是否信任远程代码:对于 Qwen、ChatGLM 等使用自定义模型结构的模型,必须设为 true。# ==================== 训练参数 ==================== stage: sft # 训练阶段:sft 表示监督微调(Supervised Fine-Tuning)# 其他可选值:# - pt: 预训练(Pretraining)# - rm: 奖励建模(Reward Modeling)# - dpo/kto/orpo: 偏好优化# - ppo: 强化学习微调(需额外配置) do_train: true# 是否执行训练:设为 true 时进行训练;false 时仅评估或推理。 finetuning_type: lora # 微调方法:# - lora: 低秩适配(参数高效,显存友好)# - full: 全参数微调(需更多显存)# - freeze: 冻结部分层,仅训练最后几层# - oft: 正交微调(另一种参数高效方法) lora_target: q_proj,k_proj,v_proj,o_proj # LoRA 作用的目标模块(以逗号分隔)。# 不同模型模块名不同,常用选项:# - q_proj, k_proj, v_proj, o_proj: 注意力层的线性层(适用于 Qwen/Llama)# - gate_proj, up_proj, down_proj: MLP 层(若需增加参数量)# - all: 所有线性层(参数量大,需注意显存)# 可根据需要增删模块,例如仅微调注意力层:q_proj,v_proj dataset: mllm_robot,mllm_robot_en # 训练数据集名称(多个用逗号分隔)。# 这些名称必须在 data/dataset_info.json 中预先定义。# 定义示例(在 dataset_info.json 中):# "mllm_robot": {# "file_name": "mllm_robot.json",# "formatting": "sharegpt",# "columns": {"messages": "messages", "images": "images"},# "tags": {"role_tag": "role", "content_tag": "content", "user_tag": "user", "assistant_tag": "assistant"}# }# 数据集文件需放在 data/ 目录下,格式参考官方文档。 learning_rate: 1.0e-4 # 初始学习率。LoRA 通常用 1e-4 左右,全量微调用 1e-5。# 可根据收敛情况调整,过大可能导致不收敛,过小则训练缓慢。 num_train_epochs: 5.0# 训练轮数(epoch)。一轮表示完整遍历一次训练集。# 根据数据集大小和任务复杂度调整,过小可能欠拟合,过大可能过拟合。 per_device_train_batch_size: 1# 每张 NPU/GPU 卡的 batch size。# 根据显存大小调整:显存充足可增大(如 2,4),显存不足则保持 1。# 多卡时,总 batch size = per_device_batch_size × 卡数 × gradient_accumulation_steps。 gradient_accumulation_steps: 16# 梯度累积步数。用于模拟更大的 batch size,不增加显存占用。# 总 batch size = per_device_batch_size × 卡数 × gradient_accumulation_steps。# 例如:单卡 batch=1,累积 16 步 → 实际 batch size = 16;# 双卡 batch=1,累积 16 步 → 实际 batch size = 32。# 根据训练稳定性和收敛速度调整,通常保持总 batch size 在 16~64 之间。 bf16: true# 使用 bfloat16 混合精度训练(节省显存,加速)。# 昇腾 910B 支持 bf16,可开启。若硬件不支持,需改为 false 并使用 fp16 或 fp32。# ==================== 输出参数 ==================== output_dir: /home/openmind/Qwen3.5-4B/lora/train_Qwen3.5-4B # 训练输出目录,用于保存:# - 模型检查点(checkpoint-xxx)# - 训练日志(trainer_log.jsonl)# - 最终 LoRA 权重(adapter_model.safetensors)# 确保路径可写,且无重要文件(若 overwrite_output_dir 设为 true 则会清空)。 logging_steps: 10# 每隔多少步打印一次训练日志(显示 loss、学习率等)。方便监控训练状态。 save_steps: 500# 每隔多少步保存一次检查点。保存的文件可用于恢复训练或后续推理。# 若设为 0 则禁用保存。 overwrite_output_dir: true# 若输出目录已存在,是否覆盖。设为 true 可自动清空旧文件,避免手动删除。# 若为 false 且目录存在,程序会报错退出。# ==================== 硬件与分布式相关 ==================== fp16: false# 是否使用 float16 混合精度。此处已启用 bf16,故设为 false,避免冲突。# 若硬件不支持 bf16,可改用 fp16,并确保同时关闭 bf16。 ddp_timeout: 180000# 分布式训练时进程间通信的超时时间(秒)。用于防止通信卡死。# 180000 秒约 50 小时,足够长时间训练。若网络不稳定可适当增大。# 仅在多卡训练时生效,单卡可忽略。

使用单卡训练命令:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train train_qwen_robot.yaml 
在这里插入图片描述

多卡训练命令:

我们新建一个终端,在终端上运行:

npu-smi info 
在这里插入图片描述

可以看到 NPU 卡的设备编号分别是1,4

WANDB_MODE=disabled FORCE_TORCHRUN=1CUDA_VISIBLE_DEVICES=1,4 llamafactory-cli train ./train_qwen_robot.yaml 

对比训练前后的模型

拉起加载原始模型权重:

CUDA_VISIBLE_DEVICES=1 llamafactory-cli api \--model_name_or_path /home/openmind/Qwen3.5-4B \--template qwen3_5 \--finetuning_type lora 

使用下面的命令去提问,查看输出内容:

curl-X POST http://localhost:8000/v1/chat/completions -H"Content-Type: application/json"-d'{ "model": "Qwen3.5-4B", "messages": [ { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "data:image/png;base64,'$(base64 -w0 /home/openmind/LlamaFactory/data/images/robotera_1.png)'" } }, { "type": "text", "text": "请识别并描述图片中的机器人及其特征" } ] } ], "max_tokens": 512, "temperature": 0.1 }'

输出内容

在这里插入图片描述

拉起加载lora权重的模型

CUDA_VISIBLE_DEVICES=1 llamafactory-cli api \--model_name_or_path /home/openmind/Qwen3.5-4B \--adapter_name_or_path /home/openmind/Qwen3.5-4B/lora/train_Qwen3.5-4B \--template qwen3_5 \--finetuning_type lora 

依然是使用上面curl命令的内容去提问,查看输出

在这里插入图片描述

LLaMA-Factory YAML 参数大全:
https://modelers.cn/blogs/chicheng/208/issues?blogId=208

启动 Web UI命令:

llamafactory-cli webui 

点击返回的 URL 地址,就可以进入 Web UI 页面。

可能出现的问题

如果使用llama-factory命令的时候出现找不到命令的时候,可以在终端运行下面的命令:

# 若执行llama-factory的相关提示找不到命令,需设置一下变量,将包路径添加至环境变量中exportPATH="/home/openmind/.local/bin:$PATH"exportPATH="/usr/local/bin:$PATH"

Read more

微信终于官宣!OpenClaw(龙虾)正式接入,你的微信里多了一个AI管家

微信终于官宣!OpenClaw(龙虾)正式接入,你的微信里多了一个AI管家 就在昨天,微信放出了一个让科技圈沸腾的消息:微信正式推出「ClawBot」插件,支持接入开源AI智能体OpenClaw(俗称“龙虾”) 。 这意味着,你再也不需要冒着封号的风险使用非官方插件,现在可以直接在微信聊天界面里召唤你的“龙虾”替你干活了。 什么是“龙虾”? 首先科普一下,为什么大家管OpenClaw叫“龙虾”?因为它的图标是红色的,形似龙虾,所以被网友们亲切地称为“龙虾”。OpenClaw是一款实现“认知、执行、记忆”闭环的开源AI框架,简单来说,它能让AI真正“长出手脚”,自主执行文件管理、邮件收发、数据处理等复杂任务。 而微信这次推出的ClawBot插件,就是帮你用微信连接个人龙虾的聊天入口——相当于你现在能跟你的“虾”成为微信好友了。 如何接入? 想要在微信里玩转龙虾,操作非常简单,只需两步: 第一步:启用微信ClawBot插件 * 将微信更新到

Python实现的通用AI模型全方位测试完整方案(10万字)

Python实现的通用AI模型全方位测试完整方案(10万字)

AI模型全方位测试方案 目录 1. 引言 2. 测试环境搭建 3. 数据集准备与预处理 4. 模型基础测试 5. 模型性能测试 6. 模型鲁棒性测试 7. 模型公平性与偏见测试 8. 模型可解释性测试 9. 模型安全测试 10. 端到端系统测试 11. 测试自动化框架 12. 评分标准与评估体系 13. 测试报告与可视化 14. 持续测试与监控 15. 结论与展望 16. 附录 1. 引言 1.1 AI模型测试的重要性 随着人工智能技术的快速发展,AI模型已广泛应用于各个领域。然而,模型在实际部署前需要进行全面测试,以确保其可靠性、安全性和公平性。不充分的测试可能导致模型在生产环境中表现不佳,甚至造成严重的伦理和社会问题。 1.2 测试方案概述

使用 OpenClaw 搭建企业微信 AI 助手

企业微信接入OpenClaw机器人详细指南 前提条件 1. OpenClaw部署完成 * 已完成通过云应用安装部署OpenClaw * 详细部署教程参考:通过云应用快速部署OpenClaw 2. 企业微信账号准备 * 已注册企业微信账号 * 具备企业管理员权限 * 如尚未注册,请前往企业微信官网注册 操作流程详解 第一步:登录企业微信管理后台 1. 使用企业管理员账号登录企业微信管理后台 2. 确保登录账号具有创建机器人的权限 第二步:创建智能机器人 1. 在左侧导航栏依次选择: 2. 点击"创建机器人"按钮 "安全与管理" > "管理工具" > "智能机器人" 第三步:选择创建方式 1. 选择"手动创建"选项 1.

旧电脑秒变 AI 员工:OpenClaw 本地部署教程(含环境配置 + 插件开发 + 常见坑)

旧电脑秒变 AI 员工:OpenClaw 本地部署教程(含环境配置 + 插件开发 + 常见坑)

前言 本文基于最新OpenClaw版本编写,适配电脑低配置场景(最低2vCPU+2GiB内存+40GiB SSD),兼容Windows 10/11(优先WSL2)、Ubuntu 20.04+系统,全程纯操作指令,覆盖环境配置、本地部署、插件开发、高频坑排查。核心解决部署卡顿、国内网络适配、插件开发无思路、报错无法排查四大痛点,全程适配国内网络(国内镜像源)、国内大模型(通义千问、阿里云百炼等),无需海外代理,可稳定运行实现自动化办公(文件处理、IM对接、任务调度等)。 一、前置准备(适配优化) 1.1 硬件要求(最低适配) * CPU:Intel i3 4代+/AMD Ryzen 3 2000+(支持虚拟化,