小部件
什么是小部件?
许多模型存储库都拥有一个小部件,允许任何人在浏览器中直接运行推断!
以下是一些示例
- 命名实体识别 使用 spaCy.
- 图像分类 使用 🤗 Transformers
- 文本转语音 使用 ESPnet.
- 句子相似性 使用 Sentence Transformers.
您可以在这里尝试所有的小部件 here.
启用小部件
当您将模型上传到 Hub 时,会自动为您的模型创建一个小部件。为了确定要显示哪个管道和小部件(text-classification
、token-classification
、translation
等),我们会分析存储库中的信息,例如模型卡和配置文件中提供的元数据。这些信息被映射到一个单独的 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 文件 中找到所有支持的任务。
以下是一些示例链接
文本分类
,例如FacebookAI/roberta-large-mnli
词语分类
,例如dbmdz/bert-large-cased-finetuned-conll03-english
问答
,例如distilbert/distilbert-base-uncased-distilled-squad
翻译
,例如google-t5/t5-base
摘要
,例如facebook/bart-large-cnn
对话
,例如facebook/blenderbot-400M-distill
文本生成
,例如openai-community/gpt2
填空
,例如distilbert/distilroberta-base
零样本分类
(在 nli文本分类
模型上实现),例如facebook/bart-large-mnli
表格问答
,例如google/tapas-base-finetuned-wtq
句子相似度
,例如osanseviero/full-sentence-distillroberta2
如何控制模型的小部件推理 API 参数?
通常,模型的推理 API 使用与每个任务关联的默认管道设置。但是,如果您想更改管道的默认设置并指定其他推理参数,您可以直接通过模型卡片元数据配置这些参数。参考 这里 了解与每个任务关联的一些最常用的参数。
例如,如果您想在小部件中为 NER 任务指定聚合策略
inference:
parameters:
aggregation_strategy: "none"
或者如果您想更改小部件中摘要任务的温度
inference:
parameters:
temperature: 0.7
无服务器推理 API 允许您通过编程方式向 Hugging Face Hub 中的模型发送 HTTP 请求。⚡⚡ 通过阅读 推理 API 文档 了解更多信息。最后,您也可以将所有这些模型部署到专用 推理端点。
< > 在 GitHub 上更新