[Guide] Make your own Loras, easy and free
세부 정보
파일 다운로드
이 버전에 대해
모델 설명
다운로드할 필요 없어요. 이 가이드는 온라인 도구만 사용합니다. 아래 "자세히 보기"를 클릭하세요.
이 가이드의 최신 버전은 제 새로운 웹사이트에서 찾을 수 있습니다. 경험이 풍부한 AI 아티스트와 모델 제작자들이 자신의 작품을 공유할 수 있는 편안한 공간이에요.
🏭 서론
어디서 시작해야 할지 모르거나 강력한 컴퓨터가 없어도, 나를 따라오면 여러분도 첫 번째 LoRA를 만들 수 있어요!
이 가이드에서는 내 GitHub 페이지의 자원들을 사용할 예정이에요. 만약 Stable Diffusion에 처음 도전해보는 분이라면, 내 완전 가이드를 통해 자신만의 이미지를 생성하고 유용한 도구들을 배울 수 있어요.
이 가이드를 만드는 이유는 나의 취미를 공유하고 그 안에 투자한 노력이 즐겁기 때문이에요. 저는 누구나 정보를 자유롭게 이용해야 한다고 믿습니다. 이미지 생성 소프트웨어를 포함해서요. 그러나 만약 누군가를 속이거나 사기치거나, 법을 어기려는 목적으로 AI를 사용하고자 하는 경우, 저는 도움을 드리지 않겠습니다. 그냥 즐기기 위해서 만든 거예요.
📃 준비물
인터넷 연결. 스마트폰에서도 가능해요 (탭이 닫히지 않도록 주의하세요).
LoRA가 무엇인지 및 어떻게 사용하는지에 대한 지식.
인내심. 저는 새로운 개념들을 쉽고 명확하게 설명하려고 노력할게요. 조심스럽게 읽고, 비판적인 사고를 하고, 에러가 나더라도 포기하지 마세요.
🎴 LoRA 만들기
어려운 작업으로 알려져 있습니다. 옵션들이 정말 많고 그 의미를 설명하는 사람도 거의 없습니다. 하지만 저는 이 과정을 간소화해서 아무나 1시간 이내에 아무것도 없이도 자신의 LoRA를 만들 수 있도록 했어요. 동시에 나중에 사용할 수 있는 고급 설정도 유지했습니다.
물론 여러분은 자신의 컴퓨터를 이용해 LoRA를 훈련할 수도 있습니다. 다만, Nvidia 그래픽 카드가 6GB 이상의 VRAM을 가져야 하죠. 그러나 이 가이드에서는 Google Colab을 사용할 예정입니다. Google의 강력한 컴퓨터와 그래픽 카드를 하루에 몇 시간 정도 무료로 빌려 쓸 수 있어요 (일주일에 20시간이라는 말도 있어요). 또한 $10을 지불하면 최대 50시간을 더 쓸 수 있지만, 반드시 해야 할 필요는 없습니다. 또한 Google Drive의 저장 공간도 약간 사용할 거예요.
이 가이드는 애니메이션 중심이지만, 사실 사진 실사도 가능합니다. 다만, 사람은 동의 없이 얼굴을 복사하려는 시도는 도와주지 않아요.
🎡 LoRA의 종류
여러분이 알고 있듯이, LoRA는 다음에 대해 훈련하고 사용할 수 있습니다:
캐릭터나 인물
예술 스타일
자세
옷
등등
그러나 현재는 다양한 유형의 LoRA가 있습니다:
LoRA: 고전적인 타입으로 대부분의 경우에 잘 작동합니다.
LoCon: 훨씬 더 많은 레이어를 지녀 훈련 데이터의 다양한 측면을 학습합니다. 예술 스타일에 매우 적합해요.
LoHa, LoKR, (IA)^3: 새로운 수학적 알고리즘을 사용하여 훈련 데이터를 처리합니다. 저에게는 별로 도움이 되지 않아 소개하지 않아요.
📊 첫 번째 부분: 데이터셋 만들기
LoRA를 만드는 과정 중 가장 길고 중요한 부분입니다. 데이터셋은 (우리에게는) 이미지와 설명의 집합이며, 각 쌍은 동일한 파일 이름(예: "1.png"와 "1.txt")을 가져야 하며, 모두 여러분이 AI가 학습하고 싶은 공통된 요소를 지닙니다. 데이터셋의 품질은 핵심입니다. 당신의 이미지에 자세, 시점, 배경, 옷 등 최소한 2개 이상의 예시가 있어야 해요. 예를 들어, 모든 이미지가 얼굴 데칼코마니라면, 전체 신체의 이미지를 생성하는 데 어려움을 겪을 거예요 (예외는 있지만요!). 그렇다면 그런 이미지 몇 개를 추가하세요. 더 다양한 예시를 더하면, AI가 학습하는 개념이 더욱 명확해지고, 훈련 데이터에 없던 새로운 것을 만들 수 있게 됩니다. 예를 들어 캐릭터는 새로운 자세나 다른 옷차림으로 생성될 수 있습니다. 최소 5개의 이미지로 평균적인 LoRA를 만들 수는 있지만, 저는 20개 이상, 최대 1000개까지 추천합니다.
설명에 대해서는 일반적인 이미지를 위해 짧고 자세한 문장처럼 "금발 여성이 의자에 앉은 전신 사진" 같은 표현을 사용하세요. 애니메이션의 경우 booru 태그(1girl, 애드그린 헤어, 전체 신체, 의자 위, 등)를 사용해야 해요. 태그가 어떻게 작동하는지 설명해 드릴게요: 태그를 아주 구체적으로 지정해야 해요. 왜냐하면 LoRA는 학습할 때 기초 모델의 내용을 참조하기 때문이에요. 만약 모든 이미지에 공통된 요소가 있는데 태그에 포함하지 않으면, 그 부분이 바로 LoRA의 일부가 됩니다. 왜냐하면 LoRA는 얼굴이나 액세서리처럼 말로 쉽게 설명할 수 없는 세부 사항까지 흡수하기 때문이에요. 이를 활용하면, 이런 세부 사항을 활성화 태그(activation tag)에 포함시킬 수 있습니다. 활성화 태그는 모든 텍스트 파일에 시작 위치에 들어가는 고유한 단어 또는 문장으로, 앞으로 LoRA를 쉽게 프롬프트할 수 있게 도와줘요.
이미지를 온라인에서 모을 수 있고, 수동으로 설명을 지어낼 수 있습니다. 그러나 다행히도, 바로 이 과정의 대부분을 자동으로 처리할 수 있도록 내 새로운 📊 데이터셋 메이커 Colab를 사용할 수 있어요.
아래 단계를 따라주세요:
1️⃣ 설정: 이 단계에서 Google 드라이브에 연결됩니다. 프로젝트명을 간단하게 정하고, 마음에 드는 폴더 구조를 선택하세요. 좌측에 떠 있는 재생 버튼을 눌러 셀을 실행하세요. 권한을 요청하는 메시지가 나타날 텐데, 계속 진행하려면 허용하세요.
- 이미 훈련용 이미지가 있다면, Google 드라이브의 "lora_training/datasets/project_name" 폴더(구버전) 또는 "Loras/project_name/dataset"(신버전)로 업로드하세요. 이후 2단계를 건너뛸 수 있습니다.
2️⃣ Gelbooru에서 이미지 수집: 애니메이션의 경우, 수많은 예술 작품을 활용해 LoRA를 훈련시킬 예정입니다. Gelbooru는 thousands(수천 개)의 booru 태그로 이미지를 분류해요. 이 태그는 이미지의 모든 요소를 설명하며, 나중에 우리 이미지도 같은 방식으로 태그할 거예요. Colab의 지시를 따르세요. 기본적으로는 현실적인 개념이나 캐릭터, 스타일을 나타내는 특정 태그를 포함한 이미지를 요청하시면 됩니다. 이 셀을 실행하면 결과를 볼 수 있고, 계속할지 여부를 묻습니다. 만족스러울 경우, yes라고 입력하고 1분 정도 기다리면 이미지 다운로드가 시작됩니다.
3️⃣ 이미지 정제: Gelbooru에는 중복 이미지가 많이 있습니다. 따라서 FiftyOne AI를 사용해 중복 이미지를 탐지하고 삭제를 위해 표시합니다. 이 셀을 실행하고 나면 몇 분이 걸립니다. 아직 삭제되진 않아요. 후에 셀 아래쪽에 상호작용 영역이 나타나서 모든 이미지를 격자 모양으로 보여줄 거예요. 마음에 들지 않는 이미지를 선택해서 삭제할 수도 있어요. Colab의 지시를 따르세요. 품질이 낮거나 관련 없는 이미지를 삭제하면 더 좋습니다. 완료되면 상호작용 영역 위의 텍스트 상자에 Enter를 눌러 변경 사항을 적용하세요.
4️⃣ 이미지 태그 달기: 우리는 애니메이션 태그는 WD 1.4 태거 AI, 사실적인 이미지나 기타 이미지의 경우 BLIP AI를 사용해 캡션을 생성할 예정입니다. 이 과정은 몇 분 소요됩니다. 태깅 임계치 0.35~0.5 사이에서 좋은 결과를 얻었습니다. 이 셀을 실행하면 데이터셋에 가장 흔한 태그들이 표시되며, 다음 단계에서 유용할 거예요.
5️⃣ 태그 정제: 애니메이션 태그에서는 선택 사항이지만 매우 유용합니다. 여기서 LoRA에 대한 활성화 태그(또는 트리거 단어)를 설정할 수 있어요. 스타일을 훈련하는 경우, 항상 작동하도록 하기 위해 활성화 태그가 필요 없을 수 있어요. 캐릭터를 훈련한다면, 체형 특성이나 머리카락/눈 색과 같은 캐릭터 고유의 태그들을 지우는 것이 일반적입니다. 이는 이들 특성이 활동 태그에 흡수되게 해줍니다. 태그를 잘라내는 것은 LoRA 사용을 더 쉽게 만들어 주지만, 유연성은 떨어집니다. 어떤 사람은 모든 옷 태그를 합쳐 하나의 태그로 쓰는 것을 선호하지만, 저는 추천하지 않습니다. 지나친 정제는 세부 사항에 영향을 줄 수 있어요. 더 유연한 접근법은 태그를 병합하는 것입니다. 예를 들어, "Striped shirt, vertical stripes, vertical-striped shirt" 같은 중복 태그가 있다면, 'striped shirt' 하나로 바꿀 수 있어요. 이 단계는 원하는 만큼 반복 실행 가능합니다.
6️⃣ 준비 완료: 데이터셋이 Google 드라이브에 저장되었습니다. 이제 자유롭게 이를 활용할 수 있지만, 바로 이번 튜토리얼의 두 번째 부분으로 넘어가서 LoRA를 훈련할 예정입니다!
⭐ 두 번째 부분: 설정과 훈련
이 부분이 가장 중요한 과정이에요. 우리 LoRA를 훈련하기 위해, SD1.5 모델을 위한지, SDXL 모델을 위한지에 따라 ⭐ LoRA 트레이너 Colab 또는 🌟 XL LoRA 트레이너 Colab를 사용할 거예요. 이 둘은 정말 비슷하며, 필요한 모든 설정이 한 셀에 포함되어 있습니다. 이 설정 중 많은 아이템들은 기본값으로 그대로 두어도 됩니다. 하지만 이 가이드와 Colab은 각 설정이 어떻게 작동하는지 설명하므로, 나중에 자유롭게 실험할 수 있을 거예요.
다음은 설정입니다:
▶️ 설정: 첫 번째 부분에서 사용한 프로젝트 이름을 입력하면 자동으로 작동합니다. 여기서 학습용 기초 모델도 변경할 수 있어요. 추천되는 기본 두 가지가 있지만, 필요시 원하는 사용자 정의 모델의 직접 다운로드 링크를 넣을 수 있습니다. 데이터셋 메이커에서 사용한 폴더 구조와 동일하게 선택해야 해요.
▶️ 처리: 데이터셋이 어떻게 처리될지 정하는 설정입니다.
이 경우 해상도는 512로 유지하세요. 이것은 Stable Diffusion에 보통 쓰이는 값입니다. 해상도를 높이면 훈련이 훨씬 느려지지만, 더 디테일한 부분을 학습하는 데 도움이 됩니다. (SDXL은 기본 해상도가 1024입니다)
flip_aug 는 이미지 수가 더 많을 때처럼 균일하게 학습하는 기술이지만, AI가 왼쪽과 오른쪽을 혼동하게 만들 수 있어요. 선택 사항입니다.
shuffle_tags 는 애니메이션 태그를 사용할 경우 반드시 활성화해 주세요. 프롬프트 유연성과 편향 감소에 도움이 됩니다.
activation_tags 는 중요합니다. 가이드 데이터셋 단계에서 활성화 태그를 추가했다면 이 값을 1로 설정하세요. 이는 keep_tokens 이라고도 불립니다.
▶️ 단계: 여기서 주의 깊게 살펴봐야 해요. 4개의 변수가 중요합니다: 이미지 수, 반복 수, 에포크 수, 배치 크기. 이 값들로 전체 단계 수가 결정됩니다.
전체 에포크 수나 전체 단계 수를 선택할 수 있어요. 잠시 후 예시들을 보시죠. 단계 수가 너무 적으면 LoRA가 제대로 학습되지 않아 쓸모없어지고, 너무 많으면 과적합되어 이미지가 왜곡됩니다. 그래서 우리는 몇 에포크마다 LoRA를 저장해서 나중에 비교하고 판단할 수 있도록 했습니다. 따라서 저는 적은 반복 수와 많은 에포크 수를 추천합니다.
LoRA를 훈련하는 방법은 다양합니다. 요즘 저는 이미지 수에 따라 250~1000단계 정도가 되도록 값을 조절해서 균형을 맞춥니다. 특히 스타일의 경우, 더 많은 에포크와 더 낮은 학습률을 요구합니다. XL 모델에서 훈련할 경우 반만의 반복 수가 필요합니다. XL 예시는 다음과 같습니다:
10 이미지 × 10 반복 × 10 에포크 ÷ 2 배치 크기 = 500단계
20 이미지 × 5 반복 × 10 에포크 ÷ 4 배치 크기 = 250단계
100 이미지 × 1 반복 × 10 에포크 ÷ 4 배치 크기 = 250단계
1000 이미지 × 1 반복 × 6 에포크 ÷ 8 배치 크기 = 750단계
▶️ 학습: 가장 중요한 설정들입니다. 하지만 처음에는 이 설정들을 바꾸지 않아도 됩니다. 어떤 경우든:
unet 학습률은 LoRA가 정보를 얼마나 빠르게 흡수할지 결정합니다. 단계와 마찬가지로 너무 작으면 LoRA가 아무런 효과를 내지 못하고, 너무 크면 생성한 모든 이미지가 왜곡되거나 반쯤 "딥프라이"될 수 있습니다. 유연한 적절한 범위가 있으며, 프롬프트에서 LoRA 강도를 조절할 수 있기 때문에 별도로 조절이 쉬워요. dim을 8~32 사이로 설정했다면 거의 모든 경우 5e-4(unet)을 추천합니다. 천천히 불을 당기는 느낌을 원한다면 1e-4 또는 2e-4가 더 좋습니다. 참고로 이 값들은 과학적 표기법입니다: 1e-4 = 0.0001
텍스트 인코더 학습률은 덜 중요합니다. 특히 스타일 훈련에서는 더욱 그렇죠. 태그를 더 잘 학습하게 도와주는 역할이지만, 없어도 태그는 학습됩니다. 일반적으로 unet의 절반 또는 다섯 분의 일 정도가 적절하며, 1e-4 또는 5e-5가 좋은 값입니다. 작은 수치가 헷갈리면 구글을 계산기처럼 사용하세요.
스케줄러는 학습률을 시간에 따라 안내합니다. 반드시 필요한 것은 아니지만, 도움이 됩니다. 저는 늘 코사인(cosine)을 3번 리스타트하는 방식을 써서, LoRA가 항상 "신선한 상태"를 유지해준다고 느낍니다. cosine, constant, constant with warmup 을 실험해 보세요. 어떤 건 잘못된 선택도 어렵지 않습니다. 또한 워밍업 비율(warmup ratio)도 있죠. 훈련 초기에 효율적으로 시작하는 데 도움이 되며, 기본값 5%도 매우 잘 작동합니다.
▶️ 구조: 여기서 처음에 언급한 두 가지 LoRA 유형 중 하나를 선택할 수 있어요. 또한 dim/alpha는 LoRA의 크기를 의미합니다. 더 크다고 해서 항상 더 좋은 건 아닙니다. 저는 실제로 캐릭터에 매우 적합한 16/8을 사용하고 있으며, 크기는 단지 18MB입니다.
▶️ 준비 완료: 이제 큰 셀을 실행해 LoRA를 훈련할 수 있습니다. 빌드 시간은 약 5분 정도 걸리며, 이후 훈련 단계가 시작됩니다. 총 시간은 1시간 내외이며, 결과물은 Google 드라이브에 저장됩니다.
🏁 세 번째 부분: 테스트
아, 맞아요. 보셨나요? 속였어요! 😈 이 가이드는 세 부분으로 나뉘어 있습니다.
LoRA를 완성했다면, 그것이 잘 작동하는지 테스트해야 해요. Google 드라이브의 /lora_training/outputs/ 폴더로 들어가 프로젝트 이름 폴더 안에 있는 모든 파일을 다운로드하세요. 각 파일은 훈련 중 특정 에포크에서 저장된 다른 LoRA입니다. 각각 01, 02, 03, 등과 같이 숫자가 붙어 있습니다.
LoRA를 최적의 방식으로 사용하는 간단한 워크플로우는 다음과 같아요:
최종 LoRA를 프롬프트에 0.7 또는 1의 가중치로 넣고, 가이드의 태깅 단계에서 본 가장 흔한 태그들을 포함하세요. 한 번에 선명한 효과를 볼 수 있길 바랍니다. 아마도 학습하고자 했던 스타일과 비슷한 결과가 나올 거예요. 만족할 때까지 프롬프트를 조정하세요.
X/Y/Z 플롯을 사용해 다양한 에포크를 비교하세요. 이것은 WebUI의 내장 기능이에요. 생성 파라미터의 맨 아래로 가서 스크립트를 선택하세요. 첫 번째 에포크의 LoRA를 프롬프트에 넣으세요 (ex. "lora:projectname-01:0.7"), 그리고 스크립트의 X값에 "-01, -02, -03"처럼 입력하세요. X값이 "Prompt S/R" 모드인지 확인하세요. 이는 프롬프트 내에서 값을 바꿔서 다양한 LoRA 숫자를 시험해 보는 방식으로 효과를 비교할 수 있게 해줍니다. 처음에는 매 2개 또는 매 5개의 에포크만 비교해 시간을 절약할 수 있어요. 공정하게 비교하려면 전체 배치로 작업하는 게 좋습니다.
좋아하는 에포크를 찾았다면, 최적의 가중치를 찾는 작업을 해보세요. 다시 X/Y/Z 플롯을 사용하세요. 이번에는 X값을 ":0.5, :0.6, :0.7, :0.8, :0.9, :1"처럼 입력하면, 프롬프트 일부가 LoRA의 가중치를 달리해서 테스트합니다. 역시 배치 단위로 비교하는 게 더 좋습니다. 최고의 디테일을 얻되 이미지 왜곡이 없게 만드는 가중치를 찾으세요. 원하시면 2, 3단계를 합쳐 X/Y로 작업할 수도 있어요. 시간이 더 걸리지만, 더 철저한 분석이 가능해요.
마음에 드는 결과를 얻었다면 축하합니다! 다른 상황, 시점, 옷 등으로 계속 테스트해 보세요. 당신의 LoRA가 훈련 데이터에 없던 새로운 것을 창조할 수 있는지 확인해 보세요.
마지막으로, 아마 다음과 같은 문제가 발생했을 수 있어요:
LoRA가 전혀 효과가 없거나 거의 없다면, 이것은 "부족한 훈련" 상태로, unet 학습률이 너무 낮았거나 더 오래 훈련해야 했을 수 있어요. 프롬프트 입력에 실수했는지 확인하세요.
LoRA는 작동하지만 원하던 모습과 달라 보인다면, 역시 부족한 훈련 또는 데이터셋 품질이 낮았을 수 있어요. 일부 개념은 훈련하기가 훨씬 어려우므로, 어려움을 느끼면 커뮤니티의 도움을 요청하세요.
LoRA가 왜곡된 이미지나 잡음(artifacts)을 생성하고, 이전 에포크도 도움이 안 되며, 심지어 "nan" 오류가 발생한다면, 이것은 "과적합" 상태로, 학습률이나 반복수가 너무 높았음을 의미합니다.
LoRA가 너무 엄격하게 행동한다면, "오버피팅(과적합)"이라고 말합니다. 아마도 데이터셋이 너무 작았거나 태그가 잘못 달렸거나, 약간 과적합된 상태일 수 있어요.
사용 가능한 LoRA를 만들었다면, 이제 Civitai에 업로드해서 세계에 공유하세요. 두려워하지 마세요. 건배! 🥂
제 새로운 웹사이트도 확인해보세요. 경험 있는 AI 아티스트와 모델 제작자가 자신의 작품을 공유할 수 있는 편안한 공간이에요: https://arcenciel.io

