Reference
Comfy UI | DGX Spark
Install and use Comfy UI to generate images
build.nvidia.com
시작
Comfy-UI는 AI모델을 이용한 생성형 미디어(Sound, Image, Video..)를 쉽게 사용하게 해주는 툴이다.
Nvidia DGX Spark장비는 vRam 빨 만 받고 성능은 썩 좋지 못하지만 그래도 어느 정도는 잘 생성해 준다.
ApacheNiFi, N8N, Langflow처럼 GUI를 통해 프로그래밍하는 방식이며 이와 같은 툴들의 명칭이
"시각적 워크플로우 툴", "노드 기반 프로그래밍 툴" 등으로 다양하게 불린다. ComfyUI도 이와 같은 분류의 툴이다

위 툴들을 모두 다뤄본 결과 이 "시각적 워크플로우 툴"과 "소스코드"로 나누어 볼 때 각각의 차이점이 있다(개인적인 생각)
| 시각적 워크플로우 | 소스코드 | |
| 프로그램의 흐름 파악 | 직관적임 | 코드를 따라가야함 |
| 구현 유연성 | 어려움 (호환 컴포넌트를 찾아야하며 없으면 자체 Code 컴포넌트를 이용해 코딩으로 구현) |
유연함 |
| 데이터 추적 | 실시간으로 어떤데이터가 변환 / 이동하는지 확인할 수 있음 |
Log찍어야함 |
| 전역변수 적용/활용 | 어려움(Flow 구성하기 나름이긴 함.) | 쉬움 |
| 접근 난이도 | 각 컴포넌트의 옵션 내용을 알면 쉬움 | 코딩지식 필요 |
| 직접코딩 | 0%~30% | 100% |
Install
파이썬 애플리케이션이며 개발단계에서 이와 같이 설치/사용하지만 배포단계에서는 컨테이너화를 시켜야 한다.
해당 설치는 DGX Spark Playbook가이드를 따라간다.
1. venv 생성
comfy-ui용 python venv를 생성한다.
python3 -m venv comfyui-env
# python3 -m venv {venv명}
2. venv 환경 적용
생성한 venv 환경을 적용시킨다.
source comfyui-env/bin/activate
# source {venv명}/bin/activate
# Windows: .\{venv명}\Scripts\activate
3. CUDA를 지원하는 PyTorch 설치(CUDA 13.0)
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
# pip3 install torch torchvision --index-url https://download.pytorch.org/whl/{CUDA버전}
4. Git에서 ComfyUI 저장소를 clone 한다.
git clone https://github.com/comfyanonymous/ComfyUI.git
5. 작업 디렉토리 이동
cd ComfyUI/
6. 파이썬 의존모듈 설치
pip install -r requirements.txt
7. Comfy-UI APP 시작
python main.py --listen 0.0.0.0
# python main.py --listen {host주소(0.0.0.0 -> 어떤 host든 해당 서버 접속 가능)}
디렉토리 구조
자주 사용하는 디렉토리만 표시했고, 기준 디렉토리는 `ComfyUI` 디렉토리의 최상단입니다.
1. 기본 모델위치
`./models`
2. 생성형 AI모델위치
※ 기본값이며, 생성형 AI 모델에 따라 지정된 위치가 다를 수 있음.
`./models/checkpoints`
3. 출력디렉토리
※ 기본값이며, 생성형 AI 모델에 따라 지정된 위치가 다를 수 있음.
`./output`
4. 커스텀 노드
`./custom_nodes`
API
웹에서 생성형 AI를 추론하고 결과를 직접 브라우저에서 다운로드하여 활용할 수도 있지만 애플리케이션 간 연계나 프로그래밍에서 사용할 때에는 브라우저를 사용하지 않는다.(웹 크롤링 할거 아니잖어?)
API로 결과산출물 다운로드 절차
대충 파악한 ComfyUI API로 결과를 가져오는 흐름을 간략히 적자면..
1. 웹 Flow Desk에서 흐름을 구성해 두고 json으로 된 Flow를 추출한다.
2. 해당 추출된 JSON에서 값을 동적(프로그래밍 등)으로 변경 후 ComfyUI API POST `/prompt`전송
3. POST전송 시 반환된 ID값 들고 있기
4. GET `/history`로 해당 ID를 조회
5. 실행 중이면 빈 Array만 반환됨, 성공할 경우 결과 내용들이 출력됨
6. 여기서 추출된 파일명을 가져옴
7. GET `/view` 요청으로 추출된 파일을 다운로드
더 간소화시킬 수 있을지는 모르겠지만 찍먹(?)만 해본 난 이렇게 추출했다.
1. 구성된 flow 추출(API JSON)
설치 성공 후 구성된 flow를 아래 사진처럼 추출한다

2. 추출된 JSON 형태
{
"1": {
"inputs":{ ...
},
"2" {
...
},...
}
대충 이런 식으로 생겼다
3. Flow 실행
아래와 같이 `/prompt` 엔드포인트에 `POST` 메소드, Body에 아래 형식과 같이 작성한다.
내부 내용은 프로그램 내부에서 동적으로 바꿀 부분이 있으면 바꾼다.
// POST http://127.0.0.1:8188/prompt
{
"prompt": {
"1": {
"inputs":{ ...
},
"2" {
...
},...
}
}
그냥 추출된 JSON 위에 "prompt"로 덮어버리면 된다.
이렇게 보내면 즉시 해당 flow가 실행되면서 `prompt_id`를 반환한다.
4. 실행 결과 조회
아래와 같이 `/history/{prompt_id}`엔드포인트에 `GET` 메소드를 요청한다.
GET http://127.0.0.1:8188/history/0e2f6cac-44a8-4b33-85fd-22c61e28f644
// http://127.0.0.1:8188/history/{prompt_id}
여기서 최상단의 `{prompt_id}`Key의 하위 `N` 번째 컴포넌트의 `filename`의 key를 가져와야 한다
그렇기 때문에 요청한 {prompt_id} 값은 계속 들고 있어야 한다.
`N` 번째 컴포넌트의 `N`은 위 `prompt`의 정의된 순서이므로 `prompt`의 내부 번호가 변경되면 같이 바꿔줘야 할 것이다.
만약 아직 `prompt`요청 flow가 종료되지 않은 경우 API 서버에서 빈 JSON을 반환하며 이 경우 Wait후 다시 호출한다.
5. 파일 다운로드
아래와 같이 `/view`엔드포인트에 `GET` 메소드, URL쿼리 파라미터에 `filename={추출한 파일명}` 을 입력해 준다.
// GET http://127.0.0.1:8188/view?filename=ComfyUI_00015_.png
// http://127.0.0.1:8188/view?filename={파일 경로}
파일 경로 기준은 서버 디렉토리 기준 `ComfyUI/output` 경로 기준이다.
output 디렉토리에 바로 파일이 있으면 파일명만 작성,
그 하위 디렉토리에 있으면 `하위디렉토리명/파일명`으로 작성한다.
Custom Node 설치
ComfyUI는 CustomNode를 설치할 수 있는 확장 프로그램을 설치할 수 있다.
ComfyUI Manager 확장 프로그램을 설치하여 여러 커스텀 노드들을 쉽게 설치 및 업데이트할 수 있다.
난 이걸로 ollama 연동 커스텀노드를 설치하여 사용해 봤다.(여기다 llm커스텀노드 깔 바에 그냥 n8n으로 쓰는 게 괜찮은 것 같다)
ComfyUI Manager CustomNode설치
1. `ComfyUI/custom_nodes` 디렉토리로 이동
cd ./custom_nodes
2. ComfyUI Manager Git 저장소 clone
git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager
3. ComfyUI 서버 재가동
재가동 이후 아래 사진과 같이 나와야 함

여기서 `Custom Nodes Manager` 버튼을 클릭하여 이제 "딸깍" 만으로 커스텀노드를 설치할 수 있다.
마무리
여기서 미디어 콘텐츠 생성형AI를 다양하게 사용할 수 있다.
직접 Flow를 구성할 수 있고 템플릿에 다양한 템플릿들도 존재한다.
서버 자원이 허락하면 여기저기 템플릿을 받아 사용해보면 좋을것 같다.
N8N과 ComfyUI와 연결하고 여기서 이미지생성(Stable Diffusion), 음악생성(ACE-Step)등 써봤는데
나쁘지 않더라..
'Local AI' 카테고리의 다른 글
| [TTS] GPT-SoVITS 설치부터 API 활용까지 (0) | 2026.02.04 |
|---|---|
| [LLM] NVIDIA DGX Spark vLLM 설치 (0) | 2026.02.03 |