테스트샘플 만들동안 할 게 없으니 저 파일 내용을 긁어다 파파고로 번역
제법 양이 되네
매번 뜨그럴 코햐스크립트는 설명서도 없냐고 궁시렁거렸는데... 이거였음
파일은
kohya_ss/docs/LoRA
에 있으니 영어되는 챈럼은 원문을 볼 것
파파고 번역이 개떡같을수도 있어서, 항목(### 붙은것들)은 원문을 도로 긁어다 넣음
어짜피 각 옵션은 원문대로 되 있을테니

코햐스크립트 GUI를 실행했을때 띄워주는 webUI의 설명이며, 해당 문서의 작성날짜가 없어서 어느 버전의 설명까지 있는지는 모르겠는데

원래 설명을 보고싶었던 Debiased Estimation loss 항목의 설명은 없었음
일부 알려진 버그 (웨이트 캡션 사용시 맥스토큰 75 고정) 설명도 없으므로 이런건 경험으로 떼워야 됨


그리고 원래 어디 웹 게시용이었던건지, 메모장에 첨부될리 없는 그림의 언급이 있음
대애충 먼 그림인지 느낌은 오는데 일단 없으니까 그런 줄 알고

설명중 일부는 webUI의 각 항목에 주석이 있는 것도 있음. 다 있는건 아니고




# 누구나 안정적인 확산 이해를 위해 Kohya_ss를 이용한 LoRA 학습 설정 설명

kohya_ss에서 각 설정의 의미를 이해하기 위해서는 LoRA가 어떻게 추가 학습을 수행하는지 알아야 합니다.

추가 학습의 대상이 되는 '모델'이 무엇인지에 대해서도 설명해드리겠습니다.


## "모델"이란

안정 확산(Stable Diffusion)은 "모델"이라고 불리는 모듈을 로드하고 사용합니다. 모델은 말하자면 "뇌"이고, 그 진정한 정체는 "신경망의 무게 정보"입니다.

신경망은 많은 "뉴런"들로 구성되어 있고, 뉴런들의 군집은 많은 "층"들을 형성합니다. 한 층의 뉴런들은 다른 층의 뉴런들과 선으로 연결되어 있고, 그 연결의 강도는 "무게"입니다. 바로 이 "무게"가 엄청난 양의 사진 정보를 보유하고 있습니다.


### LoRA는 작은 신경망을 추가합니다

LoRA는 일종의 '추가 학습'이지만, 추가 학습은 신경망을 업그레이드하는 것입니다.

"드림부스"라는 추가 학습 방법은 이 방법을 사용합니다.

이 방법을 사용하면 추가 교육 데이터를 게시하려면 추가 교육과 함께 업데이트된 전체 모델을 배포해야 합니다.

모델은 일반적으로 2G에서 5G 바이트 크기로 배포가 어렵습니다.

반면, LoRA 학습은 모델을 내버려두고 학습하고자 하는 위치마다 새로운 "작은 신경망"을 만듭니다. 이 작은 신경망에 추가적인 훈련을 합니다.

LoRA를 배포하고자 할 때는 이 작은 신경망만 배포하면 되기 때문에 데이터 크기가 작습니다.


### 작은 신경망의 구조

LoRA의 작은 신경망은 세 개의 층으로 이루어져 있습니다. 왼쪽의 '입력층'과 오른쪽의 '출력층'의 뉴런 수는 대상 신경망의 '입력층'과 '출력층'의 뉴런 수와 같습니다. 중간층(중간층)의 뉴런 수를 '랭크 번호'(또는 차원 수)라고 하는데, 학습 시 이 수를 자유롭게 정할 수 있습니다.


### LoRA 학습대상 1: U-Net

U-Net은 "아래"(왼쪽 절반), "중간"(아래), "위"(오른쪽 절반)로 나뉩니다.

그리고 Down12 블록, Mid1 블록, Up12 블록 총 25개 블록으로 구성되어 있습니다. 여기에 추가된 신경망은 간단히 Kohya_ss로 "UNET"이라고 불립니다.


### RoLA Learning Object 2: Text Encoder

LoRA가 신경망을 추가하는 것은 이번만이 아닙니다.

위 그림의 "Cross Attention"이라는 블록은 "Text Encoder"라는 모듈에서 텍스트 정보를 수신합니다. 이 "Text Encoder"는 텍스트 데이터인 프롬프트를 숫자의 문자열(벡터)로 변환하는 역할을 합니다.

텍스트 인코더는 U-Net의 모든 Attention Block이 공유하는 하나의 텍스트 인코더만 존재합니다. 이 텍스트 인코더는 원래 Stable Diffusion 내에서 "완제품"으로 취급되어 모델 학습의 대상이 되지 않지만 LoRA에 의한 추가 학습의 대상이 되기도 합니다.

LoRA 업데이트된 텍스트 인코더는 모든 어텐션 블록에서 사용되므로 여기에 추가된 신경망은 최종 이미지에 큰 영향을 미칩니다.

여기에 추가된 신경망은 Kohya_ss에서 "Text Encoder"라고 불립니다.



## Basic training parameters   여기서부터 실제 127.0.0.1:7860 접속시의 화면 설명임


### LoRA type

LoRA 학습의 종류를 지정합니다. 위에서 설명한 LoRA는 "표준" 타입입니다. "DyLoRA"는 지정한 랭크보다 아래에 있는 여러 랭크를 동시에 학습하므로 최적의 랭크를 선택하고 싶을 때 편리합니다. LoHa는 효율성이 높은 LoRA이며, LoCon은 U-Net의 Res 블록까지 학습을 확장합니다.

처음에는 Standard 유형에는 문제가 없습니다. 만약 여러분이 배우는데 어려움이 있다면, 다른 유형을 시도해 보세요.


### LoRA network weights

이미 학습한 LoRA 파일을 추가 학습에 사용하려면 여기에 LoRA 파일을 지정합니다.

여기에 지정된 LoRA는 학습을 시작할 때 읽게 되고, 이 LoRA 상태에서 학습이 시작됩니다. 학습 후 LoRA는 다른 파일로 저장되므로 여기에 지정된 LoRA 파일은 덮어쓰지 않습니다.


### DIM from weights

이것은 LoRA 네트워크 가중치로 추가 교육을 수행할 때만 선택 사항입니다.

위 그림과 같이 LoRA는 작은 신경망을 추가하지만 중간 계층의 뉴런 수(랭킹 수)는 Network Rank(네트워크 랭크)로 자유롭게 설정할 수 있습니다(후술).

그러나 이 옵션을 켜면 생성된 LoRA의 랭크 수가 LoRA 네트워크 가중치에 지정된 LoRA와 동일한 랭크로 설정됩니다. 이 옵션을 켜면 Network Rank 사양이 무시됩니다.

예를 들어, 추가 학습에 사용되는 LoRA 랭크의 수가 32개일 때, 생성될 LoRA 랭크의 수 역시 32개로 설정됩니다.

기본값은 꺼져 있습니다.


### Train batch size

배치 크기를 지정합니다. 배치는 "한 번에 읽을 이미지의 수"입니다. 배치 크기가 2이면 한 번에 두 개의 이미지가 동시에 훈련됩니다. 여러 개의 다른 사진을 동시에 학습하면 각 사진의 튜닝 정확도가 떨어지지만 여러 사진의 특성을 종합적으로 포착하는 학습이기 때문에 최종 결과가 더 나을 수 있습니다.

(특정 사진에 너무 맞추면 해당되지 않는 LoRA가 됩니다.)

한 번에 여러 장의 그림을 학습하기 때문에 배치 크기가 클수록 학습 시간이 짧아집니다. 하지만 튜닝 정확도가 떨어지고 가중치 변화 횟수가 줄어 경우에 따라 학습이 부족할 가능성이 있습니다.

(배치크기를 증가시킬 때는 학습률을 높이는 것이 좋다는 보고도 있습니다(후술). 예를 들어 배치크기가 2인 경우에는 학습률을 2배로 늘려야 합니다.)

또한 배치 사이즈가 클수록 메모리 소모량이 많아집니다. PC의 VRAM 크기에 맞춰 결정해 봅시다.

6GB의 VRAM을 사용하면 2개의 배치 크기가 거의 불가능합니다.

기본값은 1입니다.

*배치별로 동시에 판독되는 이미지는 모두 동일한 크기여야 하므로, 훈련 이미지의 크기가 다를 경우 동시에 처리되는 이미지의 수는 여기에 명시된 배치 수보다 적을 수 있습니다.


### Epoch

하나의 시대는 "한 세트의 배움"입니다.

예를 들어 50개의 이미지를 각각 10번씩 읽으면서 학습하고 싶다고 하자. 이 경우 1에포크는 50x10 = 500번의 훈련입니다. 2에포크라면 이는 두 번 반복되므로 500x2 = 1000번의 학습이 될 것입니다.

지정된 에포크 수에 대한 교육이 끝나면 LoRA 파일이 생성되어 지정된 위치에 저장됩니다.

LoRA의 경우 2-3번의 학습 기간이면 충분합니다.


### Save every N epochs

여기에 지정된 각 에포크 번호에 대해 진행률을 LoRA 파일로 저장할 수 있습니다.

예를 들어 "Epoch"에서 10을 지정하고 "Save every N epoch"에서 2를 지정하면 LoRA 파일이 2 epoch(2, 4, 6, 8 epoch 종료 시)마다 지정된 폴더에 저장됩니다.

중간 LoRA를 생성할 필요가 없는 경우 여기에 있는 값을 "Epoch"와 동일한 값으로 설정합니다.


### Caption Extension

각 이미지에 대한 캡션 파일을 준비한 경우, 여기에 캡션 파일의 확장자를 지정합니다.

이것이 비어 있으면 확장자가 .caption이 됩니다. 캡션 파일의 확장자가 .txt이면 여기서 .txt"를 지정합니다.

캡션 파일이 없으면 무시해도 됩니다.


### Mixed precision

교육 중 중량 데이터의 혼합 정밀도 유형을 지정합니다.

가중치 데이터는 원래 32비트 단위이지만(아니오를 선택한 경우), 필요에 따라 16비트 단위 데이터를 혼합하여 학습하면 메모리를 상당히 절약하고 속도를 높일 수 있습니다. fp16은 정밀도가 절반인 데이터 형식이고, bf16은 32비트 데이터와 동일한 수치폭을 다룰 수 있도록 고안된 데이터 형식입니다.


### Save precision

LoRA 파일에 저장할 가중치 데이터 유형을 지정합니다.

플로트는 32비트, fp16과 bf16은 16비트 단위입니다. 아래 두 개는 파일 크기가 더 작습니다.

기본값은 fp16입니다.


### Number of CPU threads per core

교육 시 CPU 코어당 스레드 수. 기본적으로 숫자가 높을수록 효율이 높아지지만 사양에 따라 설정을 조정할 필요가 있습니다.

기본값은 2입니다.

실제로 최대치로 표시되는건 컴퓨터의 총 스레드 수가 나옴. 별 영향력 없음

### Seeds

학습 중에는 "어떤 순서로 이미지를 읽을 것인지", "훈련 이미지에 얼마나 많은 노이즈를 넣을 것인지(자세한 내용은 생략)"와 같은 여러 가지 무작위 과정이 있습니다.

Seed는 랜덤 처리 절차를 결정하는 ID와 같으며, 동일한 Seed를 지정하면 매번 동일한 랜덤 절차를 사용하게 되어 학습 결과의 재현이 용이합니다.

그러나 이 시드를 사용하지 않는 랜덤 프로세스(예: 랜덤 크롭 이미지)가 있으므로 동일한 시드를 지정하는 것이 항상 동일한 학습 결과를 제공하는 것은 아닙니다.

기본값은 공백입니다. 지정하지 않으면 교육 실행 시 시드가 적절하게 설정됩니다.

가능한 한 결과를 재현하고 싶다면 숫자(1234 등)를 적절히 설정하여 손실이 없습니다.


### Cache latents

훈련 영상은 VRAM으로 판독되어 U-Net에 들어가기 전에 Latent라는 상태로 "압축"되고 이 상태에서 VRAM으로 훈련됩니다. 일반적으로 영상은 로드될 때마다 "압축"되지만, "Cache latent"를 체크하면 "압축"된 영상이 메인 메모리에 유지되도록 지정할 수 있습니다.

메인 메모리에 유지하면 VRAM 공간이 절약되고 속도가 빨라지지만 '압축' 전에는 이미지를 처리할 수 없기 때문에 flip_aug 이외에는 증강(후술)을 사용할 수 없습니다. 또한 매번 이미지를 무작위 범위로 잘라내는 랜덤 크롭(후술)은 사용할 수 없습니다.

기본값은 켜져 있습니다.


### Cache latents to disk

캐시 레이턴츠 옵션과 유사하지만 이 옵션을 선택하면 압축된 이미지 데이터를 임시 파일로 디스크에 저장하도록 지정할 수 있습니다.

이 임시 파일은 kohya_ss를 다시 시작한 후에도 재사용이 가능하므로 동일한 데이터로 LoRA 학습을 여러 번 하려면 이 옵션을 켜면 학습 효율이 향상됩니다.

하지만 이것을 켜면 flip_aug 이외에는 증강 및 랜덤 크롭을 사용할 수 없습니다.

기본값은 꺼져 있습니다.


### Learning rate:

학습 속도를 지정합니다. '학습'이란 주어진 그림과 똑같이 생긴 그림을 만들 수 있도록 신경망에서 배선의 두께(무게)를 바꾸는 것인데, 그림을 줄 때마다 배선이 바뀝니다. 주어진 그림에만 너무 맞추면 다른 그림을 전혀 그릴 수 없게 됩니다.

이를 방지하기 위해 우리는 주어진 그림을 조금씩 더 포함시키기 위해 매번 가중치를 조금씩 바꿉니다. 이 "조금만"의 양은 "학습율"에 의해 결정됩니다.

기본값은 0.0001입니다.


### LR Scheduler:

학습 도중에 학습률을 변경할 수 있습니다. 스케줄러는 학습률을 어떻게 변경할 것인지에 대한 설정입니다.

Adfactor : Optimizer(후술)를 Adfactor로 설정하려면 이 항목을 선택합니다. VRAM을 저장하기 위해 상황에 따라 학습 속도를 자동으로 조정하면서 학습합니다

constant: 학습률은 처음부터 끝까지 변하지 않습니다

constant_with_warmup : 학습률 0에서 시작하여 워밍업 시 설정값인 학습률 쪽으로 점차 높여가며, 본 학습 시 설정값인 학습률을 사용합니다.

cosine : 파동을 그리면서 학습률을 0으로 점진적으로 낮춥니다(cosine curve)

cosine_with_restarts: cosine을 여러 번 반복합니다(LR 사이클 수 설명 참조)

linear: 학습 속도 설정에서 시작하여 0을 향해 선형적으로 감소합니다

polynomial: 선형과 동일한 동작이지만 줄이기에는 조금 더 복잡합니다(LR 검정력 설명 참조)

학습 속도 설정에서 학습 속도를 고정하려면 상수로 설정합니다.

기본값은 코사인입니다


### LR warmup

스케줄러에서 constant_with_warmup을 선택한 경우 워밍업 횟수를 여기에 설정합니다.

여기에 지정된 숫자는 총 단계 수에 대한 백분율입니다.

예를 들어, 배치 크기가 1인 50개의 이미지를 10번 학습하고 2에포크 동안 이렇게 하면 총 스텝 수는 50x10x2=1000이 됩니다. LR warm up을 10으로 설정하면 총 1000개 스텝 중 처음 10%인 100개 스텝이 warm up이 됩니다.

스케줄러가 일정_with_warmup이 아닌 경우 이를 무시할 수 있습니다.

기본값은 10입니다.


### Optimizer

옵티마이저는 '훈련 중 신경망 가중치를 업데이트하는 방법'을 설정한 것입니다. 스마트러닝을 위해 다양한 방법이 제안됐지만 LoRA 학습에서 가장 많이 사용되는 것은 'AdamW'(32비트)나 'AdamW8bit'입니다. AdamW8bit는 VRAM 사용량이 적고 정확도가 충분하기 때문에 길을 잃었을 때는 이를 이용하세요.

또한 Adam의 방법을 접목하면서 학습의 진행에 따라 학습률을 적절히 조절하는 'Adafactor'도 자주 사용됩니다(Adafactor 사용 시 학습률 설정은 무시됩니다).

"DADapt"는 학습 속도를 조절하는 옵티마이저이고, "Lion"은 비교적 새로운 옵티마이저이지만 아직 완전히 검증되지는 않았습니다. "SGDNesterov"는 학습 정확도는 좋지만 속도가 느려진다는 보고가 있습니다.

기본값은 Adam W8bit입니다. 기본적으로 그대로라면 문제가 없습니다.


### Optimizer extra arguments

주어진 최적화기에 대해 더 세분화하려면 여기에 명령을 입력합니다.

일반적으로 이 필드를 비워 둘 수 있습니다.


### Text Encoder learning rate

텍스트 인코더의 학습률을 설정합니다. 앞서 작성한 바와 같이 텍스트 인코더에 대한 추가 교육의 효과는 U-Net 전체에 영향을 미칩니다.

따라서 보통 U-Net의 각 블록별 학습률(Unet learning rate)보다 낮게 설정됩니다.

기본값은 0.00005(5e-5)입니다.

여기에 숫자를 지정하면 학습 속도 값보다 우선합니다.


### Unet learning rate

U-Net의 학습률을 설정합니다. U-Net에서 각 어텐션 블록(및 설정에 따라 다른 블록)에 대한 추가 학습을 수행할 때의 학습률입니다.

기본값은 0.0001입니다.

여기에 숫자를 지정하면 학습 속도 값보다 우선합니다.


### Network Rank (Dimension)

앞서 기사에서 설명한 "추가 작은 신경망"의 숨겨진 층에 있는 뉴런의 수를 지정합니다(자세한 내용은 위 그림 참조).

뉴런의 수가 많을수록 더 많은 학습 정보를 저장할 수 있지만, 학습 대상 이외의 불필요한 정보를 학습할 가능성이 높아지고, LoRA 파일 크기도 증가합니다.

일반적으로 최대 128개 정도로 설정되는 경우가 많은데 32개면 충분하다는 보고가 있습니다.

시범적으로 LoRA를 만들 때는 2~8시 정도부터 시작하는 것이 좋을 수 있습니다.

기본값은 8입니다.


### Network alpha

이는 LoRA를 저장할 때 가중치가 0으로 반올림되는 것을 방지하기 위한 편의 조치로 도입되었습니다.

LoRA의 구조상 신경망의 가중치 값이 작아지는 경향이 있고, 너무 작아지면 0과 구분할 수 없게 될 수도 있습니다(즉, 아무것도 학습하지 않는 것과 같습니다). 따라서 실제 (저장된) 가중치 값은 크게 유지하되 학습 중에는 항상 일정한 속도로 가중치를 약화시켜 가중치 값을 작게 보이게 하는 기법이 제안되었습니다. 이 '가중치 약화율'은 네트워크 알파가 결정합니다.

Network alpha 값이 작을수록 저장된 LoRA 신경망 가중치가 커집니다.

사용 시 가중치가 얼마나 약화되는지(사용 강도)는 "Network_Alpha/Network_Rank"(대략 0에서 1 사이의 값)로 계산되며 Network Rank 번호와 밀접한 관련이 있습니다.

학습 후 LoRA의 정확도가 부족할 경우 가중치 데이터가 너무 작아져 0으로 붕괴될 수 있습니다. 그런 경우에는 Network Alpha 값을 낮추어(= save weight 값을 높입니다).

기본값은 1입니다(즉, 저장된 가중치 값을 최대화합니다).

Network Alpha와 Network Rank가 동일한 값을 가지면 효과가 꺼집니다.

*Network Alpha 값은 Network Rank 값을 초과할 수 없습니다. 높은 수치를 지정할 수 있지만 의도하지 않은 LoRA가 발생할 확률이 높습니다.

또한 네트워크 알파를 설정할 때 학습률에 미치는 영향도 고려해야 합니다.

예를 들어 Alpha가 16이고 Rank가 32일 때 사용된 가중치의 강도는 16/32 = 0.5이므로 학습 속도가 학습 속도 설정보다 절반만 강력하다는 것을 의미합니다.

Alpha와 Rank가 같은 숫자일 경우 사용되는 강도는 1이며 학습률에 영향을 미치지 않습니다.


### Max resolution

트레이닝 이미지의 최대 해상도를 "폭, 높이"의 순서로 지정합니다. 트레이닝 이미지가 여기에 지정된 해상도를 초과하면 이 해상도로 축소됩니다.

기본값은 "512,512"입니다. 많은 모델이 이 크기의 이미지를 사용하므로 LoRA를 학습할 때 이 크기의 이미지를 사용하는 것이 안전합니다.

숫자를 한개만 적으면 정사각형 해상도로 지정함 "512" = "512, 512"


### Stop text encoder training

텍스트 인코더 학습을 중간에 그만 두셔도 됩니다. 위에 작성한 것처럼 텍스트 인코더 업데이트는 전체적으로 큰 영향을 미치기 때문에 과적합(트레이닝 이미지에 대한 과도한 조정 및 기타 이미지를 그릴 수 없음)에 빠지기 쉽고, 중간 지점에서 학습을 중단하는 것도 과적합을 방지하는 하나의 방법입니다

여기에 지정된 숫자는 전체 훈련 단계의 백분율입니다. 학습이 이 백분율에 도달하면 텍스트 인코더는 학습을 중지합니다.

예를 들어, 총 단계 수가 1000단계이고 여기서 80단계를 지정하면 텍스트 인코더는 학습 진행률이 80%일 때 즉, 1000x0.8=800단계가 되면 교육을 마칩니다.

U-Net 교육은 200개의 남은 단계로 계속 진행됩니다.

이 값이 0이면 텍스트 인코더 교육이 끝까지 중단되지 않습니다.


### Enable buckets

" 버킷(bucket)은 이름에서 알 수 있듯이 버킷(bucket)입니다. LoRA에서 사용되는 훈련 이미지는 동일한 크기일 필요는 없지만 다른 크기의 이미지는 동시에 훈련할 수 없습니다. 따라서 훈련 전에 이미지를 크기에 따라 "버킷(bucket)"으로 분류할 필요가 있습니다. 비슷한 크기의 이미지를 같은 버킷에 넣고 다른 크기의 이미지를 다른 버킷에 넣습니다.

기본값은 켜져 있습니다.

교육 이미지의 크기가 모두 동일한 경우 이 옵션을 해제할 수 있지만 켜두면 효과가 없습니다.

*훈련 영상의 크기가 통일되지 않았을 때 버킷 활성화를 해제하면 훈련 영상이 동일한 크기로 확대 또는 축소됩니다.

확대 및 축소는 영상의 종횡비를 유지하면서 수행됩니다. 종횡비가 표준 크기와 동일하지 않은 경우, 스케일링 후 영상의 세로 또는 가로 크기가 표준 크기를 초과할 수 있습니다. 예를 들어, 베이스 크기가 512x512 (1 종횡비)이고 영상 크기가 1536x1024 (1.5 종횡비)인 경우, 영상은 768x512 (1.5 종횡비 남아 있음)로 축소됩니다.



## Advanced Configuration

다음은 고급 구성 섹션의 옵션입니다.


### Weights, Blocks, Conv

U-Net의 각 블록에 대한 "학습 가중치" 및 "순위" 설정입니다. 각 탭을 선택하면 해당 구성 화면이 나타납니다.

*이 설정들은 고급 사용자들을 위한 것입니다. 환경설정이 없으면 모든 필드를 비워둘 수 있습니다.


#### Weights: Down LR weights/Mid LR weights/Up LR weights

U-Net 구조도를 보면 알 수 있듯이 U-Net은 IN블록 12개, MID블록 1개, OUT블록 12개로 총 25개의 블록으로 구성되어 있습니다.

블록별로 다른 학습률 가중치를 원하는 경우 여기에 개별적으로 설정할 수 있습니다.

여기서 가중치는 0~1의 수치로 나타내는 "학습의 강도"입니다. 0인 경우 "전혀 학습하지 않는" 것이고, 1인 경우 "학습 속도에서 정한 학습 속도로 학습하는" 것입니다. 학습의 강도를 달리할 수 있습니다.

0.5의 무게는 학습률의 절반을 의미합니다.

"아래쪽 LR 가중치"는 12개의 IN 블록 각각에 대한 가중치를 지정합니다.

"Mid LR weights"는 MID 블록의 가중치를 지정합니다.

"Up LR weights"는 12개의 OUT 블록 각각의 무게를 지정합니다.


#### Weights: Blocks LR zero threshold

"LoRA가 신경망을 추가한다"고 설명했는데, 가중치가 너무 작은 신경망을 추가하는 것은 말이 안 돼요. 따라서 가중치가 너무 작은 블록에는 신경망을 추가하지 마세요"라고 설정할 수 있습니다.

여기서 설정한 가중치 값을 초과하지 않는 블록은 신경망에 추가되지 않습니다. 예를 들어 여기서 0.1을 지정하면 가중치가 0.1 이하인 블록에는 신경망이 추가되지 않습니다(제외에도 지정된 값이 포함됩니다!).

기본값은 공백이며 0(아무것도 하지 않음)입니다.


#### Blocks: Block dims, Block alphas

여기서 25개 블록 IN0~11, MID, OUT0~11 각각에 대해 서로 다른 랭크(dim)와 알파 값을 설정할 수 있습니다.

순위 및 알파 값은 네트워크 순위, 네트워크 알파를 참조하십시오.

순위가 높은 블록은 더 많은 정보를 보유할 것으로 예상됩니다.

이 파라미터 값에는 항상 25개의 숫자를 지정해야 하지만 LoRA는 주의 블록을 대상으로 하므로 IN0, IN3, IN6, IN9, IN10, IN11, IN11, IN11, OUT0, IN1에는 주의 블록이 없습니다. , IN2 설정(1, 4, 7, 11, 12, 14, 15, 16자리)은 학습 중에 무시됩니다.

*고급 이용자를 위한 설정입니다. 상관없으시면 공란으로 남겨두셔도 됩니다. 여기에 명시되어 있지 않으면 모든 블록에 "Network Rank(Dimension)"값과 "Network Alpha"값이 적용됩니다.


#### Conv: Conv dims, Conv, alphas

LoRA가 학습하는 어텐션 블록에는 'Conv'라는 신경망이 있는데, 이 신경망 역시 추가 학습에 의해 업데이트됩니다(기사 상단의 어텐션 레이어 구조도 참조). 이는 '컨볼루션'이라고 불리는 과정으로, 사용되는 '필터'의 크기는 1x1제곱입니다.

컨볼루션에 대한 이 기사를 읽어 보십시오.

반면, OUT에서 어텐션(Res, Down block) 이외의 블록과 어텐션 블록 중 일부는 3x3 square filter를 사용하여 컨볼루션합니다. 원래는 그것이 LoRA의 학습 대상이 아니지만, 이 파라미터로 지정함으로써 Res 블록의 3x3 컨볼루션도 학습 대상이 될 수 있습니다.

학습 대상이 많아지기 때문에 보다 정밀한 LoRA 학습을 할 수 있는 가능성이 있습니다.

설정 방법은 "Blocks : Blocks dimes, Blocks alphas"와 같습니다.

3x3 컨벌은 25개의 모든 레이어에 존재합니다.

*고급 이용자를 위한 설정입니다. 상관없으시면 비워두셔도 됩니다.


### No token padding

훈련 이미지에 첨부된 캡션은 기본적으로 "단어"로 간주될 수 있는 75개 토큰마다 처리됩니다.

캡션 길이가 75개 미만인 경우 75개 토큰으로 정렬됩니다. 이를 "패딩"이라고 합니다.

여기서 토큰을 패드하지 않도록 지정할 수 있습니다

기본적으로 꺼집니다. 기본적으로 꺼둘 수 있습니다.


### Gradient accumulation steps

가중치 변경(즉, "학습")은 보통 각 배치 읽기에 대해 수행되지만 여러 배치의 훈련을 한 번에 수행하는 것도 가능합니다. 이 옵션은 한 번에 학습할 배치 수를 지정합니다.

이는 배치 수를 증가시키는 것과 유사한 효과("동일한 효과"가 아님)를 갖습니다.

예를 들어, 배치 크기가 4일 경우, 한 배치에서 동시에 읽는 이미지의 수는 4입니다. 즉, 4번의 판독마다 1번의 학습이 수행됩니다. 그래디언트 누적 단계를 2로 설정하면, 2번의 배치마다 1번의 학습이 수행되어 8번의 판독당 1번의 학습이 발생합니다. 이는 배치 번호 8과 유사하게 작동합니다(단, 동일하지는 않습니다!).

이 값을 높이면 학습 횟수가 줄어들기 때문에 처리 속도는 빨라지지만 메모리 소모는 더 많아집니다.

기본값은 1입니다.


### Weighted captions

현재 가장 인기 있는 Stable Diffusion 사용 환경은 "Stable Diffusion WebUI"로, 독특한 신속한 설명 방식을 가지고 있습니다. 예를 들어 프롬프트에서 "검은 고양이"를 지정할 때 "검은색"을 매우 강하게 강조하고 싶다면 "(검은색:1.2) 고양이"처럼 강조하고 싶은 단어를 괄호 안에 넣고 단어 뒤에 ": number"를 붙이면 단어는 그 숫자의 배수로 강조됩니다.

이 옵션을 사용하면 훈련 이미지 캡션에서도 이 표기법을 사용할 수 있습니다.

복잡한 캡션을 작성하고 싶다면 시도해 보는 것이 좋습니다.

기본값은 꺼져 있습니다.

사용시 Max Token Length = 75로 학습


### Prior loss weight

사전 손실 가중치는 교육 중에 "정규화 이미지"에 얼마나 중요성을 부여할지를 결정합니다(자세한 내용은 위의 정규화 폴더 설명 참조).

이 값이 낮으면 정규화 이미지는 덜 중요한 것으로 간주되며, 학습 이미지의 특성이 더 높은 LoRA가 생성됩니다.

이 설정은 정규화된 이미지를 사용하지 않는 경우에는 의미가 없습니다.

이 값은 0에서 1 사이의 값이며 기본값은 1(정규화된 이미지도 고려함)입니다.


### LR number of cycles

스케줄러에 대해 "재시작 시 코사인" 또는 "다중항"을 선택하는 경우, 이 옵션은 스케줄러가 교육 중에 실행하는 주기를 지정합니다.

이 옵션의 수가 2개 이상이면 한 번의 교육 실행 동안 스케줄러가 여러 번 실행됩니다.

재시작이 있는 코사인과 다항식 모두 학습이 진행됨에 따라 학습률이 0으로 점차 감소하지만, 사이클 수가 2회 이상인 경우 학습률이 0에 도달하면 학습률을 재설정하고 재시작합니다.

아래 그림(출처)은 재시작(보라색)과 다항식(연두색)을 사용한 코사인의 학습률 변화의 예입니다.

보라색 예제의 사이클 수는 4로 설정되어 있습니다. 연두색 예제의 사이클 수는 1입니다.

지정된 사이클 수는 결정된 학습 단계 내에서 실행되므로, 사이클 수가 증가할수록 학습률이 변화하는 것을 특징으로 하는 방법.

기본값은 공백이며 공백은 1입니다.

학습률 이동 예시

재시작 "LR 사이클 수 = 4"(purple)와 함께 코사인

다항식 "LR 파워 = 2"(연두색)


### LR power

스케줄러가 다항식으로 설정되어 있는 경우 옵션입니다. 이 수치가 높을수록 초기 학습률이 급격히 떨어집니다. (위 이미지에서 연두색 선의 기울기가 더 가파릅니다.).

검정력이 1일 때 선형 스케줄러와 같은 모양을 갖습니다.

숫자가 너무 많으면 학습률이 0에 가깝게 달라붙어 학습이 부족해지므로 주의하시기 바랍니다.

기본값은 공백으로, 공백은 1(즉, 선형 스케줄러와 동일)입니다.


### Additional parameters

kohya_ss GUI에 표시되지 않는 학습 설정 파라미터를 조정하려면 여기에 명령어로 입력합니다.

일반적으로 이 필드를 비워 둘 수 있습니다.


### Save every N steps

LoRA 파일은 여기에 지정된 단계 수가 완료될 때마다 생성되고 저장됩니다.

예를 들어 총 학습 단계 수가 1000단계일 때 여기서 200을 지정하면 200, 400, 600, 800단계가 끝나면 LoRA 파일이 저장됩니다.

중간 LoRA 저장에 대해서는 "N 에포크마다 저장"을 참조하십시오.

기본값은 0(중간 LoRA 저장 안 함)입니다.


### Save last N steps

학습 중 LoRA를 저장하기 위해 Save every N step을 지정한 경우 옵션입니다.

최근 LoRA 파일만 보관하고 오래된 LoRA 파일을 폐기하려면 여기서 "최근 LoRA 파일 몇 단계를 보관해야 하는지"를 설정할 수 있습니다.

예를 들어, 총 훈련 단계 수가 600개이고, 100단계마다 저장하기 위해 Save ever N step 옵션이 지정되어 있는 경우입니다. 그러면 100단계, 200단계, 300단계, 400단계, 500단계에서 LoRA 파일이 저장되지만, Save ever N step을 300단계로 설정하면 마지막 300단계의 LoRA 파일만 저장됩니다. 즉, 500단계에서 200단계(=500-300) 단계(즉, 100단계에서 LoRA)보다 오래된 LoRA는 삭제됩니다.

기본값은 0입니다.


### Keep n tokens

훈련 이미지에 캡션이 있는 경우 캡션에서 쉼표로 구분된 단어를 무작위로 섞을 수 있습니다(자세한 내용은 캡션 셔플 옵션 참조). 그러나 처음에 유지하려는 단어가 있는 경우 이 옵션을 사용하여 "처음 0개 단어를 처음에 유지"하도록 지정할 수 있습니다.

여기에 지정된 첫 번째 단어의 수는 항상 처음에 고정됩니다.

기본값은 0입니다. 이 옵션은 셔플 캡션 옵션이 꺼져 있으면 아무것도 수행하지 않습니다.

* 여기서 "단어"는 쉼표로 구분된 텍스트 조각입니다. 구분된 텍스트에 몇 개의 단어가 들어 있어도 "한 단어"로 계산됩니다.

'검은 고양이, 먹다, 앉다'의 경우 '검은 고양이'가 한 단어입니다.


### Clip skip

텍스트 인코더는 12개의 유사한 계층으로 구성된 "CLIP"라는 메커니즘을 사용합니다.

텍스트(토큰)는 원래 이 12개의 레이어를 통해 숫자 시퀀스(벡터)로 변환되며, 마지막 레이어에서 나오는 벡터는 U-Net Attention 블록으로 전송됩니다.

하지만 '노벨 AI 모델'로 알려진 서비스 '노벨 AI'가 독자 개발한 모델은 마지막 레이어가 아닌 두 번째 레이어부터 마지막 레이어까지 출력된 벡터를 사용하는 고유 사양을 채택했습니다. 노벨 AI 모델에서 파생된 모델도 마찬가지입니다. 따라서 "학습에 사용되는 기본 모델이 사용되는 벡터는 CLIP의 어느 레이어에 있는가?"라고 명시할 필요가 있습니다

"Clip skip"은 이 "끝에서 X번째"의 계층 번호를 지정합니다.

이 값을 2로 설정하면 마지막 레이어의 출력 벡터가 어텐션 블록으로 전송됩니다. 1인 경우 마지막 레이어의 출력 벡터가 사용됩니다.

기본 모델이 Novel AI 모델(또는 그들이 혼합된 모델)이면 2는 괜찮을 것이고, 그 외의 경우에는 1이 괜찮습니다.


### Max Token Length

캡션에 포함된 최대 토큰의 길이를 지정합니다.

여기서 "토큰"은 단어의 수가 아니라 토큰의 수이다 쉼표도 하나의 토큰으로 계산된다는 점에 유의하십시오.

캡션에 75개 이상의 토큰을 사용할 가능성은 낮지만 캡션이 너무 길다면 여기에 더 높은 숫자를 지정하십시오.


### Full fp16 training (experimental)

위에서 설명한 "혼합 정밀도" 옵션을 켜면(fp16 또는 bf16), 훈련 시 32비트와 16비트 데이터를 혼합하여 사용하지만, 이 옵션을 켜면 모든 가중치 데이터가 16비트(fp16 형식)가 됩니다. 메모리를 절약하지만 일부 데이터의 정확도가 절반으로 떨어져 학습 정확도 또한 떨어질 가능성이 있습니다.

기본값은 꺼져 있습니다. 메모리를 저장하지 않는 한 꺼야 합니다.


### Gradient checkpointing

보통 우리는 훈련 중에 이미지가 로드될 때마다 많은 수의 신경망의 가중치를 한꺼번에 수정하고 업데이트합니다. 이를 '한 번에' 고치는 것이 아니라 '점진적으로' 고치면 연산을 줄임으로써 메모리를 절약할 수 있습니다.

이 옵션은 가중치 계산이 점진적으로 이루어져야 함을 지정합니다. 이것을 켜거나 끄더라도 LoRA의 학습 결과에는 영향이 없습니다.

기본값은 꺼져 있습니다.


### Shuffle caption

훈련 이미지에 캡션이 있는 경우 대부분의 캡션은 "검은 고양이, 먹기, 앉기"와 같이 쉼표로 구분된 단어의 형태로 작성됩니다. 셔플 캡션 옵션은 이러한 쉼표로 구분된 단어의 순서를 매번 무작위로 바꿉니다.

캡션의 단어들은 일반적으로 처음에 가까울수록 더 많은 가중치가 부여됩니다. 따라서 단어 순서가 고정되어 있을 경우 후진 단어가 잘 학습되지 않을 수 있으며 전진 단어는 훈련 이미지와 의도하지 않은 연관성을 가질 수 있습니다. 이미지가 로드될 때마다 단어의 순서를 바꾸어서 이러한 편향을 수정할 수 있기를 바랍니다.

이 옵션은 캡션이 쉼표로 구분되지 않고 문장으로 작성된 경우에는 의미가 없습니다.

기본값은 꺼져 있습니다.

* 여기서 "단어"는 쉼표로 구분된 텍스트 조각입니다. 구분된 텍스트에 몇 개의 단어가 들어 있어도 "한 단어"로 계산됩니다.

'검은 고양이, 먹다, 앉다'의 경우 '검은 고양이'가 한 단어입니다.

웨이트 캡션을 쓰는 경우 단어 하나당 가중치를 묶어야 하는 이유.

(1girl, solo:1.2),
이렇게 지정하면
(1girl
solo:1.2)
가 뒤섞이게 된다. 반드시 (1girl:1.2), (solo:1.2)로 지정


### Persistent data loaders

훈련에 필요한 데이터는 각 에포크가 지나면 폐기되고 다시 로드됩니다. 이것은 버리는 대신 보관할 수 있는 옵션입니다. 이 옵션을 켜면 새로운 에포크에 대한 훈련 시작 속도가 빨라지지만 데이터를 보관하기 위해 더 많은 메모리가 사용됩니다.

기본값은 꺼져 있습니다.

### Cache latents랑 연관있는 옵션 같은데 V램이 아니라 메인램인 듯?


### Memory efficient attention

이것을 체크하면 VRAM 사용을 억제하고 어텐션 블록 처리를 합니다. 다음 옵션인 엑스포머보다 느립니다. VRAM이 부족하면 켜보세요.

기본값은 꺼져 있습니다.


### Use xformers

"xformers"라는 파이썬 라이브러리를 사용하면 주의 차단 기능을 사용하는 데 드는 비용으로 VRAM 사용량을 줄일 수 있습니다. VRAM이 충분하지 않으면 켜십시오.

기본값은 켜져 있습니다.


### Color augmentation

"증강"은 "패딩된 이미지"를 의미합니다. 매번 훈련 이미지를 조금씩 처리하여 인위적으로 훈련 이미지의 종류를 늘립니다.

Color Augmentation을 켜면 매번 이미지의 Hue가 랜덤으로 변경됩니다. 이를 통해 학습된 LoRA는 약간의 색조 범위를 가질 것으로 예상됩니다.

캐시 레이턴츠 옵션이 켜져 있으면 사용할 수 없습니다.

기본값은 꺼져 있습니다.


### Flip augmentation

이 옵션을 켜면 이미지가 가로로 무작위로 뒤집힙니다. 좌우 각도를 배울 수 있어 대칭적인 사람과 사물을 배우고 싶을 때 유용합니다.

기본값은 꺼져 있습니다.


### Min SNR gamma

LoRA 학습에서는 훈련 영상에 다양한 강도의 노이즈를 넣어 학습을 진행하지만(이에 대한 자세한 내용은 생략), 배치되는 노이즈의 강도 차이에 따라 학습 대상에 가까워지거나 멀어져 학습이 안정될 것입니다. 그렇지 않으며, 이를 보완하기 위해 Min SNR gamma를 도입하였습니다. 특히 노이즈가 적은 영상을 학습할 때는 대상에서 크게 벗어날 수 있으므로 이러한 점프를 억제하도록 노력합니다.

헷갈려서 자세히는 말씀드리지 않지만 이 값은 0에서 20까지 설정할 수 있으며 기본값은 0입니다.

이 방법을 제안한 논문에 따르면 최적값은 5입니다.

얼마나 효과적인지는 모르겠지만, 학습 결과가 만족스럽지 않다면 다른 가치를 시도해 보세요.


### Don't upscale bucket resolution

버킷 크기는 기본적으로 256-1024 픽셀(또는 Max resolution(최대 해상도) 옵션으로 지정된 경우 우선 순위)로 설정됩니다. 수직 또는 수평으로 이 크기 범위를 벗어나는 영상은 지정된 범위 내에 맞도록 크기가 조정됩니다(종횡비 유지).

그러나 이 옵션을 켜면 버킷 크기 범위 설정이 무시되고 훈련 이미지의 크기에 따라 버킷이 자동으로 준비되므로 모든 훈련 이미지는 축소되지 않고 로드됩니다. 그러나 이때에도 버킷 해상도 단계(후술)에 맞게 이미지의 일부 부분을 잘라낼 수 있습니다.

기본값은 켜져 있습니다.


### Bucket resolution steps

버킷을 사용하는 경우 여기에 각 버킷의 확인 간격을 지정합니다.

예를 들어, 여기에 64를 지정하면 각 훈련 이미지는 크기에 따라 64픽셀씩 별도의 버킷으로 정렬됩니다. 이 정렬은 수직 및 수평 각각에 대해 수행됩니다.

이미지 크기가 지정된 버킷 크기에 맞지 않으면 돌출된 부분이 잘립니다.

예를 들어 최대 해상도가 512픽셀이고 버킷 스텝 크기가 64픽셀마다인 경우 버킷은 512, 448, 384...이지만 500픽셀 이미지는 448픽셀 버킷에 추가로 52픽셀이 클리핑됩니다.

기본값은 64픽셀입니다.

* 이 숫자가 너무 적으면 버킷이 너무 미세하게 나뉘게 되고 최악의 경우 "이미지마다 하나의 버킷"과 같습니다.

항상 각 배치에 대해 동일한 버킷에서 이미지를 로드하므로 버킷에 이미지가 너무 적으면 의도치 않게 배치 수가 줄어듭니다.


### Random crop instead of center crop

위에서 언급한 바와 같이 절반 크기의 이미지는 버킷으로 분류된 다음 크기를 정렬하기 위해 부분적으로 잘라내지만, 일반적으로 이미지의 중앙을 유지하기 위해 잘라냅니다.

이 옵션을 켜면 사진의 어느 부분이 잘렸는지 무작위로 결정됩니다. 학습 범위를 이미지 중앙을 넘어 확장하려면 이 옵션을 켜십시오.

*이 옵션은 캐시 레이턴트 옵션이 켜져 있으면 사용할 수 없습니다.


### Noise offset type

훈련 영상에 추가 노이즈를 추가할 때 어떤 방식을 사용할지 지정하는 옵션입니다. 학습 시 항상 영상에 노이즈를 추가하지만(여기서는 자세한 내용은 생략), 이 노이즈는 "예측하기 어려운" 노이즈인 것이 좋으므로 노이즈를 더 추가하면 더 "예측 가능한" 노이즈입니다. "하드" 노이즈입니다.

기본값은 Original입니다. 멀티레스는 약간 더 복잡한 방식으로 노이즈를 추가합니다.


#### Noise offset

노이즈 오프셋 타입으로 "Original"을 선택한 경우 옵션입니다. 여기에 0보다 큰 값을 입력하면 추가 노이즈가 추가됩니다. 값의 범위는 0부터 1까지이며, 0은 노이즈를 전혀 추가하지 않습니다. 1은 강한 노이즈를 추가합니다.

약 0.1개의 노이즈를 추가하면 LoRA의 색상이 더 선명해진다고 보고되었습니다(밝고 어두운 색). 기본값은 0입니다.


####A daptive noise scale

Noise offset 옵션과 함께 사용됩니다. 여기서 숫자를 지정하면 Noise offset에서 지정한 추가 노이즈의 양이 증폭 또는 감쇄되도록 추가로 조정됩니다. 증폭(또는 감쇄)의 양은 현재 영상이 얼마나 노이즈인지에 따라 자동으로 조정됩니다. 값의 범위는 -1 ~ 1이며 양의 값은 추가 노이즈의 양을 증가시키고 음의 값은 추가 노이즈의 양을 감소시킵니다.

기본값은 0입니다.


#### Multires noise iterations

Noise offset type으로 Multires를 선택한 경우 옵션입니다. 여기에 0보다 큰 값을 입력하면 추가 노이즈가 추가됩니다.

멀티레스는 다양한 해상도의 소음을 만들어내고 이들을 더해 최종적으로 추가 소음을 만들어냅니다. 여기서 얼마나 많은 "다양한 해상도"를 만들어낼지 지정합니다.

기본값은 0이고, 0일 때는 추가 노이즈가 없습니다. 사용하려면 6으로 설정하는 것이 좋습니다.


##### Multires noise discount

Multires 노이즈 반복 옵션과 쌍을 이루세요. 각 해상도의 노이즈량을 어느 정도 약화시키기 위한 수치입니다. 0에서 1 사이의 값은 수치가 낮을수록 노이즈가 약합니다. 그런데 해상도에 따라 감쇄량이 다르며, 해상도가 낮은 노이즈가 많이 감쇄됩니다.

기본값은 0이고 0일 경우 사용 시 0.3으로 설정됩니다. 보통 0.8이 권장됩니다. 비교적 훈련 이미지의 수가 적다면 0.3 정도로 낮추는 것이 좋을 것 같습니다.


### Dropout caption every n epochs

보통 이미지와 캡션은 짝을 지어 훈련하지만, 특정 시대별 캡션을 사용하지 않고 '캡션 없는 이미지'만 훈련할 수 있습니다.

이 옵션을 사용하면 "0 에포크마다 캡션 사용 안 함(중략)"을 지정할 수 있습니다.

예를 들어 여기서 2를 지정하면 캡션이 없는 이미지 학습이 2에포크(2에포크, 4에포크, 6에포크...)마다 수행됩니다.

캡션이 없는 이미지를 학습할 때, LoRA는 더 포괄적인 이미지 특징을 배울 것으로 예상됩니다. 또한 너무 많은 이미지 특징을 특정 단어와 연관시키지 않는 효과도 기대할 수 있습니다. 그러나 캡션을 너무 많이 사용하지 않으면 프롬프트가 없는 LoRA가 될 수 있으므로 주의해야 합니다.

기본값은 0이며, 이는 캡션 드롭아웃이 없음을 의미합니다.


### Rate of caption dropout

위 n번의 시대마다 Dropout 캡션과 비슷하지만, 전체 학습 과정의 일정 비율만큼 캡션을 사용하지 않고 '캡션 없는 이미지'로 학습할 수 있습니다.

여기서 캡션이 없는 이미지의 비율을 설정할 수 있습니다. 0은 "학습 중 항상 캡션을 사용"하는 설정이고, 1은 "학습 중 절대 캡션을 사용하지 않는다"는 설정입니다.

어떤 이미지가 "캡션 없는 이미지"로 학습되는지는 무작위입니다.

예를 들어 20개의 이미지를 각각 50번씩 읽고 1에포크만 LoRA 학습을 하면 총 이미지 학습 횟수는 20개의 이미지 x 50번 x 1에포크 = 1000번이 됩니다. 이때 Rate of caption dropout을 0.1로 설정하면 1000번 x 0.1 = 100번을 '캡션 없는 images'로 학습하게 됩니다.

기본값은 0이며, 캡션으로 모든 이미지를 훈련합니다.


### VAE batch size

캐시 레이턴츠 옵션을 켜면 '압축'된 이미지 데이터를 메인 메모리.size에 유지할 수 있습니다. 일괄 사이즈별로 지정된 이미지의 수를 한 번에 학습하기 때문에 이것과 VAE 일괄 사이즈를 일치시키는 것이 일반적입니다.

기본값은 0이며, 이 경우 배치 크기와 동일한 숫자로 설정됩니다.


### Save training state

LoRA는 훈련 이미지, 반복 횟수, 에포크 수가 많으면 훈련하는 데 시간이 오래 걸릴 것입니다.

이 옵션을 켜면 중간에 스터디를 중단하고 나중에 중단한 위치에서 스터디를 다시 시작할 수 있습니다.

중간 학습 데이터는 "last-state"라는 폴더에 저장됩니다.


### Resume from saved training state

중단된 학습을 다시 시작하려면 "마지막 상태" 폴더의 위치를 여기에 지정합니다.

학습을 재개하기 위해서는 학습의 중간 진행 데이터를 저장해야 합니다.


### Max train epoch

훈련할 최대 에포크 수를 지정합니다. 에포크 옵션으로 에포크 수를 지정하는 것은 기본이지만 여기에 지정된 에포크 수에 도달하면 항상 학습이 종료됩니다.

기본값은 비어 있습니다. 이 필드를 비워 둘 수 있습니다.


### Max num workers for DataLoader

이 옵션은 훈련용 데이터를 읽을 때 사용할 CPU 프로세스 수를 지정합니다. 이 수를 늘리면 하위 프로세스가 가능해지고 데이터를 읽는 속도가 빨라지지만 너무 많으면 실제로 비효율적일 수 있습니다.

숫자를 아무리 크게 지정해도 사용된 CPU의 동시 실행 스레드 수를 초과하지 않습니다.

기본값은 0으로 CPU의 주 프로세스에서만 데이터를 로드합니다.


### WANDB API Key

'WandB' (Weights&Biases)라는 머신러닝 서비스가 있습니다. 학습 진행 상황을 그래프로 표시하여 최적의 설정을 찾고, 학습 로그를 온라인에 기록하고 공유하는 서비스로, 현재 kohya_ss가 이 서비스를 이용할 수 있습니다.

단, 이 서비스는 계정이 필요합니다. 계정 생성 후 https://app.wandb.ai/authorize 에서 'API 키'를 발급받을 수 있습니다. 여기에 획득한 API 키를 입력하면 학습 시 자동 로그인이 되어 WandB 서비스와 연동이 가능합니다.

WandB에 대해서는 자세히 설명하지는 않겠지만, 'LoRA 장인'이 되고 싶다면 한 번 해보세요.


### WANDB Logging

여기서 WandB 서비스를 이용하여 학습 진행 로그를 기록할지 여부를 지정할 수 있습니다.

기본값은 꺼지고 꺼지면 '텐서보드'라는 도구 형태로 로그인합니다.



## Sample images config

학습 중 LoRA로 이미지 생성이 어떻게 되는지 확인하고 싶다면 여기에 이미지 생성 프롬프트를 입력합니다.

하지만 LoRA는 학습 시간이 상대적으로 짧기 때문에 이미지 생성 테스트의 필요성이 크지 않을 수 있습니다.


### Sample every n steps

학습 중에 이미지를 생성할 단계를 지정합니다. 예를 들어, 100을 지정하면 100단계마다 이미지가 생성됩니다.

기본값은 0입니다. 0인 경우 이미지가 생성되지 않습니다.


### Sample every n epochs

교육 중 이미지를 생성할 에포크 수를 지정합니다. 예를 들어, 2는 2에포크마다 이미지를 생성합니다.

기본값은 0입니다. 0인 경우 이미지가 생성되지 않습니다.


### Sample sampler

이미지 생성에 사용할 샘플러를 지정합니다. 여기에 지정된 샘플러 중 상당수는 Stable Diffusion Web UI에 제공되는 샘플러와 동일하므로 자세한 내용은 웹 UI 설명 사이트를 참조하십시오.

기본값은 오일러_a입니다.


### Sample prompts

프롬프트를 여기에 입력합니다.

그러나 여기에 프롬프트 외에 다른 설정을 입력할 수 있습니다. 다른 설정을 입력하려면 "--n"과 같은 두 개의 빼기 문자와 알파벳을 조합하여 설정을 지정합니다. 예를 들어 "흰색, 개"를 부정적인 프롬프트에 넣으려면 "--n 흰색, 개"라고 적습니다.

다음은 일반적으로 사용되는 몇 가지 설정입니다:

--n: 부정적인 프롬프트

--w: 이미지 너비

--h: 영상 높이

--d: 씨앗

--l: CFG 척도

--s: 스텝 수

기본값은 공백입니다. 필드가 공백일 경우 설명 예시가 희미한 색상으로 표시되니 참고하시기 바랍니다.