在魔乐社区使用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

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了!

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了!

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了! 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。 🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。 🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。 摘要 作为一名长期关注AI技术发展的开发者,我见证了从GAN到DALL-E,再到Stable Diffusion的图像生成技术演进历程。而今天,当我深入体验字节跳动最新发布的豆包Seedream 4.0时,我被这项技术的突破性表现深深震撼了。这不仅仅是一次简单的版本迭代,而是AI绘画领域的一次革命性跃进。 通过我使用中华田园犬和三花猫素材进行的深度测评,Seedream 4.0展现出了前所未有的多图融合能力和主体一致性保持水平。从真实场景的动物追逐图,到充满想象力的卡通探险绘本,再到创意十足的布偶挂件设计,每一个生成结果都让我感受到了AI创作的无限可能。这款模

Stable Diffusion(SD)完整训练+推理流程详解(含伪代码,新手友好)

Stable Diffusion(SD)完整训练+推理流程详解(含伪代码,新手友好)

Stable Diffusion(SD)的核心理论基石源自论文《High-Resolution Image Synthesis with Latent Diffusion Models》(LDM),其革命性创新在于将扩散模型从高维像素空间迁移至 VAE 预训练的低维潜空间,在大幅降低训练与推理的计算成本(相比像素级扩散模型节省大量 GPU 资源)的同时,通过跨注意力机制实现文本、布局等多模态条件控制,兼顾了生成质量与灵活性。本文将基于这一核心思想,从数据预处理、模型训练、推理生成到 LoRA 轻量化训练,一步步拆解 SD 的完整技术流程,每个关键环节均搭配伪代码,结合实操场景,理解 SD 的工程实现。 论文地址:https://arxiv.org/pdf/2112.10752 论文代码:https://github.com/CompVis/latent-diffusion

FPGA开发常用软件盘点:Vivado、Quartus、ModelSim全面对比

FPGA开发常用软件盘点:Vivado、Quartus、ModelSim全面对比

在FPGA开发过程中,EDA工具(Electronic Design Automation) 是工程师的生产力核心。不同厂商的FPGA芯片通常配套不同的开发工具,但在项目实践中,很多工程师往往会接触多种EDA软件。 本文将带你系统梳理三款FPGA开发中最常用的软件:Vivado、Quartus、ModelSim,从功能、适用场景、优缺点等多个维度进行全面对比,助你快速入门并合理选择。 一、Vivado —— Xilinx官方旗舰开发平台 1. 基本简介 Vivado是Xilinx(现为AMD)推出的综合性FPGA开发环境,主要面向7系列、UltraScale、Versal等高端FPGA器件。 它集成了综合、布局布线、时序分析、仿真、硬件调试等完整流程,是Xilinx FPGA开发的首选工具。 2. 核心功能 * RTL综合与实现:支持Verilog、VHDL和SystemVerilog,自动进行逻辑优化与布局布线。 * IP Integrator:可视化模块连接工具,适合SoC级设计。 * 仿真与调试:内置Vivado Simulator,也可外接ModelSim进行

智元机器人三大产线

智元机器人三大产线

执行摘要 2025 年 12 月 8 日,智元机器人迎来了具有里程碑意义的时刻 —— 第 5000 台通用具身机器人在上海临港工厂正式量产下线。这一成就标志着中国具身智能产业从技术验证阶段全面迈入规模商用时代。智元机器人通过三年的快速发展,已建立起远征、灵犀、精灵三大产品矩阵,累计出货 5000 台,其中远征 A1/A2 下线 1742 台,灵犀 X1/X2 下线 1846 台,精灵 G1/G2 下线 1412 台(3)。 在技术层面,智元机器人实现了多项重大突破。其自主研发的 PowerFlow 关节电机峰值扭矩超过 350N・m,重量仅 1.6kg,采用准直驱技术方案,相较传统谐波减速器方案成本降低