任务
什么是任务?
任务,或管道类型,描述了每个模型 API 的“形状”(输入和输出),并用于确定我们想要为任何给定模型显示哪个推理 API 和小部件。
这种分类比较粗略(你始终可以在模型标签中添加更细粒度的任务名称),因此**你很少需要创建新的任务**。如果你想添加对新任务的支持,本文档说明了所需的步骤。
概述
将新任务集成到 Hub 中意味着
- 用户可以搜索给定任务的所有模型 - 和数据集。
- 推理 API 支持该任务。
- 用户可以使用小部件直接试用模型。🏆
请注意,你无需自己执行所有步骤。添加新任务是社区的共同努力,多人可以贡献。🧑🤝🧑
要开始此过程,请在huggingface_hub存储库中打开一个新的问题。请使用“添加新任务”模板。⚠️在进行任何编码之前,建议先阅读本文档。⚠️
第一步是上传你提议的任务的模型。一旦你在 Hub 中拥有了新任务的模型,下一步就是将其启用到推理 API 中。你可以从三种类型的支持中选择
- 🤗 使用
transformers
模型 - 🐳 使用来自官方支持的库的模型
- 🖨️ 使用具有自定义推理代码的模型。此实验性选项有一些缺点,因此我们建议使用其他方法之一。
最后,你可以添加一些 UI 元素,例如任务图标和小部件,以完成 Hub 中的集成。📷
有些步骤是正交的;你无需按顺序执行它们。**你不需要推理 API 来添加图标。**这意味着,即使尚未完全集成,用户仍然可以搜索给定任务的模型。
将新任务添加到 Hub
使用Hugging Face transformers库
如果你的模型是基于transformers
的模型,则推理 API 任务和pipeline
类之间存在一对一的映射。以下是一些来自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 中。
组件
一旦任务投入生产,还有什么比让用户能够直接在浏览器中与模型交互更令人兴奋的呢?🤩 您可以在 此处 找到所有组件。
如果您有兴趣贡献一个组件,您可以查看所有组件的 实现。
< > 更新至 GitHub