Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

小部件

什么是小部件?

许多模型仓库都有一个小部件,允许任何人直接在浏览器中运行推理!

这里有一些例子

您可以在这里试用所有小部件。

启用小部件

当您将模型上传到 Hub 时,会自动为您的模型创建一个小部件。为了确定要显示哪个 pipeline 和小部件(text-classificationtoken-classificationtranslation 等),我们会分析仓库中的信息,例如模型卡片和配置文件中提供的元数据。此信息会映射到一个 pipeline_tag。为了简单起见,我们选择每个模型公开一个小部件。

对于大多数用例,我们根据标签确定模型类型。例如,如果 模型卡片元数据中存在 tag: text-classification,则推断出的 pipeline_tag 将是 text-classification

对于某些库(例如 🤗 Transformers),模型类型应根据配置文件 (config.json) 自动推断。架构可以确定类型:例如,AutoModelForTokenClassification 对应于 token-classification。如果您对此感兴趣,可以在这个 gist中查看伪代码。

您始终可以使用 模型卡片元数据中的 pipeline_tag: xxx 手动覆盖您的 pipeline 类型。(您也可以使用元数据 GUI 编辑器来执行此操作)。

如何控制模型小部件的示例输入?

您可以在模型卡片元数据部分指定小部件输入

widget:
- text: "Jens Peter Hansen kommer fra Danmark"

您可以提供多个示例输入。在小部件的示例下拉菜单中,它们将显示为 示例 1示例 2 等。您可以选择性地提供 example_title

widget:
- text: "Is this review positive or negative? Review: Best cast iron skillet you will ever buy."
  example_title: "Sentiment analysis"
- text: "Barack Obama nominated Hilary Clinton as his secretary of state on Monday. He chose her because she had ..."
  example_title: "Coreference resolution"
- text: "On a shelf, there are five books: a gray book, a red book, a purple book, a blue book, and a black book ..."
  example_title: "Logic puzzles"
- text: "The two men running to become New York City's next mayor will face off in their first debate Wednesday night ..."
  example_title: "Reading comprehension"

此外,您可以在模型卡片元数据中指定非文本示例输入。有关所有小部件类型的示例输入格式的完整列表,请参阅此处。对于视觉和音频小部件类型,请提供带有 src 而不是 text 的示例输入。

例如,允许用户从两个示例音频文件中进行选择,以执行自动语音识别任务,方法如下:

widget:
- src: https://example.org/somewhere/speech_samples/sample1.flac
  example_title: Speech sample 1
- src: https://example.org/somewhere/speech_samples/sample2.flac
  example_title: Speech sample 2

请注意,您也可以在模型仓库中包含示例文件,并将其用作:

widget:
  - src: https://huggingface.co/username/model_repo/resolve/main/sample1.flac
    example_title: Custom Speech Sample 1

但更方便的是,如果文件位于相应的模型仓库中,您可以直接使用仓库内的文件名或文件路径:

widget:
  - src: sample1.flac
    example_title: Custom Speech Sample 1

或者如果它嵌套在仓库中:

widget:
  - src: nested/directory/sample1.flac

我们在 default-widget-inputs.ts 文件中为某些语言和大多数小部件类型提供了示例输入。如果缺少某些示例,我们欢迎社区提交 PR 来添加它们!

示例输出

作为示例输入的扩展,对于每个小部件示例,您还可以选择性地直接在 output 属性中描述相应的模型输出。

当模型尚不受 Inference API(例如,模型库尚不受支持)或任何其他推理提供商支持时,这非常有用,这样模型页面仍然可以展示模型的工作方式及其给出的结果。

例如,对于一个 automatic-speech-recognition 模型:

widget:
  - src: sample1.flac
    output:
      text: "Hello my name is Julien"

output 属性应为表示 Inference API 输出的 YAML 字典。

对于输出文本的模型,请参见上面的示例。

对于输出标签的模型(例如 text-classification 模型),输出应如下所示:

widget:
  - text: "I liked this movie"
    output:
      - label: POSITIVE
        score: 0.8
      - label: NEGATIVE
        score: 0.2

最后,对于输出图像、音频或任何其他类型资产的模型,输出应包含一个 url 属性,该属性链接到仓库内的文件名或路径,或远程 URL。例如,对于一个文本到图像模型:

widget:
  - text: "picture of a futuristic tiger, artstation"
    output:
      url: images/tiger.jpg

我们还可以在 Hugging Face UI 中显示示例输出,例如,对于文本到图像模型,显示酷炫的图像生成库。

所有可能的任务/小部件类型有哪些?

您可以在 pipelines.ts 文件中找到所有受支持的任务。

以下是一些示例链接

如何控制模型小部件的 HF-Inference API 参数?

通常,模型的 HF-Inference API 使用与每个任务关联的默认 pipeline 设置。但是,如果您想更改 pipeline 的默认设置并指定其他推理参数,您可以通过模型卡片元数据直接配置参数。有关与每个任务关联的一些最常用参数,请参阅此处

例如,如果您想在小部件中为 NER 任务指定聚合策略:

inference:
  parameters:
    aggregation_strategy: "none"

或者,如果您想在小部件中更改摘要任务的温度:

inference:
  parameters:
    temperature: 0.7

推理提供商允许您以编程方式向 Hugging Face Hub 中的模型发送 HTTP 请求。它是外部提供商之上的抽象层。 ⚡⚡ 请阅读推理提供商文档,详细了解它。最后,您还可以将所有这些模型部署到专用的推理端点

< > GitHub 上更新