Hub documentation
Tarefas
Tarefas
O que é uma tarefa?
As tarefas, ou tipos de pipeline, descrevem a “forma” da API de cada modelo (entradas e saídas) e são usadas para determinar qual API de Inferência e widget queremos exibir para um modelo específico.

Essa classificação é relativamente de alto nível (você sempre pode adicionar nomes de tarefas mais específicos nas tags do seu modelo), então raramente você precisará criar uma nova tarefa. Se você quiser adicionar suporte para uma nova tarefa, este documento explica os passos necessários.
Visão geral
Ter uma nova tarefa integrada ao Hub significa que:
- Os usuários podem pesquisar todos os modelos – e conjuntos de dados – de uma tarefa específica.
- A API de Inferência suporta a tarefa.
- Os usuários podem testar modelos diretamente com o widget. 🏆
Observe que você não precisa implementar todas as etapas por conta própria. Adicionar uma nova tarefa é um esforço comunitário, e várias pessoas podem contribuir. 🧑🤝🧑
Para iniciar o processo, abra uma nova issue no repositório huggingface_hub. Use o modelo “Adding a new task”. ⚠️Antes de fazer qualquer codificação, é sugerido revisar este documento. ⚠️
O primeiro passo é enviar um modelo para a sua tarefa proposta. Depois que você tiver um modelo no Hub para a nova tarefa, o próximo passo é ativá-lo na Inference API. Há três tipos de suporte dos quais você pode escolher:
- 🤗 usando um modelo do
transformers - 🐳 usando um modelo de uma biblioteca oficialmente suportada
- 🖨️ usando um modelo com código de inferência personalizado. Essa opção experimental tem desvantagens, então recomendamos usar uma das outras abordagens.
Por fim, você pode adicionar alguns elementos de interface, como o ícone da tarefa e o widget, que completam a integração no Hub. 📷
Algumas etapas são independentes; não é necessário executá-las em ordem. Você não precisa da API de Inferência para adicionar o ícone. Isso significa que, mesmo que ainda não haja integração completa, os usuários ainda podem buscar modelos de uma tarefa específica.
Adicionando novas tarefas ao Hub
Usando a biblioteca transformers do Hugging Face
Se o seu modelo for um modelo baseado em transformers, existe um mapeamento 1:1 entre a tarefa da Inference API e uma classe pipeline. Aqui estão alguns exemplos de PRs da biblioteca transformers:
Depois que o pipeline for enviado e implantado, você deve poder usar a Inference API para o seu modelo.
Usando a API de Inferência da Comunidade com uma biblioteca compatível
O Hub também suporta mais de 10 bibliotecas de código aberto na Community Inference API.
Adicionar uma nova tarefa é relativamente simples e requer 2 PRs:
- PR 1: Adicionar a nova tarefa à API validação. Este código garante que a entrada de inferência seja válida para uma tarefa específica. Alguns exemplos de PRs:
- PR 2: Adicione a nova tarefa a uma imagem docker de biblioteca. Você também deve adicionar um modelo em
docker_images/common/app/pipelinespara facilitar a integração da tarefa em outras bibliotecas. Aqui está um exemplo de PR:
Adicionando a API de Inferência da Comunidade para um protótipo rápido
Meu modelo não é suportado por nenhuma biblioteca. Estou perdido? 😱
Recomendamos o uso de Hugging Face Spaces para esses casos de uso.
Elementos de interface
O Hub permite que os usuários filtrem modelos por uma tarefa específica. Para isso, é necessário adicionar a tarefa em vários locais. Você também poderá escolher um ícone para a tarefa!
- Adicione o tipo de tarefa a
Types.ts
Em huggingface.js/packages/tasks/src/pipelines.ts, você precisa fazer algumas coisas
- Adicione o tipo a
PIPELINE_DATA. Observe que os tipos de pipeline são classificados em diferentes categorias (NLP, Áudio, Visão Computacional e outros). - Você também precisará preencher pequenas alterações em huggingface.js/packages/tasks/src/tasks/index.ts
- Escolha um ícone
Você pode adicionar um ícone no diretório lib/Icons. Normalmente, escolhemos ícones carbon de https://icones.js.org/collection/carbon. Adicione também o ícone ao PipelineIcon.
Widget
Quando a tarefa está em produção, o que poderia ser mais empolgante do que implementar uma forma de os usuários interagirem diretamente com os modelos no navegador? 🤩 Você pode encontrar todos os widgets aqui.
Se você tiver interesse em contribuir com um widget, pode consultar a implementação de todos os widgets.
Update on GitHub