Hub documentation

Задачи

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Задачи

Что такое задача?

Задачи, или типы конвейеров, описывают «форму» API каждой модели (входные и выходные данные) и используются для определения того, какой Inference API и какой виджет мы хотим отобразить для данной модели.

Эта классификация достаточно грубая (вы всегда можете добавить более детальные названия задач в тегах вашей модели), поэтому вам редко придётся создавать новую задачу. Если вы хотите добавить поддержку новой задачи, этот документ описывает необходимые шаги.

Обзор

Интеграция новой задачи в Hub означает, что:

  • Пользователи могут искать все модели – и наборы данных – для конкретной задачи.
  • Inference API поддерживает задачу.
  • Пользователи могут попробовать модели прямо в виджете. 🏆

Обратите внимание, что вам не обязательно реализовывать все шаги самостоятельно. Добавление новой задачи — это совместное усилие сообщества, и в него могут внести вклад многие. 🧑‍🤝‍🧑

Для начала процесса создайте новую issue в репозитории huggingface_hub. Пожалуйста, используйте шаблон «Adding a new task». ⚠️Перед написанием кода рекомендуется ознакомиться с этим документом. ⚠️

Первый шаг — загрузить модель для вашей предложенной задачи. Когда у вас появится модель для новой задачи в Hub, следующий шаг — включить её в Inference API. Доступны три типа поддержки, из которых вы можете выбрать:

  • 🤗 использование модели transformers
  • 🐳 использование модели из официально поддерживаемой библиотеки
  • 🖨️ использование модели с пользовательским кодом для вывода. Этот экспериментальный вариант имеет недостатки, поэтому мы рекомендуем использовать один из других подходов.

Наконец, вы можете добавить несколько элементов пользовательского интерфейса, таких как значок задачи и виджет, которые завершат интеграцию в Hub. 📷

Некоторые шаги независимы друг от друга; выполнять их в определённом порядке не обязательно. Для добавления иконки не требуется использовать Inference API. Это означает, что даже при отсутствии полной интеграции пользователи всё равно могут искать модели для конкретной задачи.

Добавление новых задач в Hub

Использование библиотеки Hugging Face transformers

Если ваша модель основана на transformers, то между задачей Inference API и классом pipeline существует соответствие один к одному. Вот несколько примеров PR из библиотеки transformers:

После отправки и развёртывания конвейера вы сможете использовать Inference API для вашей модели.

Использование Community Inference API с поддерживаемой библиотекой

Hub также поддерживает более 10 библиотек с открытым исходным кодом в Community Inference API.

Добавление новой задачи — относительно простой процесс, требующий 2 PR:

Добавление Community Inference API для быстрого прототипа

Моя модель не поддерживается ни одной библиотекой. Всё потеряно? 😱

Мы рекомендуем использовать Hugging Face Spaces для этих сценариев.

Элементы интерфейса

Hub позволяет пользователям фильтровать модели по конкретной задаче. Для этого необходимо добавить задачу в несколько мест. Вы также сможете выбрать иконку для задачи!

  1. Добавьте тип задачи в Types.ts

В huggingface.js/packages/tasks/src/pipelines.ts нужно сделать несколько вещей

  • Добавьте тип в PIPELINE_DATA. Обратите внимание, что типы пайплайнов сгруппированы по категориям (NLP, Audio, Computer Vision и другие).
  • Вам также потребуется внести небольшие изменения в huggingface.js/packages/tasks/src/tasks/index.ts
  1. Выберите значок

Вы можете добавить иконку в каталог lib/Icons. Обычно мы выбираем иконки carbon с сайта https://icones.js.org/collection/carbon. Также добавьте иконку в PipelineIcon.

Виджет

Когда задача уже работает в продакшене, что может быть увлекательнее, чем реализовать возможность для пользователей взаимодействовать с моделями прямо в браузере? 🤩 Все виджеты можно найти здесь.

Если вы заинтересованы в том, чтобы внести вклад в разработку виджета, вы можете ознакомиться с реализацией всех виджетов.

Update on GitHub