Daggr - HuggingFace의 새로운 AI 워크플로우 도구

2026. 2. 2. 09:45·알쓸신잡

오늘은 최근 HuggingFace에서 공개한 Daggr라는 도구에 대해서 알아보려 한다. 2026년 1월 29일에 공개된 따끈따끈한 신상인데, AI 파이프라인 구축할 때 겪는 여러 문제들을 해결할 수 있는 도구라고 한다.

Daggr가 뭐냐면

쉽게 말해, 여러 AI 모델이나 처리 단계를 연결해서 복잡한 워크플로우를 만드는 Python 라이브러리다.
Gradio 팀에서 만들었는데, Gradio 앱, ML 모델, 커스텀 함수를 블록처럼
조립할 수 있다.

예를 들어, "이미지 생성 → 배경 제거 → 3D 에셋 변환"이라는 10단계 파이프라인이 있다고 치자.
기존 방식으로는 중간에 뭔가 잘못되면 전체를 다시 돌려야 했는데, Daggr는 각 단계를 독립적으로 재실행하고 결과를 확인할 수 있다.

나는 처음에 "또 하나의 GUI 도구겠지" 싶었는데, 막상 보니 접근이 좀 달랐다.
코드로 정의하면 자동으로 비주얼 캔버스가 생성되는 식이다.
즉 코드 기반의 버전 관리도 되면서, 디버깅은 GUI로 편하게 할 수 있다는 것이다.

 


Background

AI 애플리케이션 개발할 때 겪는 문제가 있다.

기존 방식의 문제점

  1. API 체이닝이 복잡하다
    여러 모델을 연결할 때 관리가 어렵다. 어떤 모델이 어떤 입력을 받고 출력을 내는지 추적하기 힘들다.
  2. 디버깅이 비효율적이다
    10단계 파이프라인에서 7번째 단계가 잘못됐는데, 전체를 다시 실행해야 한다니... 시간과 비용 낭비가 심하다.
  3. 중간 결과를 보기 어렵다
    각 단계의 출력이 어떤지 확인하려면 별도로 코드를 짜거나 로그를 뒤져야 한다.
  4. 선택지가 극단적이다
    • GUI 에디터: 시각적이지만 버전 관리 안 됨
    • 무거운 오케스트레이션 플랫폼: 기능은 많은데 학습 곡선 가파름
    • 순수 스크립트: 버전 관리는 되는데 디버깅 지옥

Daggr의 해결책

문제 Daggr의 접근
API 체이닝 복잡성 노드 기반 연결로 시각화
디버깅 비효율 각 노드별 독립 재실행 가능
중간 결과 추적 모든 노드 출력 자동 표시
버전 관리 vs GUI 코드 우선 + 자동 비주얼 캔버스

쉽게 말해, "Python 코드로 정의하면 알아서 GUI가 생기고, 각 단계별로 실행/검사할 수 있다"는 것이다.


핵심 기능들

1. 코드 기반 + 자동 시각화

Daggr의 가장 큰 특징은 이거다.

# 코드로 정의
image_gen = GradioNode(...)
bg_remover = GradioNode(...)
graph = Graph(nodes=[image_gen, bg_remover])
graph.launch()  # 자동으로 비주얼 캔버스 생성

 

 

이렇게 하면 자동으로 각 노드가 시각화되고, 연결 관계가 그려진다. Git으로 코드 관리도 되고, 디버깅은 GUI로 할 수 있다니 꽤 괜찮은 아이디어다.

 

2. 노드별 재실행

10단계 파이프라인에서 7번째 단계만 문제면? 그 단계만 다시 돌리면 된다. 이전 단계들의 결과는 캐시되어 있어서 시간 낭비가 없다.

심지어 "백업 노드"라는 게 있어서, 특정 모델이나 Space를 다른 걸로 교체해서 다시 실행할 수도 있다고 한다. A 모델로 했는데 결과가 별로면, B 모델로 바꿔서 해당 단계만 재실행하는 식이다.

3. Gradio 통합

Gradio 팀이 만들었으니 당연한데, Gradio Space를 그냥 갖다 쓸 수 있다. 어댑터나 래퍼 없이 Space 이름만 입력하면 끝이다.

node = GradioNode(
    "hf-applications/Z-Image-Turbo",
    api_name="/generate_image",
    inputs={"prompt": gr.Textbox(...)},
    outputs={"image": gr.Image(...)},
)

 

공개 Space든 비공개 Space든 참조 가능하고, 심지어 run_locally=True 옵션을 주면 Space를 로컬로 복제해서 격리된 가상환경에서 실행한다. 로컬 실행 실패하면 자동으로 원격 API로 폴백된다고 한다.

4. 상태 지속성 (State Persistence)

Daggr는 워크플로우 상태를 자동으로 저장한다.

  • 입력값
  • 캐시된 결과
  • 캔버스 위치

즉, 작업하다가 브라우저 끄고 다시 켜도 이어서 할 수 있다는 얘기다. "Sheets"라는 기능도 있어서 동일한 앱 내에서 여러 워크스페이스를 유지할 수 있다고 한다.


지원하는 노드 타입

Daggr는 3가지 타입의 노드를 지원한다.

1️⃣ GradioNode - Gradio Space 또는 로컬 앱

# 원격 Space 호출
image_gen = GradioNode(
    "hf-applications/Z-Image-Turbo",
    api_name="/generate_image",
    inputs={
        "prompt": gr.Textbox(label="Prompt", value="A cheetah...", lines=3),
        "height": 1024,
        "width": 1024,
        "seed": random.random,
    },
    outputs={
        "image": gr.Image(label="Generated Image"),
    },
)

# 로컬 실행
bg_remover = GradioNode(
    "hf-applications/background-removal",
    api_name="/image",
    run_locally=True,  # Space를 로컬에 복제해서 실행
    inputs={"image": gr.Image(label="Input")},
    outputs={"final_image": gr.Image(label="Output")},
)

 

run_locally=True를 쓰면 Space가 자동으로 복제되고, 격리된 가상환경에서 앱이 실행된다. 실패하면 알아서 원격으로 전환된다.

2️⃣ FnNode - 커스텀 Python 함수

def downscale_image(image, scale: float = 0.25):
    pil_img = Image.open(image)
    w, h = pil_img.size
    new_w = int(w * scale)
    new_h = int(h * scale)
    resized = pil_img.resize((new_w, new_h), resample=Image.LANCZOS)
    return resized

downscaler = FnNode(
    downscale_image,
    name="Downscale image",
    inputs={
        "image": previous_node.output,  # 이전 노드 연결
        "scale": gr.Slider(minimum=0.25, maximum=0.75, value=0.25),
    },
    outputs={
        "image": gr.Image(label="Downscaled Image"),
    },
)

일반 Python 함수를 노드로 만들 수 있다. 데이터 전처리나 간단한 변환 작업에 유용하다.

3️⃣ InferenceNode - HuggingFace Inference Providers

flux_enhancer = InferenceNode(
    model="black-forest-labs/FLUX.2-klein-4B:fal-ai",  # model:provider 형식
    inputs={
        "image": downscaler.image,  # 이전 노드 출력 연결
        "prompt": gr.Textbox(label="Prompt", value="Transform this into 3D"),
    },
    outputs={
        "image": gr.Image(label="Enhanced Image"),
    },
)

HuggingFace Inference API를 바로 호출할 수 있다. model:provider 형식으로 지정하면 된다.


설치 및 실행

설치

pip install daggr
# 또는
uv pip install daggr

Python 3.10 이상이 필요하다.

배포

로컬 공유 링크:

graph.launch(share=True)  # 공개 URL 생성

HuggingFace Spaces 배포:

  1. requirements.txt에 daggr 추가
  2. Gradio SDK로 Space 생성
  3. 코드 푸시

⚠️ 주의: InferenceNode 사용 시 HuggingFace 세밀한 액세스 토큰(fine-grained token)으로 "Inference Providers 호출" 권한만 부여하는 게 안전하다.


현재 상태 및 주의사항

Daggr는 베타 버전이다. 즉 API가 변경될 수 있다는 얘기다.

주의할 점:

  • 워크플로우 상태는 로컬에 저장되는데, 업데이트 중 데이터 손실 가능성이 있다고 한다.
  • 아직 초기 단계라 버그나 예상치 못한 동작이 있을 수 있다.
  • 피드백은 GitHub Issues로 보내면 된다.

예제 Space:

 

Daggr Image To 3d - a Hugging Face Space by merve

This app transforms your uploaded images into professional 3D-ready assets. First, it removes the background from your image, then enhances it with AI to create a clean 3D render. Finally, it gener...

huggingface.co

 

여기 들어가서 실제로 어떻게 동작하는지 확인해 볼 수 있다.


마무리

핵심 정리:

  • 코드 기반 + 자동 시각화: 버전 관리와 직관성을 둘 다 잡음
  • 노드별 재실행: 디버깅 효율성 대폭 향상
  • Gradio 통합: Space를 그냥 갖다 쓸 수 있음
  • 상태 지속성: 작업 이어하기 가능

나는 아직 실제 프로젝트에 써본 건 아니지만, 프로토타이핑이나 빠른 실험에는 상당히 유용할 것 같다는 생각이 든다. 특히 여러 모델을 조합해서 뭔가 만들 때 기존 방식보다 훨씬 편할 것 같다.

다만 베타라서 프로덕션에 바로 쓰기는 좀 그렇고, 앞으로 어떻게 발전할지 지켜봐야 할 듯하다. 관심 있으면 한번 써보길 바란다!


참고 자료:

  • HuggingFace 공식 블로그: Introducing Daggr
  • Daggr GitHub Repository
  • 예제 Space: daggr-image-to-3d
728x90

'알쓸신잡' 카테고리의 다른 글

Cloudflare R2 가입 & 설정 가이드  (0) 2026.02.05
Claudian-옵시디언에서 Claude Code 사용하기  (0) 2026.02.04
Microsoft VibeVoice-ASR  (0) 2026.02.02
PaddleOCR-VL-1.5-초경량 OCR의 새로운 강자  (0) 2026.02.02
STAX - 구글이 내놓은 LLM 평가 플랫폼  (0) 2026.01.26
'알쓸신잡' 카테고리의 다른 글
  • Cloudflare R2 가입 & 설정 가이드
  • Claudian-옵시디언에서 Claude Code 사용하기
  • Microsoft VibeVoice-ASR
  • PaddleOCR-VL-1.5-초경량 OCR의 새로운 강자
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (481)
      • 알쓸신잡 (88)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home

    ✏️글쓰기
    💻 관리

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    나동빈
    그리디
    DFS
    이것이취업을위한코딩테스트다
    dp
    파이썬
    BFS
    이코테
    이분탐색
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바