AI Toolkit LoRA 학습 가이드

FLUX.2 Klein 9B 고유사도 캐릭터 LoRA: 중요한 설정

FLUX.2 Klein 9B 캐릭터 LoRA 학습을 위한 추측 없는 가이드. repeats-per-image 공식, 배치 사이즈, gradient accumulation, 학습률, rank, 해상도, 캡션, 프리뷰용 올바른 Base 샘플링 설명.

Ostris AI Toolkit로 확산 모델 학습

FLUX.2 Klein 9B 고유사도 캐릭터 LoRA(AI Toolkit): 어떤 설정이 정말 중요한가(그리고 무엇을 입력해야 하는가)

FLUX.2 Klein 9B Base에서 캐릭터 / 아이덴티티 LoRA를 학습하고 있는데 계속 이런 질문을 하게 된다면:

  • Num Repeats는 실제로 무엇을 하나요?”
  • Training Steps는 어떻게 계산하나요?”
  • Gradient Accumulation을 바꾸면 Steps도 바꿔야 하나요?”
  • high likeness를 위해 가장 중요한 다른 설정은 무엇인가요?”

이 튜토리얼은 “추측 없이” 답합니다.


0) 사람들이 가장 많이 헷갈리는 #1 이유: “steps”가 두 가지입니다

AI Toolkit에는 Training Steps가 표시되고, 동시에 Sample Steps(preview / inference)도 보입니다.

  • Training → Steps = 옵티마이저가 실제로 학습하는 길이(중지 카운터).
  • Sample Steps(preview / inference) = 샘플 이미지를 렌더링할 때 쓰는 디노이징 step 수.

둘을 혼동하지 마세요.

누군가 “28 steps가 스윗스팟”이라고 말하더라도, 그건 학습 길이가 아니라 inference/sample steps를 말하는 것일 수 있습니다.

Base Klein에서는 낮은 sample steps로 LoRA를 판단하지 마세요. 프리뷰에서는 Base에 맞는 sampling을 사용해야 합니다(아래 참고).


1) 최적화해야 할 핵심 지표는 하나뿐입니다: “repeats per image”(학습량)

고유사도 캐릭터 LoRA를 원한다면, 각 학습 이미지가 대략 다음 정도로 “보이도록” 만드는 것이 목표입니다:

  • 50–90 repeats per image = 일반적인 캐릭터 아이덴티티 학습
  • 90–120 repeats per image = 고유사도 강화(아이덴티티 고정이 더 강함)

공식(copy/paste)

다음과 같이 두겠습니다:

  • N = 학습 이미지 수
  • B = batch size
  • G = gradient accumulation
  • S = training steps

그러면:

Repeats per image


repeats_per_image ≈ (S × B × G) / N

Steps you should enter


S ≈ ceil( N × target_repeats / (B × G) )

Gradient Accumulation을 바꾸면, 같은 학습량을 유지하기 위해 Steps도 반드시 바뀌어야 합니다.


2) “무엇을 입력해야 하나요?”(고유사도를 위한 베스트 프랙티스 기본값)

A) Training panel(영향도 최상)

다음을 시작점으로 사용하세요:

  • Batch Size: 1
  • Gradient Accumulation: 1(유사도 최우선)
    • VRAM이 부족하면 2–4를 쓰고 Steps를 비례해서 낮추세요.
  • Learning Rate: 1e-4부터 시작
    • 학습이 불안정해지거나 “collapses”하면 5e-5를 시도해 보세요
  • Steps: 위 공식을 사용해 계산하세요(감으로 정하지 마세요)
  • Optimizer / timestep settings: 처음에는 기본값 유지(디버깅할 때만 변경)

B) Target panel(LoRA 용량)

  • Linear Rank (9B Base): 16부터 시작
    • underfitting이 명확하고 학습이 안정적이면 32를 시도
    • 불안정/collapse가 보이면 16으로 되돌리기

C) Dataset panel(텍스트 감독 = 아이덴티티 제어)

캐릭터 LoRA라면:

  • Default Caption: photo of [trigger]
  • Caption Dropout Rate: 0.05(일부 설정에서는 “caption overfitting”을 줄이는 데 도움이 됩니다)
  • Resolutions: 가능하면 Klein은 1024를 기본으로 사용
    • 다양한 크기에서 더 유연하게 쓰고 싶을 때만 768을 추가하세요.

D) Sample panel(올바른 프리뷰 방법)

샘플에서 LoRA가 “약해 보인다”면, 학습이 아니라 sampling 문제인 경우가 많습니다.

Base Klein 프리뷰는 예를 들어:

  • Sample Steps: ~50
  • Guidance / CFG: ~4

그 다음에 체크포인트를 다시 비교하세요.


3) “55장 이미지” 예시(실제 숫자)

예를 들어:

  • N = 55
  • target repeats = 100(고유사도 강화)
  • batch size B = 1

Option 1(유사도 최우선): Grad Accum = 1


Steps = 55 × 100 / (1 × 1) = 5500

입력 값:

  • Gradient Accumulation: 1
  • Steps: 5500

Option 2(VRAM 절약): Grad Accum = 4


Steps = 55 × 100 / (1 × 4) = 1375  (~1400)

입력 값:

  • Gradient Accumulation: 4
  • Steps: 1375(또는 1400)

✅ 두 옵션 모두 이미지당 약 100 repeats를 제공합니다.

차이는 각 step에 몇 개의 mini-batch가 합쳐지느냐입니다.


4) 미니 “치트 시트”(고유사도 캐릭터 LoRA)

그냥 복사해서 쓰고 싶다면:

Klein 9B Base – High Likeness Starter

  • Batch Size: 1
  • Grad Accum: 1(필요하면 2–4)
  • Target repeats per image: 90–110
  • Steps: ceil(N × repeats / (B × G))
  • LR: 1e-4(불안정하면 5e-5로 낮추기)
  • Rank: 16(안정적이고 underfitting일 때만 32 시도)
  • Resolution: 1024
  • Default caption: photo of [trigger]
  • Caption dropout: 0.05
  • Preview sampling (Base): Sample steps ~50, Guidance ~4

5) Troubleshooting(빠른 해결)

“LoRA가 약해 보이거나 noisy한데 loss는 내려가요”

대부분 프리뷰 sampling 설정이 맞지 않은 경우입니다.

  • Sample Steps ~50, Guidance ~4로 맞춘 뒤 다시 확인하세요.

“좋아지다가 갑자기 전부가 혼란스러워지거나 더 나빠졌어요”(9B “collapse”)

다음 순서대로 시도하세요:

1) LR 낮추기(1e-4 → 5e-5)

2) Rank 낮추기(32 → 16)

3) 작은 regularization dataset을 낮은 weight로 추가

4) 일찍 멈추고 마지막 “좋은” 체크포인트 사용

“Gradient Accumulation을 줄이면 품질이 더 좋아지나요?”

아이덴티티/유사도에서는 종종 그렇습니다:

  • G를 낮추면 LoRA가 더 “구체적”으로 유지되는 데 도움이 될 수 있습니다(덜 평균화됨).
  • 하지만 같은 학습량을 유지하려면 Steps를 늘려야 합니다.

6) 결론

FLUX.2 Klein 9B에서 캐릭터 유사도를 좌우하는 가장 큰 레버는:

1) 학습량(이미지 수 대비 Steps × Batch × Grad Accum)

2) Learning rate

3) Rank

4) Resolution

5) Caption strategy

6) 프리뷰에서의 올바른 Base sampling

이 요소들을 의도적으로 통제하면, 더 이상 감으로 맞추지 않아도 되고 결과가 안정적으로 나옵니다.

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