4대 생성기술의 세 번째, '이미지 생성'입니다. 7교시 클라우드 이미지를 로컬 확산모델로 대체합니다. 단 4스텝이면 되는 FLUX.1-schnell을 기준으로, SDXL(제어 폭)·FLUX.2 klein(신형·경량)과 화질·속도·메모리를 비교하며 '16GB에서 뭘 고를까'를 판단합니다.
이미지 생성: 확산모델(FLUX.1-schnell)과 모델 비교
📚1단계: 주요 개념 설명
확산(디퓨전) 원리를 이해하고 FLUX.1-schnell로 세로형 장면 이미지를 생성하며, SDXL·FLUX.2 klein과 스텝·화질·VRAM을 비교해 16GB에 맞는 이미지 모델을 고른다.
이미지 생성 — 장면에 그림을 입히다
- 4대 생성기술의 세 번째는 '이미지'입니다. 대본의 각 장면에 어울리는 비주얼을 만듭니다.
- 7교시의 클라우드 이미지를 이번엔 오프라인 확산모델로 대체합니다.
- 대본의 image_prompt(또는 caption)가 이 단계의 입력이 됩니다.
🛠️2단계: 따라하기 실습
로컬 FLUX.1-schnell로 이미지를 만든 뒤, OpenAI 호환 API(/v1/images/generations)로 감싸 웹앱의 이미지 기능을 '주소만' 로컬로 바꿔 실제로 확인합니다. 무거운 단계이니 강사 시연을 보며 따라 하고, 완성 코드는 아래에서 확인하세요.
로컬 이미지 모델 + 로컬 API 서버 도구를 준비합니다.
- diffusers 라이브러리로 FLUX.1-schnell 모델을 불러옵니다.
- 처음 실행 시 모델 가중치를 내려받아 시간이 걸립니다.
프롬프트 한 줄로 세로형 이미지를 만듭니다.
파이썬 diffusers로 FLUX.1-schnell을 로드해서, 이미지 프롬프트를 받아 4스텝으로 세로형 이미지를 생성하고 scene_번호.jpg로 저장하는 함수를 만들어줘. VRAM 절약을 위해 enable_model_cpu_offload도 켜줘.
- num_inference_steps=4가 schnell 모델의 최적점입니다 — 적은 스텝으로 빠르게 좋은 이미지를 냅니다.
- enable_model_cpu_offload를 켜면 16GB VRAM 환경에서도 OOM 없이 구동됩니다.
웹앱이 클라우드처럼 호출할 수 있도록 로컬 이미지 서버를 만듭니다.
11교시에서 만든 FastAPI server.py에 POST /v1/images/generations 엔드포인트를 추가해줘. OpenAI 이미지 API와 같은 형식으로 prompt·size를 받아 위 make_image로 이미지를 만들고, {"data":[{"b64_json": ...}]} 형태(base64)로 반환하게 해줘. CORS는 모두 허용.
- 응답을 OpenAI 규격({data:[{b64_json}]})에 맞추면 웹앱의 이미지 코드를 안 고치고 주소만 바꿉니다.
- 이제 http://localhost:8000 하나가 음성(/v1/audio/speech)과 이미지(/v1/images/generations)를 모두 제공합니다.
웹앱 이미지 기능을 클라우드 → 로컬 FLUX로 갈아끼워 로컬 이미지를 표시합니다.
- 이 강의의 '이미지 생성 체험'에서 상단 토글을 ☁️클라우드 → 💻온프렘(로컬 FLUX)으로 바꾸고 주소에 http://localhost:8000 을 넣어 생성해 보세요.
- 키 없이도 로컬 서버가 응답하고, 내 컴퓨터(FLUX)가 만든 이미지가 화면에 뜹니다.
- 4스텝이라 몇 초 안에 나옵니다. OOM이 나면 양자화(NF4/FP8)나 오프로드로 대응합니다.
우측 시뮬레이터에서 디노이징 스텝과 양자화 비트를 조절해 소요 시간·예상 화질·VRAM 경고를 확인하고, FLUX.1-schnell / SDXL / FLUX.2 klein이 16GB에서 각각 어떤 상황에 맞는지 비교해 보세요.
from diffusers import FluxPipeline
import torch
# 로컬 16GB 가속을 위해 bfloat16 및 cpu_offload 활용
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()💡 코딩 중 막히나요? 모범 솔루션 코드
🧩3단계: 개념 검증 퀴즈
4스텝 부근에서 FLUX.1-schnell이 빠르게 생성됨을 이해하고, SDXL·klein과 비교해 이 작업(빠른 세로형 쇼츠 컷)에 어느 모델이 맞는지 근거를 들어 설명할 수 있는지 점검합니다.
Q1. FLUX.1-schnell이 일반 이미지 모델과 다른 핵심 특징은?
Q2. 16GB에서 이미지 모델을 고를 때, 다음 비교로 가장 적절한 것은?