kimyongtae.com
홈 / 강의 / AI 이미지·애니메이션 생성, 원리부터 / 4단계. 파인튜닝

4-3. 학습 설정과 진단

학습 도구에는 설정이 수십 개 있다. 실제로 결과를 좌우하는 것은 몇 개뿐이다. 이번 수업은 그 몇 개가 무엇을 하는지, 그리고 학습이 잘 되고 있는지 그림을 보고 판단하는 법을 다룬다.

학습은 "얼마나"의 문제다

LoRA 학습의 설정은 결국 한 가지를 조절한다. 모델을 내 데이터 쪽으로 얼마나 끌고 가는가.

그 사이의 알맞은 지점을 찾는 것이 전부다. 끌고 가는 정도는 대략 이렇게 정해진다.

끌고 간 정도 ≈ 학습률 × 스텝 수 × (alpha / rank)

정확한 식은 아니다. 셋이 같은 방향으로 작용한다는 것만 기억하자. 하나를 올리면 다른 것을 내려 균형을 맞출 수 있다.

핵심 설정

학습률

한 걸음에 가중치를 얼마나 움직이는가(0-3). LoRA에서는 1e-4(0.0001)가 흔한 출발점이다.

스텝 수와 에폭

총 스텝 = 그림 수 × 반복 횟수 × 에폭 ÷ 배치 크기

캐릭터 LoRA는 대략 1,000~3,000스텝에서 완성되는 경우가 많다. 모델과 데이터에 따라 크게 다르니 숫자를 믿지 말고 아래의 방법으로 직접 확인한다.

랭크와 alpha

4-1에서 본 값이다.

뜻흔한 값
rank변화의 방향을 몇 가지 허용할지. 클수록 많이 담는다캐릭터 8~32, 화풍 16~64
alpha변화의 기본 크기. alpha / rank가 곱해진다rank와 같게 하거나 절반

랭크가 크다고 좋은 것이 아니다. 크면 데이터의 잡다한 것까지 외울 여유가 생겨 과적합되기 쉽다. 작게 시작해서 모자라면 올린다.

alpha를 랭크의 절반으로 두면 변화가 절반 크기로 들어간다. 학습률을 절반으로 한 것과 비슷하다.

배치 크기

한 걸음에 그림을 몇 장 보는가. 크면 기울기가 안정되지만 메모리를 많이 쓴다. 개인 장비에서는 1~4가 보통이다.

해상도

학습할 때 그림을 어느 크기로 볼지. 기반 모델의 기본 해상도로 한다. 낮추면 메모리는 아끼지만 디테일을 덜 배운다.

그 밖에 보이는 설정

설정하는 일다루는 법
옵티마이저가중치를 움직이는 방법(0-3). AdamW가 기본기본값. 학습률을 자동으로 맞춰 주는 종류도 있다
학습률 스케줄학습 중 학습률을 어떻게 바꿀지일정하게, 또는 서서히 줄이기
타임스텝 샘플링노이즈 비율 t를 어떻게 뽑을지(1-4)기반 모델이 쓴 방식을 따른다
캡션 드롭아웃가끔 캡션을 비우고 학습(1-6의 CFG용)낮은 값으로
태그 섞기태그 순서를 매번 바꿔 순서에 의존하지 않게태그 모델에서 켠다. 트리거 단어는 고정
텍스트 인코더 학습인코더에도 LoRA를 붙일지최신 모델에서는 끈다

대부분은 학습 도구가 모델별로 주는 기본값을 그대로 쓴다. 손댈 것은 학습률, 스텝, 랭크다.

손실 그래프를 믿지 말자

0-6에서는 손실이 내려가는 것으로 학습을 확인했다. LoRA 학습에서는 손실이 별로 도움이 안 된다.

그림을 보고 판단한다.

그림으로 진단하기

중간 저장과 표본 생성

학습 도구에 두 가지를 시킨다.

학습이 끝나면 시점별 LoRA 파일과 표본 그림이 나란히 남는다. 이것을 순서대로 본다.

표본 프롬프트를 잘 고른다

표본 프롬프트는 학습 데이터에 없던 상황이어야 한다. 데이터에 있던 그대로를 시키면 과적합을 알아챌 수 없다.

프롬프트확인하는 것
트리거 단어만캐릭터가 닮았나
트리거 단어 + 데이터에 없던 자세와 배경프롬프트를 따르나
트리거 단어 + 다른 의상옷을 갈아입힐 수 있나
트리거 단어 없이 평범한 프롬프트다른 것까지 물들지 않았나

시점에 따라 보이는 모습

단계표본 그림의 모습
초반기반 모델의 평범한 그림. 캐릭터가 안 닮았다
닮기 시작머리색, 분위기가 비슷해진다. 세부는 아직 다르다
알맞음캐릭터가 닮았다. 시킨 자세와 배경을 따른다. 옷도 바뀐다
과적합 시작더 닮았다. 그런데 자세가 데이터의 자세로 끌려간다. 배경이 데이터의 배경을 닮는다
과적합프롬프트를 무시하고 데이터의 그림을 거의 그대로 낸다. 색이 진해지고 선이 거칠어진다. 트리거 단어 없이도 그 캐릭터가 나온다

알맞음과 과적합 시작 사이의 저장본을 고른다. 마지막 저장본이 가장 좋은 경우는 드물다.

강도로 한 번 더 확인

고른 LoRA를 강도 0.6, 0.8, 1.0, 1.2로 돌려 본다.

증상과 처방

증상원인처방
안 닮는다미적합스텝이나 학습률을 올린다. 랭크를 올린다. 캡션에서 흡수시킬 특징을 지웠는지 확인한다
닮았는데 자세와 배경이 늘 같다데이터가 단조롭다데이터를 다양하게 한다. 캡션에 자세와 배경을 적는다 (4-2)
옷을 못 갈아입힌다옷이 트리거에 흡수됐다캡션에 옷을 적는다. 다른 옷을 입은 그림을 넣는다
색이 타고 선이 거칠다과적합, 또는 학습률이 높다앞 시점의 저장본을 쓴다. 학습률을 낮춘다
모든 인물이 그 캐릭터가 된다일반 개념까지 물들었다강도를 낮춘다. 스텝을 줄인다. 정규화 그림을 쓴다
화풍까지 바뀐다데이터의 화풍을 함께 배웠다여러 화풍으로 그려진 그림을 넣는다. 랭크를 낮춘다

절반은 설정이 아니라 데이터의 문제다. 설정을 여러 번 바꿔도 안 풀리면 4-2로 돌아간다.

한 번에 하나만 바꾼다

결과가 마음에 안 들면 학습률, 랭크, 스텝을 한꺼번에 바꾸고 싶어진다. 그러면 무엇이 효과가 있었는지 알 수 없다.

2-1의 실험과 같은 원칙이다.

증류 모델에서 학습하면 안 되는 이유

1-7에서 미뤄 둔 이야기다. 4스텝 모델이나 가이던스 증류 모델 위에서 LoRA를 학습하면 잘 안 된다.

LoRA 학습은 "노이즈를 섞고 방향을 맞히는" 보통의 목표를 쓴다. 증류 모델은 그 목표에서 벗어나게 학습된 상태다. 보통의 목표로 조금 더 학습시키면 증류가 풀린다. 몇 스텝 만에 그리는 능력이 망가지고 그림이 흐려진다.

그래서 이렇게 한다.

모델 제작사가 "학습용 원본"과 "추론용 증류판"을 따로 내놓는 이유다.

확인 문제

  1. 그림 20장, 반복 10회, 10에폭, 배치 2면 총 몇 스텝인가?
  2. 표본 프롬프트를 학습 데이터에 없던 상황으로 잡는 이유는?
  3. 고른 LoRA가 강도 0.7에서 가장 좋고 1.0에서는 색이 탄다. 어떻게 하나?

풀이

  1. 1,000스텝이다. 20 × 10 × 10 ÷ 2.
  2. 데이터에 있던 그대로를 시키면 외운 것을 뱉는지, 캐릭터를 배운 것인지 구분할 수 없기 때문이다.
  3. 조금 과하게 학습된 것이다. 0.7로 낮춰 쓰거나, 더 앞 시점의 저장본을 쓴다.
← 4-2 데이터셋과 캡션 4-4 도구와 실습: LoRA 세 개 만들기 →