Daggr 소개: 시각적 검사를 통한 AI 앱 프로그래밍 방식 체인

Hugging Face는 Daggr라는 오픈소스 Python 라이브러리를 소개했습니다. 이 라이브러리는 Gradio 앱, 머신러닝 모델, 그리고 사용자 정의 Python 함수를 연결하여 AI 워크플로우 생성을 단순화하도록 설계되었습니다. Daggr는 개발자가 코드를 통해 복잡한 파이프라인을 정의하면서 중간 출력물을 시각적으로 검사하고 특정 단계를 다시 실행할 수 있는 캔버스를 자동으로 생성합니다.

코드 우선 워크플로우 오케스트레이션

Daggr는 전통적인 노드 기반 GUI 편집기와 달리 코드 우선 접근 방식을 채택합니다. 개발자는 파이프라인을 Python으로 정의하고, Daggr는 자동으로 시각적 인터페이스를 생성합니다. 이 아키텍처는 코드를 통한 버전 관리가 가능하도록 하면서 시각적 검사의 장점을 제공합니다.

핵심 기능은 다음과 같습니다:

  • 세부 검사 및 재실행: 사용자는 단일 노드의 출력을 검사하고, 입력을 수정한 뒤 전체 파이프라인을 실행하지 않고 해당 단계만 다시 실행할 수 있습니다.
  • 탄력적인 워크플로우: 라이브러리는 "백업 노드"를 지원하여 개발자가 하나의 모델이나 Space를 다른 것으로 교체해 파이프라인 안정성을 보장할 수 있습니다.
  • 상태 지속성: Daggr는 입력값, 캐시된 결과, 캔버스 위치 등을 포함한 워크플로우 상태를 자동으로 저장합니다. 또한 단일 애플리케이션 내에서 여러 작업공간을 관리하기 위한 "시트"를 지원합니다.
  • Gradio 통합: Gradio 팀이 만든 Daggr는 Gradio Spaces와 네이티브하게 통합됩니다. 개발자는 커스텀 어댑터 없이도 이름과 API 엔드포인트만으로 공개 또는 비공개 Space를 참조할 수 있습니다.

지원되는 노드 유형

Daggr는 파이프라인을 구축하기 위해 세 가지 주요 노드 유형을 사용합니다:

GradioNode

GradioNode는 Gradio Space API 엔드포인트 또는 로컬에서 제공되는 Gradio 앱에 연결합니다. run_locally=True로 설정하면 Daggr는 해당 Space를 복제하고 격리된 가상 환경을 만든 뒤 앱을 로컬에서 실행합니다. 로컬 실행이 실패하면 시스템은 자동으로 원격 API로 전환합니다.

FnNode

FnNode는 사용자 정의 Python 함수를 워크플로우에 통합할 수 있게 해줍니다. 이는 전체 ML 모델이 필요 없는 이미지 다운스케일링이나 텍스트 조작 같은 데이터 처리 단계에 사용됩니다.

InferenceNode

InferenceNode는 Hugging Face Inference Providers를 통해 호스팅된 모델에 직접 호출을 할 수 있게 합니다.

구현 예시: 이미지 → 3D 에셋 파이프라인

다양한 노드 유형의 활용성을 보여주기 위해, Daggr를 사용해 2D 이미지를 3D 에셋으로 변환하는 다단계 파이프라인을 구축할 수 있습니다. 일반적인 구현 흐름은 다음과 같습니다:

  1. 배경 제거: GradioNode(예: BiRefNet Space 사용)는 입력 이미지의 배경을 제거합니다.
  2. 이미지 다운스케일링: FnNode는 효율성을 위해 이미지를 리사이즈하는 사용자 정의 Python 함수를 실행합니다.
  3. 스타일 강화: InferenceNode(예: FLUX.2-klein-4B 모델 사용)는 이미지를 깔끔한 3D 에셋 렌더 스타일로 변환합니다.
  4. 3D 생성: 최종 GradioNode(TRELLIS.2 Space 사용)는 강화된 이미지로부터 3D GLB 에셋을 생성합니다.

배포 및 요구 사항

Daggr는 Python 3.10 이상이 필요하며 pip 또는 uv를 통해 설치할 수 있습니다. 워크플로우는 Gradio의 터널링 기능을 이용해 공개 URL로 공유하거나, requirements.txt 파일에 daggr를 추가해 Hugging Face Spaces에 영구적으로 호스팅할 수 있습니다. Hugging Face Spaces에서 InferenceNode를 사용할 경우, "Make calls to Inference Providers" 권한이 포함된 세분화된 액세스 토큰이 필요합니다.

Sources