Wire It, Run It, Deploy It: Gradio의 AI 워크플로우 가이드
요약
Gradio의 gr.Workflow는 타입 지정 노드들의 그래프를 통해 AI 워크플로우 인터페이스를 구현합니다. 사용자는 드래그 앤 드롭으로 단계를 설명하고, Gradio가 이를 REST API 및 Hugging Face Spaces로 한 번에 배포할 수 있게 합니다. 이 시스템은 참조(references), 연산자(operators), 주제(subjects)의 세 가지 노드로 구성되어 복잡한 AI 파이프라인을 쉽게 구축하도록 돕습니다.
핵심 포인트
- gr.Workflow를 사용해 타입 지정 노드 기반의 워크플로우 그래프 구현 가능
- 단일 그래프로 Hugging Face Spaces 및 REST API 배포가 동시에 지원됨
- 연산자는 Python 함수, HF Inference Provider, Gradio Space 등 다양하게 구성 가능
- GPU 자원 관리가 용이하며, 바인딩된 함수에 `@spaces.GPU`로 장식하여 사용 가능
- 모든 워크플로우는 추가 작업 없이 REST 엔드포인트가 되어 API 호출이 즉시 가능함
** gr.Workflow**는 Gradio에 내장되어 파이프라인 인터페이스를 구현합니다. 사용자는 타입 지정된 노드들의 그래프로 단계를 설명하며, Gradio는 드래그 앤 드롭 캔버스를 제공하여 모든 노드가 실행 가능하고 모든 중간 결과가 보이도록 합니다. 이 동일한 그래프는 REST API이자 Hugging Face Spaces로 한 번의 명령으로 배포할 수 있습니다.
이 개념을 가장 잘 이해하는 방법은 몇 가지 워크플로우를 실제로 보는 것입니다. 아래의 모든 앱은 열고, 실행하고, 복제할 수 있는 라이브 Huggingface Space입니다.
이미지를 업로드하고 편집 지시(
입력된 이미지와 편집 지시가 하나로 분산되어 네 개의 연산 노드에 도달하며, 이 노드들은 Datasets Server API를 사용하여 데이터셋을 실시간으로 분석합니다.
사용자는 개요 카드, 처음 몇 줄의 미리보기, 열별 통계, 그리고 분포 차트를 얻게 되며, 이 모든 것이 독립적이고 병렬로 계산됩니다. 이것이 바로 워크플로우의 힘입니다!
지금까지의 모든 노드는 Hugging Face에 연결합니다. 하지만 fn 노드는 단순히 Python이기 때문에 Space 내부에서 GPU를 사용하여 모델을 실행할 수도 있습니다.
바인딩된 함수에 @spaces.GPU로 장식하면, 노드가 실행될 때 ZeroGPU가 해당 호출을 위해 GPU를 확보하고, 모델을 실행한 다음, 해제합니다. 항상 Inference Provider나 기존 Gradio Space에 의존할 필요는 없습니다.
Diffusers를 통해 로드된 Lightricks/LTX-Video를 사용하여 정지 이미지를 애니메이션화하는 이 데모를 확인해 보세요. 이는 단일 노드를 통해 완전히 실행됩니다. gr.Workflow는 사용자의 GPU 설정에 대해 아무것도 알 필요가 없습니다. 단순히 바인딩된 함수를 호출할 뿐입니다.
모든 워크플로우는 세 가지 종류의 노드로 구성된 그래프입니다: 참조(references) (사용자 입력), 연산자(operators) (작업을 수행하는 단계), 그리고 주제(subjects) (사용자 출력). 연산자는 사용자의 Python 함수, Hugging Face Inference Provider의 모델, 또 다른 Gradio Space, 또는 Hub 데이터셋의 행일 수 있습니다. 유형별 포트 사이에서 드래그하여 연결하고, 실행(Run)을 누른 다음, 각 결과가 제자리에 나타나는 것을 지켜보세요.
만드는 모든 워크플로우는 추가 작업 없이 API이기도 합니다. 각 출력은 레이블 이름으로 명명된 REST 엔드포인트가 되며, Gradio 클라이언트를 사용하여 Python에서 호출할 수 있습니다. 여기는 다중 엔드포인트 데모 Space를 대상으로 하는 실시간 토큰 없는 예시입니다. 그대로 사용 가능합니다:
from gradio_client import Client
client = Client("ysharma/gr-workflow-multi-endpoint-API")
print(client.predict("hello there friend", api_name="/word_count")) # -> 3
...
엔드포인트가 모델이나 Space를 호출하는 경우, Hugging Face 토큰 하에서 실행되므로 클라이언트를 생성할 때 토큰을 전달해야 합니다:
from gradio_client import Client, handle_file
client = Client("ysharma/gr-workflow-image-editor", token="hf_...")
edited = client.predict(
...
plain HTTP를 선호하나요? 모든 엔드포인트는 curl을 통해 접근 가능합니다.
too:
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을 클릭한 다음, 연결(rewiring)을 시작하는 것입니다. Python으로 작성할 경우 다음과 같이 짧습니다:
import gradio as gr
def your_function(text: str) -> str:
pass
...
전체 워크스루, 연산자 종류(operator kinds), JSON 스키마 및 재사용 가능한 패턴에 대해서는 Gradio 문서의 공식 gr.Workflow 가이드를 참조하세요.
심지어 gr.Workflow를 사용하여 AUTOMATIC1111만큼 복잡한 것도 구축할 수 있습니다.
다음 게시물을 주시해 주세요. 그곳에서 저희가 이를 단계별로 구축하는 과정을 안내할 예정입니다. 미리 보기입니다 😉👇
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기