ComfyUI 워크플로 정리|그룹·서브그래프·라이브러리 재사용

ComfyUI 왕초보 가이드 18 / 29장 · 기준: ComfyUI 0.34.0 / 프런트엔드 1.49.6 · Windows x64 / NVIDIA RTX Portable. 다른 버전에서는 메뉴와 노드 표시가 다를 수 있습니다.

이 장의 실습 자료 ZIP 내려받기 (7.4MB)
JSON·입력 PNG·본문 원본 이미지를 담았습니다. 압축을 푼 뒤 본문에 적힌 파일을 선택하세요. 모델과 프로그램은 포함하지 않습니다. 본문의 WebP는 가벼운 표시용 사본이며, PNG의 작업 정보·투명도와 원본 픽셀 비교에는 ZIP 안의 PNG를 사용하세요.

16장 B의 작업을 여섯 역할별로 정리하고, 일반 JSON으로 보관한 뒤 다시 열어 같은 기능으로 인물 한 장을 만듭니다.

1. 만들 결과

16장 B의 작업을 여섯 역할별로 정리하고, 일반 JSON으로 보관한 뒤 다시 열어 같은 기능으로 인물 한 장을 만듭니다.

용어쉬운 뜻이 장에서 생각할 예
그룹노드를 둘러싼 제목 있는 테두리입니다. 계산은 원래 연결대로 진행됩니다.책상 위 도구에 역할별 이름표를 붙이기 → 02 모델
서브그래프여러 노드의 작업을 내부에 담고, 바깥에는 필요한 입출력을 내놓는 한 묶음입니다.도구 여러 개를 입력과 결과가 정해진 작은 작업 도구로 만들기
입력·출력 포트다른 노드와 자료를 주고받는 연결 점입니다. 입력은 받는 곳, 출력은 보내는 곳입니다.Canny의 image 입력에 사진을 넣고 IMAGE 출력에서 윤곽을 받기
라이브러리재사용할 항목을 보관했다가 찾아 넣는 곳입니다.자주 쓰는 서브그래프를 보관하는 서랍. 큰 모델 파일의 보관함은 아닙니다.
JSON(제이슨)노드·선·값 등을 글로 기록한 작업 구성 파일입니다. 이 장은 배치와 그룹도 담는 일반 워크플로 JSON을 씁니다.조리법에 가까운 파일입니다. 재료에 해당하는 모델·입력 PNG는 따로 준비합니다.

기본 실습에서는 그룹 + 일반 JSON으로 정리와 재사용을 마칩니다. 서브그래프나 라이브러리를 사용하지 않아도 완성할 수 있습니다.

2. 준비물

ComfyUI를 실행한 상태에서 시작합니다. 아래 모델이 이미 같은 폴더에 있으면 다시 받을 필요가 없습니다.

모델공식 파일·다운로드 위치설치 폴더 안에 넣을 곳선택할 노드처음 사용
SDXL Base 1.0sd_xl_base_1.0.safetensorsComfyUI\models\checkpoints체크포인트 로드4장
SDXL Canny Control-LoRAcontrol-lora-canny-rank256.safetensorsComfyUI\models\controlnet컨트롤넷 모델 로드16장

먼저 아래 ① 출발 JSON과 ② 입력 PNG 두 파일을 받으세요. 추가 모델이나 사용자 노드 설치는 필요 없습니다.

용도파일언제 쓰나요?
① 직접 정리할 출발 파일ch18-start.json (ZIP) 첫 단계에서 Ctrl+O로 엽니다. 최신 16장 B와 같은 내용입니다.
② 입력 사진ch05_first_portrait_v2_00001_.png (ZIP) 이미지 로드 노드 안에서 업로드합니다.
③ 참고·복구용 완성본ch18-grouped.json (ZIP) 배치를 참고하거나 실수했을 때 사용합니다. 처음부터 이것을 열면 정리 단계가 이미 끝난 상태입니다.

받은 JSON과 PNG는 찾기 쉬운 실습 폴더에 둡니다. 링크가 글이나 그림으로 열리면 링크를 오른쪽 클릭 → 다른 이름으로 링크 저장을 사용하세요. 이 실습에서 직접 내보낼 이름은 ch18-my-grouped.json입니다.

여섯 역할과 배치

그룹 제목들어갈 노드놓을 위치·역할
01 입력이미지 로드 #10왼쪽 위. 인물 PNG를 읽습니다.
02 모델체크포인트 로드 #2 / 컨트롤넷 모델 로드 #12왼쪽 아래. Base와 Canny 제어 모델을 읽습니다.
03 문장긍정 프롬프트 #3 / 부정 프롬프트 #4두 번째 열. 문장을 생성 조건으로 바꿉니다.
04 윤곽 제어Canny #11 / 컨트롤넷 적용 #9세 번째 열. 윤곽을 만들고 긍정·부정 조건에 제어를 넣습니다.
05 생성빈 잠재 이미지 #5 / KSampler #6 / VAE 디코드 #7네 번째 열. 이미지 크기를 정하고 계산한 뒤 보이는 그림으로 바꿉니다.
06 출력이미지 저장 #13(윤곽) / #8(인물)오른쪽 끝. 서로 다른 두 출력을 저장합니다.

#숫자는 제공 JSON의 노드 번호입니다. 화면에 번호가 보이지 않으면 제목·설정·연결로 구별하세요. 특히 이미지 저장은 파일명 접두사에 edges가 붙은 쪽이 윤곽입니다.

3. 따라 하기

A. 복사하고 배치하기

  1. 출발 파일을 새 이름으로 복사합니다. ch18-start.json을 Ctrl+O로 엽니다. 이 파일은 최신 16장 B의 사본입니다. 왼쪽 위 그래프(Graph) → 다른 이름으로 저장(Save As)을 선택하고 작업 이름을 ch18-my-grouped로 지정합니다. 이것이 직접 정리할 내 작업입니다.
  2. 입력과 모델을 맞춥니다. 이미지 로드(LoadImage) 노드 안의 업로드 버튼으로 ch05_first_portrait_v2_00001_.png를 선택합니다. PNG를 작업판 전체에 끌어놓으면 그림 안에 저장된 다른 워크플로가 열릴 수 있으므로 이 단계에서는 업로드 버튼을 씁니다. 체크포인트 로드에는 sd_xl_base_1.0.safetensors, 컨트롤넷 모델 로드에는 control-lora-canny-rank256.safetensors를 선택합니다. 업로드한 입력은 ComfyUI/input에 보관됩니다.
  3. 바꿀 것과 유지할 것을 구별합니다. 이번에는 노드 위치·상자 크기와 그룹 제목만 바꿉니다. 선을 다시 연결하거나 문장·숫자 값을 수정하지 않습니다. 특히 KSampler의 생성 후 제어는 fixed로 둡니다. 자동으로 seed가 바뀌면 같은 조건 비교가 되지 않습니다.
  4. 아래 도식을 보며 노드를 배치합니다. 노드 맨 위 제목 부분을 잡아 끕니다. 왼쪽 위는 입력, 왼쪽 아래는 모델, 오른쪽으로 문장 → 윤곽 제어 → 생성 → 출력 순서로 놓습니다. 위치는 대략 맞추면 됩니다. 도식처럼 제목을 읽고 역할을 찾을 수 있는 간격이면 충분합니다. 숫자 입력칸이나 연결 점을 건드려 값·선을 바꿨다면 Ctrl+Z로 되돌립니다.

배치할 때 볼 도식

제공 JSON의 노드 위치와 그룹 범위를 옮긴 설명 도식입니다. 실제 화면 캡처가 아니며 연결선·설정창은 생략했습니다. 아래 정리 후 배치를 참고하고, 정확한 연결은 뒤의 설정·연결 참고에서 확인하세요.

정리 전 배치 펼쳐 보기
정리 전 배치 도식 · 그룹이 없는 최신 16장 B의 작업 배치입니다.
정리 전 배치 도식 · 그룹이 없는 최신 16장 B의 작업 배치입니다. 그림을 누르면 큰 화면으로 열립니다.
정리 후 배치 도식 · 왼쪽의 입력·모델에서 오른쪽의 출력까지 여섯 역할을 찾을 수 있습니다.
정리 후 배치 도식 · 왼쪽의 입력·모델에서 오른쪽의 출력까지 여섯 역할을 찾을 수 있습니다. 그림을 누르면 큰 화면으로 열립니다.

B. 여섯 그룹으로 묶기

선택한 노드의 바깥에 제목 있는 테두리를 만드는 단계입니다. 노드 이름이 헷갈리면 역할표로 돌아가 확인하세요.

  1. 첫 그룹을 만듭니다. 작업판 빈 곳을 한 번 클릭해 이전 선택을 풉니다. 이미지 로드의 제목을 클릭해 선택한 뒤, 작업판에 초점을 둔 채 Ctrl+G를 누릅니다. 선택한 노드 주위에 그룹이 생기고 제목 편집란이 나타나면 01 입력을 적고 Enter를 누릅니다. 이 그룹에는 노드 한 개만 들어갑니다.
  2. 여러 노드를 함께 묶습니다. 빈 곳을 클릭한 뒤 체크포인트 로드 제목을 클릭합니다. Shift를 누른 채 컨트롤넷 모델 로드 제목을 클릭해 두 노드를 선택합니다. Ctrl+G → 02 모델 → Enter 순서로 묶습니다. 이미 선택한 노드를 Shift+클릭하면 선택이 풀릴 수 있으므로 두 상자가 함께 선택됐는지 봅니다.
  3. 나머지 네 그룹을 만듭니다. 매번 빈 곳에서 선택을 풀고, 준비물의 역할표에서 해당 노드만 Shift+클릭으로 선택한 다음 Ctrl+G를 누릅니다. 제목은 03 문장, 04 윤곽 제어, 05 생성, 06 출력입니다. 그룹 테두리는 표에 있는 노드만 감싸도록 만드세요.
  4. 그룹 테두리를 다듬습니다. 이름을 잘못 적었으면 그룹 제목 부분을 오른쪽 클릭 → 제목(Title)에서 고칩니다. 테두리가 좁으면 그룹 오른쪽 아래 모서리를 끌어 넓힙니다. 그룹 전체를 옮길 때는 다른 선택을 풀고 그룹 맨 위 제목 띠를 잡아 끕니다. Ctrl·Shift·Alt는 누르지 않습니다. 관련 노드가 테두리 안에 있고 다른 그룹과 겹치지 않게 정리하세요.

C. 저장하고 다시 사용하기

  1. ComfyUI 안에 작업을 저장합니다. 작업판에 초점을 두고 Ctrl+S를 누릅니다. 작업 이름은 ch18-my-grouped입니다. 이 저장은 ComfyUI에서 다음에 찾아 열 작업을 남깁니다. 다음 단계의 JSON 내보내기도 해두면 파일로 따로 보관할 수 있습니다.
  2. 일반 JSON 파일을 내보냅니다. 그래프(Graph) → 내보내기(Export)를 누릅니다. 이름 입력란이 있으면 ch18-my-grouped.json으로 지정합니다. 이름을 묻지 않으면 받은 파일의 이름을 그렇게 바꿉니다. 내보내기(API 형식)은 선택하지 않습니다. 준비물의 ch18-grouped.json은 참고 완성본이고, ch18-my-grouped.json이 지금 직접 만든 작업입니다.
  3. 새 작업에서 다시 엽니다. 위쪽 작업 탭의 +로 빈 작업을 만든 뒤 Ctrl+O → ch18-my-grouped.json을 선택합니다. 여섯 그룹이 돌아왔는지 보고, 두 모델의 파일명과 이미지 로드의 입력 PNG를 확인합니다. 같은 설치에서 이미 선택되어 있으면 그대로 사용하고, 비어 있거나 누락이라고 나오면 준비물 파일을 다시 선택·업로드합니다. JSON에는 모델·입력 사진 자체가 들어 있지 않습니다.
  4. 한 장을 생성합니다. 아래 설정표와 같은 값인지 보고 실행(Run)을 한 번 누릅니다. 결과는 이미지 저장 두 곳으로 나뉩니다. ComfyUI/output/guide/ch16_control_B_숫자_.png가 인물, ch16_control_B_edges_숫자_.png가 윤곽입니다. 접두사에 ch16이 남는 것은 저장 설정까지 유지했기 때문입니다. 파일 뒤 번호는 기존 저장물에 따라 달라집니다.

설정·연결 참고

기존 값은 그대로 사용합니다. 파일이 달라졌거나 복구가 필요할 때 아래 표와 대조하세요.

유지할 설정·프롬프트·연결 펼치기

16장 B는 문장으로 옆모습을 요청하면서 정면 윤곽의 영향을 비교한 작업입니다. 이번에도 그 문장과 윤곽을 그대로 이어 씁니다. 정리를 위해 프롬프트를 고칠 필요는 없습니다.

설정할 노드입력값
체크포인트 로드체크포인트 = sd_xl_base_1.0.safetensors
빈 잠재 이미지너비 = 1024
높이 = 1024
배치 크기 = 1
이미지 로드 · 입력 사진입력 파일 = ch05_first_portrait_v2_00001_.png
컨트롤넷 모델 로드제어 모델 = control-lora-canny-rank256.safetensors
Canny 경계 필터낮은 임계값 = 0.1
높은 임계값 = 0.2
컨트롤넷 적용강도 = 1.0
시작 = 0.0
종료 = 1.0
이미지 저장 · ch16_control_B_edges파일명 접두사 = guide/ch16_control_B_edges
KSamplerseed = 20261013
생성 후 제어 = fixed
steps = 28
CFG = 5.5
sampler = dpmpp_2m
scheduler = karras
denoise = 1.0
이미지 저장 · ch16_control_B파일명 접두사 = guide/ch16_control_B
입력할 프롬프트 전문

긍정 프롬프트

side profile studio photograph of one adult woman facing left, nose pointing to the left edge of the image, only one eye visible, shoulder-length dark brown hair, solid red turtleneck sweater, head and shoulders, plain light gray background, soft diffused studio light, realistic photography

부정 프롬프트

front view, facing camera, text, watermark, illustration, distorted face, duplicate person, hands in frame, blurry, low quality, patterned clothes
현재 작업의 노드·연결 목록 · 노드 12개와 연결 15개

제공 JSON에 이미 들어 있는 노드와 연결입니다. 실수로 선을 바꿨을 때 이 목록과 대조하세요. 이름이 같은 노드는 역할·파일명으로 구별합니다.

노드 역할검색할 기술 이름
체크포인트 로드CheckpointLoaderSimple
빈 잠재 이미지EmptyLatentImage
이미지 로드 · 입력 사진LoadImage
컨트롤넷 모델 로드ControlNetLoader
긍정 프롬프트CLIPTextEncode
부정 프롬프트CLIPTextEncode
Canny 경계 필터Canny
컨트롤넷 적용ControlNetApplyAdvanced
이미지 저장 · ch16_control_B_edgesSaveImage
KSamplerKSampler
VAE 디코드VAEDecode
이미지 저장 · ch16_control_BSaveImage
순서출발 출력도착 입력
1체크포인트 로드
CLIP →
긍정 프롬프트
clip
2체크포인트 로드
CLIP →
부정 프롬프트
clip
3체크포인트 로드
모델 →
KSampler
모델
4컨트롤넷 적용
긍정 →
KSampler
긍정
5컨트롤넷 적용
부정 →
KSampler
부정
6빈 잠재 이미지
잠재 데이터 →
KSampler
잠재 입력
7KSampler
잠재 데이터 →
VAE 디코드
잠재 데이터
8체크포인트 로드
VAE →
VAE 디코드
vae
9VAE 디코드
이미지 →
이미지 저장 · ch16_control_B
이미지
10긍정 프롬프트
조건 →
컨트롤넷 적용
긍정
11부정 프롬프트
조건 →
컨트롤넷 적용
부정
12컨트롤넷 모델 로드
컨트롤넷 →
컨트롤넷 적용
컨트롤넷
13Canny 경계 필터
이미지 →
컨트롤넷 적용
이미지
14이미지 로드 · 입력 사진
이미지 →
Canny 경계 필터
이미지
15Canny 경계 필터
이미지 →
이미지 저장 · ch16_control_B_edges
이미지
선택 실습 · 서브그래프 만들기와 라이브러리 재사용

기본 실습을 끝낸 뒤에만 진행하세요. Canny와 컨트롤넷 적용 두 노드를 한 묶음으로 만들고, 그 묶음을 다른 작업에 다시 넣습니다. 새 모델은 필요 없습니다. 아래 메뉴와 실제 화면은 프런트엔드 1.49.6 기준입니다.

블루프린트(Blueprint)는 여기서 라이브러리에 보관한 서브그래프의 재사용용 원형을 뜻합니다. 그룹은 제목 있는 테두리이고, 서브그래프는 내부 작업과 입출력이 있는 묶음이며, 라이브러리는 그 묶음을 찾아 쓰는 보관함입니다.

D. 두 노드를 서브그래프로 만들기

  1. 사본을 만듭니다. 기본 실습의 작업을 열고 그래프 → 다른 이름으로 저장에서 ch18-my-subgraph로 저장합니다. 기본 실습 파일은 보관해 둡니다.
  2. 두 노드만 선택합니다. 빈 곳을 클릭한 뒤 Canny 제목을 클릭하고, Shift를 누른 채 컨트롤넷 적용 제목을 클릭합니다. 선택 도구 모음에서 마우스를 올렸을 때 선택 영역을 서브그래프로 변환이라고 나오는 버튼을 누릅니다. 두 상자가 한 상자로 바뀌며, 기존 바깥 연결은 자동으로 이어집니다. 이 단계에서 Ctrl+G를 누르면 서브그래프 대신 그룹이 만들어집니다.
  3. 안을 열고 이름을 붙입니다. 새 묶음의 제목 오른쪽 위 작은 열기 아이콘을 누릅니다. 위쪽 경로의 New Subgraph 옆 펼침 버튼 → 이름 바꾸기에서 CH18 Canny Control을 입력하고 Enter를 누릅니다. 제목이 짧게 잘려 보이면 묶음의 오른쪽 아래 모서리를 끌어 넓힙니다.
  4. 안과 밖의 역할을 읽습니다. 안에는 Canny와 컨트롤넷 적용 두 노드가 남습니다. 왼쪽에서 사진·두 문장 조건·제어 모델을 받고, 오른쪽으로 제어된 두 조건과 윤곽 이미지를 보냅니다. Canny는 0.10 / 0.20, 적용 강도·시작·종료는 1.00 / 0.000 / 1.000을 유지합니다. 이번 구성에서 vae는 선택 입력이므로 연결하지 않습니다. 연결되지 않은 회색 추가 포트는 새 입출력을 만들 때 쓰는 자리이며, 현재 자료가 오가는 포트 수에 넣지 않습니다.
실제 내부 화면 · 라이브러리에서 다시 꺼낸 묶음에도 Canny와 컨트롤넷 적용, 입력 4개·출력 3개가 보존되어 있습니다.
실제 내부 화면 · 라이브러리에서 다시 꺼낸 묶음에도 Canny와 컨트롤넷 적용, 입력 4개·출력 3개가 보존되어 있습니다. 그림을 누르면 큰 화면으로 열립니다.

작업판에 초점을 두고 Esc를 누르면 바깥 작업으로 돌아옵니다. 아래 표는 바깥에서 보이는 연결입니다. 한글 표시 옆의 영문은 JSON의 포트 이름입니다.

방향묶음의 포트연결할 상대
받기 ①긍정 조건 positive긍정 프롬프트의 조건 출력
받기 ②부정 조건 negative부정 프롬프트의 조건 출력
받기 ③컨트롤넷 control_net컨트롤넷 모델 로드의 컨트롤넷 출력
받기 ④이미지 image이미지 로드의 이미지 출력
보내기 ①긍정 조건 positiveKSampler의 긍정 조건 입력
보내기 ②부정 조건 negativeKSampler의 부정 조건 입력
보내기 ③이미지 IMAGE접두사가 guide/ch16_control_B_edges인 이미지 저장의 이미지 입력

저장하고 다시 열기: Ctrl+S → 그래프 → 내보내기 → 이름 ch18-my-subgraph → 확인 순서로 일반 JSON을 받습니다. 새 작업 + → Ctrl+O로 ch18-my-subgraph.json을 열고, 기존 모델 두 개와 입력 PNG를 선택한 뒤 실행합니다. 묶음 안의 노드와 연결까지 함께 돌아와야 정상입니다.

E. 라이브러리에 넣고 다른 작업에서 사용하기

  1. 묶음을 보관합니다. 바깥 작업에서 CH18 Canny Control 제목을 클릭하고 선택 도구 모음의 서브그래프 게시를 누릅니다. 대화상자 제목이 서브그래프를 라이브러리에 저장인지 보고, 이름을 CH18 Canny Control로 두고 확인을 누릅니다. 이 버전의 이 버튼은 현재 ComfyUI의 노드 라이브러리에 보관하는 기능입니다.
  2. 빈 작업에서 꺼내 봅니다. 위쪽 +로 빈 작업을 만들고 왼쪽 노드 라이브러리(n)를 엽니다. 서브그래프 블루프린트 → 내 블루프린트 → User를 펼칩니다. CH18 Canny Control 항목을 작업판으로 끌어놓습니다. 제목 오른쪽 위 아이콘으로 내부를 열어 두 노드가 들어 있는지 봅니다. 묶음 한 개만으로는 사진 생성 전체 작업이 되지 않습니다. 나머지 모델·문장·생성·출력 노드가 필요합니다.
  3. 완성된 작업에 다시 연결합니다. 새 작업에서 앞서 저장한 ch18-my-subgraph.json을 열고, 다른 이름으로 저장으로 ch18-my-library-reused 사본을 만듭니다. 사본 안의 기존 서브그래프 한 개만 선택해 Delete로 지운 뒤, 라이브러리 항목을 빈 04 윤곽 제어 그룹으로 끌어놓습니다. 방금 넣은 묶음의 입력 4개·출력 3개를 위의 7개 연결표대로 잇습니다. 출력 점을 잡아 상대 입력 점으로 끌어놓으면 됩니다. 삭제 과정에서 일부 선이 바로 연결되더라도 새 묶음을 거치도록 출력 3개를 다시 연결합니다.
  4. 저장하고 실행합니다. 내부 값, 프롬프트, 두 모델, 입력 PNG, KSampler의 seed 20261013 / fixed / 28 / CFG 5.5 / dpmpp_2m / karras / denoise 1.0을 그대로 둡니다. Ctrl+S로 저장한 뒤 일반 내보내기로 ch18-my-library-reused.json을 보관하고 실행합니다. 빨간 니트의 인물과 윤곽이 각각 나오면 재사용까지 끝난 것입니다.
실제 라이브러리 화면 · 내 블루프린트의 CH18 Canny Control과 작업에 다시 넣어 연결한 묶음입니다.
실제 라이브러리 화면 · 내 블루프린트의 CH18 Canny Control과 작업에 다시 넣어 연결한 묶음입니다. 그림을 누르면 큰 화면으로 열립니다.
실제 재사용 완료 화면 · 문장 → 서브그래프 → 생성 → 출력이 이어져 있습니다. 왼쪽 입력·모델 영역은 이 확대 화면 밖에 있습니다.
실제 재사용 완료 화면 · 문장 → 서브그래프 → 생성 → 출력이 이어져 있습니다. 왼쪽 입력·모델 영역은 이 확대 화면 밖에 있습니다. 그림을 누르면 큰 화면으로 열립니다.

라이브러리에 보관하는 것은 묶음의 구성입니다. 모델 파일과 입력 사진은 함께 들어 있지 않습니다. 일반 JSON으로 다른 작업을 여는 것과 내 블루프린트 목록에 등록하는 것도 별개의 동작입니다. JSON 안에는 서브그래프의 내부 정의가 함께 들어 있어야 합니다.

선택 실습의 참고·복구 파일

파일용도
ch18-subgraph.json (ZIP) 서브그래프 변환 후 전체 작업. Ctrl+O로 열고 기존 입력 PNG와 모델을 선택합니다.
ch18-library-reused.json (ZIP) 라이브러리에서 묶음을 다시 넣고 7개 외부 연결을 마친 전체 작업.

두 JSON 모두 준비물의 같은 입력 PNG를 사용합니다. 독자가 직접 저장한 ch18-my-… 파일과 구별해 참고용으로 쓰세요.

선택 실습의 정상 결과

묶음 이름만 보이는 것으로 끝내지 말고, 안에 두 노드가 있고 바깥 입력 4개·출력 3개가 연결되는지 봅니다. 새로 열린 작업에서도 인물·윤곽을 생성할 수 있어야 합니다. 아래 결과는 내보낸 서브그래프 JSON을 다시 열어 실제 생성한 이미지입니다.

서브그래프 JSON을 다시 열어 생성한 결과 · 그룹 정리 작업 및 라이브러리 재사용 작업의 결과와 크기·RGB 픽셀이 같습니다.
서브그래프 JSON을 다시 열어 생성한 결과 · 그룹 정리 작업 및 라이브러리 재사용 작업의 결과와 크기·RGB 픽셀이 같습니다. 그림을 누르면 큰 화면으로 열립니다.

현재 PC에서 같은 실행 조건으로 비교한 결과입니다. 정리나 묶음 변환이 화질을 높이거나 생성 속도를 빠르게 만든다는 뜻은 아닙니다.

4. 정상 결과 확인

여섯 그룹에서 입력·모델·문장·윤곽 제어·생성·출력을 찾을 수 있고, 다시 연 작업에서도 같은 역할이 유지되면 정리가 된 것입니다. 생성 결과에는 빨간 니트를 입고 카메라 쪽을 보는 인물 한 명이 보여야 합니다. 윤곽 그림만 나오면 인물용 이미지 저장 노드도 확인하세요.

정리 후 JSON으로 실제 생성한 1024×1024 결과. 빨간 니트와 정면에 가까운 얼굴·어깨 구도가 유지됩니다.
정리 후 JSON으로 실제 생성한 1024×1024 결과. 빨간 니트와 정면에 가까운 얼굴·어깨 구도가 유지됩니다. 그림을 누르면 큰 화면으로 열립니다.
정리 전 결과와 비교하기
정리 전 JSON으로 실제 생성한 결과. 위 정리 후 결과와 같은 인물·구도입니다.
정리 전 JSON으로 실제 생성한 결과. 위 정리 후 결과와 같은 인물·구도입니다. 그림을 누르면 큰 화면으로 열립니다.

이 PC에서 정리 전, 정리 후, 저장한 JSON을 다시 읽은 작업으로 각각 생성했습니다. 세 실행의 인물 결과와 윤곽 결과는 크기·RGB 픽셀이 모두 같았습니다. PNG 안의 작업 정보는 달라질 수 있습니다. 여기서 배우는 것은 배치와 그룹을 바꿔도 생성 조건은 그대로라는 점입니다.

정리 후 작업의 윤곽 출력. 인물 결과와 구별해서 봅니다.
정리 후 작업의 윤곽 출력. 인물 결과와 구별해서 봅니다. 그림을 누르면 큰 화면으로 열립니다.

여기까지 되면 기본 실습 완료

확인할 결과정상 모습
작업 정리여섯 그룹에서 모델, 문장, 생성값과 출력 위치를 찾을 수 있습니다.
다시 열기ch18-my-grouped.json을 새 작업에서 열어 그룹 제목·배치와 노드 연결이 돌아옵니다.
실행 결과인물 PNG 한 장과 윤곽 PNG 한 장이 ComfyUI/output/guide에 생깁니다. 인물·윤곽을 구별할 수 있습니다.
다음 실습에 쓸 자료내 JSON과 입력 PNG를 함께 보관합니다. SDXL Base와 Canny 모델은 기존 models 폴더에 그대로 둡니다.

보관할 실습 폴더의 예입니다. JSON의 위치는 자유롭게 정해도 되지만, 입력 사진은 다시 열 때 이미지 로드에서 선택할 수 있어야 합니다.

ch18-practice/
  ch18-my-grouped.json
  ch05_first_portrait_v2_00001_.png

이 두 파일이 작업과 입력의 한 쌍입니다. 큰 모델 파일을 JSON 옆에 복사하는 단계는 없습니다.

5. 자주 생기는 문제

상황확인할 곳
선택 실습에서 서브그래프 버튼이 안 보여요기본 실습은 그대로 마칠 수 있습니다. Canny와 컨트롤넷 적용의 제목을 Shift+클릭해 두 노드를 선택했는지 봅니다. 그룹 제목이나 입력칸을 선택한 상태가 아니어야 합니다. 설치된 화면에 해당 기능이 없으면 그룹 + 일반 JSON을 사용합니다.
라이브러리 항목만 넣었는데 실행이 안 돼요이 묶음에는 Canny와 컨트롤넷 적용만 들어 있습니다. 모델·입력·프롬프트·KSampler·출력은 바깥에 있어야 합니다. 선택 실습의 7개 연결표를 따라 잇거나 ch18-library-reused.json을 새 작업에서 여세요.
서브그래프 안에서 바깥으로 돌아가고 싶어요작업판에 초점을 두고 Esc를 누르면 상위 작업으로 돌아갑니다. 위쪽 경로에서 작업 이름을 눌러도 됩니다. 서브그래프를 지워서 나오는 것이 아닙니다.
JSON을 열었는데 내 블루프린트 목록에는 없어요일반 JSON은 그 작업 안의 서브그래프 정의를 담습니다. 노드 라이브러리 목록에 등록하는 동작은 별개입니다. 묶음을 선택해 서브그래프 게시 → 이름 → 확인으로 저장하세요.
Ctrl+G가 그룹을 만들지 않아요프롬프트나 숫자 입력란에서 빠져나와 작업판 빈 곳을 클릭한 뒤, 노드 제목을 선택하고 다시 누릅니다. 단축키를 바꾼 경우 설정의 키 바인딩에서 GroupSelectedNodes(선택한 노드 그룹화)를 찾습니다.
관련 없는 노드도 그룹에 들어갔어요다음 그룹을 만들기 전에 빈 곳을 클릭해 선택을 풉니다. 방금 만든 그룹이면 Ctrl+Z로 되돌리고 해당 노드만 다시 선택합니다. 그룹 제거 메뉴와 노드 삭제를 혼동하지 마세요.
그룹 테두리만 움직이고 노드는 남아요Ctrl을 누르면서 끌면 그룹 테두리만 옮길 수 있습니다. Ctrl을 놓고, 관련 노드가 테두리 안에 있는지 확인한 뒤 그룹의 제목 띠를 끕니다. 잘못 옮긴 직후라면 Ctrl+Z로 되돌리세요.
PNG를 넣었더니 작업판이 바뀌었어요작업판에 PNG를 끌어놓아 이미지에 포함된 워크플로를 연 경우입니다. 내 ch18-my-grouped.json을 다시 열고 이미지 로드 노드 안의 업로드 버튼으로 입력 PNG를 넣습니다.
다시 열었더니 배치나 그룹이 없어요내보내기(API 형식) 대신 일반 내보내기를 사용했는지 확인합니다. 준비물의 ch18-grouped.json으로 다시 시작해도 됩니다.
모델·입력 이미지가 없다고 해요JSON은 파일의 이름을 참조합니다. 준비물 PNG는 이미지 로드에서 업로드하고 두 모델은 models/checkpoints와 models/controlnet에서 선택합니다. 그림이 보이는 썸네일만으로 모델·입력이 준비됐다고 판단하지 않습니다.
정리했는데 그림이 달라졌어요seed의 fixed 여부, 프롬프트, 입력 PNG, 제어 강도·적용 구간, 모델·생성값·연결 중 바뀐 곳을 확인합니다. 본문의 설정표 또는 제공 완성 JSON을 기준으로 돌아옵니다.
그림이 없거나 저장 번호가 달라요JSON을 열기만 해서는 결과가 새로 생성되지 않습니다. 실행 후 인물용 이미지 저장을 봅니다. 자동 번호는 새 파일의 순서이며 seed나 결과 품질을 뜻하지 않습니다.
파일이 ch18-my-grouped.json.txt로 저장됐어요탐색기에서 보기 → 표시 → 파일 확장명을 켭니다. 텍스트 내용을 새로 복사해 저장하기보다 일반 내보내기로 받은 원래 JSON 파일을 사용하세요. 이름은 ch18-my-grouped.json으로 끝나야 합니다.

공통 오류와 용어는 용어·문제 해결에서 찾을 수 있습니다.

공식 참고 자료

준비 단계에서 PC 정보가 헷갈린다면 GPU·메모리 등 내 컴퓨터 사양 확인 방법을 함께 참고하세요. 이 장의 결과와 작업 JSON을 보관한 뒤 다음 실습으로 넘어가면 다시 비교하기 쉽습니다.