AI Toolkit LoRA 학습 가이드

Ostris AI Toolkit로 FLUX.2 [dev] LoRA 학습하기

이 글은 Ostris AI Toolkit에서 FLUX.2 [dev]를 LoRA로 단계별 파인튜닝하는 방법을 설명합니다. FLUX.2의 특징, 듀얼 트랜스포머와 텍스트 인코더가 LoRA rank와 VRAM 사용량에 미치는 영향, 24GB급부터 H100/H200까지 동작하는 데이터셋/트레이닝 설정, 그리고 VRAM 친화적인 양자화 선택을 다룹니다.

Ostris AI Toolkit로 확산 모델 학습

가로로 스크롤하여 전체 양식 보기

Ostris AI ToolkitOstrisAI-Toolkit

New Training Job

Job

Model

Quantization

Target

Save

Training

Datasets

Dataset 1

Sample

FLUX.2-dev LoRA 학습은 기존 SD 모델 훈련과 매우 다릅니다. FLUX.2 [dev]는 32B 파라미터의 거대한 Rectified Flow 트랜스포머, 24B Mistral 텍스트 인코더, 고품질 오토인코더를 결합하여 텍스트-이미지 생성과 이미지 편집을 단일 체크포인트에서 처리합니다. 이 가이드에서는 다음을 다룹니다:

  • FLUX.2 [dev]의 특별한 점
  • 이러한 설계가 LoRA 훈련에 미치는 영향
  • 다양한 하드웨어 구성을 위한 AI Toolkit 설정 방법
  • 원하는 스타일 / 캐릭터 / 편집 동작을 얻기 위한 데이터셋, 트리거, 파라미터 설정 방법

이 문서는 AI Toolkit LoRA 훈련 시리즈의 일부입니다. Ostris AI Toolkit이 처음이시라면, FLUX.2 [dev] LoRA 학습에 들어가기 전에 AI Toolkit LoRA 훈련 개요부터 시작하세요.

목차


1. FLUX.2 [dev] LoRA 학습 이해하기

슬라이더를 조작하기 전에, 무엇을 파인튜닝하는지 이해하는 것이 도움됩니다.

1.1 고수준 아키텍처

공식 FLUX.2-dev 모델 카드Black Forest Labs 발표에서:

  • 베이스 모델

    FLUX.2 [dev]32B 파라미터 Rectified Flow 트랜스포머(DiT 스타일 잠재 플로우 모델)로 처음부터 훈련되었습니다. 텍스트-이미지 생성과 이미지 편집(단일 이미지 및 다중 참조)을 단일 체크포인트에서 결합합니다.

  • 텍스트 인코더

    FLUX.2 [dev]는 Mistral Small 3.1 / 3.2 – 24B비전-언어 텍스트 인코더로 사용합니다. 이는 32B DiT 외에 추가로 24B 파라미터입니다.

  • 오토인코더 (VAE)

    32개 잠재 채널을 가진 새로운 AutoencoderKLFlux2를 사용합니다(FLUX.1은 16개). 고해상도 편집과 미세한 텍스처 보존을 위해 설계되었습니다.

  • 통합 생성 + 편집

    동일한 아키텍처가 순수 텍스트-이미지, 단일 이미지 편집, 다중 참조 편집을 처리합니다.

  • 가이던스 증류

    FLUX.2 [dev]는 가이던스-증류 모델입니다: 별도의 "조건부"와 "비조건부" 패스가 있는 기존 CFG가 없습니다.

LoRA에 대한 의미:

  1. 코어 트랜스포머가 거대합니다. LoRA 랭크를 신중히 선택해야 합니다.
  2. 텍스트 인코더가 무겁고 동작에 핵심적입니다.
  3. 동일한 가중치가 T2I와 편집을 처리합니다.
  4. 가이던스가 특별합니다. 일반적으로 guidance_scale = 1로 훈련합니다.

2. 어떤 유형의 FLUX.2 LoRA를 훈련할 것인가?

FLUX.2 [dev]에서는 먼저 어댑터가 무엇을 해야 하는지 결정해야 합니다. 베이스 모델은 이미 다중 참조 편집복잡한 프롬프트 따르기에 강합니다.

Flux2 dev LoRA 훈련의 일반적인 목표:

  1. 스타일 LoRA (T2I + 편집) – 특정 페인팅 스타일, 컬러 그레이드, 렌더 룩을 가르칩니다.
  2. 캐릭터 / 아이덴티티 LoRA – 일관된 얼굴/특징을 가진 특정 인물, 아바타, 마스코트를 모델링합니다.
  3. 오브젝트 / 프롭 / 브랜드 LoRA – 엄격한 지오메트리나 브랜드 제약이 있는 특정 제품, 로고, 형태를 캡처합니다.
  4. 인스트럭션 / 편집 LoRA – 스타일 대신 동작을 변경합니다.

3. LoRA 설정에 영향을 주는 FLUX.2 고유 세부사항

3.1 융합 트랜스포머에서의 LoRA (랭크 스케일링)

FLUX.2 [dev]는 어텐션과 MLP 프로젝션을 매우 넓은 행렬로 융합합니다. 이는:

  • 매우 낮은 랭크(4–8)는 너무 약하게 느껴질 수 있습니다.
  • FLUX.2 [dev]의 스타일이나 캐릭터 LoRA에는 랭크 32가 좋은 기본값입니다.
  • VRAM이 부족하면 랭크 8–16을 사용합니다.
  • 복잡한 브랜드나 아이덴티티에는 랭크 32–64가 도움될 수 있습니다.

FLUX 2 dev LoRA 파인튜닝에서 모델은 일반적으로 이전 모델보다 높은 랭크에서 더 잘 작동하지만, VRAM과 과적합 위험이 증가합니다.


3.2 가이던스-증류 모델: guidance_scale = 1에서 훈련

FLUX.2 [dev]는 가이던스-증류이므로 일반적인 Stable Diffusion의 "CFG 7–8" 직관이 적용되지 않습니다.

  • 훈련: guidance_scale = 1 설정.
  • 추론: 2–4 범위의 guidance_scale이 잘 작동합니다.

3.3 텍스트 인코더가 거대함 (임베딩 캐싱이 중요한 이유)

FLUX.2의 텍스트 인코더로 사용되는 Mistral 24B VLM은 약 24GB 파라미터입니다.

AI Toolkit에서의 일반적인 패턴:

  • 고정 캡션과 DOP 미사용 시: Cache Text Embeddings 켜기.
  • Differential Output Preservation (DOP) 사용 시: 텍스트 임베딩을 캐시할 수 없습니다.

3.4 오토인코더와 해상도

FLUX.2는 32개 잠재 채널AutoencoderKLFlux2를 사용합니다. 실제로 768–1024 해상도에서의 FLUX.2 LoRA 학습 AI Toolkit이 대부분의 이점을 제공합니다.


4. FLUX.2 LoRA 훈련을 위한 하드웨어 및 VRAM 요구사항

4.1 VRAM 티어별 권장 설정

티어 A — 16–24 GB GPU (예: 4070 Ti, 4080, 4090)

  • 현실적 범위: FLUX.2-dev LoRA 트레이닝 가능하지만 빡빡함. Batch Size = 1, 896–1024 px.
  • 주요 설정: Low VRAM 켜기, Layer Offloading 켜기, TransformerText Encoderfloat8 (default)로.

티어 B — 32–48 GB GPU (예: RTX 6000 Ada, A6000)

  • 현실적 범위: FLUX.2 LoRA 학습 AI Toolkit이 편안해집니다. 1024×1024에서 스타일과 캐릭터 LoRA, 20–60+ 이미지, 1000–3000 스텝.
  • 주요 설정: Batch Size = 1–2, Steps ≈ 1000–3000, Learning Rate = 0.0001, Linear Rank = 32.

티어 C — 64–96+ GB GPU (예: RunComfy의 H100, H200)

  • 현실적 범위: 1024×1024, Batch Size = 2–4, DOP 기본 켜기.
  • 주요 설정: Low VRAM 끄기, Linear Rank = 32–64.

4.2 로컬 AI Toolkit vs 클라우드 AI Toolkit (RunComfy)


5. FLUX.2 LoRA용 데이터셋 설계

5.1 이미지 수

  • 단순 스타일 LoRA: 약 15–30장의 큐레이션된 이미지.
  • 캐릭터/아이덴티티 LoRA: 약 20–60장.
  • 편집/인스트럭션 LoRA: 50–200개의 트리플(소스, 타겟, 인스트럭션).

5.2 캡션 전략

캡션에서 쓰지 않는 것은 LoRA가 트리거에 연결하기 위해 "자유"입니다.

스타일 LoRA: 이미지의 내용을 설명하고, 붓터치나 색상, 미디엄을 설명하지 않습니다.

캐릭터 LoRA: 짧고 고유한 트리거(예: midnight_tarot)와 클래스 단어(person, woman 등)를 사용합니다.

5.3 Differential Output Preservation (DOP)

트리거가 없을 때 LoRA가 변경하는 것을 페널티하는 정규화 전략입니다.


6. 단계별: AI Toolkit에서 FLUX.2 [dev] LoRA 훈련 구성

6.1 초기 설정

6.2 데이터셋 준비

  • 이미지를 수집하여 /ai-toolkit/datasets/flux2_midnight_tarot/에 배치합니다.
  • .txt 캡션 파일을 추가합니다. 캡션에서 [trigger]를 사용합니다.

6.3 새 훈련 작업 생성

6.3.1 JOB 패널

  • Training Name: 예: flux2_midnight_tarot_v1.
  • Trigger Word: 예: midnight_tarot.

6.3.2 MODEL & QUANTIZATION 패널

  • Model Architecture: FLUX.2.
  • Name or Path: black-forest-labs/FLUX.2-dev.
  • Low VRAM: 티어 A/B에서 켜기, 티어 C에서 끄기.
  • TransformerText Encoder: float8 (default).

6.3.3 TARGET 패널

  • Target Type: LoRA.
  • Linear Rank: 32가 좋은 기본값.

6.3.4 TRAINING & SAVE 패널

  • Batch Size: 24–48GB에서 1, 64GB+에서 2.
  • Steps: 스타일 800–2000, 캐릭터 1000–2500, 인스트럭션 1500–3000.
  • Learning Rate: 0.0001.
  • Optimizer: AdamW8Bit.
  • Cache Text Embeddings: DOP 미사용 시 켜기, DOP 사용 시 끄기.
  • Data Type: BF16.
  • Save Every: 250 스텝.

6.3.5 Regularization & Advanced

  • Differential Output Preservation: 베이스 모델 동작을 유지하려면 켜기.
  • Do Differential Guidance: 켜기, Scale 3.

6.3.6 DATASETS 패널

  • Cache Latents: 켜기.
  • Resolutions: VRAM에 따라 [768, 896, 1024].

6.4 프리뷰 샘플링 구성

  • Sample Every: 250 스텝.
  • Guidance Scale: 1.
  • Prompts: 대표 프롬프트 2–4개.

7. FLUX.2 LoRA 결과 디버깅 및 품질 개선

7.1 "GatedRepoError / 401" 오류

Hugging Face에서 라이센스에 동의하고, Read 토큰을 생성하여 트레이너 설정에 추가합니다.

7.2 "1000+ 스텝 후에도 변화 없음"

  • LoRA가 샘플링에 적용되는지 확인합니다.
  • Linear Rank = 16–32를 시도합니다.
  • Learning Rate = 0.0001.
  • 캡션에서 스타일 설명을 제거합니다.

7.3 "LoRA가 베이스 모델을 덮어씀"

  • Differential Output Preservation 켜기.
  • 800–1500 스텝으로 줄이기.
  • Linear Rank = 16, Learning Rate = 0.000075.

7.4 "CUDA out of memory"

  • 해상도를 1024 → 896 또는 768로 낮추기.
  • Gradient checkpointing과 accumulation 활성화.
  • FP8/4-bit 양자화.
  • Cache Latents 켜기.
  • RunComfy의 H100/H200로 이전.

8. 추론에서 FLUX.2 LoRA 사용하기


추가 AI Toolkit LoRA 훈련 가이드

학습을 시작할 준비가 되셨나요?