- Дата публикации
Gradio Server: как подключить свой фронтенд к бэкенду Hugging Face за 50 строк кода
Что появилось / что изменилось
Hugging Face добавила в Gradio новый режим работы — gradio.Server. Это надстройка над FastAPI, которая даёт три ключевые вещи:
-
Свой фронтенд на чём угодно
Можно писать интерфейс на React, Svelte или чистом HTML/CSS/JS и при этом использовать бэкенд Gradio. Никакой привязки к компонентам Gradio. -
Очередь и управление GPU “из коробки”
gradio.Serverдобавляет к FastAPI движок Gradio: очередь запросов, SSE-стриминг, контроль конкуренции и поддержку ZeroGPU на Hugging Face Spaces через декоратор@spaces.GPU. -
Единый API для людей и скриптов
Эндпоинты, помеченные@app.api(), автоматически совместимы сgradio_client. Тот же бэкенд можно дергать из других приложений и пайплайнов.
Авторы демонстрируют это на реальном приложении Text Behind Image: весь бэкенд на Python занимает около 50 строк кода. Он загружает модель сегментации ZhengPeng7/BiRefNet, обрабатывает изображения на GPU и отдаёт прозрачные PNG.
Как это работает
gradio.Server — это FastAPI-приложение с дополнительным слоем Gradio:
-
Вы создаёте сервер так же, как обычный FastAPI:
from gradio import Server app = Server() -
Для обычных HTTP-страниц используется стандартный FastAPI-роутинг. Например, главная страница:
@app.get("/") async def homepage(): # читаем index.html с диска и отдаём как HTML -
Для ML-эндпоинтов вместо
@app.post()применяется@app.api()(пример есть в оригинале, в сокращённом коде он опущен, но логика описана явно). Этот декоратор:- ставит запросы в очередь,
- контролирует число одновременных вызовов,
- корректно работает с ZeroGPU на Spaces через
@spaces.GPU.
-
В примере Text Behind Image бэкенд делает следующее:
- загружает сегментационную модель
ZhengPeng7/BiRefNetсtrust_remote_code=True, - переводит её на
cudaи включаетtorch.set_float32_matmul_precision("high"), - принимает файл через
FileData, - прогоняет его через пайплайн
torchvision.transformsдо размера 1024×1024, - получает маску прозрачности, накладывает её как альфа-канал и сохраняет PNG.
- загружает сегментационную модель
-
Фронтенд — это обычный
index.htmlпримерно на 1300 строк: drag-and-drop канвас, слои (фон → текст → передний план), слайдеры шрифтов, цвета, тени, перспективы и экспорт в PNG. Никакого сборщика, только статический HTML/JS. -
Тот же ML-эндпоинт можно вызвать из другого сервиса:
from gradio_client import Client, handle_file client = Client("ysharma/text-behind-image") result = client.predict( image_path=handle_file("photo.jpg"), api_name="/remove_background", )
Что это значит для вас
Кому это полезно:
- Веб-разработчикам, которые привыкли к React/Svelte/чистому JS и не хотят собирать UI из компонентов Gradio.
- ML-инженерам, которым нужно быстро обернуть модель в продакшен-подобный сервис на Hugging Face Spaces, не разбираясь глубоко в FastAPI.
- Тем, кто уже использует Gradio и хочет более сложный интерфейс: канвас, свои панели, кастомные анимации.
Типичные сценарии:
- Редакторы изображений и видео с канвасом и слоями, как в примере Text Behind Image.
- Веб-IDE для кода или SQL с подсветкой, автодополнением и живой проверкой через ML.
- Конструкторы презентаций, генераторы баннеров и любые сложные UI, где стандартные компоненты Gradio не подходят.
Когда лучше не использовать:
- Если вам нужен простой демо-интерфейс к модели — классический Gradio с компонентами быстрее в разработке.
- Если команда не знакома с FastAPI и фронтендом, а нужен только минимальный UI.
- Если вы разворачиваете всё в своей инфраструктуре и уже настроили очереди/оркестрацию — дополнительный слой Gradio может быть избыточен.
Gradio и Hugging Face Spaces официально доступны через веб-интерфейс. Если доступ к Hugging Face у вас ограничен, может понадобиться VPN или собственный хостинг.
Место на рынке
По сути gradio.Server конкурирует не с GPT-5 или Claude 4, а с типовым стеком: FastAPI + Celery/Redis + самописный фронтенд.
Отличия по ключевым параметрам:
-
Развёртывание на Spaces
Вместо ручной настройки инфраструктуры вы получаете ZeroGPU, очереди и хостинг в одном месте. Для небольших и средних проектов это снижает порог входа. -
Интеграция с экосистемой Hugging Face
Модели из Transformers, Spaces,gradio_client— всё сразу работает вместе. В стандартном FastAPI это нужно собирать самому. -
Контроль конкуренции и GPU
В чистом FastAPI при двух одновременных запросах к GPU-модели вы легко получите падения или странные результаты.@app.api()добавляет предсказуемое поведение без дополнительного кода.
Прямых цифр по скорости обработки или стоимости запросов авторы не приводят. Основной упор — на том, что полноценный ML-бэкенд с очередью и ZeroGPU в примере укладывается примерно в 50 строк Python, а сложный фронтенд можно написать на привычном стеке без ограничений Gradio-компонентов.