> For the complete documentation index, see [llms.txt](https://liqpod.gitbook.io/liqpod/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://liqpod.gitbook.io/liqpod/beginner/comfyui.md).

# ComfyUI로 AI 이미지 생성하기

{% hint style="info" %}
본 문서에서는 liqpod에서 ComfyUI 템플릿을 사용하여 Image Generative AI를 사용하는 방법을 실습합니다.
{% endhint %}

## ComfyUI란 무엇인가요?

ComfyUI는 Stable Diffusion 기반의 이미지 생성 모델을 노드 기반 사용자 인터페이스로 구성해 누구나 직관적으로 사용할 수 있도록 만든 오픈소스 툴입니다.

기존의 명령어 기반 또는 복잡한 파라미터 조정 방식과 달리, ComfyUI는 블록처럼 노드를 배치하고 연결함으로써 모델 로딩 → 프롬프트 입력 → 샘플링 → 이미지 출력의 전 과정을 시각적으로 조작할 수 있습니다.

ComfyUI는 다음과 같은 특징을 가집니다:

* **노코드 기반의 시각적 워크플로우 구성**

  → 코드 없이도 복잡한 모델 구조나 제어 조건을 설정할 수 있습니다.
* **모듈화된 노드 시스템**

  → 모델 종류, 샘플러, 업스케일러, 컨디셔널 노드 등을 자유롭게 조합할 수 있습니다.
* **고급 사용자도 만족할 확장성**

  → 사용자 정의 노드 추가, 커스텀 모델 로딩, 고급 설정 등이 가능하여 확장성과 유연성이 뛰어납니다.
* **Stable Diffusion 기반 다양한 모델 호환**

  → SD 1.5, SDXL, LoRA, ControlNet 등 다양한 모델을 로드하여 사용할 수 있습니다.

이 실습에서는 ComfyUI를 설치하고, 실제로 워크플로우를 구성하여 텍스트 프롬프트를 기반으로 AI 이미지 생성의 전 과정을 체험합니다.

***

## 1단계: 스토리지 생성하기

### 목적

* ComfyUI는 생성된 이미지와 모델 파일을 저장할 디렉터리가 필요합니다.
* 컨테이너는 종료되면 내부 데이터가 사라지므로, 데이터 보존을 위해 외부 스토리지(PVC)를 연동해야 합니다.

### 실행 방법

{% content-ref url="/pages/DtKRZRCMMXORQ9HeKDeM" %}
[스토리지 생성하기](/liqpod/hosting/storage.md)
{% endcontent-ref %}

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FLZKvvrmrHjwf5dSLOjDp%2Fimage.png?alt=media&amp;token=f0596fd7-a17a-47c0-a445-a53061e7ee79" alt=""><figcaption></figcaption></figure>

1. 스토리지 생성 페이지로 이동
2. 이름: comfy-storage (예시)
3. 리전: 컨테이너에서 사용할 노드와 동일한 리전 선택
4. 크기: 50GB 이상 권장 (모델 + 출력 이미지 저장 용도)
5. 마운트 이름: comfy → /data/volumes/comfy 경로로 마운트됨
6. 생성 완료

***

## 2단계: ComfyUI 컨테이너 생성

### 목적

* ComfyUI가 설치된 Docker 이미지를 기반으로 GPU 컨테이너를 실행합니다.

### 실행 방법

{% content-ref url="/pages/D5PQ6xHwbqcwAHpelSCU" %}
[컨테이너 대여하기](/liqpod/hosting/container.md)
{% endcontent-ref %}

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FQMEniabQddyhLYCXnrwF%2Fimage.png?alt=media&amp;token=3a708850-2da6-41b4-9297-447ab0153c1b" alt=""><figcaption></figcaption></figure>

1. 컨테이너 호스팅 → 노드 선택
   * VRAM과 성능에 따라 알맞은 GPU 노드를 선택합니다.
2. 이미지: ComfyUI (cu124) 선택
   * CUDA 12.4 기반으로, 최신 모델 호환이 우수합니다.
   * ssh를 통한 외부 접속이 가능하도록 liqpod에서 커스터마이징한 이미지입니다.
3. 스토리지 선택: 1단계에서 생성한 comfy-storage 선택
4. 환경변수 설정:
   * ROOT\_PASSWORD를 설정하면 ssh 혹은 sftp 접속 시 비밀번호로 사용됩니다.
   * 예: ROOT\_PASSWORD: secure1234!
5. 컨테이너 이름, 설명 입력 후 컨테이너 생성하기

***

## 3단계: 컨테이너 상태 확인

### 목적

* 컨테이너가 GPU를 제대로 인식하고 있는지, 스토리지가 정상적으로 연결되었는지를 확인합니다.

### 실행 방법

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FQjro131tQpQ9bjWCRn3h%2Fimage.png?alt=media&amp;token=ed728322-eb1c-490a-b773-dd69c53ccc4e" alt=""><figcaption></figcaption></figure>

1. \[나의 머신 → 컨테이너] 메뉴에서 방금 만든 컨테이너 확인
2. 상태가 “사용 중”인지 확인
3. 마운트 스토리지, 웹 주소 등 확인
4. 웹 터미널 접속 → 명령어 입력

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FJuAWgbmFNIcACqC7ejeh%2Fimage.png?alt=media&amp;token=c2c3c433-88d5-4e1b-a4e6-20aa70397431" alt=""><figcaption></figcaption></figure>

* `nvidia-smi` 명령어로 GPU 드라이버 및 VRAM 인식 여부 확인

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FrnJfYnrhO1yzUdncer97%2Fimage.png?alt=media&amp;token=29f2e11a-a4f7-481c-a4b9-032ae536de4e" alt=""><figcaption></figcaption></figure></div>

* `ls /data/volumes` 명령어로 마운트된 스토리지 경로가 정상적으로 연결되었는지 확인

***

## 4단계: ComfyUI 웹 접속

### 목적

* ComfyUI 웹 인터페이스에 접속하여 노드 기반의 워크플로우를 구성합니다.

### 실행 방법

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FSREJg3XW7jYxCdb7RFTK%2Fimage.png?alt=media&amp;token=bdb3ce3a-6c33-4873-8587-c3d04d7817dd" alt=""><figcaption></figcaption></figure></div>

1. 컨테이너 정보 → 엔드포인트 → 웹 주소 확인 후 해당 주소로 접속합니다.

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2Fi5H2wuCmMQrQXOCiCZgM%2Fimage.png?alt=media&amp;token=8db80399-88ce-4918-b163-e036ecdb53de" alt=""><figcaption></figcaption></figure>

2. ComfyUI 인터페이스가 로드되면 ‘이미지 생성’ 템플릿을 선택합니다.

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FvhHIee3tgvvIPJXuHqsC%2Fimage.png?alt=media&amp;token=b1d6bd7d-cfa0-4e47-a1f3-2a5e8ba43b75" alt=""><figcaption></figcaption></figure></div>

3. 처음 실행 시 모델이 없다는 메시지가 나타납니다.

* 이 상태에서는 샘플 실행이 불가능하므로, 모델을 다운로드 후 다음 단계에서 모델을 업로드합니다.

***

## 5단계: 모델 파일 업로드하기

### 목적

* Stable Diffusion 기반의 checkpoint 모델이 없으면 이미지 생성을 할 수 없습니다.
* 이를 위해 스토리지에 모델 파일을 업로드하고, ComfyUI가 이를 인식할 수 있도록 경로를 연결합니다.

### 실행 방법

**A. 디렉터리 생성**

1. 웹 터미널로 접속합니다
2. 아래 명령어를 입력합니다 (스토리지 마운트 경로가 다르다면 해당 경로에 맞춰 입력해주세요)

```
# 스토리지에 모델 및 이미지 아웃풋 경로 생성
mkdir -p /data/volumes/comfy/models/checkpoints
mkdir -p /data/volumes/comfy/output

# 심볼릭 링크를 통해 스토리지 경로를 ComfyUI로 연결
ln -s /data/volumes/comfy/models /app/models
ln -s /data/volumes/comfy/output /app/output
```

**B. 모델 업로드**

* SFTP를 사용해 다운로드 받은 checkpoint 모델(.safetensors, .ckpt 등)을 업로드합니다.

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FsX3p3zonHd7BI7f1SRSg%2Fimage.png?alt=media&amp;token=d7add042-ba30-4837-adaa-30936a1ed541" alt=""><figcaption></figcaption></figure></div>

* SFTP 접속 정보는 컨테이너의 엔드포인트에서 확인할 수 있습니다.
  * 사용자: root
  * 포트: 예시 32017 (컨테이너 실행 시 동적으로 할당되므로, 실제 값을 참조하세요)
  * 패스워드는 환경변수에서 입력한 ROOT\_PASSWORD 키를 사용합니다. (예시: secure1234!)

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FhCZ3eAXMDa5NzufOAdvi%2Fimage.png?alt=media&amp;token=8afbf491-4d92-4b47-90ec-15cf51ebc4cc" alt=""><figcaption></figcaption></figure>

* SFTP 클라이언트를 사용해 다음과 같이 `/data/volumes/comfy/models/checkpoints` 경로에 업로드합니다.

***

## 6단계: 모델 로드 및 이미지 생성

### 목적

* 업로드한 모델을 로딩하고, 프롬프트 기반의 이미지 생성을 실행합니다.

### 실행 방법

1. ComfyUI 웹에 다시 접속하거나 새로고침하세요.

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2F3mCYonRLSG4WcUKBnQRn%2Fimage.png?alt=media&amp;token=99c3a8c5-f85b-4297-96de-dfa64ff218be" alt=""><figcaption></figcaption></figure></div>

1. 왼쪽 메뉴 → 모델 라이브러리 → checkpoints 진입
   * 업로드한 모델이 나타나야 정상입니다.

<div align="left"><figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FjWF31NXAhiQn1tksmN9M%2Fimage.png?alt=media&amp;token=55f8ba16-3933-43a2-bc48-5d19e40679f5" alt=""><figcaption></figcaption></figure></div>

2. 프롬프트 입력

* CLIP 텍스트 인코딩 노드에 생성하고 싶은 문장을 입력
* 예: a high-quality portrait of a cyborg woman, 8k, cinematic lighting

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FXjema7xE6yUItqeNhZ8H%2Fimage.png?alt=media&amp;token=14e5938c-7097-4644-b442-9cb4a8c2bcdb" alt=""><figcaption></figcaption></figure>

3. \[실행] 버튼 클릭
4. 이미지 생성 노드에서 생성된 이미지 확인

***

## 7단계: 이미지 다운로드

### 목적

* 생성된 이미지를 SFTP로 다운로드하여 로컬에서 저장하거나 활용합니다.

### 실행 방법

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2FXRYVxduxHpumb4glE0Na%2Fimage.png?alt=media&amp;token=90b51e5b-a243-475e-bb38-ffb1110f2ce4" alt=""><figcaption></figcaption></figure>

1. SFTP로 /data/volumes/comfy/output 경로 접속
2. 생성된 이미지 파일 (.png) 다운로드

<figure><img src="https://1578221086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFoI87GDcuaRRviatFnc9%2Fuploads%2Fl6aLcIvGVgEwARGpxv4z%2FComfyUI_00003_.png?alt=media&amp;token=724592ce-166d-43be-af75-274893e91dcb" alt=""><figcaption></figcaption></figure>

<p align="center">생성된 이미지 파일 (예시)</p>
