https://civitai.com/models/22530/guide-make-your-own-loras-easy-and-free


정리 잘되있네



번역기 돌린 내용


로라 만들기

어렵다는 평판이 있습니다. 너무 많은 옵션과 아무도 그들 중 어떤 것이 무엇인지 설명하지 않습니다. 글쎄요, 누구나 1시간 안에 무에서 시작하여 자신만의 Lora를 만들 수 있도록 프로세스를 간소화했습니다 . 일부 고급 설정을 유지하면서 나중에 사용할 수 있습니다.

물론 8GB 이상의 VRAM이 있는 Nvidia 그래픽 카드가 있는 컴퓨터에서 Lora를 교육 할 수 있습니다. 하지만 이 가이드에서는 그렇게 하지 않을 것입니다. Google의 강력한 컴퓨터와 그래픽 카드를 하루에 몇 시간 동안 무료로 빌릴 수 있는 Google Colab을 사용할 것입니다(일부는 일주일에 20시간이라고 합니다). 10달러를 지불하면 최대 50시간을 추가로 사용할 수 있지만 그럴 필요는 없습니다. Google 드라이브 스토리지도 약간 사용하게 됩니다.

이 가이드는 애니메이션에 중점을 두지만 포토리얼리즘에도 적용됩니다. 그러나 동의 없이 실제 사람의 얼굴을 복사하려는 경우에는 도와드리지 않겠습니다.


🎡 로라의 종류

아시다시피 Lora는 다음 용도로 훈련 및 사용할 수 있습니다.

  • 인물이나 인물

  • 예술 스타일

  • 포즈나 컨셉

그러나 이제 다양한 유형의 Lora도 있습니다.

  • LoRA : 클래식. 문제없이 webui에서 사용할 수 있습니다.

  • LoCon : 학습 레이어가 더 많고, 아트스타일에 능하다고 합니다. webui를 일반 lora처럼 사용하려면 Lycoris 확장이 필요합니다 .

  • LoHa : 더 많은 계층과 새로운 수학적 알고리즘이 있습니다. 훈련하는 데 훨씬 더 오래 걸리지만 스타일과 캐릭터와 같은 복잡한 것을 동시에 배울 수 있습니다. 거의 추천하지 않습니다. webui를 일반 lora처럼 사용하려면 Lycoris 확장이 필요합니다 .


📊 전반전: 데이터셋 만들기

이것은 Lora를 만드는 데 가장 길고 중요한 부분입니다. 데이터 세트는 (우리에게) 이미지 와 해당 설명 의 모음입니다., 여기서 각 쌍은 동일한 파일 이름(예: "1.png" 및 "1.txt")을 가지며 모두 AI가 학습하기를 원하는 공통점이 있습니다. 데이터 세트의 품질이 중요합니다. 이미지에 포즈, 각도, 배경, 옷 등의 예가 최소 2개 이상 있어야 합니다. 예를 들어 모든 이미지가 얼굴 클로즈업인 경우 Lora가 생성하기 어려울 것입니다. 몇 가지 예를 추가하지 않는 한 전신 샷(그러나 여전히 가능합니다!). 다양성을 더하면 개념이 더 잘 이해되어 AI가 훈련 데이터에 없던 새로운 것을 만들 수 있습니다. 예를 들어 캐릭터는 새로운 포즈와 다른 옷을 입고 생성될 수 있습니다. 최소한 5개의 이미지로 평범한 Lora를 훈련시킬 수 있지만 20개 이상, 최대 1000개를 권장합니다.

설명에 관해서는 일반적인 이미지의 경우 " 의자에 앉아 있는 금발의 여성의 전신 사진 " 과 같이 짧고 상세한 문장을 원합니다 . 애니메이션의 경우 booru 태그( 1girl, 금발 머리, 전신, on chair 등) 를 사용해야 합니다 . 데이터 세트에서 태그가 작동하는 방식을 설명하겠습니다. Lora는 학습에 사용하는 기본 모델을 사용하여 진행되는 작업을 참조하므로 상세하게 설명해야 합니다. 태그에 포함 하지 않은 모든 항목은 Lora의 일부가 됩니다 . 얼굴이나 액세서리 등 말로 쉽게 설명할 수 없는 디테일을 로라가 흡수하기 때문이다. 이를 알면 해당 세부 정보를 활성화 태그 에 흡수할 수 있습니다., 모든 텍스트 파일의 시작 부분에 있는 고유한 단어 또는 구이며 Lora를 쉽게 프롬프트할 수 있습니다.

온라인에서 이미지를 수집하고 수동으로 설명할 수 있습니다. 하지만 다행스럽게도 저의 새로운 📊 데이터세트 메이커 colab을 사용하여 이 프로세스의 대부분을 자동으로 수행할 수 있습니다 .

단계는 다음과 같습니다.

1️⃣ 설정 : 구글 드라이브로 연결됩니다. 프로젝트의 간단한 이름과 원하는 폴더 구조를 선택한 다음 왼쪽에 있는 플로팅 재생 버튼을 클릭하여 셀을 실행합니다 . 허가를 요청하고 가이드를 계속하려면 동의합니다.

  • 학습할 이미지가 이미 있는 경우 Google 드라이브의 "lora_training/datasets/project_name"(이전) 또는 "Loras/project_name/dataset"(신규) 폴더에 이미지를 업로드하고 2단계를 건너뛸 수 있습니다.

2️⃣ Gelbooru에서 스크랩 이미지 : 애니메이션의 경우 Lora를 훈련하기 위해 사용 가능한 방대한 아트 컬렉션을 사용합니다. Gelbooru는 이미지에 대한 모든 것을 설명하는 수천 개의 booru 태그를 통해 이미지를 정렬합니다 . 이는 나중에 이미지에 태그를 지정하는 방법이기도 합니다. 이 단계에서는 colab의 지침을 따릅니다. 기본적으로 컨셉, 캐릭터 또는 스타일을 나타내는 특정 태그가 포함된 이미지를 요청하려고 합니다. 이 셀을 실행하면 결과가 표시되고 계속할 것인지 묻습니다. 만족스러우면 yes를 입력하고 이미지가 다운로드될 때까지 잠시 기다립니다.

3️⃣ 이미지 선별 : Gelbooru에는 중복 이미지가 많으므로 FiftyOne AI를 사용하여 이미지를 감지하고 삭제하도록 표시합니다. 이 셀을 실행하면 몇 분 정도 걸립니다. 하지만 아직 삭제되지는 않습니다. 결국 대화형 영역이 셀 아래에 나타나 모든 이미지를 그리드로 표시합니다. 여기에서 마음에 들지 않는 항목을 선택하고 삭제할 항목도 표시할 수 있습니다. Colab의 안내를 따르세요. 삽입된 저품질 또는 관련 없는 이미지를 삭제하는 것이 좋습니다. 완료되면 대화형 영역 위의 텍스트 상자에 Enter를 보내 변경 사항을 적용합니다.

4️⃣ 이미지에 태그 지정 : WD 1.4 태거 AI를 사용하여 이미지를 설명하는 애니메이션 태그를 지정하거나 BLIP AI를 사용하여 사실적/기타 이미지에 대한 캡션을 만듭니다. 이것은 몇 분 정도 걸립니다. 0.35 ~ 0.5의 태깅 임계값으로 좋은 결과를 찾았습니다. 이 셀을 실행하면 데이터세트에서 다음 단계에 유용한 가장 일반적인 태그가 표시됩니다.

5️⃣ 태그 선별 : 애니메이션 태그에 대한 이 단계는 선택 사항이지만 매우 유용합니다. 여기에서 Lora에 대한 활성화 태그(트리거 단어라고도 함)를 할당할 수 있습니다. 스타일을 훈련하는 경우 Lora가 항상 유효하도록 활성화 태그를 원하지 않을 수 있습니다. 캐릭터를 훈련시키는 경우 신체 특징 및 머리/눈 색깔과 같은 캐릭터 고유의 공통 태그를 삭제( 정돈 )하는 경향이 있습니다. 이로 인해 활성화 태그에 흡수 됩니다. 가지치기를 하면 Lora를 사용하여 메시지를 표시하는 것이 더 쉬워지지만 유연성은 떨어집니다 . 어떤 사람들은 캐릭터 복장을 정의하는 단일 태그를 갖기 위해 모든 옷을 잘라내는 것을 좋아합니다. 가지치기를 너무 많이 하면 일부 세부 사항에 영향을 미치므로 권장하지 않습니다. 보다 유연한 접근 방식은 다음과 같습니다.예를 들어 "줄무늬 셔츠, 세로 줄무늬, 세로 줄무늬 셔츠" 와 같은 중복 태그가 있는 경우 태그를 모두 "줄무늬 셔츠"로 바꿀 수 있습니다. 이 단계는 원하는 만큼 여러 번 실행할 수 있습니다.

6️⃣ 준비 완료 : 데이터셋이 구글 드라이브에 저장됩니다. 원하는 것은 무엇이든 할 수 있지만 이 튜토리얼의 후반부로 바로 가서 Lora 훈련을 시작하겠습니다!


⭐ 후반전: 설정 및 훈련

이것은 까다로운 부분입니다. Lora를 훈련하기 위해 제 ⭐ Lora 트레이너 colab을 사용합니다 . 필요한 모든 설정이 있는 단일 셀로 구성됩니다. 이러한 설정의 대부분은 변경할 필요가 없습니다. 그러나 이 가이드와 colab은 각각의 기능을 설명하므로 나중에 함께 플레이할 수 있습니다.

설정은 다음과 같습니다.

▶️ 설정 : 가이드 전반부에서 사용한 것과 동일한 프로젝트 이름을 입력하면 자동으로 실행됩니다. 여기에서 학습을 위한 기본 모델을 변경할 수도 있습니다. 2개의 권장 기본 모델이 있지만, 또는 선택한 사용자 지정 모델에 대한 직접 다운로드 링크를 복사할 수 있습니다. 데이터세트 메이커에서 사용한 것과 동일한 폴더 구조를 선택해야 합니다.

▶️ 처리 : 데이터셋이 처리되는 방식을 변경하는 설정입니다.

  • 이번에는 해상도가 512로 유지되어야 하며 이는 안정적인 확산에 정상입니다. 이 값을 높이면 훈련 속도가 훨씬 느려지지만 더 세밀한 세부 사항에는 도움이 됩니다.

  • flip_aug 는 마치 더 많은 이미지가 있는 것처럼 더 고르게 학습시키는 트릭인데, AI가 좌우를 헷갈리게 만들어서 선택하시면 됩니다.

  • 애니메이션 태그를 사용하는 경우 shuffle_tags는 항상 활성 상태를 유지해야 합니다. 프롬프트가 더 유연해지고 편견이 줄어들기 때문입니다.

  • activation_tags 는 중요합니다. 가이드의 데이터세트 부분에서 추가한 경우 1로 설정하세요. 이를 keep_tokens 라고도 합니다 .

▶️ 단계 : 여기서 주의를 기울여야 합니다. 이미지 수, 반복 수, 에포크 수 및 배치 크기의 4가지 변수가 있습니다. 결과적으로 총 단계가 됩니다.

총 에포크 또는 총 단계를 설정하도록 선택할 수 있습니다. 잠시 후에 몇 가지 예를 살펴보겠습니다. 단계가 너무 적으면 Lora가 덜 익어서 쓸모없게 되고 너무 많으면 너무 익어서 이미지가 왜곡됩니다. 이것이 우리가 몇 에포크마다 Lora를 저장하도록 선택하여 나중에 비교하고 결정할 수 있도록 하는 이유입니다. 이러한 이유로 반복 횟수를 적게 하고 에포크를 많이 하는 것이 좋습니다.

Lora를 훈련시키는 방법에는 여러 가지가 있습니다. 제가 개인적으로 따르는 방법은 에포크의 균형을 맞추는 데 중점을 둡니다. 즉, 빠른 요리를 원하는지 아니면 천천히 끓이는 것을 원하는지에 따라 10에서 20 에포크 사이에서 선택할 수 있습니다(스타일에 더 좋음). 또한 더 많은 이미지가 일반적으로 안정화를 위해 더 많은 단계가 필요하다는 것을 알게 되었습니다. 새로운 min_snr_gamma 옵션 덕분에 Loras는 훈련하는 데 걸리는 시간이 줄어듭니다. 시도해 볼 수 있는 몇 가지 건강한 가치는 다음과 같습니다.

  • 20개 이미지 × 10회 반복 × 10 에포크 ÷ 2 배치 크기 = 1000단계

  • 100 이미지 × 3 반복 × 10 에포크 ÷ 2 배치 크기 = 1500 단계

  • 400개 이미지 × 1회 반복 × 10회 ÷ 2 배치 크기 = 2000단계

  • 1000 이미지 × 1 반복 × 10 에포크 ÷ 3 배치 크기 = 3300 단계

▶️ 학습 : 가장 중요한 설정입니다. 그러나 이러한 항목을 처음으로 변경할 필요는 없습니다. 어쨌든:

  • unet 학습률은 Lora가 정보를 흡수하는 속도를 나타냅니다 단계와 마찬가지로 너무 작으면 Lora는 아무것도 하지 않으며 너무 크면 Lora는 생성하는 모든 이미지를 튀깁니다. 특히 프롬프트에서 lora의 강도를 변경할 수 있기 때문에 작업 값의 유연한 범위가 있습니다. 8에서 32 사이로 dim을 설정했다고 가정하면(아래 참조) 거의 모든 상황에서 5e-4 unet을 권장합니다. 천천히 끓이려면 1e-4 또는 2e-4가 더 좋습니다. 이것들은 과학 표기법입니다: 1e-4 = 0.0001

  • 텍스트 인코더 학습률은 특히 스타일에 대해 덜 중요합니다. 그것은 태그를 더 잘 배우는 데 도움이 되지만 태그 없이도 여전히 태그를 배울 것입니다. 일반적으로 unet의 절반 또는 1/5이어야 하며 좋은 값에는 1e-4 또는 5e-5가 포함됩니다. 이러한 작은 값이 혼란스럽다면 Google을 계산기로 사용하세요.

  • 스케줄러 시간 경과에 따라 학습률을 안내합니다. 이것은 중요하지는 않지만 여전히 도움이 됩니다. 저는 항상 3번의 재시작과 함께 코사인을 사용합니다. 개인적으로 이것이 Lora를 "신선하게" 유지한다고 생각합니다. cosine, constantconstant 를 warmup 으로 실험해 보십시오 . 그것들은 잘못 될 수 없습니다. 훈련을 효율적으로 시작하는 데 도움이 되는 워밍업 비율도 있으며 기본값인 5%가 잘 작동합니다.

▶️ 구성 : 처음에 설명드린 3가지 로라 종류 중 로라의 종류를 선택하는 곳입니다. 개인적으로 캐릭터에는 LoRA를, 스타일에는 LoCon을 고수하는 것이 좋습니다. LoHas는 올바르게 이해하기 어렵습니다.

희미한 / 알파는 Lora의 크기와 크기를 의미하며 논란의 여지가 있습니다. 몇 달 동안 모두가 128/128이 최고라고 서로 가르쳤으며 이는 실험 결과 가장 세부적인 결과를 얻었기 때문입니다 그러나 이러한 실험에는 결함이 있었습니다. 그 당시에는 희미함과 알파를 낮추려면 동일한 수준의 세부 정보를 생성하기 위해 학습 속도를 높여야 한다는 사실이 알려지지 않았기 때문입니다. 이 Lora 파일은 완전히 과잉인 144MB이므로 안타깝습니다. 나는 개인적으로 캐릭터에 적합 하고 18MB에 불과한 16/8을 사용합니다. 요즘에는 다음 값이 권장됩니다(더 많은 실험을 환영하지만).


▶️ 준비 : 이제 Lora를 훈련시킬 이 큰 셀을 실행할 준비가 되었습니다. 부팅하는 데 5분이 소요되며 그 후 훈련 단계를 수행하기 시작합니다. 전체적으로 1시간 미만이어야 하며 Google 드라이브에 결과가 표시됩니다.


🏁 후반전: 테스트

당신은 그 권리를 읽었습니다. 나는 거짓말했다! 😈 이 가이드에는 3개의 파트가 있습니다.

Lora를 완성한 후에도 좋은지 확인하려면 테스트를 거쳐야 합니다. /lora_training/outputs/ 폴더 안에 있는 Google 드라이브로 이동하고 프로젝트 이름 폴더 안에 있는 모든 것을 다운로드합니다. 이들 각각은 훈련의 서로 다른 시대에 저장된 서로 다른 Lora입니다. 그들 각각은 01, 02, 03 등과 같은 숫자를 가지고 있습니다.

다음은 Lora를 사용하는 최적의 방법을 찾는 간단한 작업 흐름입니다.

  1. 0.7 또는 1의 가중치로 프롬프트에 최종 Lora를 넣고 가이드의 태깅 부분에서 본 가장 일반적인 태그 중 일부를 포함합니다. 훈련을 시도한 것과 유사한 명확한 효과가 나타나야 합니다. 만족스럽거나 더 나아질 수 없을 때까지 프롬프트를 조정하십시오.

  2. X/Y/Z 플롯을 사용하여 서로 다른 시대를 비교합니다. 이것은 webui의 기본 제공 기능입니다. 생성 매개변수 맨 아래로 이동하여 스크립트를 선택하십시오. 첫 번째 시대의 Lora를 프롬프트에 넣고(예: "<lora:projectname-01:0.7>") 스크립트의 X 값에 "-01, -02, -03" 등을 씁니다. X 값이 "Prompt S/R" 모드에 있습니다. 이들은 프롬프트에서 교체를 수행하여 품질을 비교할 수 있도록 lora의 다른 번호를 거치게 합니다. 시간을 절약하려면 먼저 2번째 또는 5번째 에포크마다 비교할 수 있습니다. 보다 공정하게 비교하려면 이상적으로 이미지 배치를 수행해야 합니다.

  3. 가장 좋아하는 시대를 찾으면 최고의 무게를 찾으십시오. 이번에는 "0.5>, 0.6>, 0.7>, 0.8>, 0.9>, 1>"과 같은 X 값을 사용하여 X/Y/Z 플롯을 다시 수행합니다. 다른 lora 가중치를 검토하기 위해 프롬프트의 작은 부분을 대체합니다. 다시 일괄적으로 비교하는 것이 좋습니다. 이미지를 왜곡하지 않으면서 최상의 디테일을 제공하는 가중치를 찾고 있습니다. 원하는 경우 2단계와 3단계를 X/Y로 함께 수행할 수 있습니다. 시간은 더 오래 걸리지만 더 철저합니다.

  4. 마음에 드는 결과를 찾았다면 축하합니다! 다양한 상황, 각도, 옷 등을 계속 테스트하여 Lora가 창의적이고 훈련 데이터에 없는 일을 할 수 있는지 확인하세요.

마지막으로 잘못되었을 수 있는 몇 가지 사항은 다음과 같습니다.

  • Lora가 아무것도 하지 않거나 거의 하지 않는 경우 이를 "덜 익힌" 상태라고 하며 아마도 unet 학습률이 너무 낮거나 더 오래 훈련해야 할 필요가 있을 것입니다. 메시지를 표시할 때 실수만 한 것은 아닌지 확인하세요.

  • Lora가 작동하지만 원하는 것과 유사하지 않은 경우 역시 덜 익혔거나 데이터 세트의 품질(이미지 및/또는 태그)이 낮을 수 있습니다. 일부 개념은 훈련하기가 훨씬 더 어렵기 때문에 길을 잃은 느낌이 들면 커뮤니티의 도움을 받아야 합니다.

  • Lora가 왜곡된 이미지나 아티팩트를 생성하고 이전 에포크가 도움이 되지 않거나 심지어 "nan" 오류가 발생하는 경우 이를 "overcooked"라고 하며 학습률이나 반복이 너무 높은 것입니다.

  • Lora가 할 수 있는 일에 너무 엄격한 경우 "과적합"이라고 합니다. 데이터 세트가 너무 작거나 태그가 제대로 지정되지 않았거나 약간 과도하게 익혔을 수 있습니다.