任务
什么是任务?
任务,或管道类型,描述每个模型 API 的"形状"(输入和输出),用于确定我们要为任何给定模型显示哪个推理 API 和小部件。


这种分类相对粗粒度(你始终可以在模型标签中添加更细粒度的任务名称),因此你应该很少需要创建新任务。如果你想添加对新任务的支持,本文档说明了所需的步骤。
概述
将新任务集成到 Hub 中意味着:
- 用户可以搜索给定任务的所有模型和数据集。
- 推理 API 支持该任务。
- 用户可以直接使用小部件试用模型。🏆
请注意,你不需要自己实现所有步骤。添加新任务是一项社区工作,多人可以贡献。🧑🤝🧑
要开始这个过程,请在 huggingface_hub 仓库中打开一个新问题。请使用"添加新任务"模板。⚠️在进行任何编码之前,建议先阅读本文档。⚠️
第一步是为你提议的任务上传一个模型。一旦你在 Hub 中有了新任务的模型,下一步就是在推理 API 中启用它。你可以选择三种类型的支持:
- 🤗 使用
transformers模型 - 🐳 使用官方支持的库中的模型
- 🖨️ 使用带有自定义推理代码的模型。此实验性选项有缺点,因此我们建议使用其他方法之一。
最后,你可以添加一些 UI 元素,例如任务图标和小部件,以完成 Hub 中的集成。📷
某些步骤是正交的;你不需要按顺序执行它们。你不需要推理 API 来添加图标。 这意味着,即使还没有完全集成,用户仍然可以搜索给定任务的模型。
向 Hub 添加新任务
使用 Hugging Face transformers 库
如果你的模型是基于 transformers 的模型,推理 API 任务和 pipeline 类之间存在 1:1 映射。以下是 transformers 库的一些示例 PR:
一旦管道提交并部署,你应该能够为你的模型使用推理 API。
使用社区推理 API 与支持的库
Hub 还在社区推理 API 中支持超过 10 个开源库。
添加新任务相对简单,需要 2 个 PR:
- PR 1:将新任务添加到 API 验证。此代码确保推理输入对给定任务有效。一些 PR 示例:
- PR 2:将新任务添加到库 docker 镜像。你还应该在
docker_images/common/app/pipelines中添加模板,以便于在其他库中集成任务。以下是一个示例 PR:
为快速原型添加社区推理 API
我的模型不受任何库支持。我完蛋了吗?😱
对于这些用例,我们建议使用 Hugging Face Spaces。
UI 元素
Hub 允许用户按给定任务筛选模型。为此,你需要将任务添加到多个位置。你还可以为任务选择一个图标!
- 将任务类型添加到
Types.ts
在 huggingface.js/packages/tasks/src/pipelines.ts 中,你需要做几件事:
- 将类型添加到
PIPELINE_DATA。请注意,管道类型被分类到不同类别(NLP、音频、计算机视觉和其他)。 - 你还需要在 huggingface.js/packages/tasks/src/tasks/index.ts 中填写少量更改。
- 选择图标
你可以在 lib/Icons 目录中添加图标。我们通常从 https://icones.js.org/collection/carbon 选择 carbon 图标。还要将图标添加到 PipelineIcon。
小部件
一旦任务投入生产,还有什么比实现让用户直接在浏览器中使用模型的方式更令人兴奋的呢?🤩 你可以在此处找到所有小部件。
如果你有兴趣贡献小部件,可以查看所有小部件的实现。