체크포인트와 LoRA, 파일 안에 든 것이 다르다
홍길동은 1편에서 VRAM 8GB 카드로 SDXL 계열부터 시작하기로 했고, 2편과 3편에서 ComfyUI 데스크톱과 Forge Neo를 깔았다. SDXL base로 첫 장을 뽑은 뒤 그림체를 바꿔 보려고 Civitai를 열었더니, 같은 목록에 종류가 Checkpoint인 파일과 LoRA인 파일이 섞여 있었다. 둘은 이름만 다른 것이 아니라 파일 안에 든 것이 다르고, 그래서 고르는 순서도 다르다.
ComfyUI 소스 코드에서 «Load Checkpoint» 노드는 파일 하나를 읽어 세 가지를 내놓는다. 잡음을 걷어 내며 그림을 만드는 모델(MODEL), 프롬프트를 읽는 텍스트 인코더(CLIP), 잠재 공간과 이미지를 오가는 VAE다. SD 1.5와 SDXL 체크포인트는 이 셋이 한 파일에 들어 있어서, 체크포인트 하나만 있으면 그림이 나온다. Stability AI가 올린 SDXL base 1.0 체크포인트는 한 파일이 6.94GB다.
LoRA는 혼자서 그림을 만들지 못한다. ComfyUI 공식 예제는 LoRA를 «메인 MODEL과 CLIP 모델 위에 덧대는 패치»라고 설명한다. «Load LoRA» 노드는 체크포인트에서 나온 MODEL과 CLIP을 받아, LoRA를 적용한 MODEL과 CLIP을 다시 내보낸다. ComfyUI 공식 LoRA 예제도 같은 체크포인트와 같은 설정에 LoRA 하나만 더해 그림체가 달라지는 비교 그림을 싣고 있다.
그래서 «ComfyUI에서 그림체를 바꾸는 법»에는 두 갈래가 있다. 그림 전체의 결을 바꾸려면 체크포인트를 바꾸고, 쓰던 체크포인트는 그대로 두고 좁은 스타일이나 대상 하나를 더하려면 LoRA를 끼운다.
| 구분 | 파일에 든 것 | 혼자 그림을 뽑나 | 공식 배포 파일 예 |
|---|---|---|---|
| 체크포인트 (SD 1.5 · SDXL) | 그림 모델 + 텍스트 인코더 + VAE | 뽑는다 | SDXL base 1.0 — 6.94GB |
| 본체만 든 파일 (FLUX 등) | 그림 모델만 — 인코더와 VAE는 따로 | 인코더 · VAE를 함께 불러야 뽑는다 | FLUX.1 [dev] — 23.80GB |
| LoRA | 모델과 텍스트 인코더에 덧대는 패치 | 못 뽑는다 — 같은 계열 모델이 필요 | SDXL 오프셋 예제 49.6MB · FLUX.1 Depth [dev] LoRA 1.24GB |
LoRA가 늘 작지는 않다
«체크포인트는 수 GB, LoRA는 수십 MB»라는 감각은 SD 1.5 · SDXL에서 나온 것이다. 공식 배포 파일 두 개를 열어 보면 폭이 크다. Stability AI가 SDXL base 저장소에 함께 올린 오프셋 노이즈 예제 LoRA는 49.6MB이고, 파일 머리(헤더)의 텐서 모양을 보면 LoRA 행렬 차원(rank)이 8이다. Black Forest Labs(BFL)가 FLUX.1 [dev]용으로 낸 Depth LoRA는 1.24GB이고, Comfy-Org 저장소에 같은 크기로 올라온 사본의 헤더에서 행렬 차원은 대부분 128이다. 붙는 모델이 크고 차원이 크면 LoRA도 GB 단위가 된다.
«Checkpoint»로 표시돼도 본체만 든 파일이 있다
FLUX 계열은 한 겹이 더 있다. BFL 공식 저장소의 flux1-dev.safetensors(23.80GB)는 그림 모델 본체만 든 파일이라, ComfyUI 공식 예제는 이 파일을 models/diffusion_models에 넣고 텍스트 인코더와 VAE를 따로 받게 한다. 반면 Comfy-Org가 올린 flux1-dev-fp8.safetensors(17.25GB)는 «Load Checkpoint» 노드로 여는 한 파일짜리 체크포인트다. Civitai 개발자 문서도 FLUX · Wan · Z-Image처럼 본체를 따로 배포하는 모델은 종류가 Checkpoint로 표시돼도 대표 파일의 종류가 «Diffusion Model»일 수 있다고 적었다. 받기 전에 파일 종류 칸을 한 번 더 보는 이유다.
고르는 순서 — 계열을 정하고, 체크포인트, 그다음 LoRA
LoRA가 패치라는 말에는 조건이 붙는다. 패치는 원래 모델의 정해진 자리에 덧대는 것이라, 학습할 때 쓴 모델과 구조가 같은 계열에만 맞는다. ComfyUI 코드에는 LoRA 안의 가중치 이름이 불러온 모델에서 자리를 찾지 못할 때 lora key not loaded를, 자리는 찾았는데 모양이 다를 때 WARNING SHAPE MISMATCH를 남기는 경고가 들어 있다. LoRA를 끼운 뒤 명령 창에 이런 줄이 여러 개 보이면 설정보다 계열부터 의심한다.
계열이 맞지 않으면 나머지를 아무리 잘 골라도 소용이 없으니, 순서는 계열에서 시작한다.
- 계열 — 그래픽카드 VRAM과 쓰는 프로그램이 받는 계열을 먼저 정한다. 1편의 표에서 «된다» 칸을 고르고, Forge Neo를 쓴다면 README의 지원 목록(FLUX.2는 klein 4B · 9B만 지원, SD2 · SD3 계열은 제거된 기능)과 대 본다.
- 기준 그림 — 그 계열의 공식 원본 체크포인트로 한 장을 뽑아 둔다. 뒤에서 고른 파일이 무엇을 바꿨는지 견줄 기준이 된다.
- 체크포인트 — 커뮤니티 체크포인트를 고른다. Civitai API는 체크포인트를 Standard · Trained · Merge로 나눠 거르는 칸(checkpointType)을 둔다.
- LoRA — 고른 체크포인트 카드의 베이스 모델 값과 같은 값의 LoRA만 본다.
- 라이선스 — 쓰려는 용도를 베이스 모델과 파생 모델의 라이선스에 맞대 본다(5절).
다섯 단계 가운데 계열 다음의 넷은 모델 카드에 적힌 값으로 가른다. 그 값이 어느 칸에 있는지가 다음 절이다.
Civitai의 베이스 모델 값은 «SDXL» 하나가 아니다
2026년 9월 15일에 Civitai 공개 API(/api/v1/enums)가 돌려준 BaseModel 값은 105개였다. SD 1.5 · SDXL 1.0 · SD 3.5 · Flux.1 D · Flux.1 S · Flux.2 D · Flux.2 Klein 4B · Flux.2 Klein 9B가 따로 있고, Pony · Illustrious · NoobAI도 SDXL 1.0과 다른 값으로 올라 있다. 개발자 문서는 새 모델 계열이 늘 때마다 이 목록이 바뀌니 값을 고정해 두지 말라고 적었다. LoRA를 찾을 때 «SDXL 쪽이면 되겠지» 하고 넓게 잡기보다, 체크포인트 카드에 적힌 값과 같은 값으로 거르는 편이 덜 헤맨다.
Forge Neo에도 같은 장치가 있다. LoRA 카드의 편집 창에서 «Preset»(sd · xl · flux · klein 등)을 정해 두고 설정의 «Filter Lora based on selected Preset»을 켜면, 선택한 UI Preset과 다른 계열로 표시된 LoRA가 목록에서 빠진다. 기본값은 꺼져 있고, Preset이 «Unknown»으로 남은 LoRA는 걸러지지 않는다.
모델 카드에서 읽는 칸 — Civitai · 허깅페이스 · 파일 헤더
모델 카드는 받는 곳마다 생김새가 다르지만 읽을 값은 같다. 같은 질문의 답이 세 자리에서 어느 칸에 적히는지 맞대 두면, 처음 보는 모델 페이지에서도 찾는 시간이 줄어든다.
허깅페이스 — README 맨 위의 메타데이터
허깅페이스 문서는 모델 카드를 저장소의 README.md로 정의하고, 파일 맨 위 YAML 메타데이터에 license, base_model 같은 값을 적게 한다. 목록에 없는 라이선스라면 license: other와 함께 license_name · license_link를 적는다. BFL의 FLUX.1 [dev] Depth · Canny LoRA 카드가 이 형태로, license_name이 flux-1-dev-non-commercial-license다.
base_model은 파인튜닝 · 어댑터(LoRA 등) · 양자화 · 병합 모델이 어느 모델에서 왔는지 적는 칸이다. 허깅페이스는 이 값으로 관계(adapter · merge · quantized · finetune)를 추론해 모델 페이지의 모델 트리에 보여 준다. SDXL base 페이지의 모델 트리를 펼치면 Adapters · Finetunes · Merges · Quantizations로 나뉜 파생 모델 목록이 나온다. 이 칸은 올린 사람이 채우는 값이라 비어 있을 수 있다. 앞의 BFL 공식 LoRA 두 카드도 API로 받은 메타데이터에 base_model 값이 없었다. 그럴 때는 설명 글과 저장소 이름으로 계열을 확인한다.
Civitai — 모델 버전마다 붙는 칸
Civitai 개발자 문서의 API 설명을 보면 카드의 값이 어떤 칸에 담기는지 알 수 있다. 모델에는 종류(type)와 권한 칸(allowNoCredit · allowCommercialUse · allowDerivatives · allowDifferentLicense)이 붙는다. 실제 파일을 담는 «모델 버전»에는 베이스 모델(baseModel), 학습 단어(trainedWords), 파일 목록이 따로 붙고, 파일마다 크기(sizeKB), 형식 · 가지치기 여부 · 정밀도(metadata의 format · size · fp, 문서 예시는 SafeTensor · pruned · fp16), 피클 검사와 바이러스 검사 결과(pickleScanResult · virusScanResult)가 적힌다.
문서는 모델 버전을 «파일 한 벌과 하나의 baseModel을 가진 릴리스»로 설명한다. 베이스 모델이 모델이 아니라 버전에 붙는다는 뜻이라, 카드 첫 화면만 보지 말고 받으려는 버전의 값을 확인한다. 필터로 거르고 예시 이미지를 보고 버전을 고르는 사이트 사용 순서는 Civitai·허깅페이스에서 모델을 안전하게 받는 법에 따로 적어 두었다.
파일 헤더 — safetensors 안에 적힌 카드
받은 파일 자체에도 카드가 들어 있을 수 있다. safetensors 형식은 파일 맨 앞 JSON 헤더에 __metadata__라는 자유 기입 칸을 두고, Stability AI의 모델 메타데이터 규격(SAI Model Spec)은 이 칸에 modelspec.architecture · resolution · usage_hint · trigger_phrase · license 같은 키를 적게 한다. 규격 문서는 architecture 값에 stable-diffusion-v1/lora처럼 슬래시 뒤에 lora를 붙여, 어느 계열에 붙는 LoRA인지 표시하는 예를 든다.
앞에서 본 SDXL 오프셋 예제 LoRA의 헤더가 이 규격대로 적혀 있다. architecture는 stable-diffusion-xl-v1-base/lora, resolution은 1024x1024, license는 CreativeML Open RAIL++-M License이고, usage_hint에는 «Recommended strength: 50% (0.5)»와 함께 낱말 contrasts가 효과를 바꿀 수 있다는 안내가 있다. BFL Depth LoRA 사본의 헤더에도 license가 FLUX.1 [dev] Non-Commercial License로 적혀 있다. 모든 파일에 이런 키가 있지는 않다. 규격 문서도 필수 키가 없는 파일은 규격 이전에 만든 것으로 보라고 적었다. Forge Neo의 LoRA 카드 편집 창은 헤더에 남은 학습 기록(ss_sd_model_name 같은 키)을 «Model:» 같은 줄로 보여 준다.
| 판단할 것 | Civitai (API 칸) | 허깅페이스 카드 | safetensors 헤더 |
|---|---|---|---|
| 종류 | type (Checkpoint · LORA 등) | base_model 관계 (adapter 등) | architecture 끝의 /lora |
| 베이스 계열 | baseModel — 버전마다 | base_model · 모델 트리 | architecture |
| 트리거 워드 | trainedWords | 설명 글 | trigger_phrase · usage_hint |
| 권장 해상도 · 강도 | 설명 글 | 설명 글 · 예제 코드 | resolution · usage_hint |
| 라이선스 | 권한 칸 (allowCommercialUse 등) | license · license_name · license_link | license |
| 파일 크기 · 정밀도 | sizeKB · metadata (fp · size · format) | Files 탭의 파일 크기 | 텐서마다 적힌 dtype |
표의 여섯 줄이 받기 전에 옮겨 적을 값이다. 세 곳이 모두 채워진 카드는 드물어서, 한 곳이 비면 다른 두 곳에서 같은 값을 찾는다.
권장 해상도 · 단계 · 트리거 워드 — 카드의 숫자를 프로그램 기본값과 맞춘다
계열과 파일을 골랐으면 카드에서 숫자 몇 개를 옮겨 적는다. 파일은 맞게 골랐어도 이 값이 프로그램 기본값과 다르면 기대한 그림과 멀어진다. 공식 문서와 공식 카드가 적어 둔 기준값은 이렇다.
| 계열 | 공식 문서의 기준 | 출처 |
|---|---|---|
| SD 1.5 | 512×512 해상도로 학습 | 허깅페이스 SD 1.5 모델 카드 |
| SDXL | 1024×1024, 또는 픽셀 수가 같은 다른 비율(예: 896×1152 · 1536×640) | ComfyUI Examples · SDXL |
| FLUX.1 [dev] (fp8 한 파일 체크포인트) | CFG를 1.0으로 둔다 | ComfyUI Examples · Flux |
| FLUX.1 [schnell] | 4단계용으로 증류한 모델 | ComfyUI Examples · Flux |
| FLUX.2 [klein] 4B | 예제 코드 1024×1024 · 4단계 · guidance 1.0 | BFL 모델 카드 |
Forge Neo는 UI Preset마다 기본값을 코드(modules_forge/presets.py)에 넣어 두었다. sd는 Euler a · 32단계 · CFG 6, xl은 Euler a · 24단계 · CFG 4.5, flux는 Euler · 20단계 · CFG 1 · Distilled CFG 3, klein은 Euler · 4단계 · CFG 1이다. Neo 위키도 FLUX dev처럼 증류한 모델은 CFG를 1.0으로 두라고 안내한다. 커뮤니티 체크포인트의 권장 샘플러 · 단계 · CFG는 제작자가 설명 글에 적는 값이다. Civitai API의 모델 버전 항목에는 샘플러를 담는 칸이 따로 없어서 설명 글에서 찾는다. 결과가 이상할 때 이 값들을 어떤 순서로 손보는지는 다음 편에서 다룬다.
트리거 워드 — 적는 자리가 프로그램마다 다르다
학습할 때 특정 문구에 크게 기대도록 만든 LoRA는 그 문구가 프롬프트에 있어야 제 효과를 낸다. Civitai는 이 문구를 모델 버전의 trainedWords 칸에 담고, SAI Model Spec은 trigger_phrase 키를 두면서 UI가 이 문구를 프롬프트에 자동으로 넣어도 된다고 적었다. 넣는 방식은 프로그램마다 다르다. ComfyUI의 Load LoRA 노드에는 문구 칸이 없어서 CLIP Text Encode 노드의 프롬프트에 직접 적는다. Forge Neo는 LoRA 카드 편집 창의 «Activation Text»에 적어 두면 LoRA를 프롬프트에 넣을 때 그 문구가 함께 붙는다.
강도 — 기본값 1.0과 카드의 권장값
두 프로그램 모두 LoRA 강도의 기본값은 1.0이다. ComfyUI의 Load LoRA 노드는 strength_model(모델 쪽)과 strength_clip(텍스트 인코더 쪽)을 따로 받고, 두 값 모두 기본 1.0에 -100부터 100까지, 음수도 받는다. Forge Neo는 프롬프트에 <lora:이름:가중치> 꼴로 넣고, 설정의 «Default Weight for Extra Networks» 기본값이 1.0이다. LoRA 카드 편집 창의 «Preferred Weight»에 값을 적어 두면 LoRA를 넣을 때 그 값이 들어가고, 0으로 두면 기본 가중치를 쓴다.
기본값을 권장값으로 읽지 않는다. Stability AI의 SDXL 오프셋 예제 LoRA는 헤더에 권장 강도를 0.5로 적었다. 카드에 권장 강도가 있으면 기본값 1.0에서 출발하지 말고 그 값에서 출발한다.
라이선스 칸 — 이름을 적어 두고 원문을 연다
라이선스는 두 겹으로 본다. 베이스 모델이 달고 나온 라이선스와, 그 위에 만든 체크포인트 · LoRA 카드의 권한 표시다. 한쪽만 보면 판단이 어긋날 수 있다. 이 절은 라이선스를 해석하지 않는다. 카드의 표기로 원문 제목을 찾고, 원문에서 어느 조항부터 읽을지만 짚는다. 실행 프로그램 · 모델 · 생성 이미지를 세 층으로 가른 설명은 Stable Diffusion 라이선스를 층별로 나눈 정리에 있다.
| 계열 | 허깅페이스 카드 표기 | 원문 제목 | 원문에서 먼저 볼 조항 |
|---|---|---|---|
| SD 1.5 | creativeml-openrail-m | CreativeML Open RAIL-M (카드의 License 줄이 가리키는 CompVis 페이지) | Attachment A 사용 제한 · 배포 조항 · The Output You Generate |
| SDXL 1.0 | openrail++ | CreativeML Open RAIL++-M License (2023-07-26) | Attachment A 사용 제한 · 배포 조항 · The Output You Generate |
| SD 3.5 Large · Medium | stabilityai-ai-community | Stability AI Community License Agreement (2024-07-05 갱신) | Commercial Purpose · 연 매출 기준 · 등록 · Derivative Works · 표시 의무 |
| FLUX.1 [dev] · BFL 공식 Depth · Canny LoRA | flux-1-dev-non-commercial-license | FLUX.1 [dev] Non-Commercial License v1.1.1 | Non-Commercial Purpose · Derivative · Outputs · 콘텐츠 필터 |
| FLUX.2 [dev] · FLUX.2 [klein] 9B | flux-non-commercial-license | BFL flux2 저장소의 FLUX 비상업 라이선스 원문 | Outputs · 필터 또는 사람 검토 |
| FLUX.1 [schnell] · FLUX.2 [klein] 4B | apache-2.0 | Apache License 2.0 | 고지 · 변경 표시 조항 |
SD 3.5가 쓰는 Stability AI Community License Agreement는 연 매출 100만 달러 미만이면 상업 목적 이용을 허락하면서, 상업 목적으로 쓰거나 배포하면 Stability AI에 등록해야 한다고 적었다. 파생 작업물(Derivative Works)의 정의에 «fine tune»과 «low-rank adaptation» 모델을 넣었고, 관련 웹사이트나 문서에 «Powered by Stability AI»를 표시하라는 조항도 있다. SD 3.5 기반 LoRA도 이 정의 안에 든다는 뜻이다.
FLUX.1 [dev] Non-Commercial License v1.1.1은 모델 이용을 비상업 목적(Non-Commercial Purpose)으로 한정하고, 미세 조정한 버전을 파생물(Derivative)로 정의하면서 모델에 대한 제한이 파생물에도 적용된다고 적었다. 같은 문서의 산출물(Outputs) 조항은 생성한 결과물을 이 라이선스가 금지한 경우를 빼고 «상업 목적을 포함해» 쓸 수 있다고 하면서, 결과물로 경쟁 모델을 학습시키는 것은 금지한다. 모델 이용 범위와 산출물 조항이 따로 있으니 한쪽 문장만 떼어 읽지 않는다. BFL 저장소의 기록을 보면 2024년 8월 1일에 처음 올라온 판에도 산출물 조항의 «상업 목적 포함» 문장이 있었다.
FLUX.2 쪽은 크기에 따라 갈린다. FLUX.2 [klein] 4B 모델 카드는 4B를 Apache 2.0으로, 9B를 비상업 라이선스로 공개했다고 적었다. 허깅페이스 카드의 표기는 FLUX.2 [dev]와 klein 9B 모두 flux-non-commercial-license이고, BFL의 flux2 저장소에는 FLUX [dev] Non-Commercial License v2.0과 FLUX Non-Commercial License v2.1 원문이 함께 있다. 받는 저장소의 LICENSE 파일이 어느 판인지 직접 연다.
Civitai 권한 칸은 «선의의 표시»일 수 있다
Civitai 교육 문서(Guide to Civitai Model Licensing Options, 2024년 3월 6일 갱신)는 제작자가 고르는 권한을 네 묶음으로 설명한다. 크레딧 없이 사용, 병합 모델 공유, 병합 모델에 다른 권한 적용, 그리고 상업 이용(생성 이미지 판매 · Civitai 생성 서비스에서 사용 · 다른 생성 서비스에서 사용 · 모델이나 병합 모델 판매)이다. 같은 문서는 SD 1.5 · SDXL 기반 모델에는 고른 권한으로 라이선스 문서를 만들어 모델 페이지에 붙이지만, Open RAIL 라이선스를 쓰지 않는 모델에서는 이 권한이 «선의의 표시(good-faith call outs)»로 작동한다고 적었다.
SDXL의 CreativeML Open RAIL++-M은 배포 조항에서 수정본과 파생 모델에 추가 조건이나 다른 조건을 붙일 수 있게 했다. Civitai의 권한 문서가 SD 1.5 · SDXL 기반에서 라이선스 문서로 붙는 이유다. FLUX나 SD 3.5를 베이스로 한 파생 모델이라면 권한 아이콘보다 베이스 라이선스 원문을 먼저 연다.
라이선스 이름과 조항 이름은 2026년 9월 15일에 연 원문 그대로 옮겼다. 어떤 용도가 허용되는지는 원문 전체와 쓰려는 상황에 따라 달라진다. 판매나 납품처럼 돈이 오가는 작업이라면 원문을 끝까지 읽고, 필요하면 전문가 검토를 받는다.
파일 크기와 정밀도 — 같은 모델의 여러 파일 가운데 고르기
계열이 같아도 받을 파일은 여러 개일 수 있다. 공식 저장소에 올라 있는 실제 파일로 보면 차이가 크다. 크기는 허깅페이스 API가 돌려준 바이트 수를 1,000 단위로 나눈 값이다.
| 모델 | 파일 | 크기 | 공식 설명 |
|---|---|---|---|
| SD 1.5 | v1-5-pruned-emaonly.safetensors | 4.27GB | EMA 가중치만 · VRAM을 덜 씀 · 추론용 |
| SD 1.5 | v1-5-pruned.safetensors | 7.70GB | EMA와 non-EMA 가중치 · VRAM을 더 씀 · 미세 조정용 |
| FLUX.1 [dev] | flux1-dev.safetensors (BFL) | 23.80GB | 본체만 · 텍스트 인코더와 VAE는 따로 |
| FLUX.1 [dev] | flux1-dev-fp8.safetensors (Comfy-Org) | 17.25GB | Load Checkpoint로 여는 한 파일 · fp8은 품질이 조금 떨어진다 |
| FLUX.2 [klein] | 4B · 9B 본체 | 7.75GB · 18.16GB | 4B는 Apache 2.0 · 9B는 비상업 라이선스 |
| LoRA | SDXL 오프셋 예제 · FLUX.1 Depth [dev] LoRA | 49.6MB · 1.24GB | 행렬 차원 8 · 대부분 128 |
SD 1.5 카드가 두 파일을 나눠 적은 설명은 그림을 뽑기만 할 사람이 큰 파일을 받을 이유가 없다는 뜻이다. Civitai는 같은 버전에 파일이 여러 개일 때 파일 칸의 size(pruned · full)와 fp(fp16 등) 값으로 구분해 적는다. 이름이 비슷한데 크기가 다르면 이 두 칸부터 본다.
fp8 · GGUF처럼 줄인 파일은 VRAM에 맞추려고 고르는 선택지다. ComfyUI 공식 예제는 fp8이 품질을 조금 떨어뜨리니 자원이 되면 공식 16비트판을 권하고, «Load Diffusion Model» 노드의 weight_dtype을 fp8로 두면 메모리 사용이 절반으로 준다고 적었다. GGUF는 ComfyUI 공식 문서가 기본으로 지원하지 않는다고 적은 형식이라 ComfyUI-GGUF 같은 커스텀 노드가 따로 필요하다. Forge Neo README는 fp8mixed · nvfp4 같은 혼합 정밀도 모델 지원을 기능 목록에 올렸다. 내 카드에서 어느 계열과 정밀도가 도는지는 VRAM 구간별로 모델 파일 크기를 맞대 본 사양표로 가늠한다.
파일 형식은 .safetensors를 고른다. safetensors 저장소는 PyTorch가 기본으로 쓰는 pickle 형식을 «임의 코드를 실행한다»고 적고, 그 문제를 피하려고 만든 형식이라고 설명한다. 받는 곳을 고르고 받은 파일을 점검하는 절차는 여기서 더 다루지 않고 앞의 모델 다운로드 편으로 넘긴다.
ComfyUI와 Forge Neo — 넣는 자리 · 여는 노드 · 어긋날 때 남는 줄
고른 파일을 넣는 자리와 여는 방법은 프로그램마다 다르다. 두 프로그램을 나란히 놓으면 이렇다.
| 항목 | ComfyUI | Forge Neo |
|---|---|---|
| 체크포인트 | models/checkpoints · Load Checkpoint 노드 | models/Stable-diffusion · 체크포인트 칸 |
| 본체만 든 파일 | models/diffusion_models · Load Diffusion Model 노드 | models/Stable-diffusion + text_encoder · VAE 폴더 |
| LoRA 폴더 | models/loras | models/Lora |
| LoRA 적용 | Load LoRA 노드 · 강도 두 칸 기본 1.0 | Lora 탭에서 넣는 <lora:이름:가중치> · 기본 1.0 |
| 트리거 워드 | CLIP Text Encode 프롬프트에 직접 | Activation Text에 적어 두면 함께 붙는다 |
| 계열 거르기 | 템플릿 목록 · 명령 창의 경고 줄 | Preset 필터 설정 (기본 꺼짐) |
ComfyUI 공식 문서는 모든 체크포인트와 가중치 파일이 그대로 돌지는 않는다고 적고, 기본 지원하는 모델이 생기면 대개 워크플로 템플릿 목록에 짝이 맞는 예제가 올라온다고 설명한다. 처음 보는 계열의 파일을 받았다면 템플릿에 그 계열이 있는지부터 본다. LoRA를 두 개 이상 쓰려면 Load LoRA 노드를 줄줄이 이어 붙이고, 모델 쪽에만 적용하는 LoraLoaderModelOnly 노드도 따로 있다.
계열이 어긋나면 명령 창에 흔적이 남는다. 2절의 LoRA 경고 두 가지 외에, 체크포인트로 연 파일에 텍스트 인코더 가중치가 없으면 no CLIP/text encoder weights in checkpoint라는 경고를 남기는 줄도 ComfyUI 코드에 있다. 그림이 이상하다고 설정부터 만지기 전에 이 줄들을 찾으면, 원인이 파일 선택인지 설정인지가 먼저 갈린다.
Forge Neo는 models/Lora가 LoRA 기본 폴더이고, 화면의 «Lora» 탭에서 카드를 누르면 <lora:이름:가중치>가 프롬프트에 들어간다. 설정 설명에 따르면 체크포인트 목록은 하위 폴더에 든 모델을 sdxl/anime.safetensors처럼 폴더 이름과 함께 보여 준다. models/Stable-diffusion 아래를 계열별 폴더로 나눠 두면 목록에서 바로 갈린다. Neo가 받는 계열과 FLUX처럼 나뉜 모델의 파일 묶음은 Forge Neo 설치와 모델 폴더에, ComfyUI 데스크톱과 포터블의 모델 폴더 위치는 데스크톱 · 포터블의 설치 위치를 견준 편에 있다.
홍길동이 고른 체크포인트와 LoRA, 그리고 다음 편
홍길동은 순서대로 골랐다. 계열은 1편에서 정한 SDXL이다. 먼저 Stability AI의 SDXL base 1.0으로 기준 그림을 한 장 뽑아 두었다. 커뮤니티 체크포인트는 Civitai에서 종류 Checkpoint, 베이스 모델 SDXL 1.0으로 거른 뒤, 받으려는 버전의 baseModel · 파일 크기 · fp · format과 권한 칸을 메모장에 한 줄씩 옮겨 적고 나서 받았다. 파일은 ComfyUI 모델 폴더의 checkpoints 아래에 sdxl 하위 폴더를 만들어 넣었다.
LoRA는 연습 삼아 앞에서 헤더를 열어 본 SDXL 오프셋 예제 LoRA부터 끼웠다. 49.6MB라 디스크 부담이 없고, 헤더에 계열(stable-diffusion-xl-v1-base/lora)과 권장 강도 0.5, 라이선스가 적혀 있어 카드 읽기 연습에 알맞았다. ComfyUI에서는 파일을 모델 폴더의 loras에 넣고 Load LoRA의 strength_model을 0.5로 두었다. Forge Neo에서는 Lora 탭에서 카드를 눌러 프롬프트에 넣은 뒤 가중치 숫자만 0.5로 고쳤다. 같은 파일을 두 벌 두지 않으려고, 두 프로그램이 모델 폴더 하나를 함께 보는 설정은 모델 폴더를 여러 프로그램이 같이 쓰는 순서를 따랐다.
FLUX 계열 LoRA는 미뤘다. FLUX.1 [dev] 본체만 23.80GB라 1편 표에서 8GB 카드는 «느리게» 칸이었고, 라이선스 원문의 비상업 목적 정의와 산출물 조항도 끝까지 읽은 다음에 다시 보기로 했다. 메모장에는 파일마다 계열 · 라이선스 이름 · 트리거 워드 · 권장 강도 · 파일 크기 다섯 칸이 남았다. 프로그램 세 가지를 한 표로 견준 스테이블 디퓨전 설치 완전 가이드의 모델 절과 함께 보면 계열마다 어떤 프로그램에서 여는지까지 한 번에 정리된다.
프로그램을 깔고 모델까지 골랐다. 다음 편은 첫 그림이 이상하게 나올 때 프롬프트 · 샘플러 · 해상도를 어떤 순서로 손보는지를 다룬다.
자주 묻는 것
체크포인트와 LoRA 중 무엇을 먼저 고르나요?
체크포인트가 먼저다. ComfyUI의 Load Checkpoint 노드는 체크포인트 한 파일에서 그림 모델 · 텍스트 인코더 · VAE를 꺼내고, LoRA는 그 모델과 텍스트 인코더 위에 덧대는 패치라 혼자서는 그림을 만들지 못한다. 계열과 체크포인트를 정한 뒤, 그 체크포인트 카드의 베이스 모델 값과 같은 값의 LoRA를 고른다.
SDXL용 LoRA를 FLUX나 SD 1.5 체크포인트에 써도 되나요?
계열이 다르면 맞지 않는다. LoRA는 학습에 쓴 모델과 구조가 같은 계열의 정해진 자리에 덧대는 파일이다. ComfyUI 코드에는 자리를 찾지 못한 LoRA 가중치에 lora key not loaded, 모양이 다른 가중치에 WARNING SHAPE MISMATCH 경고를 남기는 줄이 있다. 받기 전에 Civitai의 baseModel, 허깅페이스의 base_model, 파일 헤더의 architecture 값으로 계열을 확인한다.
Civitai에서 Pony나 Illustrious로 표시된 모델은 SDXL 1.0과 같은 칸인가요?
Civitai는 다른 값으로 둔다. 2026년 9월 15일 Civitai 공개 API가 돌려준 BaseModel 목록 105개에는 SDXL 1.0 · Pony · Illustrious · NoobAI가 각각 따로 있다. LoRA를 찾을 때는 넓게 잡지 말고 고른 체크포인트 카드에 적힌 값과 같은 값으로 거르는 편이 덜 헤맨다.
LoRA 강도는 얼마로 두나요?
카드에 권장값이 있으면 그 값에서 출발한다. ComfyUI의 Load LoRA 노드는 strength_model과 strength_clip 기본값이 1.0이고 음수도 받는다. Forge Neo의 기본 가중치도 1.0이다. 다만 기본값이 권장값은 아니어서, Stability AI의 SDXL 오프셋 예제 LoRA는 파일 헤더에 권장 강도 0.5를 적었다.
모델 카드에 상업 이용 가능이라고 표시돼 있으면 그대로 써도 되나요?
파생 모델의 권한 표시와 베이스 모델의 라이선스 원문을 둘 다 본다. Civitai 교육 문서는 Open RAIL 라이선스를 쓰지 않는 베이스 위에 만든 모델에서는 권한 선택이 선의의 표시로 작동한다고 적었고, FLUX.1 [dev] Non-Commercial License는 모델에 대한 제한이 미세 조정한 파생물에도 적용된다고 적었다. 어떤 용도가 허용되는지는 원문 전체로 판단하고, 필요하면 전문가 검토를 받는다.
참고 자료
- Comfy-Org. ComfyUI — nodes.py · comfy/lora.py · comfy/sd.py — Load Checkpoint의 MODEL · CLIP · VAE 출력, Load LoRA · LoraLoaderModelOnly 입력과 강도 기본값(1.0 · -100~100), Load Diffusion Model의 weight_dtype, lora key not loaded · WARNING SHAPE MISMATCH · no CLIP/text encoder weights 경고 문구. nodes.py · lora.py · sd.py
- ComfyUI Docs. Models · LoRA Example — 모델 파일과 로더 노드, 모든 체크포인트가 그대로 돌지는 않는다는 안내와 템플릿 목록, GGUF 기본 미지원, Load LoRA 노드 설명과 LoRA 비교 예제. Models · LoRA Example
- comfyanonymous. ComfyUI Examples — SDXL · Flux · Lora — SDXL 해상도, FLUX.1 [dev] 본체와 fp8 한 파일 체크포인트, CFG 1.0, schnell 4단계, fp8 품질 안내, LoRA는 MODEL과 CLIP 위의 패치라는 설명. SDXL · Flux · Lora
- Civitai Developer. Models · Model versions · Enums · AIR identifiers — type · checkpointType · baseModel · trainedWords · files(sizeKB · metadata · pickleScanResult · virusScanResult) · 권한 칸, 본체만 든 체크포인트의 파일 종류, 2026년 9월 15일 /api/v1/enums 응답(BaseModel 105개). Models · Model versions · Enums · AIR
- Civitai Education. Guide to Civitai Model Licensing Options(2024-03-06 갱신) — 권한 네 묶음, SD 1.5 · SDXL 기반의 라이선스 문서 생성, 그 밖의 베이스에서 good-faith call outs. education.civitai.com
- Hugging Face. Model Cards — README.md 메타데이터, license · license_name · license_link, base_model과 관계 추론(adapter · merge · quantized · finetune). huggingface.co
- Hugging Face. safetensors — README — 헤더 형식과 __metadata__ 칸, pickle과의 비교. github.com
- Stability AI. Model Metadata Standard Specification(SAI Model Spec) — modelspec.architecture · resolution · usage_hint · trigger_phrase · license 키. github.com
- Stability AI. stable-diffusion-xl-base-1.0 · stable-diffusion-v1-5 — sd_xl_base_1.0.safetensors 6.94GB, sd_xl_offset_example-lora_1.0.safetensors 49.6MB와 헤더, CreativeML Open RAIL++-M License, SD 1.5 두 파일 설명과 512×512 학습. SDXL base · LICENSE.md · SD 1.5
- Stability AI. Community License Agreement · License — 연 매출 100만 달러, 상업 목적 등록, Derivative Works 정의, Powered by Stability AI 표시. Agreement · License
- Black Forest Labs. FLUX.1 [dev] Non-Commercial License v1.1.1 · flux2 model_licenses · FLUX.2 [klein] 4B 모델 카드 · FLUX.1-Depth-dev-lora — 비상업 목적 · 파생물 · 산출물 조항과 첫 판(2024-08-01), FLUX 비상업 라이선스 v2.0 · v2.1, klein 4B · 9B 라이선스와 예제 설정, Depth LoRA 크기. LICENSE-FLUX1-dev · flux2 licenses · klein 4B · Depth LoRA
- Comfy-Org. flux1-dev — flux1-dev-fp8.safetensors 17.25GB, Depth LoRA 사본(헤더의 license · 행렬 차원). huggingface.co
- Haoming02. sd-webui-forge-classic(neo) — README · presets.py · sd_forge_lora · 위키 Inference References — 지원 · 제거 모델 목록, 혼합 정밀도 모델, UI Preset 기본값, <lora:> 문법 · Activation Text · Preferred Weight · Preset 필터, 증류 모델 CFG 1.0. README · presets.py · sd_forge_lora · Inference References