项目快照:hiyouga/LlamaFactory,约 74,157 个 Star,9,074 个 Fork;最新推送时间 2026-08-13T12:45:56Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/hiyouga/LlamaFactory · https://llamafactory.readthedocs.io

项目速览(TL;DR)
LlamaFactory 是一个面向大语言模型(Large Language Model,LLM)与视觉语言模型(Vision-Language Model,VLM)微调的 Python 开源项目,仓库描述为“Unified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)”。项目通过命令行界面(Command-Line Interface,CLI)和基于 Gradio 的图形界面提供训练入口,覆盖预训练、监督微调、偏好优化、奖励建模和多模态任务等场景。
根据题述 GitHub 仓库元信息,项目当前提供 74,157 个 Star 和 9,074 个 Fork,默认分支为 main,主要语言为 Python,许可证为 Apache-2.0。仓库的 Python 包元数据要求 Python 3.11 或更高版本,并将命令行入口注册为 llamafactory-cli 与 lmf;实际训练参数、模型兼容范围和依赖版本应以当前仓库及官方文档为准。
- 项目类型:统一的模型微调与部署工具集。
- 模型范围:README 列出 LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen3、Qwen3-VL、DeepSeek、Gemma、GLM、Phi 等模型系列。
- 主要入口:CLI、LLaMA Board 图形界面、OpenAI 风格 API、Gradio UI,以及 vLLM 或 SGLang worker。
- 运行方式:支持本地训练,也提供 Colab、PAI-DSW 和 AMD GPU Cloud 等 README 中列出的云端入口。
- 许可证:Apache License 2.0,分发时需遵守仓库 LICENSE 中的版权、专利和修改说明条款。
定位与目标用户
本项目的定位不是单一模型的训练脚本,而是将模型加载、数据处理、参数高效微调、训练监控、推理服务和图形化操作组织在同一套工具中。其核心价值在于减少不同模型、不同微调算法和不同硬件后端之间的切换成本,但具体可用能力仍受模型架构、依赖版本、显存或其他硬件资源影响。
目标用户包括需要进行领域适配的研究人员、需要构建实验流程的工程团队,以及希望通过图形界面完成训练配置的用户。对于企业场景,项目可作为训练流程组件使用,但数据治理、模型权利、训练结果评估、服务隔离和上线审批仍需由使用方自行负责,仓库资料没有提供托管式服务、服务等级协议(Service Level Agreement,SLA)或商业支持承诺。
项目与论文信息
仓库描述将项目标注为 ACL 2024 相关工作。资料没有提供论文标题、作者列表、实验表格或可复现基准的完整内容,因此不能据此推导具体性能提升、训练速度或资源消耗结论。README 提供了引用入口,但本文不补充资料中未出现的论文细节。
核心功能
核心功能可以按照“训练目标、参数更新方式、任务形态和运行出口”四个维度理解。不同功能并非全部同时启用,通常需要根据模型类型、数据格式、显存条件和训练目标选择相应配置;资料没有给出统一的默认训练配置。
多模型统一适配
README 列出多种文本模型、混合专家模型(Mixture-of-Experts,MoE)和视觉语言模型。工具的工作方式是由模型与分词器组件读取指定模型,再将数据整理为训练框架可以消费的输入;文本任务主要依赖 Transformers、Datasets 和 PyTorch,视觉、视频或音频任务还会涉及项目声明的相关处理依赖。
输入通常包括模型标识、分词器或处理器、数据集及训练参数,输出可以是完整微调后的模型权重,也可以是 LoRA 等参数高效微调产生的适配器。模型名称、模型权利和对应数据许可并不由 Apache-2.0 自动覆盖,使用前需要分别核查基础模型和数据集的许可。
多种训练目标
README 将连续预训练、监督微调、奖励建模(Reward Modeling,RM)、近端策略优化(Proximal Policy Optimization,PPO)、直接偏好优化(Direct Preference Optimization,DPO)、KTO 和 ORPO 列为集成功能。它们处理的数据结构和损失计算不同:监督微调通常使用输入与目标输出,偏好优化需要带有偏好关系的数据,奖励建模则需要用于学习评分的标注数据。
训练流程的具体字段、数据模板和命令行参数没有出现在题述 README 片段中,因此不在本文虚构配置样例。使用者应先阅读官方文档的使用章节,并以当前版本对应的示例配置验证数据格式;当数据字段与模板不匹配时,可能出现加载失败、标签错位或训练目标不符合预期等问题。
参数高效微调与量化
项目支持 16 位全量微调、冻结微调、LoRA,以及基于 AQLM、AWQ、GPTQ、LLM.int8、HQQ 和 EETQ 的 2、3、4、5、6、8 位 QLoRA。全量微调会更新更多模型参数,LoRA 和 QLoRA 则通过适配器或量化权重降低可训练参数与显存压力;具体资源收益不能仅由 README 的功能列表推算。
GaLore、BAdam、APOLLO、Adam-mini、Muon、OFT、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA 被 README 列为高级算法或相关技术。启用这些方法需要确认当前模型、训练器、量化后端及依赖版本是否兼容,仓库资料没有给出每种算法的完整参数表。
多模态与长上下文任务
README 列出图像理解、视觉定位、视频识别、音频理解、多轮对话和工具使用等任务。对于多模态输入,数据不仅包含文本,还可能包含图像、视频或音频引用,模型处理器需要把这些输入转换为模型所需的张量;项目声明的 torchvision、torchaudio 和 av 依赖与这类处理相关。
RoPE scaling、NEFTune、rsLoRA、FlashAttention-2、Unsloth、Liger Kernel 和 KTransformers 被列为实践优化或可集成组件。它们不是无条件生效的默认开关,具体启用条件、兼容矩阵和失败回退行为应以当前文档为准。
系统架构与关键模块
从仓库的 Python 打包配置可以确认,源码包位于 src/llamafactory,构建后端使用 Hatchling,CLI 入口指向 llamafactory.cli:main。因此,系统至少可以从“打包入口、训练依赖、界面依赖、服务依赖”四层理解,而不能仅把它视为一个单文件脚本。
入口层
llamafactory-cli 和 lmf 都调用同一个 llamafactory.cli:main 函数。这样的入口设计使命令行调用与 Python 包安装保持一致,同时也允许通过包管理器安装后直接调用命令;资料没有公开 CLI 的完整子命令、参数签名或默认配置文件路径。
训练与模型层
依赖声明显示,核心训练栈包括 PyTorch、TorchVision、TorchAudio、Transformers、Datasets、Accelerate、PEFT、TRL 和 TorchData。可以据此确认项目依赖深度学习框架、模型定义与加载、数据集处理、分布式或设备调度、参数高效微调和偏好训练组件,但源码模块之间的详细调用关系未在给定资料中展开。
界面、日志与服务层
Gradio 和 Matplotlib 被列入图形界面及可视化相关依赖,README 同时列出 LlamaBoard、TensorBoard、Wandb、MLflow 和 SwanLab 等实验监控选项。FastAPI、Uvicorn 和 SSE-Starlette 出现在 API 依赖中,README 则说明项目提供 OpenAI 风格 API、Gradio UI 和 CLI,并可使用 vLLM 或 SGLang worker 加速推理。
这里需要区分“仓库声明支持”和“当前环境可直接运行”:依赖声明并不代表所有后端在所有操作系统、硬件和模型上都能同时工作。具体 worker 选择、监听地址、并发参数和鉴权方式,官方仓库资料未提供该信息,建议以最新 README 为准。
依赖与运行环境
运行环境的硬约束主要来自 pyproject.toml。项目要求 Python >=3.11.0,核心框架要求 PyTorch >=2.4.0;其余依赖包含明确的上下界或排除版本,安装时应保留项目声明的约束,避免自行替换为未验证的版本。
| 依赖项 | 版本约束 | 用途类别 | 资料中的限制 |
|---|---|---|---|
| Python | >=3.11.0 | 运行时 | 项目要求 Python 3.11 或更高版本 |
| torch | >=2.4.0 | 深度学习框架 | 未提供上限 |
| transformers | >=4.55.0,<=5.8.0 | 模型与分词器 | 排除 4.57.0 和 5.6.0 |
| datasets | >=2.16.0,<=4.0.0 | 数据集处理 | 未提供其他排除版本 |
| accelerate | >=1.3.0,<=1.11.0 | 设备与训练调度 | 未提供其他排除版本 |
| peft | >=0.18.0,<=0.18.1 | 参数高效微调 | 版本范围较窄 |
| trl | >=0.18.0,<=0.24.0 | 偏好训练与强化学习流程 | 未提供具体算法兼容表 |
| gradio | >=4.38.0,<=5.50.0 | 图形界面 | 未提供 GUI 端口默认值 |
| fastapi | 未提供 | API 服务 | 仅在依赖列表中声明 |
| av | >=10.0.0,<=16.0.0 | 音视频处理 | 与多媒体任务相关 |
项目分类器标记其开发状态为 Beta,支持 Python 3.11、3.12 和 3.13,并标记为跨操作系统。跨操作系统分类不等同于每种硬件后端都具备相同能力;GPU、NPU、量化库和加速算子的可用性仍需按官方文档和目标设备单独验证。
快速开始
最小闭环可以先验证“安装成功、包可导入、CLI 能响应”,再进入真实训练。由于给定 README 片段只将本地训练指向使用章节,没有提供完整的模型下载、数据集和训练参数示例,下面不虚构具体训练任务或端口。
安装
包名来自 pyproject.toml 的 project.name 字段,CLI 名称来自 project.scripts。以下命令适合在本地隔离环境中执行;仓库资料没有提供虚拟环境创建命令,因此环境创建方式由使用者自行选择。
python -m pip install llamafactory运行与验证
安装后可以先导入包,再请求 CLI 帮助信息。第一条命令验证 Python 包可被解释器找到,第二条命令验证打包配置声明的命令行入口已经安装;若 CLI 的帮助输出与当前版本不一致,应以本地输出和官方文档为准。
python -c "import llamafactory; print('llamafactory import ok')"
llamafactory-cli --help这是测试环境验证,不会自动开始训练,也不会替用户下载指定模型。真实训练需要按照官方使用章节准备模型、数据集和训练配置;资料中没有提供可核查的最小训练命令,因此本文不补写带有未知参数的训练调用。
本地训练与云端入口
README 将本地训练指向 Getting Started 使用章节,并列出 Colab、PAI-DSW 和 AMD GPU Cloud 三种云端入口。云端页面的资源规格、免费额度、账号条件和持续可用性不在仓库资料中,不能将“免费”理解为无条件或长期承诺。
“Easily fine-tune 100+ large language models with zero-code CLI and Web UI”
来源:README
配置说明
给定资料包含的是 Python 包元数据配置,而不是完整的训练 YAML 或 JSON 样例。下表只列出可以从 pyproject.toml 直接核查的字段,不能把这些字段误认为模型训练超参数;训练配置字段、默认 batch size、学习率、输出目录和数据模板在资料中均未提供。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
| project.name | 字符串 | llamafactory |
Python 包名称 |
| project.dynamic | 字符串数组 | ["version"] |
声明版本号由构建配置动态读取 |
| project.license | 字符串 | Apache-2.0 |
包元数据中的许可证标识 |
| project.requires-python | 字符串 | >=3.11.0 |
声明 Python 运行时要求 |
| build-system.build-backend | 字符串 | hatchling.build |
指定 Python 包构建后端 |
| tool.hatch.build.targets.wheel.packages | 字符串数组 | ["src/llamafactory"] |
指定 wheel 构建包含的源码包 |
| project.scripts.llamafactory-cli | 字符串 | llamafactory.cli:main |
注册 CLI 命令及其 Python 调用入口 |
| project.scripts.lmf | 字符串 | llamafactory.cli:main |
注册 CLI 的另一命令别名 |
项目版本由 src/llamafactory/extras/env.py 中符合 VERSION = "..." 模式的值动态读取。给定资料没有提供该文件的具体版本号,所以本文不填写版本数字;安装时应通过包管理器或仓库当前文件确认实际版本。
进阶用法
进阶使用的重点是按照任务类型组合训练方法、数据形式、加速组件和监控后端,而不是只切换一个开关。每次组合都应先在小规模数据上验证样本解析、损失曲线、保存结果和推理输出,再扩大训练规模;这是根据本文作者的经验判断,仓库资料未提供该流程的官方性能保证。
选择训练策略
- 全量微调:适用于需要更新完整模型参数且硬件资源经过验证的实验;项目明确支持 16 位全量微调,但没有提供显存门槛。
- 冻结微调:只更新部分参数,适合需要限制可训练范围的实验;具体冻结层配置未在给定资料中列出。
- LoRA:通过参数高效微调组件训练适配器,输出通常需要与基础模型配合使用;适配器合并和部署命令未提供。
- QLoRA:在量化权重基础上进行参数高效微调,项目列出多种量化后端;实际可用位宽和后端由模型与依赖兼容性决定。
多模态任务
视觉、视频和音频任务应先核对模型所需输入与数据字段,再确认处理器和媒体解码依赖可用。README 明确列出了图像理解、视觉定位、视频识别和音频理解,但没有给出通用数据 JSON、媒体目录结构或预处理脚本,因此不提供未经资料验证的字段名。
推理与部署出口
README 说明项目提供 OpenAI 风格 API、Gradio UI 和 CLI,并可使用 vLLM 或 SGLang worker。适合在实验阶段使用 Gradio 或 CLI 观察单次输出;需要接入已有调用方时,可进一步核对 OpenAI 风格 API 的路径、请求格式、鉴权和端口配置,给定资料没有提供这些接口细节。
可观测性/运维
项目把 LlamaBoard、TensorBoard、Wandb、MLflow 和 SwanLab列为实验监控选项。它们的作用是记录训练过程、展示指标或集中管理实验,但资料没有定义统一指标名称、日志目录、保留周期和告警规则。
- 训练前:记录基础模型标识、数据版本、训练方法、依赖版本和配置文件摘要。
- 训练中:核对损失、学习率、评估指标、保存步数和异常退出信息;具体指标是否可用取决于训练任务配置。
- 训练后:验证模型或适配器是否能够重新加载,并使用固定测试集检查输出变化。
- 服务阶段:记录请求耗时、错误类型、模型版本和资源使用情况,但不要把用户原始输入无条件写入日志。
README 没有提供默认端口、健康检查路径、容器编排文件、SLA、备份策略或滚动升级方案。部署到生产环境时,这些运维项需要由使用团队补齐,并经过目标平台的安全评审。
安全与合规边界
LlamaFactory 本身是模型训练、微调和推理工具,不等于数据合规方案,也不替使用者取得模型、数据或第三方服务的授权。涉及个人信息、内部文档、客户记录、音视频或受监管行业数据时,应在授权环境中完成数据最小化、脱敏、访问控制和留存管理。
- 授权边界:只处理有权使用的基础模型、训练数据和推理请求,不将第三方数据集或模型权重的可访问性当作许可证明。
- 隐私边界:训练前确认数据中是否包含个人信息、密钥、访问令牌、内部地址或其他敏感内容;敏感参数使用独立密钥管理,不写入公开配置。
- 隔离边界:本地测试、训练集群和推理服务应按权限隔离;模型下载、数据处理和服务暴露的网络策略由部署方制定。
- 输出边界:微调后的模型可能记忆训练数据或生成不准确内容,上线前需要进行隐私泄露、版权、偏见、越权调用和内容安全评估。
- 高风险使用:本文不提供面向未授权目标的攻击、绕过检测、账号自动化或模型越狱教程;如将模型用于敏感决策,应额外遵守适用法律、行业规范和组织审批流程。
README 提醒除其列出的链接外,其他网站均为未经授权的第三方网站。获取模型、数据、容器或插件时,应优先使用仓库 README 和官方文档列出的来源,并对下载内容进行来源和完整性核验。
许可证与商用条款
仓库 LICENSE 文件采用 Apache License 2.0。该许可证授予在符合条款前提下复制、准备衍生作品、公开展示、公开执行、再许可和分发源代码或目标代码的版权许可,并包含与贡献相关的专利许可安排。
因此,从许可证文本看,Apache-2.0 允许将项目用于商业场景,但“能否商用”不代表基础模型、数据集、第三方依赖或生成内容都可以无条件商业使用。商用分发时必须同时核对这些组成部分各自的许可证和附加条款,具体解释以仓库 LICENSE 为准。
- 分发项目或衍生作品时,应向接收方提供 Apache-2.0 许可证副本。
- 修改文件时,应在显著位置说明已经进行修改。
- 分发源代码形式的衍生作品时,应保留适用的版权、专利、商标和归属声明。
- 若分发内容包含 NOTICE 文件,应按许可证要求保留其中适用的归属信息。
- 许可证不授予使用许可方商号、商标或服务标志的权利,合理描述项目来源的使用除外。
本文不对特定业务、模型或数据集作法律结论。商业交付前应由使用方根据目标司法辖区和实际分发方式进行许可证审查。
局限性与已知限制
项目功能列表较为广泛,但给定资料没有提供完整的模型兼容矩阵、硬件资源表、训练性能基准、并发能力或稳定性指标。不能依据“100+”这一项目描述推导每个模型在每种量化、分布式或多模态组合下都能成功运行。
- README 标记文档为 WIP,部分细节需要以最新文档为准。
- 没有提供统一的训练配置样例,数据字段和模板不能从项目名称直接推断。
- 没有提供显存需求、吞吐量、训练时长或准确率基准。
- 没有提供默认 API 端口、默认 GUI 端口、鉴权参数或生产部署清单。
- 依赖版本存在明确上下界和排除版本,升级底层框架可能引入兼容性问题。
- 项目分类器为 Beta,资料未提供面向生产环境的可用性承诺。
上述限制并不表示功能不可用,而是表示在缺少可核查配置或基准时,不应把仓库能力列表直接转换成部署保证。实际评估应固定模型、数据、硬件、依赖和训练参数后单独测试。
适合谁/不适合谁
选择该项目时,应看团队已有技术栈、任务类型和对配置透明度的要求,而不只是仓库 Star 数量。以下判断信号基于项目资料与工程使用边界,其中涉及流程建议的部分已按“根据本文作者的经验判断”标注。
适合的使用者
- 需要在 LLaMA、Qwen、Gemma、DeepSeek、GLM 或其他 README 列出的模型系列之间复用训练流程的研究团队。
- 需要比较全量微调、冻结微调、LoRA、QLoRA、DPO 或其他 README 已集成方法的实验人员。
- 已经使用 PyTorch、Transformers、Datasets、PEFT 或 TRL,并希望减少训练脚本重复开发的 Python 团队。
- 需要同时处理文本和视觉、视频、音频任务,并愿意分别验证模型处理器与媒体依赖的工程团队。
- 希望使用 CLI 或 Gradio 图形界面管理实验,并需要接入 LlamaBoard、TensorBoard、Wandb、MLflow 或 SwanLab 的团队。
不适合的使用者
- 要求官方提供固定 SLA、托管训练、官方运维和商业响应承诺的团队,因为给定资料没有这些承诺。
- 没有 Python 3.11 或更高版本运行环境,且无法调整依赖栈的项目;这是
pyproject.toml明确声明的运行时要求。 - 希望得到不需要验证的“任意模型、任意硬件、任意量化组合”方案的使用者,因为仓库未提供完整兼容矩阵。
- 不能自行处理基础模型、数据集、个人信息和输出内容许可证审查的商业项目。
- 只需要一个固定模型的极简推理程序,且不需要微调、监控或多模型适配能力的应用;根据本文作者的经验判断,此时应先评估更小的专用实现或已有替代组件。
常见问题与排查(FAQ / Troubleshooting)
排查顺序应从环境、入口、数据、模型和后端逐层收窄。每一步都保留命令输出、配置文件和依赖信息,避免只根据最终异常堆栈判断根因。
为什么安装后找不到 CLI
先确认安装所用的 Python 与执行 CLI 时的 Python 属于同一环境,再运行 llamafactory-cli --help。根据 pyproject.toml,有效入口名称是 llamafactory-cli 和 lmf;若仍无法找到,检查包是否安装成功以及脚本目录是否位于当前命令搜索路径。
为什么依赖解析失败
优先检查 Python 是否满足 >=3.11.0,然后核对 Transformers、Datasets、Accelerate、PEFT、TRL 和 Gradio 的上下界。尤其要注意 Transformers 明确排除 4.57.0 与 5.6.0,PEFT 的声明范围为 >=0.18.0, <=0.18.1。
为什么训练参数无法直接照搬
训练参数与模型架构、数据模板、微调方法和硬件有关。给定资料没有提供通用配置文件、字段定义或默认值,遇到未知参数时应以当前 CLI 帮助和官方文档为准,不要根据其他版本示例直接替换。
多模态数据加载失败如何处理
先确认模型是否属于 README 列出的视觉、视频或音频能力范围,再检查对应媒体文件可读性、处理器配置和 torchvision、torchaudio、av 等依赖。官方仓库未提供统一媒体数据目录结构,具体字段与样例建议以最新 README 为准。
推理服务端口和鉴权参数在哪里
资料只确认存在 FastAPI、Uvicorn、SSE-Starlette 依赖,以及 OpenAI 风格 API、Gradio UI、vLLM worker 和 SGLang worker 相关能力。默认端口、接口路径和鉴权方式官方仓库未提供该信息,建议以最新 README 和部署文档为准,并在服务暴露前配置网络访问控制。
项目地址与资源
以下链接均出现在题述仓库资料或其 README 中,使用前应根据页面当前内容核对版本、授权和可用性。



