作者:互联网 时间: 2026-07-23 08:22:54
好不容易把模型文件传上去,结果仓库首页就光秃秃一个文件列表,既没说模型用途、使用限制,也没提数据来源和许可信息;要么就是模型卡能打开,但任务、支持库这类标签一个都没显示。遇到这种情况,先查 README.md 顶部的 metadata,再看模型卡正文就行——这两个区域分别管着「机器怎么识别模型」和「读者能不能判断模型合不合用」。
Hugging Face Hub 会自动把模型仓库根目录的 README.md 渲染成大家看到的 Model card(模型卡)。文件正文用 Markdown 编写就行,最顶部还能放一段 YAML 格式的 metadata。正文的作用是把模型本身、适用场景、限制与偏差、训练信息、所用数据集和评测结果说清楚;metadata 则管着检索、筛选、标签展示、模型关系、页面组件,还有一部分 API 的运行逻辑。
随便打开一个公开的模型仓库,默认显示的 Model card 标签页,就是 README.md 渲染出来的效果。页面顶部的任务、支持库、文件格式、相关论文、许可协议这些标签,大多来自 metadata 或者 Hub 自动识别的结果;右侧还会根据仓库里的文件和 metadata,展示模型大小、张量类型这类信息。

点击仓库导航栏里的 Files and versions。模型卡的源文件必须命名为 README.md,而且得放在模型仓库的根目录下。要是没有这个文件,自己的仓库可以直接新建 README.md;用 Git 操作的话,也可以在本地仓库根目录创建好之后再推送到远端。

在自己的模型页面,点模型卡右上角的 Edit model card,编辑器会同时显示 README.md 正文编辑区和 Metadata UI 配置面板。这个 UI 能自动补全常用的取值,还能校验部分字段,第一次配置的时候用起来很方便;要是碰到 UI 没覆盖到的字段,再切换到源码模式直接编辑 YAML 就行。
看别人的公开仓库时,README 页面会显示 Contribute 按钮,这个入口是用来提交协作变更的,不代表你拿到了仓库的写权限。下图里的 Preview、Code、Raw、History 和 Contribute 都在同一条工具栏上,metadata 的解析结果则单独显示在正文的上方。

metadata 必须从 README.md 的第一行开始写,用三条短横线(---)作为开头和结尾的标记。等结束的分隔线写完之后,再写模型卡的正文内容。列表项要用统一的缩进,字段名后面留一个空格,仓库 ID 要写成「所属账号/组织名 + 仓库名」的格式。
---
language:
- zh
- en
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
datasets:
- my-org/my-dataset
base_model: my-org/base-model
tags:
- instruction-tuned
---
# 模型名称
这里开始写用途、限制、训练信息和评测结果。
在真实仓库的 Code 视图里,能直接看到这组边界标记:第一行是三横线,license、pipeline_tag、library_name 和 tags 这些字段都在结束分隔线的前面。Preview 只会展示解析好的 metadata,要排查缩进、拼写、分隔线这类问题,得用 Code 视图才方便。

library_name 要填实际能加载这个模型的库名。官方文档建议大家主动显式填写;2024 年 8 月之后创建的仓库,光有 config.json 已经不代表 Hub 一定会默认把它识别成 transformers 库的模型了。pipeline_tag 填模型的主要任务,比如文本生成。这个字段会影响任务标签、模型筛选、页面组件还有一部分底层 API 的行为,所以别同时塞好几个互相冲突的主任务进去。
入口:Metadata UI 里的库和任务字段,或者 README 里的 YAML 配置。动作:选择真实支持的库,并且只填一个主任务。成功标志:模型页顶部出现对应的库和任务标签,页面的组件也和任务类型匹配。失败处理:要是任务值无效,优先在 Metadata UI 里重新选;要是自动推断的结果不符合模型用途,就用 YAML 里的 pipeline_tag 明确覆盖掉自动识别的结果。
license 要用有效的许可标识,还要保证仓库里的 LICENSE 文件和页面上的说明一致。如果是自定义许可,就填 other,同时补上许可名称和许可说明的位置。datasets 填 Hub 上真实存在的数据集仓库 ID,language 用标准的语言标识列表。这些字段填对之后,模型页会展示许可信息,还会把训练数据链接到对应的数据集页面。
入口:Metadata UI,或者 YAML 里的 license、datasets、language 字段。动作:一项一项填好可以核验的标识。成功标志:许可标签显示正确,数据集名称能被 Hub 识别,用语言筛选也能搜到这个模型。失败处理:要是数据集没被识别,就核对一下账号/组织名、仓库名还有大小写对不对;要是许可不在常用列表里,就用官方支持的自定义许可结构,别自己瞎编 license 的值。
如果是微调模型、适配器、量化模型或者合并模型,都应该填写 base_model 字段。只有一个上游来源的话就填一个 Hub 模型 ID,合并模型可以填多个 ID;Hub 通常会自动推断出 finetune、adapter、quantized 或者 merge 这类关系,要是怕推断错,也可以用 base_model_relation 明确指定关系类型。
入口:README 的 YAML 配置里的 base_model 字段。动作:填写真实的上游模型 ID,要是觉得关系可能被误判,就补上 base_model_relation 字段。成功标志:模型页会出现 Model tree(模型树),在上游模型的衍生列表里也能找到当前这个模型。失败处理:要是模型树没出来,就检查上游 ID 是不是完整、有没有把多个 ID 错写在同一行,还有 relation 的值和模型的实际类型是不是对得上。
metadata 是解决机器识别的问题,正文还是得回答读者关心的判断问题。至少要写清楚模型能干啥、适合和不适合用在什么场景、有哪些已知的限制和偏差、训练参数或者实验条件是什么、用了什么数据集、评测方法和结果怎么样。涉及数值的话,一定要带上对应的任务、数据集、指标和测试条件,别只写一句「效果很好」就完事了。
入口:README.md 里,YAML 结束分隔线之后的正文区域。动作:按照读者做决策的顺序,补上用途、限制、训练细节、数据集和评测这些内容。成功标志:完全不了解这个项目的人,光看模型卡就能判断这个模型适不适合下载、部署或者继续做评估。失败处理:要是资料不全,就明确标注哪些实验条件还没提供,别靠推测瞎填;涉及安全、偏差或者使用边界的内容,一定要把限制放在显眼的位置。