З’єднайте, запустіть, розгорніть: робочі процеси ШІ в Gradio
gr.Workflow, вбудований безпосередньо в Gradio, перетворює конвеєр на інтерфейс. Ви описуєте свої кроки як граф типізованих вузлів, а Gradio надає полотно з підтримкою перетягування, де кожен вузол можна запустити й побачити кожен проміжний результат. Цей самий граф також є REST API та розгортанням у Hugging Face Spaces за допомогою однієї команди.
Найкращий спосіб зрозуміти ідею — побачити кілька робочих процесів у дії. Кожен застосунок нижче — це живий Space на Hugging Face, який можна відкрити, запустити та дублювати.
Редагування зображення
Завантажте зображення, введіть опис редагування («перетворити його на засніжену зимову сцену», «додати сонцезахисні окуляри», «зробити автомобіль червоним») і отримайте відредаговане фото. Увесь застосунок — це один вузол, який викликає Qwen-Image-Edit через Hugging Face Inference Providers.
👉 Спробувати конвеєр редагування зображень
Поєднуйте реальні моделі в медіастудію
Один граф, три конвеєри. Почніть із підказки та згенеруйте зображення за допомогою FLUX, а потім передайте його до Gradio Space для видалення фону, щоб перетворити його на наліпку. Тема перетворюється на голосовий супровід через Gradio Space для синтезу мовлення з тексту, а та сама тема стає привабливою назвою епізоду через виклик LLM.
Це одне полотно, два виклики моделей через Hugging Face Inference Providers і два виклики Gradio Spaces.
Оскільки це робочий процес, кожен із трьох результатів також отримує власну REST-кінцеву точку: /sticker, /voiceover і /episode_title. Ви можете викликати будь-яку з них безпосередньо з коду, не відкриваючи інтерфейс. Див. розділ «Виклик із коду» нижче, де наведено приклад, який можна запустити.
Паралельна генерація зображень із розгалуженням
Введіть одну ідею, і вона одразу перетвориться на набір згенерованих творів: базове зображення від FLUX, два ШІ-переосмислення цього зображення (м’яка акварельна версія та неоновий кіберпанковий варіант) і назва галереї, написана LLM.
Кожне зображення генерується безпосередньо з підказки вузлом моделі за допомогою Inference Providers, а назва надходить із вузла fn, який викликає LLM. Це розгалуження в дії: одна ідея може одночасно подаватися на кілька операторів, які генерують результати паралельно.
👉 Спробувати Generative Art Lab
Профілювання набору даних Hugging Face
Введіть ідентифікатор набору даних Hugging Face, наприклад stanfordnlp/imdb або mteb/tweet_sentiment_extraction, і один вхід розгалужується на чотири вузли-оператори, які аналізують набір даних у реальному часі за допомогою API Datasets Server.
Ви отримуєте оглядову картку, попередній перегляд перших кількох рядків, статистику для кожного стовпця та діаграму розподілу — усе обчислюється незалежно й паралельно. Ось у чому сила робочих процесів!
Запуск власної моделі на GPU
Досі кожен вузол звертався до Hugging Face. Але вузол fn — це просто Python, а отже, він також може запускати модель усередині Space на GPU.
Декоруйте прив’язану функцію за допомогою @spaces.GPU, і коли вузол запуститься, ZeroGPU виділить GPU для цього виклику, запустить модель і звільнить його. Нам не завжди потрібно покладатися на Inference Providers або наявні Gradio Spaces.
Перегляньте цю демонстрацію, яка анімує нерухоме зображення за допомогою Lightricks/LTX-Video, завантаженої через Diffusers і запущеної повністю через один вузол. gr.Workflow не потрібно знати нічого про налаштування вашого GPU. Він просто викликає прив’язану функцію.
Як це працює — коротко
Кожен робочий процес — це граф із трьома типами вузлів: посилання (ваші входи), оператори (кроки, які виконують роботу) і об’єкти (ваші виходи). Оператором може бути ваша власна функція Python, модель у Hugging Face Inference Providers, інший Gradio Space або рядок із набору даних Hub. З’єднайте їх, перетягуючи між типізованими портами, натисніть Run і спостерігайте, як кожен результат з’являється на своєму місці.
Виклик із коду
Кожен створений вами робочий процес також є API — без додаткових зусиль. Кожен вихід стає REST-кінцевою точкою, названою за його міткою, і ви можете викликати її з Python за допомогою клієнта Gradio. Ось робочий приклад без токена для демонстраційного Space із кількома кінцевими точками, без жодних змін:
from gradio_client import Client
client = Client("ysharma/gr-workflow-multi-endpoint-API")
print(client.predict("hello there friend", api_name="/word_count"))
print(client.predict(20, api_name="/fahrenheit"))
Кінцеві точки, які викликають модель або Space, працюють із токеном Hugging Face, тож передайте його під час створення клієнта:
from gradio_client import Client, handle_file
client = Client("ysharma/gr-workflow-image-editor", token="hf_...")
edited = client.predict(
handle_file("dog.jpg"),
"turn it into a snowy winter scene",
api_name="/edited_image",
)
Віддаєте перевагу звичайному HTTP? До кожної кінцевої точки також можна звернутися через curl:
curl -s https://ysharma-gr-workflow-multi-endpoint-API.hf.space/gradio_api/call/word_count \
-H "Content-Type: application/json" -d '{"data": ["hello there friend"]}'
Створіть власний
Найшвидший спосіб почати — відкрити будь-яку демонстрацію вище, натиснути Duplicate і почати перебудовувати зв’язки. У Python це виглядає так:
import gradio as gr
def your_function(text: str) -> str:
pass
gr.Workflow(bind=[your_function]).launch()
Повний огляд, типи операторів, схему JSON і багаторазово використовувані шаблони дивіться в офіційному посібнику gr.Workflow у документації Gradio.
Ви навіть можете створити щось таке складне, як AUTOMATIC1111, за допомогою gr.Workflow. Слідкуйте за нашою наступною публікацією, де ми крок за кроком покажемо, як це створити. А ось невеликий анонс 😉👇
Моделі, згадані в цій статті 4
Spaces, згадані в цій статті 6
Спільнота
· Зареєструйтеся або увійдіть, щоб залишити коментар
Моделі, згадані в цій статті 4
Spaces, згадані в цій статті 6
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.