훈련을 위해 설치해야 할 것: Kohya_ss 하지만 때때로 프로세스를 가속화하기 위해 제가 만든 스크립트를 실행합니다. 이 스크립트는 모든 매개변수와 함께 Kohya 스크립트를 호출합니다. 마지막에 이에 대해 이야기할 것입니다. Flux에 필요한 sd3-flux.1 브랜치입니다.
생성: InvokeAI 죄송합니다, 저는 여기 Automatic1111과 ComfyUI도 있지만, InvokeAI를 사랑합니다.
* FLUX의 경우, 훈련을 1800단계로 제한하고 있습니다 (위의 설정 파일에 이미 포함되어 있음) 하지만 약 1200 단계에서 LoRA가 이미 좋습니다.
* 또한 FLUX의 경우, 위의 설정이 ANIMES와 CARTOONS에 대한 훈련을 수렴하지 않았습니다. 따라서, -learning_rate=0.0004 -unet_lr=0.0004를 0.001 또는 0.002로 증가시켜야 할 수 있습니다. 그렇게 하면 훈련이 더 적은 단계에서 잘 진행되지만, 과적합이 더 쉬울 수 있습니다.
이 파일들을 Kohya LORA 탭 — 꿈부트 탭이 아님 —에 로드하십시오. 구성 파일을 클릭하고 로드하십시오.
변경해야 할 설정:
모델 및 폴더 섹션:
이미지 폴더 – 우리가 이전에 만든 training_images 폴더입니다. 숫자가 있는 폴더가 아니라 부모 폴더입니다.
출력 폴더 – 우리가 이전에 만든 result_current 폴더입니다.
출력 이름 – lora의 문자열 이름입니다.
매개변수 탭 > 고급 > 샘플:
프롬프트를 변경하십시오. 간단해야 하며, 샘플 이미지를 생성하는 데 사용됩니다. 간단하게 유지하십시오.
매개변수 탭 > 기본:
에포크 수를 변경할 수 있지만, 시작할 때는 6을 유지하는 것이 좋습니다.
각 필드의 의미에 대해 인터넷에서 검색하십시오. 지금 모든 것을 설명하는 것은 범위를 벗어나지만, 여기에서 읽을 수 있습니다: LoRA 훈련 매개변수
하드웨어 활용
대부분의 설정은 하드웨어 요구 사항을 변경합니다.
이들은 RTX2060 슈퍼 12GB VRAM을 사용하여 저에게 효과가 있었던 설정입니다 — FLUX의 경우 RTX 4060 TI 16GB VRAM으로 업그레이드했습니다.
예를 들어, 제 RTX2060은 3060과 같은 bf16을 지원하지 않으므로 fp16을 사용합니다. 이렇게 하면 메모리를 절약할 수 있지만, 12GB로 잘 작동했습니다.
모든 것을 변경한 후, "훈련 시작"을 클릭하십시오. 콘솔에서 다음과 같은 내용을 볼 수 있습니다:
긴 진행 표시줄과 함께.
SD1.5: 저는 잠금을 디스크에 캐시하지 않습니다. 더 빠르지만 SDXL과 거의 동일한 VRAM을 사용합니다.
SDXL:
FLUX: 새 카드로도 한계에 가까움!!!!!
메모리 부족 오류
CUDA 메모리 부족 오류가 발생하면, 한계에 도달한 것입니다. 디스크에 잠금을 캐시하도록 활성화하고, 하드웨어가 지원하는 경우 fp16에서 bf16으로 변경하고, 배치 크기를 2에서 1로 줄이십시오.
Flux의 경우 "분할 모드"를 활성화할 수 있습니다. 이렇게 하면 VRAM이 많이 줄어들지만 훈련 시간이 거의 두 배가 됩니다.
다른 옵션은: 모든 프로그램을 닫고, 두 번째 모니터를 분리하고, 디스플레이 해상도를 낮추고, 리눅스에서는 가벼운 데스크탑 환경으로 임시로 변경하고, 훈련을 시작한 후에는 브라우저를 닫고 명령 프롬프트만 열어 상태를 확인하십시오.
해결할 수 없다면, 인터넷에서 검색하십시오. 여전히 오류가 발생하면 포기하고 CivitAI에서 훈련하십시오.
훈련 미리보기
매 100단계(변경 가능)마다 훈련은 results_current/sample 폴더에 샘플 이미지를 생성합니다. 그러면 작동하는지 여부를 알 수 있습니다.
결과는 시간이 지남에 따라 개선됩니다.
훈련 결과
훈련이 끝나면 디렉토리는 다음과 같이 보일 것입니다:
샘플 이미지를 통해 과훈련되었는지 과소훈련되었는지 확인할 수 있습니다. LoRA를 실행할 때도 이를 확인할 수 있습니다.
과훈련
모델이 과훈련되면 이미지는 "점토로 만들어진 픽셀화된" 모습이 됩니다... 어떻게 설명해야 할지 모르겠습니다. 미리보기 이미지가 왜곡되기 시작합니다.
눈으로 확인하십시오, 생성된 이미지:
가끔 이렇게 나쁜 결과가 나오지 않지만, 얼굴이 훈련된 사람처럼 보이지 않다가 나중의 에포크에서 변형됩니다.
해결책은 간단합니다: 이전 에포크를 테스트하고 잘 작동하는 가장 최근의 것을 확인하십시오. 샘플 이미지를 기반으로 쉽게 좋은 것을 찾고, 같은 시기에 생성된 LoRA 파일을 찾을 수 있습니다.
하나를 선택하는 것은 어렵습니다!!! 하지만 해야 합니다. 가능한 한 많이 테스트하십시오.
과소훈련
과소훈련된 경우(초상화 얼굴이 사람처럼 보이지 않고 SD 모델의 일반적인 사람의 조합처럼 보이거나, 객체에 원하는 세부 사항이 없는 경우) 훈련을 재개할 수 있습니다.
이 예제 이미지에서는 마이크가 넥타이와 합쳐지는 것과 같은 세부 사항이 누락되어 있습니다.
과훈련과의 차이는 세부 사항의 부족입니다.
Kohya를 닫았다면, 문제 없습니다. 결과 디렉토리에서 생성된 json을 로드하면 사용된 모든 설정이 로드됩니다.
매개변수 > 기본에서, 훈련을 계속할 수 있는 LoRA 네트워크 가중치 필드가 있습니다.
가장 최근의 것을 다른 이름으로 바꾸고, 이 필드에 위치를 복사한 후, 에포크를 2 또는 3으로 변경하고(훈련을 계속하는 데 얼마나 필요한지에 따라 다름) 다시 훈련 시작 을 클릭하십시오. 훈련이 재개됩니다.
좋아질 때까지 계속할 수 있습니다!
완료!
원하는 최종 lora 에포크의 이름을 바꾸거나(또는 최종 결과가 좋다면 유지) 사용하십시오.