llamafactory环境准备

发布时间:2026/10/26 10:54:45

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/10/25 11:46:36

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

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

2026/10/25 21:27:18

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

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

2026/10/26 10:52:35

哈希表原理与内存优化实践

1. 哈希散列的本质:从数学映射到内存实现 哈希表的核心思想源于数学中的映射概念。想象一个图书馆,每本书都有唯一的索书号,管理员通过索书号能直接定位到书架位置,而不需要逐本查找。哈希函数就是这个"索书号生成器"&a…

2026/10/26 10:52:35

Linux命令实战:从基础操作到高效运维技巧

1. Linux命令概述与核心价值 在计算机技术领域,Linux系统以其开源、稳定和高效的特点,成为服务器、嵌入式设备和开发环境的首选操作系统。而Linux命令则是与这个系统交互的核心工具链,掌握它们就像获得了一把打开系统管理大门的万能钥匙。无论…

2026/10/26 10:52:35

VSCode+Qt6+CMake跨平台开发环境配置指南

1. 为什么选择VSCodeQt6CMake组合? 在嵌入式开发和跨平台GUI开发领域,这套工具链正在成为越来越多开发者的首选方案。我最初从Qt Creator转向这个组合时,主要基于以下几个实际考量: 首先,VSCode的轻量级特性&#xff…

2026/10/26 10:52:35

静态页面移动端适配:核心挑战与最佳实践

1. 静态页面移动端适配的核心挑战 上周接手公司官网改版项目时,产品经理拿着最新的用户数据找我:"现在移动端访问占比已经突破78%,但跳出率居高不下,特别是iPad用户平均停留时间只有手机端的1/3..." 这个现象背后&#…

2026/10/26 10:52:35

代码质量度量与改进:从基础指标到定制化实践

1. 代码质量度量的本质与价值 在软件工程领域,代码质量度量从来都不是简单的数字游戏。那个从90%到99.9%的跨越,实际上代表着开发团队从"能用就行"到"工业级可靠"的质变过程。我经历过一个电商系统重构项目,当代码质量评…

2026/10/26 10:47:34

Kubernetes资源管理:Requests与Limits最佳实践

1. Kubernetes资源管理基础概念 在Kubernetes集群中运行应用时,资源管理是确保应用稳定性和集群健康的关键环节。每个Pod都需要明确声明其资源需求,这样调度器才能做出合理的决策。 资源请求(Requests)和限制(Limits)是Kubernetes资源管理的两个核心概念…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑