Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

小部件

什么是小部件?

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

以下是一些示例

您可以在这里尝试所有的小部件 here.

启用小部件

当您将模型上传到 Hub 时,会自动为您的模型创建一个小部件。为了确定要显示哪个管道和小部件(text-classificationtoken-classificationtranslation 等),我们会分析存储库中的信息,例如模型卡和配置文件中提供的元数据。这些信息被映射到一个单独的 pipeline_tag。出于简化目的,我们选择为每个模型只公开 **一个** 小部件。

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

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

您始终可以在 模型卡元数据 中使用 pipeline_tag: xxx 手动覆盖您的管道类型。(您也可以使用元数据 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"

此外,您可以在模型卡元数据中指定非文本示例输入。参考 here 获取所有小部件类型样本输入格式的完整列表。对于视觉和音频小部件类型,请使用 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 支持时(例如,模型库尚不支持或模型过大),这很有用,因此模型页面仍然可以展示模型的工作原理及其产生的结果。

例如,对于 自动语音识别 模型

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

output 属性应是一个表示 Inference API 输出的 YAML 字典。

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

对于输出标签的模型(例如,文本分类 模型),输出应如下所示

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 文件 中找到所有支持的任务。

以下是一些示例链接

如何控制模型的小部件推理 API 参数?

通常,模型的推理 API 使用与每个任务关联的默认管道设置。但是,如果您想更改管道的默认设置并指定其他推理参数,您可以直接通过模型卡片元数据配置这些参数。参考 这里 了解与每个任务关联的一些最常用的参数。

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

inference:
  parameters:
    aggregation_strategy: "none"

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

inference:
  parameters:
    temperature: 0.7

无服务器推理 API 允许您通过编程方式向 Hugging Face Hub 中的模型发送 HTTP 请求。⚡⚡ 通过阅读 推理 API 文档 了解更多信息。最后,您也可以将所有这些模型部署到专用 推理端点

< > 在 GitHub 上更新