Hub documentation
Задачи
Задачи
Что такое задача?
Задачи, или типы конвейеров, описывают «форму» 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:
- PR 1: Добавьте новую задачу в API валидация. Этот код обеспечивает, что входные данные для инференса корректны для данной задачи. Примеры PR:
- PR 2: Добавьте новую задачу в docker-образ библиотеки. Также следует добавить шаблон в
docker_images/common/app/pipelines, чтобы упростить интеграцию задачи в другие библиотеки. Вот пример PR:
Добавление Community Inference API для быстрого прототипа
Моя модель не поддерживается ни одной библиотекой. Всё потеряно? 😱
Мы рекомендуем использовать Hugging Face Spaces для этих сценариев.
Элементы интерфейса
Hub позволяет пользователям фильтровать модели по конкретной задаче. Для этого необходимо добавить задачу в несколько мест. Вы также сможете выбрать иконку для задачи!
- Добавьте тип задачи в
Types.ts
В huggingface.js/packages/tasks/src/pipelines.ts нужно сделать несколько вещей
- Добавьте тип в
PIPELINE_DATA. Обратите внимание, что типы пайплайнов сгруппированы по категориям (NLP, Audio, Computer Vision и другие). - Вам также потребуется внести небольшие изменения в huggingface.js/packages/tasks/src/tasks/index.ts
- Выберите значок
Вы можете добавить иконку в каталог lib/Icons. Обычно мы выбираем иконки carbon с сайта https://icones.js.org/collection/carbon. Также добавьте иконку в PipelineIcon.
Виджет
Когда задача уже работает в продакшене, что может быть увлекательнее, чем реализовать возможность для пользователей взаимодействовать с моделями прямо в браузере? 🤩 Все виджеты можно найти здесь.
Если вы заинтересованы в том, чтобы внести вклад в разработку виджета, вы можете ознакомиться с реализацией всех виджетов.
Update on GitHub