2024년 1월 20일 간단 추가. Animagine XL V3가 타겟인 경우에는 Animagine XL V3 Base 모델로 학습을 해야됨.


2023년 9월 25일 수정. 이 글이 처음 작성한 시점에서는 순정 SDXL 1.0의 성능이 기대 이하라서 생성 품질이 좋지 않았지만, 점점 잘 튜닝된 SDXL 모델들이 등장하면서 어느정도 좋은 결과를 기대할 수 있음.


이 설정은 SDXL에서만 사용할 수 있으며 SD 1.x와 SD 2.x는 사용할 수 없음.


1.0 기준으로 1.1 이후의 미래에는 달라질 수 있음. 일부 설치 사용법은 https://arca.live/b/aiart/68205055 에서 긴빠이 해옴. 


1. 필요한 것

  - 권장 VRAM 12GB 이상 NVIDIA 그래픽 카드

     - 최소 VRAM 8GB 이상 NVIDIA 그래픽 카드 (768,768만 가능)

     - 라데온은 윈도우에서 불가능함. 리눅스라면 방법이 좀 다르지만 가능할지도?

 - Windows 10/11

     - 리눅스에서 설치는 가능하나 방법이 좀 다름.

 - python 3.10 하고 git

     - 설치 시 PATH 환경 변수 추가 하기.

 - stable diffusion WebUI (automatic1111 또는 vladmandic)

     - WD Tagger 1.4 https://github.com/picobyte/stable-diffusion-webui-wd14-tagger

 - ComfyUI (옵션)

 - 학습할 데이터셋 (리사이징 안 해도 된다고 함)


2. 설치

먼저 설치할 곳에서 파워쉘을 열어야한다. Shift + 우클릭 한 다음 여기에 Powershell 창 열기를 선택하면 창이 열림.


그런 다음 git clone https://github.com/bmaltais/kohya_ss.git 입력


그런 다음 kohya_ss 폴더 안의 setup.bat 실행.


이런 창이 뜨면 1 입력


이렇게 메세지가 뜨면 2 입력.


설치를 하다보면 accelerate config으로 진입할건데

This machine [엔터]

No distributed training [엔터]

NO [엔터] - 기본값이 NO 엔터만 쳐도 됨!

NO [엔터] 

NO [엔터] 

all  [입력] 

fp16 [숫자 1 눌러서 선택 후 엔터]


설치가 완료되면 창을 닫는다. bitsandbytes_windows 설치는 하지 않는다. 다른 optimizer 사용으로 bitsandbytes를 사용하지 않을것이다.


3. 실행

kohya_ss 폴더 안의 gui.bat 실행.


이렇게 뜨면 창에서 안내하는 local URL을 입력하여 접속한다. 


보통은 127.0.0.1:7860이지만 다른 webui 프로그램이 실행중이면 주소가 다를 수 있다.

먼저 LoRA를 클릭한다.


그런 다음 Configuration file을 클릭한다.


https://mega.nz/file/gSVhBLCK#q9DyBNuZXEN5NDItwkUY61sq6GTKFxL5lHyeUORUpfE

을 다운받는다. 설정 파일임.


그런 다음 Open을 클릭해서 해당 설정 파일을 연다.


그런 다음 SDXL이 있는 모델의 절대 위치를 지정한다. 어떻게 지정하는지 모르겠디만 우측에 있는 파일 버튼을 클릭하면 된다. 순정 SDXL 모델로 학습하지 않으면 LoRA 호환성이 대폭 하락하니 주의. 튜닝된 SDXL로 학습하는 경우 유의미한 LoRA 퀄리티 상승이 있는지는 아직 확인을 안해봤음.


폴더 탭으로 넘어간 다음 이미지/아웃풋/로깅 폴더 등등을 지정한다. 학습이 처음이라서 뭔지 모른고 어떻게 해아할지 모른다면 https://arca.live/b/aiart/68205055 의 8번을 참고하여 진행할것. 참고로 태깅은 해당 확장 프로그림의 지원 종료로 https://github.com/picobyte/stable-diffusion-webui-wd14-tagger 를 사용해야함.


파라미터스는 미리 세팅이 되어 있지만 일부 값은 건들어도 됨.


Train batch size 사이즈는 배치 사이즈로 1~4 중에서 선택. VRAM이 낮을 수록 낮은 값을 사용해야하고 VRAM이 넉넉하다면 4 정도면 충분할지도. 


Epoch와 Max train epoch는 동일한 값을 입력해야하며, 보통은 6 이하로 잡음.


train_batch_size x Epoch x Repeats가 총 스텝수이다. SD 1.x LoRA 학습에서는 10000을 넘길일이 없는데 SDXL는 정확하지 않음. 캐릭터는 대체로 500~1500 스텝 사이에서 결정나는것 같고 그림체는 10000 스텝 정도 해도 잘 안되는거 같음.


Learning rate, Text Encoder learning rate, Unet learning rate는 0.0004로 설정되어 있는데 초보자라면 이 값을 건들지 않는것이 좋임. 초보자가 아니고 모험을 좋아한다면 영문으로 관련 정보를 습득하는것이 좋음.



Max resolution - 최대 해상도. 보통은 1024, 1024가 권장되지만 약간 빠른 학습과 안정적인 VRAM 사용을 위해서 768, 768로 설정함. 물론 하고싶다면 1024, 1024 사용해도됨.


Network Rank (Dimension), Network Alpha는 LoRA 사이즈를 담당함. 그냥 둬도 되지만 크기를 늘리거나 줄이거나 해도 큰 상관은 없음. 다만 큰 LoRA가 큰 품질을 만드는것은 아닌듯.


Advanced Configuration에 대해서 세팅하는 방법은 생략. Shuffle caption 같은 일부 기능은 VRAM 절약 옵션때문에 사용할 수 없을것이고 그냥 미지원 기능도 있으니 참고.

세팅이 끝나면 Save (덮어쓰기) 또는 Save as... (다른 이름으로 저장하기) 클릭해서 세팅을 저장한다. 안그러면 다시 세팅해야함.

그런 다음 아래에 있는 Start training를 누른다음 학습이 끝날때까지 콘솔창을 바라본다. 뭔가 잘못되면 에러메세지는 콘솔창에 뜰것이다. 그래픽카드 성능에 따라 30분에서 2시간 정도 걸릴 수 있음. loss=값에 nan 안뜨면 잘 되고 있는것이고 nan 뜨면 망한거임.


SDXL 1.0에서 아니메 캐릭터 학습 결과물을 SDXL 1.0에서 이미지를 생성한 경우에는 이정도라서 실사용이 어렵지만


최근 잘 튜닝된 SDXL 모델의 등장으로 아니메 스타일로 개조된 SDXL 모델에서 사용하면 그럭저럭 괜찮은 결과를 기대할 수 있음.