snow · 2026.5.18 00:02 · 조회 3
Kolors 설치 및 사용 가이드 (Mac)
개요
이 가이드는 Apple Silicon(M1/M2/M3/M4) Mac에서 HuggingFace Diffusers를 통해 Kolors 이미지 생성 모델을 설치하고 실행하는 방법을 안내한다. Kolors는 CUDA(NVIDIA GPU)를 기본 타깃으로 개발되었지만, PyTorch의 MPS(Metal Performance Shaders) 백엔드를 이용하면 Apple Silicon에서도 GPU 가속으로 이미지를 생성할 수 있다.
사전 요구사항
| 항목 | 권장 사양 |
|---|---|
| Mac 칩 | Apple Silicon (M1 이상 권장) |
| macOS | 12.3 Monterey 이상 (MPS 지원) |
| Python | 3.9 ~ 3.11 |
| 메모리 | 16GB 이상 (32GB 권장) |
| 저장 공간 | 20GB 이상 여유 공간 (모델 가중치 약 14GB) |
Intel Mac은 MPS를 지원하지 않으므로 CPU 모드로만 동작한다. 속도가 매우 느리므로 권장하지 않는다.
설치 방법 (Diffusers)
1단계: 가상 환경 생성
1# conda 사용 시2conda create -n kolors python=3.103conda activate kolors4 5# venv 사용 시6python3 -m venv kolors-env7source kolors-env/bin/activate2단계: PyTorch 설치 (MPS 지원 버전)
Apple Silicon용 PyTorch는 pip으로 설치한다. MPS 백엔드는 PyTorch 1.12부터 공식 지원된다.
1pip install torch torchvision torchaudioMPS 사용 가능 여부를 확인한다:
1import torch2print(torch.backends.mps.is_available()) # True여야 함3print(torch.backends.mps.is_built()) # True여야 함3단계: Diffusers 및 의존성 설치
1pip install diffusers transformers accelerate sentencepiece
sentencepiece는 ChatGLM 토크나이저에 필요하다.
4단계: 모델 가중치 다운로드
최초 실행 시 HuggingFace Hub에서 자동으로 다운로드된다. 수동으로 사전에 다운로드하려면:
1pip install huggingface_hub2huggingface-cli download Kwai-Kolors/Kolors-diffusers --local-dir ./Kolors-diffusersApple Silicon MPS 설정
Kolors는 기본적으로 CUDA("cuda") 디바이스를 전제하고 있다. Mac에서 실행하려면 디바이스를 "mps"로 변경해야 하며, 데이터 타입도 torch.float16 대신 torch.float32를 사용해야 한다.
1import torch2 3# MPS 사용 가능 여부에 따라 디바이스 자동 선택4if torch.backends.mps.is_available():5 device = "mps"6 dtype = torch.float32 # MPS는 float16 지원이 불완전할 수 있음7elif torch.cuda.is_available():8 device = "cuda"9 dtype = torch.float1610else:11 device = "cpu"12 dtype = torch.float3213 14print(f"사용 디바이스: {device}")기본 이미지 생성
영어 프롬프트
1import torch2from diffusers import KolorsPipeline3 4pipe = KolorsPipeline.from_pretrained(5 "Kwai-Kolors/Kolors-diffusers",6 torch_dtype=torch.float32, # MPS에서는 float32 권장7)8pipe = pipe.to("mps")9 10prompt = "A portrait of a young woman with soft lighting, photorealistic, 8k, high quality"11negative_prompt = "blurry, low quality, distorted, deformed"12 13image = pipe(14 prompt=prompt,15 negative_prompt=negative_prompt,16 guidance_scale=6.5,17 num_inference_steps=25,18 height=1024,19 width=1024,20).images[0]21 22image.save("output.png")23print("이미지가 output.png로 저장되었습니다.")스케줄러 변경으로 속도 향상
DPMSolver 스케줄러를 사용하면 25~30 스텝으로도 품질 높은 이미지를 얻을 수 있다:
1import torch2from diffusers import KolorsPipeline, DPMSolverMultistepScheduler3 4pipe = KolorsPipeline.from_pretrained(5 "Kwai-Kolors/Kolors-diffusers",6 torch_dtype=torch.float32,7)8pipe.scheduler = DPMSolverMultistepScheduler.from_config(9 pipe.scheduler.config,10 use_karras_sigmas=True11)12pipe = pipe.to("mps")13 14image = pipe(15 prompt="a ladybug, macro photography, bokeh, high quality, cinematic",16 guidance_scale=6.5,17 num_inference_steps=25,18).images[0]19 20image.save("ladybug.png")한국어·중국어 프롬프트 팁
Kolors는 ChatGLM3-6B 덕분에 중국어 프롬프트를 매우 잘 처리한다. 한국어 프롬프트는 직접 지원하지 않으므로, 최상의 결과를 위해 영어 또는 중국어로 작성하는 것을 권장한다.
1# 중국어 프롬프트 예시 (사실적인 인물 사진)2prompt_zh = "一位年轻女性的肖像,柔和的自然光线,皮肤细腻,高质量,写实风格,8k"3 4# 영어 프롬프트 예시 (동일 의미)5prompt_en = "A portrait of a young woman, soft natural lighting, detailed skin texture, high quality, photorealistic, 8k"6 7# 중국어 이미지 내 텍스트 렌더링8prompt_text = '一只可爱的猫咪,拿着写着"你好"的牌子,高质量'프롬프트 작성 팁:
- 구체적인 조명 조건(soft lighting, golden hour 등)을 명시하면 인물 사진 품질이 높아진다.
high quality,photorealistic,8k등의 품질 태그를 추가하면 효과적이다.- 네거티브 프롬프트에는
blurry, distorted, low quality, extra limbs를 기본으로 포함한다.
파라미터 조절
| 파라미터 | 기본값 | 설명 |
|---|---|---|
guidance_scale | 6.5 | 높을수록 프롬프트에 충실하지만 다양성이 줄어듦. 5.0~8.0 권장 |
num_inference_steps | 25~50 | 스텝이 많을수록 품질 향상, 속도 저하. Mac에서는 25~30 권장 |
height / width | 1024 | 기본 해상도. 메모리가 부족하면 768로 줄인다 |
negative_prompt | - | 원하지 않는 요소를 텍스트로 지정 |
num_images_per_prompt | 1 | 한 번에 생성할 이미지 수. Mac에서는 1 권장 |
1# 보수적인 Mac 설정 예시 (메모리 절약)2image = pipe(3 prompt=prompt,4 negative_prompt=negative_prompt,5 guidance_scale=6.5,6 num_inference_steps=25,7 height=768,8 width=768,9 num_images_per_prompt=1,10).images[0]메모리 최적화
Apple Silicon의 통합 메모리(Unified Memory) 특성상 VRAM과 RAM을 함께 사용한다. 메모리가 부족한 경우 다음 방법을 적용한다.
attention slicing 활성화
1pipe.enable_attention_slicing()VAE 슬라이싱 및 타일링
1pipe.enable_vae_slicing() # 메모리 절약2pipe.enable_vae_tiling() # 고해상도 이미지 생성 시CPU 오프로드 (16GB 이하 메모리)
1# 모델 일부를 CPU로 오프로드하여 메모리 사용량 절감2pipe.enable_model_cpu_offload()3# 참고: cpu_offload 사용 시 .to("mps") 호출 불필요전체 메모리 최적화 예시
1import torch2from diffusers import KolorsPipeline3 4pipe = KolorsPipeline.from_pretrained(5 "Kwai-Kolors/Kolors-diffusers",6 torch_dtype=torch.float32,7)8 9# 메모리 최적화 옵션 적용10pipe.enable_attention_slicing()11pipe.enable_vae_slicing()12pipe.enable_model_cpu_offload() # 이 옵션 사용 시 .to("mps") 생략13 14image = pipe(15 prompt="a beautiful sunset over the ocean, dramatic clouds, photorealistic",16 negative_prompt="blurry, low quality",17 guidance_scale=6.5,18 num_inference_steps=25,19 height=768,20 width=768,21).images[0]22 23image.save("sunset.png")자주 발생하는 오류 해결
MPS 관련 오류: NotImplementedError: The operator X is not currently implemented for the MPS device
일부 PyTorch 연산이 MPS에서 지원되지 않는 경우 발생한다.
1# 환경 변수로 미지원 연산을 CPU로 폴백2import os3os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"4 5# 또는 터미널에서 실행 전 설정6# export PYTORCH_ENABLE_MPS_FALLBACK=1메모리 부족 오류: MPS out of memory
1# 1. 이미지 해상도 줄이기 (1024 → 768)2# 2. attention slicing 활성화3pipe.enable_attention_slicing(1) # 가장 공격적인 슬라이싱4# 3. 다른 앱 종료 후 Python 재시작모델 로딩 오류: ChatGLMTokenizer 관련
1# sentencepiece 재설치2pip install --upgrade sentencepiece transformers느린 속도 문제
Mac에서 25 스텝 기준 약 5~15분이 소요될 수 있다 (M 칩 세대 및 메모리에 따라 다름). 속도를 높이려면:
num_inference_steps를 20~25로 줄인다.- 해상도를 512~768로 낮춘다.
- DPMSolver 스케줄러를 사용한다 (
use_karras_sigmas=True).
float16 관련 NaN 또는 검은 이미지 출력
1# MPS에서 float16 사용 시 NaN이 발생할 수 있음2# float32로 변경3pipe = KolorsPipeline.from_pretrained(4 "Kwai-Kolors/Kolors-diffusers",5 torch_dtype=torch.float32, # float16 → float326)참고 링크
- GitHub - Kwai-Kolors/Kolors — 공식 저장소
- HuggingFace - Kolors-diffusers — 모델 가중치
- HuggingFace Diffusers - Kolors 파이프라인 문서 — API 레퍼런스
- HuggingFace Diffusers - MPS 최적화 가이드 — Apple Silicon 최적화
- Kolors 기술 보고서 (PDF) — 모델 설계 상세
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.