模型卡
模型卡是什么?
模型卡是随模型提供的文件,提供了方便的信息。在底层,模型卡是简单的 Markdown 文件,带有额外的元数据。模型卡对于可发现性、可重复性和共享至关重要!您可以在任何模型仓库的 README.md
文件中找到模型卡。
模型卡应描述
- 模型
- 其预期用途和潜在限制,包括偏见和道德考量,如 Mitchell, 2018 中所述
- 训练参数和实验信息(您可以嵌入或链接到实验跟踪平台以供参考)
- 用于训练模型的数据集
- 模型的评估结果
模型卡模板可在此处获得 这里。
如何在注释模型卡中描述如何填写模型卡的每个部分 注释的模型卡。
Hub 上的模型卡有两个关键部分,信息重叠
模型卡元数据
模型仓库将呈现其 README.md
作为模型卡。模型卡是 Markdown 文件,顶部有一个 YAML 部分,其中包含有关模型的元数据。
添加到模型卡的元数据支持发现和更轻松地使用您的模型。例如
- 允许用户在 https://huggingface.co/models 处过滤模型。
- 显示模型的许可证。
- 将数据集添加到元数据中将向您的模型页面添加一条消息,显示为
用于训练的数据集:
,并链接相关数据集(如果它们在 Hub 上可用)。
数据集、指标和语言标识符是在 数据集、指标 和 语言 页面上列出的。
将元数据添加到您的模型卡
有几种不同的方法可以将元数据添加到您的模型卡中,包括
- 使用元数据 UI
- 直接编辑
README.md
文件的 YAML 部分 - 通过
huggingface_hub
Python 库,请查看 文档 了解详细信息。
许多具有 Hub 集成 的库将在您上传模型时自动将元数据添加到模型卡中。
使用元数据 UI
您可以使用元数据 UI 将元数据添加到您的模型卡中。要访问元数据 UI,请转到模型页面,然后单击模型卡右上角的 编辑模型卡
按钮。这将打开一个编辑器,显示模型卡 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
此元数据将用于在模型页面上显示基础模型。用户还可以使用此信息按基础模型过滤模型,或查找源自特定基础模型的模型。
在合并情况下,您需要指定两个或多个基础模型的列表。
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 集成的库也会自动将管道标签添加到模型卡元数据中。
指定许可证
您可以在模型卡元数据部分指定许可证。许可证将显示在模型页面上,用户可以按许可证过滤模型。使用元数据 UI,您将看到最常见许可证的下拉菜单。
如果需要,您也可以通过添加other
作为许可证值,并在元数据中指定许可证名称和链接来指定自定义许可证。
# Example from https://huggingface.co/coqui/XTTS-v1
---
license: other
license_name: coqui-public-model-license
license_link: https://coqui.ai/cpml
---
如果许可证无法通过 URL 获取,您可以链接到存储在模型仓库中的 LICENSE。
评估结果
您可以在模型卡元数据中以结构化的方式指定模型的评估结果。Hub 会解析这些结果,并在模型页面上的小部件中显示它们。以下是如何在bigcode/starcoder 模型上显示结果的示例。
元数据规范基于 Papers with code 的model-index 规范。这使我们能够在适当的时候将结果直接索引到 Papers with code 的排行榜中。您还可以链接计算评估结果的来源。
以下是一个部分示例,用于描述01-ai/Yi-34B 在 ARC 基准测试上的得分。该结果来自Open LLM 排行榜,它被定义为source
。
---
model-index:
- name: Yi-34B
results:
- task:
type: text-generation
dataset:
name: ai2_arc
type: ai2_arc
metrics:
- name: AI2 Reasoning Challenge (25-Shot)
type: AI2 Reasoning Challenge (25-Shot)
value: 64.59
source:
name: Open LLM Leaderboard
url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard
---
有关如何格式化此数据的更多详细信息,请查看模型卡规范。
二氧化碳排放
模型卡也是展示模型二氧化碳影响信息的绝佳场所。访问我们的关于跟踪和报告二氧化碳排放的指南以了解更多信息。
链接论文
如果模型卡包含指向 arXiv 上论文的链接,Hugging Face Hub 将提取 arXiv ID 并将其包含在模型标签中,格式为 arxiv:<PAPER ID>
。点击标签将允许您
- 访问论文页面
- 筛选 Hub 上引用同一篇论文的其他模型。
阅读有关论文页面的更多信息 这里。
模型卡文本
有关如何填写没有 Hub 特定元数据的人类可读模型卡的详细信息(以便可以打印出来、剪切和粘贴等)可在 带注释的模型卡 中找到。
常见问题解答
模型标签是如何确定的?
每个模型页面都在页面标题中列出了所有模型的标签,位于模型名称下方。这些标签主要由模型卡元数据计算得出,但有些标签是自动添加的,如 启用小部件 中所述。
我可以向我的模型添加自定义标签吗?
是的,您可以通过将自定义标签添加到模型卡元数据中的 tags
字段来向模型添加自定义标签。元数据 UI 将建议一些流行标签,但您可以添加任何想要的标签。例如,您可以通过添加 finance
标签来表明您的模型专注于金融领域。
如何表明我的模型不适合所有受众
您可以向模型卡元数据添加 not-for-all-audience
标签。当存在此标签时,模型页面上将显示一条消息,表明该模型不适合所有受众。用户可以单击此消息以查看模型卡。
我可以在我的模型卡中写 LaTeX 吗?
可以!Hub 使用 KaTeX 数学排版库在解析 Markdown 之前在服务器端渲染数学公式。
您必须使用以下分隔符
$$ ... $$
用于显示模式\\(...\\)
用于内联模式(斜杠和括号之间没有空格)。
然后你就可以写
< > 在 GitHub 上更新