53 行模型表怎么读:为什么它不等于「100+ 模型」

2026-08-09

本文所有事实以 hiyouga/LlamaFactory 官方仓库 2026-08-09 的内容为准。我们没有安装、训练或部署过任何模型,文中数字均为仓库文档与源码里写着的值。

LlamaFactory 的 README 大标题下那句定位原文是 “Easily fine-tune 100+ large language models with zero-code CLI and Web UI”,而它 Supported Models 那一节的表格,我们逐行数下来是 53 行。这两个数字经常被人当成同一个数字来引用,然后在写文章、做汇报、给同事讲的时候就错了。

它们说的不是一回事:表格的每一行是一个模型系列,而 “100+” 指的是这些系列在 Model size 列展开之后的模型总数。举个表里现成的例子——Qwen3 (MoE/Instruct/Thinking/Next) 只占一行,它的 Model size 列写的是 0.6B/1.7B/4B/8B/14B/32B/80B/235B,一行就摊开了八档。53 行里这样的行是常态,所以行数和模型数差出一个量级毫不奇怪。

结论很简单,但值得写死:你要引用数字时,先说清楚你数的是哪一个。「README 自称支持 100+ 模型」和「Supported Models 表实读 53 行」都是可以写的,把它们混成「支持 53 个模型」或者「表里有 100 多行」就是错的。

三列各自在回答什么问题

这张表只有三列,但三列的用途完全不同,读的时候别平均用力。

第一列 Model,回答的是「这个系列在不在支持范围内」。它是你查表的入口,通常也是唯一一列你会先扫的。

第二列 Model size,回答的是「这个系列被列出来的参数量有哪些档」。用斜杠分隔多档,从表里最小的 270M(Gemma 3 那一行)到最大的 671B(DeepSeek R1 蒸馏系列和 DeepSeek 3-3.2 那两行都出现了 671B),跨度超过三个数量级。这一列常被拿来判断「我的机器能不能跑」,但这张表本身并没有给出任何资源数字——显存那部分在 README 的另一张 Hardware Requirement 表里,而那张表的表头上方,README 自己标了 * estimated(估算)。所以看 Model size 只能知道这个档位存在,推不出你的卡够不够,我们也不据此给任何结论。

第三列 Template,回答的是「配置文件里 template 这个参数该填什么」。这是全表唯一一列你会原样复制到 YAML 里的内容,也是最值得花时间的一列。下面几节基本都在讲它。

第三列的六条注解,哪几条是硬规则

README 在表下给了六条注解。它们不是补充说明,其中几条直接决定你的配置能不能跑对。

第一条,base 模型和 instruct/chat 模型的待遇不一样。 对 “base” 模型,template 可以从 defaultalpacavicuna 这类里选;但对 “instruct/chat” 模型,README 的措辞是务必使用对应的 template。判断依据就在这条注解的措辞里:base 那一档 README 给的是一个可选集合(default / alpaca / vicuna 等),说明这一档的对话格式由你自己定;instruct/chat 那一档 README 用的是「对应的」,没有留选择余地——权重发布方已经定了一套对话格式,套错就等于用另一种格式跟它说话。至于某个具体权重到底算 base 还是 instruct,README 这张表不负责替你判断,得回权重发布方的模型卡去确认。

第二条,_nothink 后缀是用来区分推理版与非推理版的。 README 举的例子就是 qwen3qwen3_nothink。整张表里带这个后缀的一共出现在 3 处:ernie_nothinkqwen3_nothinkqwen3_5_nothink。也就是说,当你在表里看到某一行的 Template 格子里有两个用斜杠隔开、其中一个带 _nothink 的值,那说明这一行覆盖了两种形态,你得先确定手上这个权重是哪一种,再挑对应的那个值

第三条是全表最该抄下来贴显示器上的一条:训练与推理必须用同一个 template。 README 原文里 SAME 这个词是全大写强调的(Remember to use the SAME template in training and inference)。这条的实际含义是,template 不是一个「训练时的参数」,它是一个贯穿训练侧和推理侧的约定。你在训练 YAML 里改了它,推理侧那份配置也必须跟着改;只改一边,两边就对不上了。这也是为什么本文一直强调第三列是「要复制的值」——它至少要被复制到两个地方。

第四、第五条是关于 transformers 版本的两个标记。 表里带 \* 的模型,需要从 main 分支安装 transformers,并用 DISABLE_VERSION_CHECK=1 跳过版本检查;带 \*\* 的模型,则需要安装特定版本transformers。这两条的处置动作不同,别混着来:前者是装开发版加一个环境变量,后者是把依赖钉到某个版本。

环境变量在两个平台的写法不一样,这里分开写:

# Linux / macOS
export DISABLE_VERSION_CHECK=1
:: Windows
set DISABLE_VERSION_CHECK=1

顺带一提,README 里另一个和取模型直接相关的环境变量 USE_MODELSCOPE_HUB=1(Hugging Face 下载有问题时把来源切到 ModelScope Hub)也是同样的平台差异:Linux/macOS 用 export USE_MODELSCOPE_HUB=1,Windows 用 set USE_MODELSCOPE_HUB=1。README 同时提醒,切了来源之后 model_name_or_path 要填 ModelScope 的 model ID,例如 LLM-Research/Meta-Llama-3-8B-Instruct;换句话说,模型表告诉你 template 填什么,但模型名怎么填取决于你从哪个 Hub 拉,这两件事别混在一起。本站读者以 Windows 居多,照抄 Linux 那一行 export 是很容易发生的事。

第六条,这张表不是权威源。 README 明写:完整模型清单见 src/llamafactory/extras/constants.py;自定义 chat template 加到 src/llamafactory/data/template.py。这一条的价值在于给了你一条查证路径——表里找不到你的模型时,先去 constants.py 里搜一遍,而不是直接下结论说「不支持」。同理,表里的 template 名如果和你在别处看到的对不上,代码里的定义才是当前状态。

四种容易读错的格子写法

这张表的格子里塞了不止一种写法,各自的读法不同。我们只把和「怎么填 template」直接相关的几行摘出来,整表在别处翻 README 就行。

ModelModel sizeTemplate
BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-
GPT-20.1B/0.4B/0.8B/1.5B-
Llama7B/13B/33B/65B-
StarCoder 23B/7B/15B-
MiniCPM 4/50.5B/1B/8Bcpm4/empty
Qwen3 (MoE/Instruct/Thinking/Next)0.6B/1.7B/4B/8B/14B/32B/80B/235Bqwen3/qwen3_nothink

写法一:- 全表 Template 列为 - 的一共 4 行,就是上表前四行:BLOOM/BLOOMZ、GPT-2、Llama(初代)、StarCoder 2。- 不表示「不支持」,也不表示「留空不填」——按上面第一条注解,这类 base 模型走的是 default / alpaca / vicuna 之类的通用 template,具体挑哪个由你的数据格式决定。

写法二:empty 是个真名字。 MiniCPM 4/5 那一行写的是 cpm4/empty,也就是说其中一档对应的 template,它的名字就叫 empty。这是本表里最容易看走眼的一格:empty 是要原样填进配置的字符串,不是「这格是空的」。

写法三:斜杠分隔的多个 template 名。 除了上面的 cpm4/emptyqwen3/qwen3_nothink,表里还有 falcon/falcon_h1gemma/gemma2glm4/glmz1glm4_moe/glm4_5vgranite3/granite4phi4_mini/phi4seed_oss/seed_coderminicpm_o/minicpm_vmimo/mimo_v2minimax1/minimax2lfm2/lfm2_vlqwen3_5/qwen3_5_nothink 等等。斜杠的意思是「这一行覆盖的几个子系列各自有各自的 template」,不是「随便挑一个」。挑错的后果和上面第三条是同一件事:训练推理两侧都得是同一个,而且得是你手上那个权重对应的那个。

写法四:多模态和音频系列的 template 是独立命名的。 表里能读出来的一批:mllama(Llama 3.2 Vision)、llavallava_nextllava_next_videoqwen2_vlqwen3_vlintern_vlkimi_vlminicpm_vglm4_5vpixtralpaligemmalfm2_vl;音频与全模态那一批是 qwen2_audioqwen2_omniqwen3_omniminicpm_o。这批名字的存在本身就是一条信息:同一家的纯文本模型和视觉模型不共用 templateqwenqwen2_vl 是两个值,不要因为都是 Qwen 就套同一个。

用这张表的查证顺序

把上面几节压成一条可执行的路径,大概是这样:

  1. 在第一列里找到你的模型系列行(注意找的是系列,不是具体权重名);
  2. 到第二列确认你手上那个参数量档位在不在列出的档里;
  3. 抄第三列的值——如果格子里有斜杠或 _nothink,先确定你的权重属于哪一种形态再挑;
  4. 如果格子是 -,说明这是通用 template 的场景,回第一条注解按 base 模型处理;
  5. 把选定的 template 同步到训练侧和推理侧两份配置里;
  6. 表里没找到,或者名字对不上,去 src/llamafactory/extras/constants.py 查;需要自定义就加到 src/llamafactory/data/template.py

至于 template 具体填错了会表现成什么样、template 之外还有哪些参数必须两侧对齐,这些我们另有一篇专门讲。README 里那张 8 行 × 6 列的训练方法矩阵也一样,它回答的是「怎么训」,模型表回答的是「能训谁」,两张表要一起读才完整——那张矩阵同样另有专篇。

最后补一句边界:这张表里的模型权重各有各自的发布方与许可条款,LlamaFactory 仓库自身的 Apache-2.0 并不覆盖它们,用之前请以各模型官方的许可原文为准。


本文依据 LlamaFactory 官方仓库(github.com/hiyouga/LlamaFactory)的 README、data/README.mdexamples/ 下的配置与 src/llamafactory/hparams/ 的参数定义整理,核对日 2026-08-09。本文内容为仓库源码与文档口径,我们没有安装、训练或部署过任何模型,文中显存数字均为官方标注的估算值(README 原文标 * estimated)而非实测占用。参数与默认值随版本变动,请以 llamafactory-cli train -h 的实际输出为准。许可条款请以官方 LICENSE 原文为准,本文不构成法律意见。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。