跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

LLaMA-Factory 全流程模型训练与推理

LLaMA-Factory 全流程模型训练与推理 介绍在 Docker 环境下使用 LLaMA-Factory 进行模型训练与推理的完整流程。 拉取镜像 首先需要启动 Docker,然后在终端中输入: 这个命令启动了一个 Ubuntu 20.04 容器,使用所有可用的 GPU 主机的 8000 端口映射到容器的 8000 端口 容器命名为 LLM,以特权模式运行容器 **进入容器** !f7b…

灭霸发布于 2026/4/6更新于 2026/9/3382 浏览
LLaMA-Factory 全流程模型训练与推理

LLaMA-Factory 全流程模型训练与推理

本文介绍在 Docker 环境下使用 LLaMA-Factory 进行模型训练与推理的完整流程。

1. 拉取镜像

首先需要启动 Docker,然后在终端中输入:

docker run -tid --gpus all -p 8000:8000 --name LLM -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --privileged=true ubuntu:20.04
  • 这个命令启动了一个 Ubuntu 20.04 容器,使用所有可用的 GPU
  • 主机的 8000 端口映射到容器的 8000 端口
  • 容器命名为 LLM,以特权模式运行容器

进入容器

docker exec -it LLM /bin/bash

f7b2c270ae3844559da67828c8d2f9f2.jpeg

但此时仅将 GPU 映射到了 Docker 里,尚未安装驱动。

wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda_12.6.2_560.35.03_linux.run

然后运行程序:

sh cuda_12.6.2_560.35.03_linux.run

随后会生成一些指引,默认安装即可。

root@82c2f2b69781:/home# ls /usr/local/ | grep cuda
cuda cuda-12.6
root@82c2f2b69781:/home# nvcc -V
bash: nvcc: command not found

这说明系统的 PATH 环境变量没有包含 /usr/local/cuda-12.6/bin。

编辑环境变量 vim ~/.bashrc 加入下面两行:

export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH

然后重新运行以下命令生效:

source ~/.bashrc

验证成功:

root@82c2f2b69781:/home# echo $PATH
/usr/local/cuda-12.6/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2. Docker 内安装 Python

Docker 拉取的 Ubuntu 20.04 没有任何配置,例如 wget 等命令需要自己通过 apt-get install 安装。

Python 源码包地址(以 3.10.6 为例):Index of /ftp/python/3.10.6/

wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
tar -zxvf Python-3.10.6.tgz
cd Python-3.10.6
sudo ./configure

configure 脚本会检查系统环境,并生成 Makefile 文件,以便后续的 make 命令可以正确编译源代码。

最后一步:

sudo make
sudo make test
sudo make install

3. 安装 LLaMA-Factory

安装:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

如果使用昇腾 NPU 的话,先设置一下环境变量:

export ASCEND_HOME_PATH=/usr/local/Ascend/ascend-toolkit/latest

下载模型:

git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen2.5-1.5B-Instruct.git

配置训练文件:

在 LLaMA-Factory/examples 下创建 train.yaml 文件,这是微调训练模型的配置文件。

### model
model_name_or_path: /home/Qwen/Qwen2.5-1.5B-Instruct
### method
stage: sft
do_train: true
finetuning_type: freeze
# lora_target: all
dataset: alpaca_zh_demo
template: qwen
cutoff_len: 10240
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
### output
output_dir: output
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 2
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
fp16: true
ddp_timeout: 180000000
### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500

使用数据集:

我们使用 LLaMA-Factory/data/alpaca_zh_demo.json 这个数据集。

  • instruction 部分描述了任务的具体指令。
  • input 部分通常包含任务所需的输入数据或信息。
  • output 部分是模型的输出。

ea3d2121e2e148bda8903f27d847e0f4.png

开始微调训练

llamafactory-cli train examples/train.yaml

1ef5885b4e0748c8a10b8d7e3e31efdd.png

训练过程中会显示相关指标:

68c34fc7986b430380b1cef3876d99d6.png

  • loss:模型在当前批次上的预测结果与实际标签之间的差异。
  • grad_norm:模型参数梯度的范数,反映梯度的大小,用于监控梯度爆炸或梯度消失的问题。
  • learning_rate:学习率是优化器在更新模型参数时使用的步长。
  • epoch:整个训练数据集被模型完整遍历的次数,一个 epoch 包含多个批次(batch)。

90378eaa5a0e4b4593cfc5840d124845.png

训练指标总结

***** train metrics *****
epoch = 3.0
total_flos = 2906404GF
train_loss = 1.0846
train_runtime = 0:04:15.80
train_samples_per_second = 10.555
train_steps_per_second = 5.277
  • epoch: 训练的总轮次(3.0 个 epoch)。
  • total_flos: 训练过程中总共计算的浮点运算次数(2906404 亿次浮点运算)。
  • train_loss: 训练过程中的平均损失值(1.0846)。
  • train_runtime: 训练总共花费的时间(4 分 15.80 秒)。
  • train_samples_per_second: 每秒处理的样本数(10.555 个样本/秒)。
  • train_steps_per_second: 每秒处理的批次数(5.277 个批次/秒)。

训练结束

95c644db986e4062b30fb1edab2a40fb.png

这是模型微调后产生的输出文件,包含了训练过程中生成的各种配置、权重、日志和结果。

加载训练后的模型权重来对话:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 我们的模型输出路径
model_name_or_path = "/home/LLaMA-Factory/output"
model = AutoModelForCausalLM.from_pretrained(model_name_or_path)
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)

prompt = "列出一个应该在野营应急包中的 7 件物品。"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
with torch.no_grad():
    outputs = model.generate(inputs.input_ids, max_length=50)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

输出:

cd678bee5c194d3a8a9e47f402cd635.png

评估

LLaMA-Factory 支持 MMLU、CMMLU、CEVAL 三种数据集验证。

llamafactory-cli eval --task mmlu --model_name_or_path /home/Qwen/Qwen2.5-1.5B-Instruct --template qwen --batch_size 1 --n_shot 5

b12a371ddd3045d98f46049545052611.png

推理

我们在 LLaMA-Factory/examples 目录下新建一个 infer.yaml 文件进行推理,内容:

model_name_or_path: /home/Qwen/Qwen2.5-1.5B-Instruct
template: qwen
do_sample: false

运行:

llamafactory-cli chat infer.yaml

43bf526f46b44dc2a8b979e15b913637.png

目录

  1. LLaMA-Factory 全流程模型训练与推理
  2. 1. 拉取镜像
  3. 2. Docker 内安装 Python
  4. 3. 安装 LLaMA-Factory
  5. model
  6. method
  7. lora_target: all
  8. output
  9. train
  10. eval
  11. 我们的模型输出路径

更多推荐文章

查看全部
  • AirSim 无人机仿真入门:实现起飞与降落控制
  • OpenClaw 结合 cpolar 实现本地 AI 公网访问指南
  • OpenClaw QQ 机器人接入指南
  • OSS 权限控制实战:ACL、RAM、Bucket Policy 与错误排查
  • LLaMA-Factory 合并 LoRA 适配器实战指南
  • C++ 红黑树的实现:原理与底层解析
  • Spring Boot 日志框架体系与配置实战
  • LLaMA-Factory 本地部署与微调环境搭建指南
  • 基于 OpenClaw 与飞书搭建 AI 新闻推送机器人
  • 基于 LLaMA-Factory 微调 Qwen3.5-4B 构建医疗 AI 助手
  • LLaMA-Factory 大模型微调实战:Qwen3 + LoRA
  • 深度确定性策略梯度算法 (DDPG) 详解与实现
  • GitHub Copilot Pro 学生免费认证与 VS Code 集成指南
  • llama.cpp:基于 C/C++ 的本地大语言模型推理框架
  • 2G 内存云服务器部署 Spring Boot + MySQL 实践
  • llama.cpp 量化模型部署实战:从模型转换到 API 服务
  • VR 音游音符轨道系统开发实录与原理解析
  • AI 零基础入门:从概念到实践的完整指南
  • WebMCP:浏览器 AI 交互新范式
  • 红黑树原理、规则及 C++ 代码实现

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online