发布时间:2026/9/2 7:19:14
llamafactory环境准备 # 【1】彻底删除 llama_factory 环境先 conda deactivate 再执行 conda remove -n llama_factory --all -y # 【2】初始化 conda把 conda 命令写入 ~/.bashrc 并立即生效不会激活任何环境 conda init bash source ~/.bashrc # 【3】创建名为 llama_factory 的虚拟环境指定 Python 3.11自动确认 git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.11 -y # 【4】激活 llama_factory 环境命令行前缀出现 (llama_factory) 即为成功 conda activate llama_factory # 【5】切换到 LLaMA-Factory 项目根目录根据实际路径修改如 /root/autodl-tmp/LLaMA-Factory cd LLaMA-Factory # 【6】开发模式安装 LLaMA-Factory torch metrics 两组可选依赖改源码不用重装 pip install -e .[torch,metrics] # 【7】在 llama_factory 环境内安装 Jupyter Notebook 和 ipykernel注册 Kernel 必需 pip install jupyter ipykernel # 【8】把 llama_factory 环境注册为 Jupyter Kernel界面显示名 Python 3.11 (llama_factory) python -m ipykernel install --user --name llama_factory --display-name Python 3.11 (llama_factory) # 【9】后台启动 Jupyter Notebook输出重定向到 jupyter.logPID 保存到 jupyter.pid关闭终端不会停止 nohup jupyter notebook --ip0.0.0.0 --port8089 --no-browser --allow-root jupyter.log 21 echo $! jupyter.pid # 【9-1】查看 Jupyter 后台日志找带 token 的登录链接 cat jupyter.log # 【9-2】停止 Jupyter通过保存的 PID 优雅停止 kill $(cat jupyter.pid) # 【9-3】兜底停止如果上面的不行强制杀掉所有 8089 端口上的进程 fuser -k 8089/tcp # 或者用 lsof 方式 # kill -9 $(lsof -t -i:8089) # 【10】查看已注册的所有 Jupyter Kernel确认 llama_factory 注册成功 jupyter kernelspec list # 【11】验证 LLaMA-Factory 安装能正常导入并输出版本号 python -c import llamafactory; print(LLaMA-Factory 版本:, llamafactory.__version__) # 【12】查看当前 Python 版本确认是 3.11.x python --version # 【13】列出所有 conda 环境带 * 号的是当前激活环境 conda env list # 【14】退出当前虚拟环境命令行前缀 (llama_factory) 消失 conda deactivate ## 验证 import torch torch.cuda.current_device() torch.cuda.get_device_name(0) torch.__version__ ## llamafactory-cli train -h # 创建模型存放目录并进入根据实际路径修改如 /root/autodl-tmp/models mkdir -p /dev/shm cd /dev/shm # 安装 git-lfs拉大模型权重必需只做一次 apt update apt install -y git-lfs git lfs install git config --global lfs.concurrenttransfers 8 git config --global http.postBuffer 524288000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 # 拉取 Qwen2.5-1.5B-Instruct约 3GB FP16适合中小显存做 CPT/SFT/DPO 全流程实验 git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git ## 执行完python执行这个 pkill -9 -f ipykernel CUDA_VISIBLE_DEVICES0 llamafactory-cli webchat \ --model_name_or_path /dev/shm/Meta-Llama-3-8B-Instruct \ --template llama3 adgen_local: { file_name: AdvertiseGen/train.json, columns: { prompt: content, response: summary } }# SFT Smoke 快速验证Qwen2.5-3B-Instruct QLoRA 4-bit # 选型理由 # 1. 能稳定学会 Function CallingShareGPT function_call/observation 角色的中文小模型 # 2. 比 1.5B function calling 能力强很多1.5B 经常输出自然语言而非 JSON 工具调用 # 3. QLoRA 4-bit 显存仅需 ~10GB单卡 RTX 3090/4090 24G 或 AutoDL A5000 轻松跑 # 4. 2 epoch 约 3-5 小时能快速看到 tool call 格式是否学会 # llamafactory-cli train /root/LLaMA-Factory/examples/auto_car/sft_qwen2.5_3b_qlora_smoke.yaml # # ---------- 对话验证加载模型聊一聊---------- # 0) 基座未微调 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --template qwen # 1) SFT 模型LoRA/QLoRA 训练产物 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --adapter_name_or_path /dev/shm/saves/sft_3b_smoke --template qwen # 若 /dev/shm/saves/sft_3b_smoke 目录下没有 adapter_model.safetensors而只有 checkpoint-xxx则改为 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --adapter_name_or_path /dev/shm/saves/sft_3b_smoke/checkpoint-xxx --template qwen # # ---------- 建议测试问题复制到 chat 里直接问---------- # 请帮我查询“2023款 比亚迪汉EV”的保养政策我想知道首保里程、首保是否免费、以及常规保养项目。你必须通过工具查询不要凭空编造。请先给出工具调用的参数然后再根据工具返回结果总结为三条要点。 # ---------- 模型 ---------- # 基座模型路径本地路径或 ModelScope/HF 缓存目录用于加载 tokenizer 与权重 model_name_or_path: /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master # ---------- Chat Template ---------- # 对话模板必须与基座 Instruct 模型匹配决定训练/推理的 prompt 拼接格式 template: qwen # ---------- 训练方法 ---------- # 训练阶段sft监督微调 stage: sft # 是否执行训练 do_train: true # 微调方式lora只训练 LoRA 适配器参数 finetuning_type: lora # LoRA 低秩维度 r越大可训练参数越多 lora_rank: 64 # LoRA 缩放系数常见经验≈2*lora_rank lora_alpha: 128 # LoRA dropout抑制过拟合 lora_dropout: 0.1 # LoRA 注入目标模块all对所有可注入线性层生效 lora_target: all # QLoRA 量化开关开启后基座权重以 4bit 加载以节省显存部分环境需确保 bitsandbytes 可用 quantization_bit: 4 quantization_type: nf4 double_quantization: true # ---------- 数据 ---------- # 数据集名称需在 dataset_info.json 注册 dataset: identity,auto_car_sft # 数据集目录相对/绝对路径均可取决于启动时工作目录 dataset_dir: data # 单条样本最大 token 截断长度 cutoff_len: 2048 # 是否覆盖重建 tokenized cache改数据/模板后建议 true overwrite_cache: true # 数据预处理并行进程数 preprocessing_num_workers: 8 # 是否启用 packing把多条短样本拼到同一序列冒烟阶段建议 false 更直观 packing: false # ---------- 超参数3Bbatch 大一点---------- # 输出目录checkpoint/adapter/log 等 output_dir: /dev/shm/saves/sft_3b_smoke # 若 output_dir 已存在是否允许覆盖 overwrite_output_dir: true # 每张卡的 micro-batch size一个 optimizer step 前会累积 gradient_accumulation_steps 次 per_device_train_batch_size: 4 # 梯度累积步数有效 batch ≈ per_device_train_batch_size * gradient_accumulation_steps * gpu_num gradient_accumulation_steps: 2 # 学习率 learning_rate: 2.0e-4 # 训练轮数smoke 一般 1-2 num_train_epochs: 1 # 学习率调度器类型 lr_scheduler_type: cosine # warmup 比例 warmup_ratio: 0.05 # 混合精度bf16 更稳硬件需支持 bf16: true # 是否使用 fp16与 bf16 二选一 fp16: false # 梯度裁剪阈值防止梯度爆炸 max_grad_norm: 1.0 # 梯度检查点省显存、换速度 gradient_checkpointing: true # 日志打印间隔step logging_steps: 10 # 保存 checkpoint 间隔step save_steps: 50 # 最多保留多少个 checkpoint超出会删除旧的 save_total_limit: 3 # 保存策略steps按 step 保存 save_strategy: steps # 是否只保存模型不保存 optimizer/scheduler 状态省空间 save_only_model: true # 从指定 checkpoint 恢复训练为空/不填则不恢复 resume_from_checkpoint: null # 训练结束是否自动加载验证集上最优 checkpoint load_best_model_at_end: true # 选择 best model 的指标名通常是 eval_loss metric_for_best_model: eval_loss # 指标是否越大越好loss 越小越好所以 false greater_is_better: false # ---------- 验证 ---------- # 从训练集中切分验证集比例0.055% val_size: 0.05 # 评估策略steps按 step 评估 eval_strategy: steps # 评估间隔step eval_steps: 50 # eval 的 batch size per_device_eval_batch_size: 8 # ---------- SwanLab 监控 ---------- # 是否开启 SwanLab 记录 use_swanlab: true # SwanLab 项目名 swanlab_project: car-customer-service # SwanLab 运行名建议包含阶段/模型/日期便于对比 swanlab_run_name: sft-3b-smoke-qwen25# ---------- 对话验证加载模型聊一聊---------- # llamafactory-cli train /root/LLaMA-Factory/examples/auto_car/dpo_qwen2.5_3b_lora_smoke.yaml # # 0) 基座未微调 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --template qwen # 1) SFT 模型用于对比 DPO 前后变化 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --adapter_name_or_path /dev/shm/saves/sft_3b_smoke --template qwen # 2) DPO 模型本配置训练产物训练完成后再用 # llamafactory-cli chat --model_name_or_path /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master --adapter_name_or_path /dev/shm/saves/dpo_3b_smoke --template qwen # 若 output_dir 下没有 adapter_model.safetensors而只有 checkpoint-xxx则改为 --adapter_name_or_path /dev/shm/saves/dpo_3b_smoke/checkpoint-xxx # # ---------- 建议测试问题复制到 chat 里直接问---------- # 请帮我查询“2023款 比亚迪汉EV”的保养政策我想知道首保里程、首保是否免费、以及常规保养项目。你必须通过工具查询不要凭空编造。请先给出工具调用的参数然后再根据工具返回结果总结为三条要点。 # 基座模型路径本地路径或 ModelScope/HF 缓存目录用于加载 tokenizer 与权重 model_name_or_path: /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master # 对话模板必须与基座 Instruct 模型匹配决定训练/推理的 prompt 拼接格式 template: qwen # 训练阶段dpo偏好对齐Direct Preference Optimization stage: dpo # 是否执行训练 do_train: true # 微调方式lora只训练 LoRA 适配器参数 finetuning_type: lora # LoRA 低秩维度 r越大可训练参数越多 lora_rank: 64 # LoRA 缩放系数常见经验≈2*lora_rank lora_alpha: 128 # LoRA dropout抑制过拟合 lora_dropout: 0.05 # LoRA 注入目标模块all对所有可注入线性层生效 lora_target: all # policy 模型加载的适配器路径通常指向 SFT 产物用于“在 SFT 基础上继续做 DPO” adapter_name_or_path: /dev/shm/saves/sft_3b_smoke # reference 模型基座路径DPO 用 reference 的 logp 约束 policy 不要漂太远 ref_model: /dev/shm/easy_ai/modelscope/models/Qwen--Qwen2.5-3B-Instruct/snapshots/master # reference 模型加载的适配器路径常见设定reference SFT 模型即与 adapter_name_or_path 相同 ref_model_adapters: /dev/shm/saves/sft_3b_smoke ref_model_quantization_bit: 4 # DPO 强度系数 beta越大偏好约束越强需结合数据质量调参 pref_beta: 0.1 # DPO 中混入的 SFT loss 权重用于稳定语言质量/格式防止只追偏好导致退化 pref_ftx: 0.1 # 偏好损失形式sigmoid 为经典 DPO 形式 pref_loss: sigmoid # 标签平滑缓解过拟合/偏好标注噪声 dpo_label_smoothing: 0.0 # DPO 数据集名称需在 dataset_info.json 注册并确保该数据集设置 ranking: true dataset: identity,auto_car_dpo # 数据集目录相对/绝对路径均可取决于启动时工作目录 dataset_dir: data # 单条样本最大 token 截断长度 cutoff_len: 1024 # 是否覆盖重建 tokenized cache改数据/模板后建议 true overwrite_cache: true # 数据预处理并行进程数 preprocessing_num_workers: 8 # 是否启用 packing偏好数据一般建议 false 更直观 packing: false # 输出目录checkpoint/adapter/log 等 output_dir: /dev/shm/saves/dpo_3b_smoke # 是否覆盖输出目录 overwrite_output_dir: true # 每张卡的 micro-batch size per_device_train_batch_size: 1 # 梯度累积步数有效 batch ≈ per_device_train_batch_size * gradient_accumulation_steps * gpu_num gradient_accumulation_steps: 8 # 学习率DPO 通常比 SFT 小 learning_rate: 1.0e-5 # 训练轮数smoke 一般 1 num_train_epochs: 1 # 学习率调度器类型 lr_scheduler_type: cosine # warmup 比例 warmup_ratio: 0.05 # 混合精度bf16 更稳硬件需支持 bf16: true # 是否使用 fp16与 bf16 二选一 fp16: false # 梯度裁剪阈值 max_grad_norm: 1.0 # 梯度检查点省显存、换速度 gradient_checkpointing: true # 日志打印间隔step logging_steps: 10 # 保存 checkpoint 间隔step save_steps: 50 # 最多保留多少个 checkpoint save_total_limit: 3 # 保存策略steps按 step 保存 save_strategy: steps # 是否只保存模型不保存 optimizer/scheduler 状态 save_only_model: true # 训练结束是否自动加载验证集上最优 checkpoint load_best_model_at_end: true # 选择 best model 的指标名通常是 eval_loss metric_for_best_model: eval_loss # 指标是否越大越好loss 越小越好所以 false greater_is_better: false # 从训练集中切分验证集比例0.055% val_size: 0.05 # 评估策略steps按 step 评估 eval_strategy: steps # 评估间隔step eval_steps: 50 # eval 的 batch size per_device_eval_batch_size: 1 # 是否开启 SwanLab 记录 use_swanlab: true # SwanLab 项目名 swanlab_project: car-customer-service # SwanLab 运行名建议包含阶段/模型/日期便于对比 swanlab_run_name: dpo-3b-smoke-qwen25

相关新闻

2026/9/2 7:14:14

用Claude Code搭建农业物联网监测平台:完整实战指南

Claude Code 的 100 个实战案例中,农业物联网监测平台是很有代表性的一种。它并不是让 AI 单纯生成几个页面,而是涉及传感器数据采集、协议解析、存储建模、接口服务、告警计算和可视化展示的完整链路。把这条链路交给 Claude Code 来辅助搭建&#xff0…

2026/9/2 7:14:14

超迷你DC-ATX电源:小机箱空间利用与供电改造完全指南

这次我们来看一个能直接改变小机箱内部布局的电源方案:超迷你 DC-ATX 电源。它的体积往往只有一张名片大小,甚至“手指大小”,却能输出上百瓦功率,把传统 ATX 电源挤出机箱之外。对于折腾 ITX、A4 结构、NAS、软路由、HTPC 的玩家…

2026/9/2 7:34:15

备份一个网页代码

openDB.html<!DOCTYPE html><html lang"zh-cn"> <head><meta charset"utf-8" /><title>开放数据集</title><meta name"keywords" content"开放 数据库 数据集"><meta name"descrip…

2026/9/2 7:34:15

STM32F103驱动LSM6DSL六轴传感器:I2C通信与数据融合实战

简介&#xff1a;这是基于STM32F103CBT6主控的LSM6DSL运动传感器&#xff08;加速度计陀螺仪&#xff09;驱动源码包&#xff0c;面向嵌入式运动传感与STM32外设编程学习者&#xff0c;解决传感器数据采集与串口输出的快速验证问题。压缩包共144个文件、约4.53MB&#xff0c;文…

2026/9/2 7:34:15

基于51单片机与开尔文四线制的高精度电阻测量系统设计与实现

简介&#xff1a;本资源是一套基于51单片机实现高精度电机绕组电阻测量的完整工程方案&#xff0c;面向电子类专业学生、嵌入式初学者及电机检测设备开发者&#xff0c;解决传统两线法测低阻&#xff08;如200mΩ级绕组&#xff09;受引线电阻干扰导致误差大的实际问题。方案采…

2026/9/2 7:34:15

Vue3移动端开发实战:从零构建跨平台APP的技术栈与核心实现

如果你是一名前端开发者&#xff0c;或者正打算从零开始学习前端&#xff0c;那么“Vue3”和“移动APP”这两个词&#xff0c;大概率已经在你眼前反复出现了。Vue3凭借其组合式API、更好的TypeScript支持和性能优化&#xff0c;已经成为现代前端开发的主流选择。而移动端开发&a…

2026/9/2 7:34:15

无人机卖到海外,用户下载配套 App 太慢怎么办?

无人机已经通过海外经销商交到用户手里。用户扫描包装上的下载入口&#xff0c;页面能够打开&#xff0c;App 名称和设备型号也没有错&#xff0c;可一点下载&#xff0c;进度条却长时间不动&#xff1b;有时下载到一半中断&#xff0c;换一个网络又要从头开始。渠道人员通常只…

2026/9/2 7:29:15

从零搭建工业控制系统(十九):图表可视化——LiveCharts2集成

图表可视化&#xff1a;LiveCharts2集成这是「从零搭建工业控制系统」系列第19篇。前面讲了数据存储&#xff0c;这篇讲数据展示——怎么用LiveCharts2在WPF里画实时图表。为什么选LiveCharts2 工业系统需要实时图表——气体流量趋势、压力变化曲线、温度走势。WPF自带的图表控…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出&#xff0c;第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器&#xff0c;出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台&#xff0c;直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流&#xff1a;为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历&#xff1a;明明传感器本身性能很好&#xff0c;信号输出却一塌糊涂——噪声大、漂移明显、重复性差&#xff0c;怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起&#xff0c;其实就是嵌入式开发里最常遇到的一类需求&#xff1a;用一块不算贵的 MCU&#xff0c;同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控&#xff0c;主频…

2026/9/2 0:03:41

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机&#xff0c;Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:03:41

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

这次我们来看一个很实用的 DeepSeek 落地场景&#xff1a;用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务&#xff0c;标题写得很直白&#xff0c;但背后其实是一整套可以复用的技术流程&#xff1a;字幕解析、模型调用、批量…

2026/9/2 0:03:41

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

当你家里摆着一台天猫精灵&#xff0c;却总希望语音助手偶尔“不正经”一点&#xff0c;不用官方腔回答问题&#xff0c;而是张口就接几句搞笑段子&#xff0c;会是什么体验&#xff1f;我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱&#xff0c;而是直…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…