여러 개의 AI 모델이나 처리 단계를 조합해 애플리케이션을 만들어 본 개발자라면 공감할 문제가 있습니다. API 호출을 이어 붙이다 보면 파이프라인 디버깅이 어렵고, 중간 결과를 추적하기가 힘들죠. 10단계 워크플로우의 5번째 단계에서 문제가 생기면, 원인을 파악하려고 전체를 다시 실행해야 하는 경우도 많습니다.
대부분의 개발자는 디버깅하기 어려운 취약한 스크립트를 만들거나, 빠른 실험에는 적합하지 않은 무거운 오케스트레이션 플랫폼을 선택하게 됩니다. Daggr는 바로 이런 문제를 해결하기 위해 Gradio 팀에서 만든 도구입니다.
Daggr의 핵심은 코드 퍼스트(Code-First) 접근법입니다. 노드 기반 GUI 에디터처럼 시각적으로 노드를 끌어다 연결하는 대신, 파이썬 코드로 워크플로우를 정의합니다. 그러면 Daggr가 자동으로 시각적 캔버스를 생성해줍니다. 이렇게 하면 버전 관리가 가능한 코드의 장점과 중간 출력물을 시각적으로 검사할 수 있는 장점을 모두 누릴 수 있죠.
import random
import gradio as gr
from daggr import GradioNode, Graph
# Gradio Space를 사용해 이미지 생성
image_gen = GradioNode(
"hf-applications/Z-Image-Turbo",
api_name="/generate_image",
inputs={
"prompt": gr.Textbox(
label="Prompt",
value="A cheetah sprints across the grassy savanna.",
lines=3,
),
"height": 1024,
"width": 1024,
"seed": random.random,
},
outputs={
"image": gr.Image(label="Generated Image"),
},
)
# 다른 Gradio Space를 사용해 배경 제거
bg_remover = GradioNode(
"hf-applications/background-removal",
api_name="/image",
inputs={
"image": image_gen.image, # 이전 노드의 출력에 연결
},
outputs={
"original_image": None, # 이 출력은 숨김
"final_image": gr.Image(label="Final Image"),
},
)
graph = Graph(
name="Transparent Background Generator",
nodes=[image_gen, bg_remover]
)
graph.launch()
위 코드를 실행하면 7860 포트에 시각적 캔버스가 자동으로 서빙됩니다. 각 단계의 입력을 수정하고 출력을 검사할 수 있는 공유 가능한 라이브 링크도 생성되죠.
Daggr는 세 가지 주요 노드 타입을 지원합니다. 각 타입의 특징과 사용 사례를 정리해 보았습니다.
| 노드 타입 | 설명 | 주요 사용 사례 |
|---|---|---|
GradioNode | 공개/비공개 Gradio Space API 또는 로컬 Gradio 앱을 호출합니다. run_locally=True를 설정하면 Space를 클론하고 가상 환경을 만들어 로컬에서 실행합니다. | Hugging Face Spaces에 호스팅된 모델이나 데모를 워크플로우에 통합할 때. |
FnNode | 사용자 정의 파이썬 함수를 실행합니다. | 이미지 리사이징, 텍스트 전처리, 데이터 변환 등 커스텀 로직이 필요할 때. |
InferenceNode | Hugging Face Inference Providers를 통해 모델을 호출합니다. | 다양한 파운데이션 모델(FLUX, Kimi 등)을 API로 쉽게 사용할 때. |
특히 GradioNode의 run_locally=True 옵션은 원격 API 호출 실패 시 로컬 실행으로 우아하게 폴백(fallback)할 수 있어 워크플로우의 견고성을 높여줍니다. 자세한 내용은 공식 블로그 포스트를 참고하세요.
Daggr는 아직 베타 버전으로, 가볍고 실험에 초점을 맞추고 있습니다. API는 버전 간에 변경될 수 있으며, 로컬에 워크플로우 상태를 저장하지만 업데이트 중 데이터 손실 가능성도 있습니다.
그럼에도 불구하고, 코드로 복잡한 AI 파이프라인을 정의하고 실시간으로 시각화하며 디버깅할 수 있다는 점은 AI 애플리케이션 개발 프로세스를 혁신할 잠재력을 가지고 있습니다. 특히 연구, 프로토타이핑, 교육 목적에 매우 유용할 것으로 보입니다.
간단한 pip install daggr로 시작할 수 있으니, 다음번에 여러 단계의 AI 모델을 체이닝해야 할 프로젝트가 있다면 Daggr를 한번 시도해 보는 것을 추천합니다. 생성된 캔버스에서 개별 단계를 재실행하고 중간 결과를 살펴보면 기존의 스크립트 기반 개발과는 다른 생산성 향상을 경험할 수 있을 겁니다.