gr.Workflow, 노드 기반 그래프로 구현하는 AI 파이프라인
Gradio는 드래그 앤 드롭 방식의 캔버스 인터페이스를 통해 AI 파이프라인을 설계하는 `gr.Workflow`를 공개했다. 개발자는 입력(Reference), 연산(Operator), 출력(Subject) 노드를 연결하여 그래프를 구성하며, 이 설계 구조가 그대로 사용자 인터페이스(UI)와 REST API로 변환된다. 캔버스 상의 모든 노드는 개별 실행이 가능하며, 연산 과정에서 발생하는 모든 중간 결과물을 시각적으로 즉시 확인할 수 있다.
워크플로우를 구성하는 세 가지 노드는 각각 고유한 역할을 수행한다. Reference 노드는 사용자가 입력하는 데이터를 받는 진입점 역할을 하며, Subject 노드는 최종 연산 결과를 출력하는 종착점 역할을 한다. Operator 노드는 실제 작업이 수행되는 단계로, 개발자가 직접 작성한 파이썬 함수, 허깅페이스 추론 제공자(Hugging Face Inference Providers)의 모델, 다른 그래디오 스페이스(Gradio Space), 또는 허브 데이터셋의 특정 행을 연산자로 지정할 수 있다.
노드 간의 연결은 타입 기반 포트를 드래그하여 수행하며, 서로 호환되는 데이터 타입끼리만 연결되도록 제약 조건이 설정되어 있다. 사용자가 연결을 마친 뒤 Run 버튼을 누르면 정의된 그래프 순서에 따라 연산이 실행된다. 이렇게 완성된 워크플로우는 허깅페이스 스페이스(Hugging Face Spaces)를 통해 단 한 번의 명령으로 배포되며, 별도의 서버 설정 없이도 즉시 웹 서비스 형태로 작동한다.
팬아웃(Fan-out) 패턴을 통한 병렬 연산과 데이터 흐름
`gr.Workflow`는 하나의 입력값이 여러 연산자로 동시에 전달되는 팬아웃(Fan-out) 구조를 지원하여 처리 효율을 극대화한다. 팬아웃 패턴은 단일 데이터 소스가 여러 개의 처리 경로를 동시에 트리거하는 방식으로, 순차적 처리 방식보다 전체 워크플로의 응답 시간을 단축시킨다. 개발자는 포트 연결 상태를 통해 입력 데이터가 어떤 경로로 분산되는지 직관적으로 파악할 수 있다.
Generative Art Lab 사례는 하나의 프롬프트가 세 가지 경로의 연산으로 분산되는 팬아웃 구조를 보여준다. 사용자가 텍스트 프롬프트를 입력하면, 이 데이터는 FLUX 모델 노드 두 개와 LLM 노드 하나로 동시에 전달된다. FLUX 모델은 각각 수채화 버전과 사이버펑크 버전의 재해석 이미지를 생성하고, LLM은 갤러리 타이틀을 작성하며, 이 모든 과정이 병렬로 수행된다.
Data Detective 사례는 Datasets Server API를 통해 입력받은 데이터셋 ID를 네 개의 분석 노드로 동시에 분산시킨다. 입력된 ID는 개요 카드 생성, 첫 몇 행의 프리뷰, 컬럼별 통계 계산, 분포 차트 생성이라는 네 가지 독립적인 연산 노드로 전달된다. 각 노드는 다른 노드의 완료 여부와 상관없이 독립적으로 결과를 도출하므로, 사용자는 데이터셋의 전반적인 특성을 대기 시간 없이 한 번에 확인할 수 있다.
HF Inference Providers와 ZeroGPU를 활용한 연산 최적화
Hugging Face Inference Providers를 사용하면 내부 GPU 자원을 할당하지 않고도 외부 서버의 모델 노드를 호출해 연산 비용을 분산할 수 있다. Qwen-Image-Edit 모델을 호출하는 파이프라인이 대표적인 사례다. 사용자가 이미지와 수정 요청 텍스트를 입력하면, 모든 추론 연산은 외부 추론 제공자 서버에서 처리되고 결과값만 다시 그래디오 인터페이스로 전달된다.
단순 API 호출 외에 복잡한 파이썬 로직이 필요한 경우에는 fn 노드를 활용한다. fn 노드는 일반 파이썬 함수를 실행할 수 있는 환경을 제공하며, 이를 통해 외부 API 호출과 내부 연산을 자유롭게 혼합할 수 있다. 예를 들어 이미지 생성은 추론 제공자 노드에서 처리하고, 생성된 이미지에 어울리는 제목을 추출하는 작업은 LLM을 호출하는 fn 노드에서 처리하는 식의 구성이 가능하다.
내부 GPU 자원의 효율적 관리를 위해 `@spaces.GPU` 데코레이터를 통한 ZeroGPU 동적 자원 할당 방식을 지원한다. 개발자가 파이썬 함수에 해당 데코레이터를 붙이면, ZeroGPU는 노드가 실행되는 시점에만 GPU를 점유하고 작업이 종료되는 즉시 자원을 해제한다. LTX-Video 모델을 Diffusers 라이브러리로 로드하여 실행하는 애니메이터 데모의 경우, 이 방식을 통해 개별 요청 시에만 자원을 할당함으로써 실행 효율을 높인다.
UI 설계와 동시에 생성되는 REST API 엔드포인트
`gr.Workflow`로 설계한 파이프라인은 별도의 추가 작업 없이 즉시 REST API로 기능한다. 워크플로우 내의 각 출력(Subject) 노드에 지정된 라벨이 그대로 REST 엔드포인트의 이름으로 변환되어 할당된다. 예를 들어 AI Media Studio 워크플로우에서 출력 노드 이름을 sticker, voiceover, episode_title로 설정하면, 각각 `/sticker`, `/voiceover`, `/episode_title`이라는 독립적인 API 주소가 자동으로 생성된다.
파이썬 환경에서는 `GradioClient` 라이브러리를 사용하여 이러한 엔드포인트를 직접 호출할 수 있다. 개발자는 배포된 스페이스의 URL과 `api_name` 식별자를 입력하여 UI 조작 없이 특정 노드의 결과값만 추출할 수 있다.
from gradio_client import GradioClient
client = GradioClient('space_name')
result = client.predict(
api_name='/sticker',
api_input=[...]
)표준 HTTP 통신이 필요한 환경에서는 `curl` 명령어를 통해 엔드포인트에 접근할 수 있다. HTTP POST 방식으로 JSON 데이터를 전송하면 서버 측 워크플로우가 실행되어 결과가 반환되므로, 레거시 시스템이나 타 언어 기반 백엔드 서버와의 연동이 용이하다.
curl -X POST https://space_url/sticker -d '{"data": "value"}'AI 엔지니어의 프로토타이핑 및 배포 공수 변화
엔지니어는 UI 코드를 수정하는 대신 캔버스에서 노드 간의 연결선을 바꾸는 재배선(Rewiring) 방식으로 데이터 흐름을 즉시 변경한다. 모든 워크플로우 정의는 JSON 스키마를 기반으로 이루어지며, 이를 통해 설계한 연산 순서와 흐름을 파일 형태로 저장하거나 다른 프로젝트에 복제하여 사용할 수 있다. 세부적인 연산자 종류와 재사용 가능한 패턴은 gr.Workflow 가이드에서 확인할 수 있다.
`gr.Workflow`는 AUTOMATIC1111과 같이 복잡한 파라미터를 다루는 애플리케이션 수준의 구현까지 가능하게 한다. 새로운 기능을 추가할 때 API 엔드포인트를 설계하고 UI 컴포넌트를 연결하는 파이썬 코드를 작성하는 대신, 노드 배치와 연결이라는 시각적 작업으로 대체한다. 이를 통해 엔지니어는 인프라 설정이나 프론트엔드 구현 같은 부차적인 작업에서 벗어나 모델의 입력·출력 값과 연산 순서라는 핵심 로직에만 집중할 수 있다.
결과적으로 설계된 그래프 자체가 사용자 인터페이스이자 API 서버 역할을 동시에 수행함으로써, 아이디어 검증부터 프로토타입 제작까지의 시간을 획기적으로 단축한다. 이는 UI 개발 없이 파이프라인 설계만으로 개별 출력 단계별 REST 엔드포인트를 확보할 수 있는 효율성을 제공하며, 연구 환경에서 여러 모델을 조합해 실험적인 파이프라인을 구축해야 하는 개발 공수를 크게 줄여준다.



