AI 이미지/ComfyUI

ComfyUI 설치 및 사용법 기초

하늘이푸른오늘 2023. 8. 2. 01:01

이 글을 처음 쓸 때부터 약 8개월 정도 경과된 것 같습니다. 이제는 왠만하면 AUTOMATIC1111 보다 ComfyUI를 사용하는 게 편해졌을 정도로 익숙해졌습니다. ComfyUI가 약간 어렵기는 하지만, 상당한 장점이 있어서 사용자들이 엄청나게 빨리 증가하고 있는 편인데, 저도 그중의 한명이 된 것입니다.

ComfyUI는 무엇보다 프로그램이 가볍고 빠릅니다. AUTOMATIC1111과 비교했을 때 동일한 작업이라면 30% 정도는 빨리 수행되는 것 같고, 특히 이미지 크기가 커지면 속도차가 몇배씩 차이난다는 느낌을 받을 정도입니다.

또한 ComfyUI에서 생성한 워크플로를 공유하기가 아주 쉽습니다. AUTOMATIC1111이라면 모든 매개변수를 하나씩 보면서 설정해야 하고, 그렇게 설정을 해도 동일한 이미지가 생산되는 경우는 극히 드뭅니다. 하지만, ComfyUI는 워크플로가 포함된 이미지나 json 파일을 Drag&Drop 만 하면 해당 워크플로를 완벽하게 복제할 수 있고, 따라서 완벽하게 동일한 이미지를 생성할 수 있습니다.

따라서 기존 AI 이미지 사이트는 이미지만 공유했다면, Comfy 유저들은 OpenArt Flow 사이트 처럼 워크플로 자체를 공유하고 있고, 이를 마음껏 활용할 수 있습니다.

하지만, 저보다 훨씬 더 ComfyUI를 잘 사용하는 분들은, 워크플로를 마음대로 생성할 수 있다는 점 때문에 ComfyUI를 좋아하는 것 같습니다. AUTOMATIC1111에서는 txt2img, img2img 등 워크플로가 정해져 있어서, 마음대로 조정하기는 쉽지 않습니다. 그런데 ComfyUI는 뭐든지 원하는 대로 조정할 수 있습니다. 예를 들어 이미지를 생성한 후 그 이미지를 img2img의 입력으로 사용해 다시한번 샘플링을 돌린 다음에 AI 확대기(Upscaler)를 돌리고... 등등... 자신이 최적이라고 생각하는 워크플로가 있다면 마음대로 짜맞추기 할 수 있습니다. 

이 글은 간단히 ComfyUI를 설치하고 간략하게 사용하는 방법만 정리한 글입니다. 아직 저도 ComfyUI를 계속 배워가는 중이지만, 아무쪼록 ComfyUI의 매력에 빠져드는 데 도움이 되시길 바랩니다. 이 글을 다 읽으시면 ComfyUI 투토리얼도 읽어보실 것을 추천드립니다.

시스템 요구사항

기본적으로 ComfyUI는 PC뿐만 아니라, Mac, Linux에서도 실행시킬 수 있습니다. Google Colab과 같은 클라우드 환경에서도 실행시킬 수 있습니다(이 글에서는 PC에서 설치하는 방법만 설명합니다). 그리고 GPU가 없는 PC에서 CPU 만으로도 실행시킬 수도 있습니다. 하지만, GPU가 없거나 성능이 낮은 GPU를 사용하면 생성속도가 늦기 때문에 짜증이 날 수 밖에 없습니다. 당연히 RTX4090이나 5090처럼 최고급 GPU를 사용하는 것이 이미지 및 비디오 생성에 좋지만, 경제적 상황에 맞출 수 밖에 없겠죠. 대략 VRAM 8GB, GTX3060 이상의 GPU를 사용하는 것이 좋습니다.

저는 현재 RTX3070 VRAM 8GB 를 사용하고 있습니다. SDXL 모델로 이미지를 생성할 경우 10~15초 정도면 이미지를 생성할 수 있고, 최신 FLUX 모델을 사용할 경우(원래는 20GB가 최소사양이지만, GGUF 모델을 사용할 경우) 1분 10초 정도면 이미지를 생성할 수 있습니다.

LTX, CogVideo GGUF, Mochi GGUF  등 비디오 모델의 경우, 50프레임 정도를 기준으로 할 때 대략 10분~20분 정도면 생성할 수 있다고 생각하면 될 것 같습니다. 다만, 비디오의 경우엔 사용하는 모델에 따라 차이가 크기 때문에 그냥 참고하시기 바랍니다.

설치방법

ComfyUI 설치방법은 간단합니다. Github 저장소 : https://github.com/comfyanonymous/ComfyUI?tab=readme-ov-file#installing에 들어가서 Direct link to download 라고 된 링크에서 파일을 다운로드 받고, 아무 폴더나 원하는 곳에 압축을 풀기만 하면 됩니다. 

그리고 AUTOMATIC1111에 이미 체크포인트 파일이나 LoRA, controlNet 파일을 설치해둔 분이라면 이러한 파일들을 공유해서 사용할 수 있습니다. 특히 체크포인트 파일의 경우, 용량이 매우 크기 때문에 따로 따로 설치를 하게되면 너무나 낭비가 될 수 밖에 없습니다. 모델 파일을 공유하는 방법은 여기를 읽어보시기 바랍니다.

이러한 AUTOMATIC1111에서 사용하는 모델 파일 외에도 ComfyUI에서만 사용할 모델 파일들이 있다면, ComfyUI\models 속에 있는 적당한 폴더에 넣어주시면 됩니다.

참고로 여러가지 이미지나 비디오를 생성하다보면, 아주 많은 종류의 모델들을 다운로드 받게 됩니다. 이것들을 하나의 폴더에 넣어두면 구분하기가 힘들어집니다. 그래서 아래와 같이 모델의 종류에 따라 하위폴더를 만들어 넣어주시는 것이 좋습니다. 체크포인트 모델 뿐 만 아니라, LoRA 모델도 같은 방식으로 구분해 두시면 좋습니다.

업데이트

먼저 이 파일 생성된 이후 변경된 사항에 대해 업데이트가 필요합니다. ComfyUI_windows_portable\update 폴더속에 있는 update_comfyui.bat 파일을 실행합니다.  아래와 같은 다이얼로그가 뜰 경우에는 추가 정보를 누른후 [실행] 버튼을 클릭해주면 됩니다.

인식할 수 없는 앱 시작 차단
인식할 수 없는 앱 시작 차단

이제 진짜 실행할 차례입니다. ComfyUI_windows_portable 에 아래와 같이 3개의 파일이 있습니다. 자신의 PC에 nvidia 그래픽 카드가 있을 경우, run_nvidia_gpu.bat 파일을, 없을 경우에는 run_cpu.bat 파일을 실행시키면 됩니다.

README_VERY_IMPORTANT.txt 파일에는 주의 사항이 들어 있는데 실행하다가 오류가 발생하면 모델 파일을 미리 복사해 뒀는지 확인하라는 것과, 일반적인 업데이트는 바로 위처럼 update_comfyui.bat 을 실행시키면 된다는 내용이 들어 있습니다 .

ComfyUI_windows_portable 폴더 내용
ComfyUI_windows_portable 폴더 내용

첫 이미지 생성하기

최초 실행

처음 실행시키면 약간 시간이 걸립니다. 잠시 기다리면 아래와 같이 실행이 되고(추가 모델 파일 설정이 잔뜩 나와 있습니다) ....

ComfyUI 처음 실행화면
ComfyUI 처음 실행화면

웹브라우저에 다음과 같이 ComfyUI 메인 화면이 나타납니다. 이렇게 나오면 정상적으로 실행된 것입니다. ComfyUI는 아래와 같이 여러개의 박스(노드라고 합니다)와, 노드를 연결하는 선으로 이루어져 있습니다. 이들 노드는 Stable Diffusion을 구성하는 여러가지 모듈?을 대표하는 것이라고 생각하시면 됩니다. 

이미지 생성

이제 "Queue" 버튼을 누르면 이미지 생성이 시작됩니다. 

아마도 ComfyUI를 맨 처음 사용한다면 아래와 같이 오류가 발생할 것입니다. [Load Checkpoint] 노드에서 지정한 체크포인트 모델이 없기 때문입니다. 

해당 모델을 다운로드 받은 후, ComfyUI\models\checkpoints 폴더에 넣어준 뒤 화면을 새로고침해줍니다. 새로고침을 해주어야 변경된 내용을 ComfyUI가 인지합니다. 그 다음 실행시키면 정상적으로 이미지가 생성될 것입니다.

 

ComfyUI Manager 설치

ComfyUI를 사용할 때, 가장 중요한 것중의 하나는 내가 원하는 기능을 수행해주는 노드를 찾고, 관리하는 것입니다. ComfyUI를 설치하면 Core 기능만 설치되는데, 여러 개발자들이 자신이 원하는 기능을 개발해서 커스텀 노드(Custom Node)로 제공하고 있습니다. 

이것을 일일이 찾고 관리하는 것은 매우 힘든 일입니다. 그래서 이를 체계적으로 관리해주는 ComfyUI Manager는 거의 필수라고 할 수 있습니다. 

ComfyUI Manager를 설치하는 방법 및 사용하는 방법은 여기를 참고하세요.

화면 제어

기본 워크플로는 그다지 복잡하지 않지만, 계속 노드를 추가하면 복잡할 수 있습니다. 이때 마우스 휠을 굴리면 화면이 확대 또는 축소가 됩니다. 또한 바탕화면 아무 곳에서나 드래그를 하면 상하 좌우로 패닝도 가능합니다. ComfyUI 화면 우측아래에 아래와 같은 부분이 있는데, 이것을 이용하면 화면제어가 간편합니다.

노드들의 위치를 개별적으로 옮길 수도 있습니다. 예를 들어 기본 워크플로는 아래 왼쪽처럼 되어 있는데, 노드를 드래그하면 오른쪽처럼 위치를 변경할 수도 있습니다. 또한 노드를 우클릭하고 [Resize]를 클릭하면 오른쪽처럼 노드의 크기를 조정할 수도 있습니다. 

기타 화면 제어 관련 단축키는 여기를 읽어보시면 됩니다.

얼마전 ComfyUI가 업그레이드되면서 메뉴가 변경되었습니다. 과거의 메뉴는 워낙 간단해서 따로 설명하지 않았지만, 새로운 메뉴는 약간 복잡해져서 설명이 필요합니다. 참고로, 새로운 메뉴에서만 한글을 지원합니다. 

먼저 예전 메뉴와 새로운 메뉴를 바꾸는 방법입니다. 톱니바퀴 모양의 아이콘을 누르면 아래와 같이 설정(Settings)화면이 나옵니다. 여기에서 [새 메뉴 사용(Use new menu) 오른쪽의 드롭다운을 누르고 비활성화(Disabled)를 누르면 예전 메뉴로 돌아갑니다.

새로운 메뉴는 다음과 같습니다. 오른쪽 위에 초록색으로 표시한 부분은 커스톰 노드를 설치시 추가되는 것이라 설명하지 않습니다.

번호 제목 단축  
1 Queue History Q 이미지 생성 큐(queue) 기록. 해당 내용으로 전환할 수 있음
2 Node Library N 모든 ComfyUI 노드를 볼 수 있음. ComfyUI Core 노드 뿐만 아니라, 커스톰 노드의 노드도 모두 나열되며, 필터링 기능을 통해 검색 가능
3 Model Library M 체크포인트, LoRA, 콘트롤넷 등 ComfyUI에 설치된 모든 모델을 볼 수 있음. Drag&Drop하면 해당 로더 노드와 함께 화면에 추가됨
4 Workflows W 자신의 PC에 저장된 ComfyUI 모델을 볼 수 있음. 더블클릭하면 새로운 탭으로 해당 워크플로가 열림
5 Images - 입력 이미지 및 출력 이미지/비디오를 확인할 수 있음
6 Theme Switch - ComfyUI 인터페이스 테마를 변경 가능. 현재 Dark/Light을 지원함
7 Settigs(설정) - 설정 화면을 엶
8  Workflow Tabs  - 현재 열려진 모든 워크플로가 표시됨. 맨 오른쪽의 + 를 누르면 새로운 워크플로 탭이 열림
9 Bottom Panel - 현재 워크플로 실행 로그 정보를 확인할 수 있음
10 Show/Hide Menu - 메뉴를 숨기거나 보일 수 있음
11 Execute Workflow Queue Cntl + Enter 현재 워크플로를 이미지 생성 큐에 추가함. Cntl+Shift+Enter를 누르면 최상위 큐로 추가됨
12 Cancel Current run - 현재 실행중인 큐를 중지시킴
13 Clear Pending Tasks - 모든 실행 대기 작업을 삭제함
14 Fit View - 현 워크플로에 포함된 모든 노드가 보이도록 화면이 조절됨
15 View Selection Mode Space Select(선택)모드와 Pan(이동) 모드 전환
16 Toggle Node Connections - 링크를 표시 여부 전환

기본 워크플로 설명

맨 왼쪽은 모델(체크포인트 파일)을 선정하는 곳입니다. 글씨가 써져있는 곳을 누르면 오른쪽처럼 자신이 설치한 여러가지 모델들이 나타납니다. 저는 sd_xl_base_1,9.safetensors, 즉 SDXL 1.0 base 모델을 선택했습니다. 

체크포인트 파일 선택
체크포인트 파일 선택

이 체크포인트는 아래와 같이 CLIP(언어모델)이 두개 연결됩니다. 위는 프롬프트(prompt)를 입력하는 곳이고 아래는 부정적 프롬프트(negative prompt)를 입력하는 곳입니다. 이처럼 체크포인트 파일과 프롬프트가 직접 연결된다는 것을 직관적으로 알 수 있습니다. 일단 프롬프트는 수정하지 않고 그대로 두도록 하겠습니다. 

체크포인트 파일과 CLIP 프롬프트
체크포인트 파일과 CLIP 프롬프트

다음은 Empty Latent Image 입니다. 즉 현재는 아무 내용도 없는 잠재(latent) 이미지라는 뜻이죠. 여기에 이미지 크기를 입력합니다. 저는 SDXL base 모델을 사용하므로 1024x1024로 지정하였습니다. 

잠재 이미지 크기 설정
잠재 이미지 크기 설정

이 잠재 이미지는 아래와 같이 샘플러와 연결이 됩니다. 잘 보시면 샘플러는 모델, 프롬프트, 잠재이미지를 입력 받는다는 것을 알 수 있습니다.

잠재 이미지와 샘플러
잠재 이미지와 샘플러

샘플러에서는 시드번호, 샘플 스텝수, CFG(분류자유도 척도), 샘플링 방법 등을 지정할 수 있습니다. 이러한 내용은 AUTOMATIC1111에서 설정하는 내용과 거의 비슷합니다. 특히 두번째 control_after_generate를 randomize로 설정해서 시드 번호를 무작위로 변하도록 설정했는데, 고정시킬 수도 있고 +1 또는 -1로 한단계씩 변화시킬 수도 있습니다.

그리고 denoise는 AUTOMATIC1111에서는 잡음 제거강도(denoising strength)에 해당하는데, A1111에서는 0.75가 기본값인데, ComfyUI에서는 1.0이 기본값입니다. 

일단 샘플러 설정화면에서는 아무것도 건드리지 않았습니다. 

다음으로 VAE 디코더를 보면, 샘플러의 출력을 입력으로 받고, vae는 원래의 체크포인트 파일에 들어 있는 VAE를 사용함을 알 수 있습니다. 그리고 VAE 가 디코딩을 하면 최종 이미지가 생성됨을 알 수 있습니다. 아래 그림에서 이미지가 2개 생성된 것은 이미지 크기를 정할 때 batch size를 2로 정했기 때문입니다.

이렇게 설정이 끝나면 맨 오른쪽에 있는 메뉴에서 "Queue" 버튼을 눌러주면 이미지 생성이 시작됩니다.

이미지 생성이 완료되기 전이라도 설정을 바꾸고 "Queue" 를 누르면 현재 설정한 이미지 생성작업이 대기열에 들어가게 됩니다. AUTOMATIC1111 의 경우에는 이렇게 큐를 넣는 방법이 없어서 일일이 작업이 끝나길 기다렸다가 [Generate]버튼을 눌러야해서 불편했는데, 이건 확실히 좋네요.

최종적으로 생성된 이미지에서 우클릭을 하면 아래와 같이 팝업메뉴가 뜨는데, 여기서 Save Image를 누르면 이미지를 저장할 수 있습니다. 또 ComfyUI_windows_portable\ComfyUI\output  에 들어가면 모든 이미지가 들어 있습니다. 

comfyUI 최종 이미지
comfyUI 최종 이미지

저장되는 폴더를 바꾸고 싶을 경우,  처음 시작할 때 사용하는 배치파일(run_nvidia_gpu.bat)를 편집해서 아래와 같이 "--output-directory"를 추가해야 변경할 수 있습니다. 폴더 위치는 자신의 환경에 맞게 수정하시면 됩니다.

.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build  --output-directory E:\00GoogleDrive\00SDOutput
pause

다른 사람의 워크플로 사용하기

ComfyUI를 사용할 때 가장 좋은 점 중 하나가, 다른 사람이 생성한 워크플로를 그대로 사용할 수 있다는 점입니다. 예를 들어 인터넷을 떠돌다가 멋진 이미지를 만나서 비슷한 이미지를 생성해보고 싶을 때, 다른 도구와는 달리 ComfyUI는 만드는 방법과 결과물을 완전히 똑같게 가져올 수 있습니다. 

워크플로를 가져오는 방식은 간단합니다. .json 파일이나, ComfyUI로 생성된 이미지를 ComfyUI화면에 Drag&Drop 하면 됩니다. 또는 ComfyUI 메뉴에서 Workflow -> Open을 선택해 직접 지정해도 됩니다.

그런데, 이렇게 다른 분이 만든 워크플로를 가져오면 잘 실행되지 않는 경우가 있습니다. 이럴 경우, 이 글을 참조해서 해결하시면 됩니다.

참고로, 아무런 생성 정보가 없는 이미지를 비슷하게 생성하고 싶을 경우에는 프롬프트를 알아내는 방법을 사용하면 되고요, Civitai.com의 이미지처럼 생성정보가 있다면, AUTOMATIC1111 에서 이러한 생성정보를 입력해서 생성하는 것이 가장 빠릅니다.

노드 추가 방법

기본 워크플로만으로도 훌륭한 이미지를 생성할 수 있지만, 스테이블 디퓨전은 VAE, LoRA, ControlNet 등 다양한 구성요소를 추가하거나 다른 걸로 바꿔서 이미지를 생성할 수 있습니다. 아래는 VAE 노드를 추가하는 방법을 보입니다. 

먼저 바탕화면에서 마우스를 우클릭하고 Add Node->loaders->Load VAE를 선택합니다.

노드 추가 방법
노드 추가 방법

그러면 아래와 같이 VAE 노드가 추가됩니다. 그리고 VAE이름 입력칸을 클릭하면 현재 가용한 VAE가 나열되므로 필요한 것을 선택하면 됩니다.

VAE 노드 추가
VAE 노드 추가

참고: 커스톰 노드가 추가될 수록, 이런 식으로 메뉴를 찾아서 노드를 추가하는 것은 힘들게 됩니다. 그냥 화면을 더블클릭하면 나오는 노드 목록에서 원하는 이름을 입력해 검색하는 것이 거의 유일한 방법입니다.

하지만, 이 노드는 아무데도 연결이 되어 있지 않아서 이대로는 아무런 역할도 할 수 없습니다. 아래와 같이 [Load VAE] 노드의 오른쪽에 있는 출력슬롯 VAE를, 위쪽 [VAE Decode] 노드의 입력슬롯 vae에 연결해 주어야 합니다.

아래에서 빨간점을 클릭하고 원하는 위치에서 마우스를 놓아주면 선이 연결됩니다. 

VAE 노드 연결
VAE 노드 연결

이렇게 연결되면 원래 있던 [Load Checkpoint]와 [VAE Decode] 간의 연결이 끊어지면서 체크포인트 파일내에 포함된 기본 VAE를 사용하지 않게 되고 [Load VAE] 노드에서 지정한 VAE가 대신 사용되는 것입니다.

워크플로 변경방법

이런식으로 노드를 변경하면 새로운 방식으로 이미지를 생성할 수 있지만, 수많은 노드를 서로 어디로 연결할지를 판단하는 것은 쉬운 일이 아닙니다. AUTOMATIC1111에서는 txt2img, img2img 등 여러가지 페이지가 있고, 또 여러가지 텝이 있어서 알기가 쉽지만, comfyUI 에서는 직접 자신이 노드를 추가하고 서로 연결 시켜줘야만 작동하기 때문에 상호간의 관계를 잘 알고 있어야 합니다. 특히 스테이블 디퓨전의 이론을 잘 모르는 초보자로서는 전혀 알 방법이 없죠.

하지만, 좋은 방법이 있습니다. ComfyUI_examples에 들어가면 다양한 예제가 있습니다. 보시면 img2img, inpaintingg, LoRA, hypernetworks 등 거의 모든 종류가 들어 있음을 알 수 있습니다. 

예를 들어 LoRA를 추가하고 싶다면 위 사이트에서 Lola를 클릭하고 들어갑니다. 그러면 아래와 같이 LoRA를 사용할 때의 노드 배치 방법을 보여주는 그림이 나타납니다(아래는 LoRA를 두개 사용할 경우입니다),

ComfyUI LoRA 예제 페이지
ComfyUI LoRA 예제 페이지

이 그림을 저장하고, 메뉴에서 [Load]를 눌러 저장한 사진을 클릭하거나, 저장한 그림을 그냥 CompyUI 화면에 Drag&Drop하면 해당 워크플로가 그대로 나타납니다. 아래는 Lora Examples에 들어있는 그림을 불러왔을 때의 화면입니다. 잘 들여다 보시면, 체크포인트 파일, LoRA 파일, 프롬프트, 샘플러 등 모든 설정이 불러진 것을 알 수 있습니다. 각 노드의 위치 및 배치까지도 똑같게 불러집니다. 불러온 후, 모델이라든지, LoRA 파일등은 필요에 따라 다른 것으로 대체해야 할 수도 있습니다. 

ComfyUI LoRA 설정
ComfyUI LoRA 설정

Inpaint Sample에서도 마찬가지입니다. 여기에 들어 있는 어떤 사진이든 저장을 하고 ComfyUI에 불러오면, 인페인트 작업에 관한 설정이 그대로 불러집니다. (물론 필요에 따라 조금 더 수정이 필요할 수도 있습니다.)

ComfyUI 인페인트 설정
ComfyUI 인페인트 설정

이것은 ComfyUI로 생성되는 이미지에 생성과 관련된 설정(메타데이터)가 파일내에 저장되기 때문입니다. 이걸 이용하면 자신이 실행했던 작업내용을 기억하기도 쉽고, 설정도 쉬워질 것 같네요.

이상입니다. 이제는 제 블로그에서 방문자가 많은 글 중 하나가 될 정도로 ComfyUI의 인기가 높아진 것 같습니다. 읽어보시고 마음에 드시면 ComfyUI 투토리얼 그리고 ComfyUI를 위한 유용한 정보도 읽어보시기 바랍니다.

민, 푸른하늘