스테이블 디퓨전 로라 만들기부터 체크포인트 병합까지 – SuperMerger LoRA

앞서 스테이블 디퓨전 얼굴 고정에 대한 글에서 살펴본 것과 같이 로라 만들기에 그치지 않고 이를 체크포인트 병합까지 진행하게 되면 경우에 따라 사용이 매우 편리합니다. 본 글에서는 Automatic1111의 확장기능인 SuperMerger를 이용해 체크포인트(모델)에 로라(LoRA)를 병합하는 과정을 살펴보도록 하겠습니다.

스테이블 디퓨전 로라 만들기

스테이블 디퓨전 로라 만들기 방법은 로라 얼굴 학습 가이드 글에서 설명드린 것과 같이 Kohya_ss를 설치해서 진행합니다. 자세한 학습 및 로라 만들기 방법은 아래 글에서 확인 가능합니다.

꼭 직접 학습한 로라가 아니더라도 다른 사람의 로라를 공유받아 체크포인트와 병합하는 것도 문제 없습니다. 만약 로라와 체크포인트 모두 특정해서 병합할 대상이 없는 경우라면, 타인의 체크포인트 모델과 로라를 CVITAI 또는 Huggingface에서 다운받아 실습해보는 것도 좋은 방법입니다.

로라 체크포인트 병합

본격적으로 로라와 체크포인트를 병합하는 방법에 대해 알아보도록 하겠습니다. 로라 체크포인트 병합을 위해서는 먼저 SuperMerger를 설치해야 합니다.

SuperMerger 설치

Automatic 1111 WebUI 확장기능인 SuperMerger 설치를 위해 아래 이미지를 참고하여 Extensions 탭의 Available에서 Supermerger를 검색해 설치해줍니다.

체크포인트 병합 SuperMerger 설치

깃허브 주소로부터 설치하시려는 분들은 위의 깃허브 링크에서 깃주소를 복사하여 Install from URL 탭에서 주소를 붙여넣어 설치를 하시면 됩니다.

체크포인트 병합

이제 WebUI를 종료 후 재시작하여 SuperMerger 탭으로 이동해 아래의 내용들을 참고하여 전체 세팅값을 입력합니다.

체크포인트(Checkpoint) 모델 설정

체크포인트 병합 모델 설정

먼저 CheckpointA에는 베이스가 되는 모델을 선택합니다. 여기서는 베이스 모델에 로라만 병합하는 과정을 알아볼 것이므로 Checkpoint B는 공란으로 비워둡니다. 마찬가지로 체크포인트A에 해당하는 alpha 값은 1로, 체크포인트B에 해당하는 beta값은 0으로 설정합니다.

좌측 Settings 값은 same to Strength로 활성화 해줍니다. 이는 프롬프트에 로라를 반영할 때 우리가 입력하는 가중치를 모델 병합에서도 동일하게 적용하겠다는 의미입니다. 다른 세팅은 건들지 않고 우측 하단의 filename을 입력합니다. 여기에 입력한 이름이 바로 최종적으로 병합되어 만들어질 모델의 이름입니다.

로라(LoRA) 가중치 및 블록웨이트 설정

이제 로라와 체크포인트 병합을 위해 아래에 나열된 로라를 선택합니다.

체크포인트 병합 로라 설정

현재 PC에 설치된 로라 목록이 모두 나타나며, 사용자가 체크박스를 눌러 활성화를 하면 로라명:1 과 같이 로라명과 반영될 가중치가 빈칸에 입력됩니다. 가중치는 기본값 1로 적용되지만 사용자가 원하는대로 바꿔 입력할 수 있습니다. 예를 들어 로라의 가중치를 조금 낮춰 병합하고 싶다면 로라명:0.8과 같이 작성합니다.

가중치 설정을 마쳤다면 필요시 블록웨이트 설정을 추가로 할 수 있습니다. 본 예시에서는 얼굴 학습된 로라를 체크포인트 병합 하는 과정을 다루고 있으므로, 블록웨이트를 얼굴에만 적용하도록 합니다. 프리셋에 저장된 FACE 값을 반영하기 위해 로라명:1:FACE와 같이 입력했습니다.

이제 모든 설정이 마무리 되었습니다. 좌상단의 Merge to Checkpoint 버튼을 누르면 우리가 설정한 대로 로라 체크포인트 병합이 진행됩니다.

로라 체크포인트 병합 모델 결과

로라 체크포인트 병합이 마무리되면 바로 모델 선택란에서 확인할 수 있습니다. 먼저 모델 선택란에서 우측 refresh 버튼을 눌러준 뒤 드롭다운 메뉴를 열어줍니다. 그럼 체크포인트 병합 설정때 입력했던 이름 (filename명.fp16.safetensors) 그대로 병합 모델이 생성된 것을 확인할 수 있습니다.