Sakhanda Wire
NVDA $230.86 +1.09% MSFT $512.80 -0.02% GOOGL $338.24 -1.70% META $725.93 +0.10% AMZN $248.23 -0.37%
← Към новините

Пресъздаване на AUTOMATIC1111 с работен процес в Gradio

Пресъздаване на AUTOMATIC1111 с Gradio Workflow
Публикувано 10 септември 2026 г.
Актуализиране в GitHub
В предишната ни публикация създадохме пет малки графа gr.Workflow и загатнахме какво би било необходимо за изграждането на нещо толкова сложно като stable-diffusion-webui на AUTOMATIC1111. В тази публикация ви представяме Workflow1111, в който пресъздадохме по-голямата част от функционалността на AUTOMATIC1111 като едно платно за работен процес.

Workflow1111 е граф от единадесет медийни конвейера, изградени с помощта на седемдесет и три възела. Той обединява водещи модели за преобразуване на текст в изображение, корекция с висока резолюция, преобразуване на изображение в изображение, матрици от подканвания, разпитване от VLM, маски от откриване до inpaint, анотатори в стил ControlNet, премахване на фон, съхраняване на PNG Info и преобразуване на изображение във видео.

Можете да изпълнявате всеки от тези конвейери, като влезете в акаунта си в Hugging Face или предоставите токен за достъп. След като влезете, извикванията към моделите използват вашата собствена квота.

👉 Изпробвайте Workflow1111 или дублирайте Space и започнете да го пренастройвате за собствения си случай на употреба.

Нека разгледаме платното.

Какво има на платното

Всички медийни конвейери са изградени от същите четири вида оператори, разгледани в предишната ни публикация и в официалното ръководство. Всеки възел на платното обвива един оператор, а входовете и изходите на оператора се превръщат в портове, към които свързвате ръбове. Като кратък справочник за четирите вида оператори: fn е Python функция, model е модел, извикан чрез InferenceClient, space е друг Gradio Space, а dataset е ред от набор от данни в Hub.

Нека разгледаме конвейерите един по един.

Преобразуване на текст в изображение

Това е основният конвейер. Той разполага с контролите, които бихте очаквали в раздела txt2img на A1111: отрицателно подканване, стъпки, CFG, seed, ширина и височина, както и поле model_id за избор на контролна точка. Подканването първо преминава през възел fn за изграждане на подканване, който добавя избрания стилов шаблон и почиства текста, след което се подава към възел model, който извиква контролната точка чрез Inference Providers. Възел fn за последваща обработка записва параметрите на генерирането в метаданните на PNG файла, които конвейерът PNG Info прочита по-късно.

Корекция с висока резолюция

В Automatic1111 корекцията с висока резолюция първо увеличава мащаба на резултата от txt2img, а след това изпълнява втори проход за премахване на шума. Тук вместо това има обход от два възела. Резултатът от преобразуването на текст в изображение се подава към възел model на FLUX.1-Kontext с инструкция за прецизиране („подобрете фините детайли и микротекстурата, запазете композицията идентична“) и се връща по-рязък и по-голям.

Преобразуване на изображение в изображение

Същият възел Kontext изпълнява и ролята на раздела за преобразуване на изображение в изображение. Качете изображение, опишете желаната промяна и той ще върне редактираното изображение.

Нека LLM напише подканването

Нека LLM напише подканването

Започнете с грубо подканване като „Фар в буря.“ Този конвейер го изпраща към възел model на Qwen3-4B, а малък възел fn превръща отговора в чист списък от тагове, ограничен до четиридесет: „бурно море, мокри скали, драматична композиция, снимка от нисък ъгъл, обемно осветление, зловещ тон“. Можете да свържете всеки възел на дифузионен модел към този изход, за да изобразите изображението.

За разлика от ComfyUI тук няма персонализиран възел. В работен процес на Gradio LLM и дифузионният модел са обикновени оператори model на едно и също платно.

Прочитане на изображение обратно в подканване

Това е подобно на бутона Interrogate на AUTOMATIC1111, но разпитването се извършва от VLM вместо от CLIP. Qwen2.5-VL разглежда снимка от нощен пазар и записва подканване, което би могло да я създаде. Класификаторен възел ViT прочита същото изображение и връща етикети: ресторант 51,9%, тютюнев магазин 15,6%, магазин за играчки 9,1%.

И двата възела използват един и същ вход за изображение, така че gr.Workflow ги изпълнява паралелно и получавате и двата отговора приблизително за времето, необходимо за изпълнението на единия.

От откриване към маска за inpaint

AUTOMATIC1111 ви кара да нарисувате маска за inpaint на ръка. Вместо това този конвейер генерира маска чрез детектор. DETR открива шест обекта в улична снимка (трима души, куче, велосипед и автомобил), след което работният процес се разделя на два клона: единият рисува откритите рамки върху оригиналното изображение, а другият ги превръща в маска, която можете да подадете към последващ конвейер за inpaint.

Рисуването и създаването на маската се извършват локално с Pillow и NumPy. Само извикването на детектора напуска машината.

Матрица от подканвания

Това е подобно на матрицата от подканвания на AUTOMATIC1111. Базово подканване „самотен дъб“ се комбинира с четири наставки (при изгрев, по време на гръмотевична буря, под Млечния път, в есенна мъгла) от възел fn, а всеки вариант се подава към собствен възел за преобразуване на текст в изображение. Последен възел съединява четирите резултата в един контактен лист.

gr.Workflow няма оператор за цикъл, затова четирите възела за преобразуване на текст в изображение стоят един до друг на платното. Тъй като са на еднаква дълбочина на зависимостите, те се изпълняват паралелно и четирите изображения започват да се генерират едновременно.

Увеличаване на мащаба и премахване на фон

Това е подобно на раздела Extras в Automatic1111. Има два възела за увеличаване на мащаба и те използват различни подходи. Първият е локално преоразмеряване с Lanczos в възел fn, което не изисква мрежово извикване и приключва толкова бързо, колкото Pillow може да преоразмери изображението. Вторият е AuraSR ×4 и е първият възел space на платното: той извиква Space в Hub и третира резултата като всеки друг изход на възел.

Премахването на фон работи по същия начин. BRIA RMBG-2.0 е друг възел space, така че целият модел се намира в собствен Space, а това платно просто го извиква.

Анотатори

Canny, line art, sketch, luma-depth и posterize са препроцесорите, които обикновено получавате от разширението ControlNet в Automatic1111. Тук всеки от тях е възел fn, написан на обикновен NumPy, без модел зад него. При предварително заредена примерна снимка на фасада на сграда всеки анотатор отнема около половин секунда на процесор.

В приложението има 36 операторни възела, 32 от тях са възли fn, а 22 от тези възли работят изцяло в процеса, без мрежово извикване. Приблизително две трети от платното продължават да работят, ако загубите връзката си. Тъй като това са обикновени Python функции, можете да ги тествате и директно, без платно, сървър или GPU.

PNG Info

AUTOMATIC1111 съхранява подробностите за генерирането в текстовия блок parameters на PNG файла, а разделът PNG Info ги прочита обратно. Workflow1111 прави същото. Възелът за последваща обработка в конвейера за преобразуване на текст в изображение записва метаданните, а този конвейер ги прочита, включително подканването, отрицателното подканване, стъпките, CFG, seed, размера на изображението и модела.

Преобразуване на изображение във видео

Възелът за изображение, от който PNG Info прочита, подава данни и към възел Wan 2.2 I2V A14B, който го анимира; в демонстрационния пример спяща лисица се събужда и започва да се движи. Няма второ поле за качване, защото един референтен възел може да захранва толкова последващи конвейери, колкото са ви нужни, така че едно качване едновременно получава прочетени метаданни и се анимира на същото платно.

Изпълнение на модели на собствения ви GPU

Досега всяко извикване на модел е било насочено към чужд хардуер чрез Inference Providers или Space. Затова можете да изградите и изпълнявате нещо като Workflow1111, без да имате собствен GPU.

Възелът fn обаче е просто Python, така че може също да зарежда модел локално и да го изпълнява на собствения ви GPU. FastVideo/fastvideo-fasth3-preview е приложение gr.Workflow, което прави точно това. То изпълнява FastH3, дестилация в четири стъпки на MiniMax-H3, и генерира видео със саундтрак върху ZeroGPU.

Цялото приложение се свежда до една свързана функция:

@spaces.GPU(duration=get_duration, size=GPU_SIZE)
def _generate(prompt_embeds, text_token_tags, height, width, num_frames, seed):
    ...

gr.Workflow(bind={"generate": generate, "status": status}).launch()

ZeroGPU предоставя на функцията GPU, когато е необходим, и го освобождава след приключване на извикването. gr.Workflow не трябва да знае нищо за това. Той просто извиква възела fn.

Това не е специфично само за Spaces. Насочете bind= към функция, която зарежда локална контролна точка, изпълнете .launch() на собствената си машина и платното Workflow1111 ще може да управлява вашия GPU.

Всеки изход е API

Всеки изходен възел на платното се превръща в REST крайна точка, без ръчно написани маршрути. Workflow1111 предоставя девет такива: /image, /edited_image, /generated_prompt, /recovered_prompt, /detected_objects, /x_y_grid, /upscaled_local, /annotator_map и /png_info.

from gradio_client import Client

client = Client("ysharma/Workflow1111", oauth_token="hf_...")

image, params, hires = client.predict(
    "a red fox in a snowy pine forest",  
    "",                                  
    "Cinematic",                         
    "enhance fine detail",               
    api_name="/image",
)

Същите крайни точки са и MCP инструменти. Стартирайте с mcp_server=True (ръководство) и всеки изходен възел ще се появи като инструмент, който AI асистент може да извика. Насочете Claude Code, Cursor или всеки MCP клиент към URL адреса на сървъра:

{
  "mcpServers": {
    "workflow1111": {
      "url": "https://ysharma-workflow1111.hf.space/gradio_api/mcp/",
      "headers": { "X-HF-Token": "hf_..." }
    }
  }
}

Сега един агент може да генерира изображение, да прочете подканване или да изпълни откриване като стъпки от по-голяма задача, без свързващ код. Всеки извикващ изпраща собствения си токен в заглавката X-HF-Token, така че Space не съхранява собствен токен.

Мястото му спрямо ComfyUI

AUTOMATIC1111 ни даде списъка с функции, но инструментът, с който Gradio Workflow наистина се сравнява, е ComfyUI, тъй като и двата представляват графи от възли. За голяма част от нещата, които хората искат да изграждат и доставят, gr.Workflow покрива същото пространство.

  • Възелът може да използва хардуер, който не притежавате. Той може да работи чрез Inference Providers, да извика всеки Space в Hub или всеки API, или да извлича данни от набор от данни. Така Workflow1111 работи без собствен GPU.
  • Всеки изход се превръща в типизирана REST крайна точка. Крайните точки се генерират от графа.
  • Посетителите могат да изпълняват работни процеси със собствената си самоличност. Включете OAuth, споделете публичния URL адрес и всеки може да влезе и да използва приложението, без да инсталира нищо.
  • Смесвайте модели и модалности на едно и също платно. Дифузионни модели, LLM, VLM, детектори и видео модели могат да бъдат част от един и същ работен процес.
  • Имате нужда от нещо персонализирано? Напишете функция. Персонализираният възел е Python функция, така че може да прави всичко, което може Python.

Резултатът е конвейер с множество модели, който хората могат да отворят в браузър, да влязат в него, да го използват веднага и да извикват от код.

Изградете свой собствен

Workflow1111 има 73 възела, но започна само с това:

import gradio as gr

def your_function(text: str) -> str:
    pass

gr.Workflow(bind=[your_function]).launch()

bind= превръща функциите ви във възли, edges= ги свързва, а .launch() отваря платното в браузъра ви, за да можете да продължите да редактирате там. Когато е готово, gradio deploy публикува всичко в Space. Ръководството за gr.Workflow съдържа всички подробности, включително JSON схемата и всеки тип оператор.

Ако предпочитате да започнете от нещо, което вече работи, отворете Workflow1111, натиснете Дублиране и изберете един от единадесетте конвейера, който да промените: изтрийте възли, сменете модели, пренаредете потока. Ако предпочитате да започнете с нещо по-малко, предишната публикация съдържа пет работни процеса, които можете да стартирате за около минута всеки.

Каквото и да създадете, публикувайте го в X и отбележете @gradio. Ще се радваме да популяризираме работните ви процеси.

Модели, споменати в тази статия 8

Spaces, споменати в тази статия 4

Общност

преди 41 минути

Наистина впечатляващ анализ — най-много се откроява как структурата на графа ви осигурява паралелизъм безплатно (примерите с матрицата от подканвания и разпитването), без допълнителен код за оркестрация. Комбинацията от типове възли fn, model и space на едно платно също прави сравнението с ComfyUI много убедително: получавате гъвкавостта на персонализираните възли чрез обикновен Python, но и REST/MCP крайни точки без код, напълно безплатно. Интересно ми е колко сложен може да стане един canvas, преди производителността или поддръжката да се превърнат в проблем — има ли някой, който е надхвърлял 73 възела?

Качвайте изображения, аудио и видеоклипове, като ги плъзнете в текстовото поле, поставите ги или кликнете тук.
Докоснете или поставете тук, за да качите изображения

· Регистрирайте се или влезте, за да коментирате

Модели, споменати в тази статия 8

Spaces, споменати в тази статия 4

Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.

Първоначално публикувано от Hugging Face на

Прочетете оригинала в Hugging Face ↗

Текстът и изображенията са собственост на Hugging Face и са възпроизведени тук с посочване на авторството и връзка към оригиналната публикация.

← Към новините

Още новини

Всички последни новини