Spaces и Gradio: демо за минуты
Учимся быстро собирать веб-демо модели без фронтенда и публиковать его в Spaces.
Gradio — Python-библиотека, которая по описанию входов и выходов автоматически строит веб-интерфейс для модели.
Зачем нужны демо
Модель в коде видят только разработчики. Чтобы её мог попробовать коллега, заказчик или потенциальный пользователь, нужен интерфейс: поле ввода и кнопка. Писать фронтенд ради этого дорого. Gradio решает задачу: вы описываете функцию и типы входов-выходов, а интерфейс генерируется сам.
Минимальное демо на Gradio
Код требует библиотеки gradio и не исполняется в браузере — он для чтения:
import gradio as gr
from transformers import pipeline
clf = pipeline("sentiment-analysis")
def analyze(text):
return clf(text)[0]
demo = gr.Interface(
fn=analyze,
inputs="text",
outputs="label",
)
demo.launch()Этот код поднимает локальный веб-сервер с полем ввода и результатом. Функция analyze — это вся ваша логика; интерфейс вокруг неё строит Gradio.
Публикация в Spaces
Чтобы демо стало доступно всем, его кладут в Space — специальный репозиторий на Hub с файлом app.py и списком зависимостей в requirements.txt. Hugging Face сам разворачивает приложение и даёт публичную ссылку.
my-space/
├── app.py (код Gradio)
├── requirements.txt (transformers, gradio, ...)
└── README.mdКак работает под капотом
Gradio запускает лёгкий веб-сервер: фронтенд (HTML/JS) отправляет ввод на бэкенд, тот вызывает вашу функцию и возвращает результат. В Spaces этот же код выполняется на серверах Hugging Face в контейнере; бесплатный тариф даёт CPU, платный — GPU для тяжёлых моделей. Типы входов-выходов ("text", "image", "audio", "label") Gradio превращает в готовые виджеты, поэтому от вас не требуется верстать.
Частые ошибки
- Забыть зависимость в requirements.txt. Space не соберётся, если не указать нужные библиотеки.
- Грузить тяжёлую модель на бесплатном CPU. Демо будет работать медленно или падать по памяти.
- Создавать pipeline внутри функции. Создавайте его один раз снаружи, иначе модель грузится на каждый запрос.
Итог
- Gradio строит веб-интерфейс по описанию входов-выходов функции.
gr.Interface(fn, inputs, outputs)— минимальное демо.- Spaces разворачивает демо на серверах Hugging Face с публичной ссылкой.
- Зависимости указывают в
requirements.txt, код — вapp.py.