二、LLaMA Factory 介绍和基本使用

二、LLaMA Factory 介绍和基本使用

LLaMA Factory 是一个简单易用且高效的大型语言模型训练与微调平台。通过它,用户可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。https://github.com/hiyouga/LLaMA-Factory

2.1 全场景模型微调能力

  • 多模型支持:高效适配超 100 个主流模型,涵盖 Qwen、DeepSeek、LLaMA、Gemma、LLaVA、Mistral、Mixtral-MoE、Yi、Baichuan、ChatGLM、Phi 等,满足 NLP、多模态等多领域需求。
  • 多样化算法与精度:集成 LoRA、GaLore、DoRA 等微调技术,支持(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO/DPO/KTO/ORPO 等强化学习方法;提供 16 比特全参数微调、冻结微调、LoRA 微调,以及基于 AQLM/AWQ/GPTQ 等技术的 2/3/4/5/6/8 比特 QLoRA 低比特量化微调,灵活适配不同算力场景。
  • 数据集灵活配置:支持用户自带数据集或自定义生成数据集,兼容 ModelScope、HuggingFace 等社区资源,自动下载缓存模型与数据集,适配多卡训练硬件环境。
  • 多种加速技巧:支持 FlashAttention-2、Unsloth 等加速算子。

2.2 极简操作与高效工具链

  • 零代码交互界面:通过友好 Web UI 完成模型配置、数据集加载、参数调优全流程,实时监控训练进度、显存占用及日志输出,无需编程即可轻松定制与微调 LLM,大幅降低使用门槛。
  • 实时监控与评估:无缝集成 Wandb、MLflow、SwanLab、TensorBoard 等工具,实现训练过程可视化与模型性能动态评估,为优化提供数据支撑。

2.3 工程化部署与资源利用

  • 模型部署:支持将 LoRA 适配器与基座模型一键合并为独立完整模型,便于本地化部署;
  • 推理引擎:集成 Transformers 、提供基于 vLLM 的 OpenAI 风格 API;
  • 资源利用:支持单机多卡训练与不同硬件环境适配,实现资源高效利用与流程无缝衔接。

2.4 LLaMA Factory 安装

我们在官网可以看到 LLaMa Factory 的安装方法:https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html#llama-factory

我们不建议 Clone 仓库后直接安装依赖,因为 Python 本身的依赖管理做的比较混乱,你可能会遇到各种 Python 依赖冲突的问题,建议使用虚拟环境,这里我们使用 Conda:

Conda 是一个开源的跨平台、语言无关的软件包管理系统与环境管理系统。它能方便地安装、运行和更新软件包及其依赖项,还可创建、切换和删除隔离的软件环境,广泛应用于数据科学、机器学习等领域 。

你可以根据自己的需求选择合适的发行版,从官方网站(Anaconda 或 Miniconda)下载对应操作系统的安装程序,然后按照安装向导进行安装。

我已经安装好wsl,我在wsl安装了anaconda

安装完成后,打开终端(Windows 用户可以使用 Anaconda Prompt 或 PowerShell),输入以下命令验证 conda 是否安装成功:

conda --version

如果安装成功,会显示 conda 的版本号。

bash 复制代码
(base) gpu3090@DESKTOP-8IU6393:~$ conda --version
conda 25.5.1
(base) gpu3090@DESKTOP-8IU6393:~$

然后使用 conda create 命令创建一个新的虚拟环境。例如,创建一个名为 lf (LLaMA Factory 简称)的虚拟环境,并指定 Python 版本为 3.10:

conda create -n lf1 python=3.10

其中,-n 或 --name 用于指定虚拟环境的名称,python=3.10 表示使用 Python 3.10 版本。

bash 复制代码
(base) gpu3090@DESKTOP-8IU6393:~$ conda create -n lf1 python=3.10
2 channel Terms of Service accepted
Retrieving notices: done
Channels:
 - defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
    current version: 25.5.1
    latest version: 25.9.1

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /home/gpu3090/anaconda3/envs/lf1

  added / updated specs:
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2025.11.4  |       h06a4308_0         128 KB
    expat-2.7.3                |       h3385a95_0         167 KB
    libgcc-15.2.0              |       h69a1729_7         806 KB
    libgcc-ng-15.2.0           |       h166f726_7          28 KB
    libgomp-15.2.0             |       h4751f2c_7         436 KB
    libstdcxx-15.2.0           |       h39759b7_7         3.7 MB
    libstdcxx-ng-15.2.0        |       hc03a8fd_7          28 KB
    pip-25.3                   |     pyhc872135_0         1.1 MB
    sqlite-3.51.0              |       h2a70700_0         1.2 MB
    ------------------------------------------------------------
                                           Total:         7.6 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
  bzip2              pkgs/main/linux-64::bzip2-1.0.8-h5eee18b_6
  ca-certificates    pkgs/main/linux-64::ca-certificates-2025.11.4-h06a4308_0
  expat              pkgs/main/linux-64::expat-2.7.3-h3385a95_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.44-h153f514_2
  libffi             pkgs/main/linux-64::libffi-3.4.4-h6a678d5_1
  libgcc             pkgs/main/linux-64::libgcc-15.2.0-h69a1729_7
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-15.2.0-h166f726_7
  libgomp            pkgs/main/linux-64::libgomp-15.2.0-h4751f2c_7
  libnsl             pkgs/main/linux-64::libnsl-2.0.0-h5eee18b_0
  libstdcxx          pkgs/main/linux-64::libstdcxx-15.2.0-h39759b7_7
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-15.2.0-hc03a8fd_7
  libuuid            pkgs/main/linux-64::libuuid-1.41.5-h5eee18b_0
  libxcb             pkgs/main/linux-64::libxcb-1.17.0-h9b100fa_0
  libzlib            pkgs/main/linux-64::libzlib-1.3.1-hb25bd0a_0
  ncurses            pkgs/main/linux-64::ncurses-6.5-h7934f7d_0
  openssl            pkgs/main/linux-64::openssl-3.0.18-hd6dcaed_0
  pip                pkgs/main/noarch::pip-25.3-pyhc872135_0
  pthread-stubs      pkgs/main/linux-64::pthread-stubs-0.3-h0ce48e5_1
  python             pkgs/main/linux-64::python-3.10.19-h6fa692b_0
  readline           pkgs/main/linux-64::readline-8.3-hc2a1206_0
  setuptools         pkgs/main/linux-64::setuptools-80.9.0-py310h06a4308_0
  sqlite             pkgs/main/linux-64::sqlite-3.51.0-h2a70700_0
  tk                 pkgs/main/linux-64::tk-8.6.15-h54e0aa7_0
  tzdata             pkgs/main/noarch::tzdata-2025b-h04d1e81_0
  wheel              pkgs/main/linux-64::wheel-0.45.1-py310h06a4308_0
  xorg-libx11        pkgs/main/linux-64::xorg-libx11-1.8.12-h9b100fa_1
  xorg-libxau        pkgs/main/linux-64::xorg-libxau-1.0.12-h9b100fa_0
  xorg-libxdmcp      pkgs/main/linux-64::xorg-libxdmcp-1.1.5-h9b100fa_0
  xorg-xorgproto     pkgs/main/linux-64::xorg-xorgproto-2024.1-h5eee18b_1
  xz                 pkgs/main/linux-64::xz-5.6.4-h5eee18b_1
  zlib               pkgs/main/linux-64::zlib-1.3.1-hb25bd0a_0


Proceed ([y]/n)?


Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate lf1
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) gpu3090@DESKTOP-8IU6393:~$

创建好虚拟环境后,需要激活它才能使用,

我们运行 在终端中运行以下命令激活 lf1 环境:

bash 复制代码
conda activate lf1

激活后,终端的命令提示符会显示当前所处的虚拟环境名称,然后我们可以使用 conda env list 命令查看所有已创建的虚拟环境:

bash 复制代码
conda env list

该命令会列出所有虚拟环境的名称和对应的路径(前面带 * 的为当前已激活的虚拟环境):

然后我们进入 LLaMA Factory 的代码目录,然后在此虚拟环境中执行:

bash 复制代码
(base) gpu3090@DESKTOP-8IU6393:~$ conda activate lf1
(lf1) gpu3090@DESKTOP-8IU6393:~$ ls
LLaMA-Factory                         downloads          models            submission.csv
M5-应用集成                           food11.zip         outputs           summaries
Q1                                    libriphone         pred.csv          test
Q1.zip                                libriphone.zip     prediction.csv    tmpg00x95ve.mp3
WA_Fn-UseC_-Telco-Customer-Churn.csv  llama.cpp          runs              train
anaconda3                             llamaboard_cache   sample_best.ckpt  unsloth_compiled_cache
cookies.txt                           llamaboard_config  sample_log.txt    valid
covid_test.csv                        merge              saves             "算命大师模型_ipynb"的副本.ipynb
covid_train.csv                       model.ckpt         snap
(lf1) gpu3090@DESKTOP-8IU6393:~$ cd LLaMA-Factory/
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$ ls
CITATION.cff  Makefile      assets  examples          requirements.txt  src
LICENSE       README.md     data    llamaboard_cache  scripts           tests
MANIFEST.in   README_zh.md  docker  pyproject.toml    setup.py          tests_v1
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$ pip install -e ".[torch,metrics]"

依赖安装完成后,我们执行 llamafactory-cli version 验证安装情况:

bash 复制代码
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$ llamafactory-cli version
----------------------------------------------------------
| Welcome to LLaMA Factory, version 0.9.4.dev0           |
|                                                        |
| Project page: https://github.com/hiyouga/LLaMA-Factory |
----------------------------------------------------------
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$

然后我们测试执行 which llamafactory-cli 可以发现,llamafactory 被安装在了 conda 创建的虚拟环境目录下:

bash 复制代码
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$ which llamafactory-cli
/home/gpu3090/anaconda3/envs/lf1/bin/llamafactory-cli

2.5 LLaMA Factory WebUI

依赖安装完成后,我们执行:llamafactory-cli webui,可以启动 LLaMa Factory 的 webui:

bash 复制代码
(lf1) gpu3090@DESKTOP-8IU6393:~/LLaMA-Factory$ llamafactory-cli webui
/home/gpu3090/anaconda3/envs/lf1/lib/python3.10/site-packages/jieba/_compat.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
Visit http://ip:port for Web UI, e.g., http://127.0.0.1:7860
* Running on local URL:  http://0.0.0.0:7860
* To create a public link, set `share=True` in `launch()`.

然后我们打开 http://127.0.0.1:7860 ,可以看到如下界面:

看起来配置非常多,但我们梳理一下可以分成通用设置、微调训练、模型评估、在线推理、模型导出五个部分,这里我们先做简单了解,后续我们会对关键配置进行具体讲解:

  • 通用设置:可以设置 WebUI 展示的语言、需要微调的模型、微调的方法、是否量化、微调的加速方式等配置:

将相应大模型的文件下载到本地目录

  • 微调训练:包括以下几部分配置:
    • 微调训练的阶段:预训练、指令微调、强化学习等等;
    • 微调使用的数据集:数据集的格式、路径、验证集的比例等等;
    • 关键微调参数:在我们之前教程中重点学习的:学习率、训练轮数、批量 大小等等;
    • LoRA 参数:当使用 Lora 微调时需要配置的一些特殊参数;
    • RLHF 参数:当训练阶段为强化学习时需要配置的一些特殊参数;
    • 特殊优化参数:当选择使用 GaLore、APOLLO 和 BAdam 优化器时需要配置的一些参数;
    • SwanLab 参数:一款开源的模型训练跟踪与可视化工具;
  • 模型评估:在完成模型训练后,可以通过此模块来评估模型效果,这里可配置模型评估所需的数据集等:
  • 在线推理:可以选择使用 huggingface、vllm 等推理引擎和模型在线聊天,主要用来测试加载模型:
  • 模型导出:可以指定模型、适配器、分块大小、导出量化等级及校准数据集、导出设备、导出目录等。
相关推荐
weixin_4462608513 小时前
三、LLaMA Factory 微调通用设置
llama
木枷2 天前
LLama-factory数据报错
人工智能·机器学习·llama
快乐的钢镚子2 天前
【RAG实战】中医医疗问答系统
langchain·llama
Yeliang Wu4 天前
LLaMA-Factory 模型评估理论与实战:基于 Ubuntu 22.04 的系统化指南
linux·ubuntu·llama·评估·llamafactory
盼小辉丶4 天前
Transformer实战(29)——大语言模型(Large Language Model,LLM)
语言模型·transformer·大语言模型·llama
阿猿收手吧!6 天前
【大模型】什么是大模型?vLLM是?模型部署?CUDA?
ai·llama
AI大模型7 天前
开源大模型全维度详解+实操部署(Mistral-、Gemma(Google)、Llama、Qwen),小白必看
llm·agent·llama
不会吉他的肌肉男不是好的挨踢男7 天前
LLaMA Factory 训练模型未检测到CUDA环境解决
python·ai·llama
TGITCIC7 天前
LLM推理引擎选型实战指南:用Transformers、llama.cpp 还是 vLLM 之争
transformer·llama·ai大模型·vllm·llama.cpp·大模型ai