模型卡片
什么是模型卡片?
模型卡片是伴随模型的文件,提供有用的信息。实际上,模型卡片是带有额外元数据的简单 Markdown 文件。模型卡片对于可发现性、可重现性和共享至关重要!你可以在任何模型仓库中找到作为 README.md 文件的模型卡片。
模型卡片应描述:
- 模型本身
- 其预期用途和潜在局限性,包括偏见 和伦理考量,详见 Mitchell, 2018
- 训练参数和实验信息(你可以嵌入或链接到实验跟踪平台以供参考)
- 用于训练模型的数据集
- 模型的评估结果
模型卡片模板可在此处获取。
如何填写模型卡片的每个部分,请参阅带注释的模型卡片。
Hub 上的模型卡片有两个关键部分,信息有所重叠:
模型卡片元数据
模型仓库会将其 README.md 渲染为模型卡片。模型卡片是一个 Markdown 文件,顶部有一个 YAML 部分,包含关于模型的元数据。
你添加到模型卡片中的元数据有助于发现和更轻松地使用你的模型。例如:
- 允许用户在 https://huggingface.co/models 上筛选模型。
- 显示模型的许可证。
- 在元数据中添加数据集会在你的模型页面上添加一条消息,显示
Datasets used to train:并链接相关数据集(如果它们在 Hub 上可用)。
数 据集、指标和语言标识符是在数据集、指标和语言页面上列出的那些。
向模型卡片添加元数据
有几种不同的方式可以向模型卡片添加元数据,包括:
- 使用元数据 UI
- 直接编辑
README.md文件的 YAML 部分 - 通过
huggingface_hubPython 库,详见文档。
许多具有 Hub 集成的库在你上传模型时会自动向模型卡片添加元数据。
使用元数据 UI
你可以使用元数据 UI 向模型卡片添加元数据。要访问元数据 UI,请转到模型页面,然后点击模型卡片右上角的 Edit model card 按钮。这将打开一个编辑器,显示模型卡片 README.md 文件,以及用于编辑元数据的 UI。


此 UI 允许你向模型卡片添加关键元数据,许多字段会根据你提供的信息自动完成。使用 UI 是向模型卡片添加元数据的最简单方法,但它不支持所有元数据字段。如果你想添加 UI 不支持的元数据,可以直接编辑 README.md 文件的 YAML 部分。
编辑 README.md 文件的 YAML 部分
你也可以直接编辑 README.md 文件的 YAML 部分。如果模型卡片还没有 YAML 部分,你可以在文件顶部添加三个 ---,然后包含所有相关元数据,并用另一组 --- 关闭该部分,如下例所示:
---
language:
- "List of ISO 639-1 code for your language"
- lang1
- lang2
thumbnail: "url to a thumbnail used in social sharing"
tags:
- tag1
- tag2
license: "any valid license identifier"
datasets:
- dataset1
- dataset2
metrics:
- metric1
- metric2
base_model: "base model Hub identifier"
---
你可以在此处找到详细的模型卡片元数据规范:此处。
指定库
你可以在模型卡片元数据部分指定支持的库。有关我们支持的库的更多信息,请参阅此处。库将按以下优先级顺序指定:
- 在模型卡片中指定
library_name(如果你的模型不是transformers模型,建议使用此方法)。可以通过元数据 UI 或直接在模型卡片 YAML 部分添加此信息:
library_name: flair
- 使用支持的库名称作为标签
tags:
- flair
如果未指定,Hub 将尝试自动检测库类型。但是,不鼓励使用这种方法,仓库创建者应尽可能使用显式的 library_name。
- 通过检查是否存在
*.nemo或*.mlmodel等文件,Hub 可以确定模型是否来自 NeMo 或 CoreML。 - 过去,如果未检测到任何内容且存在
config.json文件,则假定库为transformers。对于 2024 年 8 月之后创建的模型仓库,情况已不再如此——因此你需要显式指定library_name: transformers。
指定基础模型
如果你的模型是基础模型的微调版本、适配器或量化版本,你可以在模型卡片元数据部分指定基础模型。此信息也可用于指示你的模型是否是多个现有模型的合并。因此,base_model 字段可以是单个模型 ID,也可以是一个或多个基础模型的列表(由其 Hub 标识符指定)。
base_model: HuggingFaceH4/zephyr-7b-beta
此元数据将用于在模型页面上显示基础模型。用户还可以使用此信息按基础模型筛选模型,或查找源自特定基础模型的模型:
对于微调模型:


对于适配器(LoRA、PEFT 等):


对于另一个模型的量化版本:


对于两个或多个模型的合并:


在合并的情况下,你指定两个或多个基础模型的列表:
base_model:
- Endevor/InfinityRP-v1-7B
- l3utterfly/mistral-7b-v0.1-layla-v4
Hub 将从当前模型推断到基础模型的关系类型("adapter"、"merge"、"quantized"、"finetune"),但你也可以根据需要显式设置:例如 base_model_relation: quantized。
指定新版本
如果你的模型在 Hub 上有新版本可用,你可以在 new_version 字段中指定它。
例如,在 l3utterfly/mistral-7b-v0.1-layla-v3 上:
new_version: l3utterfly/mistral-7b-v0.1-layla-v4
此元数据将用于在模型页面上显示指向模型最新版本的链接。如果 new_version 中链接的模型也有 new_version 字段,则始终会显示最新版本。


指定数据集
你可以在模型卡片元数据部分指定用于训练模型的数据集。数据集将显示在模型页面上,用户将能够按数据集筛选模型。你应该使用 Hub 数据集标识符,它与数据集的仓库名称相同:
datasets:
- imdb
- HuggingFaceH4/no_robots
指定任务(pipeline_tag)
你可以在模型卡片元数据中指定 pipeline_tag。pipeline_tag 指示模型用于的任务类型。此标签将显示在模型页面上,用户可以在 Hub 上按任务筛选模型。此标签还用于确定模型使用哪个小部件以及底层使用哪些 API。
对于 transformers 模型,管道标签会自动从模型的 config.json 文件推断,但你可以根据需要在模型卡片元数据中覆盖它。在元数据 UI 中编辑此字段将确保管道标签有效。其他一些具有 Hub 集成的库也会自动将管道标签添加到模型卡片元数据中。