호돌찌의 AI 연구소
article thumbnail

오늘 글은 지난번에 배워보았던 모델학습의 연장선입니다. 지난 글에서 언급한 DreamBooth보다 조금 더가벼운 모델인 Lora를 통한 모델 학습법입니다.

DreamBooth는 모델 사진이 20장에서 많게는 100장까지도 쓰지만 Lora를 통한 모델학습은 비교적 적은 수의 사진만으로도 모델을 학습시킬 수 있어, 용량이 적고 남들에게 공유하기 쉽다는 장점이 있습니다.

그럼 지금부터 Lora를 통한 모델 학습법을 배워보도록 하겠습니다.

 

 

Lora의 설치법(kohya)


 

 

  1. Anaconda Prompt로 새로운 가상환경을 만듭니다. (python 3.10)
  2. Conda create -n lora pyton=3.10 명령어를 입력합니다.
  3. 설치 확인을 묻는 Proceed가 뜨면 “y”를 입력합니다.
  4. conda activate lora 명령어를 입력하여 lora 가상환경을 실행합니다.
  5. git clone 주소를 입력합니다. (git clone https://github.com/bmaltais/kohya_ss.git)
  6. cd kohya_ss 명령어를 입력해 kohya_ss로 들어갑니다.
  7. setup.bat 명령어를 입력해 실행합니다.
  8. Kohya_ss GUI setup menu가 뜨면, 1번(Install kohya_ss gui)을 입력합니다. (설치 완료까지 15~20분 소요됩니다. 다음 프롬프트를 내뱉을 때까지 기다립니다.

*다음 9 ~ 14번까지의 프로세스는 해당 과정을 물어보는 경우에만 진행하시면 됩니다.

  1. 환경 선택 메뉴가 뜨면 This machine에서 엔터, 머신타입에서 No distributed training에서 엔터를 칩니다.
  2. CPU only 질문에 No를 입력합니다.
  3. Torch dynamo 질문에 No를 입력합니다.
  4. Deep Speed 질문에 No를 입력합니다.
  5. GPU 관련 질문에서는 all을 입력합니다.
  6. FP16과 BF16을 물어보는 질문에 fp16에 엔터를 칩니다.
  7. 엔비디아 30 or 40 시리즈를 사용하시는 분이라면 https://github.com/bmaltais/python-library/raw/main/cudnn_windows.zip 을 다운로드합니다.
  8. kohya가 설치된 폴더에 다운로드한 압축파일을 압축해제 합니다.
  9. 다시 터미널로 돌아와서 2번 옵션을 선택하고 엔터를 칩니다.
  10. 모두 완료 후 anaconda에서 가상환경 실행 후 gui.bat을 실행합니다. (설치 완료단계에서 메뉴 5번을 선택해 엔터를 바로 치셔도 kohya_ss GUI를 브라우저에서 열 수 있습니다.)

 

 

LoRa 모델학습 방법


  1. 상단 LoRa 탭을 클릭합니다.
  2. Source model에서 모델을 선택합니다. (호환성이 좋은 sd v1.5를 선택합니다)
  3. Kohya_ss폴더에서 새로운 폴더를 만들고,

그 폴더 안에 위의 사진과 같이 3개의 폴더를 따로 만들어 둡니다.

  1. image 폴더안에 학습시킬 이미지들을 따로 폴더를 만들어 저장합니다. *주의사항 : 폴더명은 150_OOO으로 합니다. 여기서 OOO은 나의 LoRa의 트리거워드가 되기 때문에 세상에 없는 단어로 하셔야 합니다. 폴더명 앞의 150은 step을 의미합니다. 보통 인물의 경우에는 100~150, 사물이나 객체의 경우에는 150의 숫자를 씁니다.
  2. 다시 GUI 브라우저 창으로 돌아와 Folders 탭에 있는 3개의 창에 각각 image, model, log 폴더의 경로를 입력합니다.
  3. 상단 Parameters 탭으로 들어가 Advanced 탭에 Gradient checkpointing 체크, Memory efficient attention 체크합니다.
  4. 상단 Utilities 탭으로 들어가 BLIP Captioning탭으로 들어갑니다. caption창에 실제 이미지가 들어가 있는 폴더의 경로를 입력하고 Caption images를 클릭합니다.
  5. 위의 과정까지 마치고, 이미지가 들어있는 폴더로 가시면 이미지마다 텍스트파일이 생성되어 있습니다. 이 텍스트파일로 들어가셔서, 텍스트 맨 앞에 설정한 트리거워드를 입력하고 띄어쓰기 한 번을 해주고 저장합니다. 모든 텍스트파일에 동일하게 적용합니다.
  6. Training 탭에서 Start training를 눌러 최종적으로 트레이닝을 시작합니다.
  7. 학습이 완료되면 model 폴더에 .safetensors가 최종적으로 생성되게 됩니다.

 

학습된 LoRa의 활용


 

최종적으로 완성된 나만의 Lora 파일을 스테이블디퓨전 Lora 폴더에 저장을 하게 되면 최종적으로 Lora를 사용할 수 있게 됩니다. 기존 드림부스로 생성했던 체크포인트에 나만의 Lora를 같이 활용할 수 있습니다. 프롬프트에서 사용된 로라의 비중을 조절하려면 <OOO :[가중치]>를 통해서 가충치 값을 높이거나 낮추면서 적절한 값을 찾으시면 되겠습니다. 기본 가중치는 1이며 0.8~1.5 사이의 값을 추천드립니다. 학습된 이미지가 나오지 않는다면 여러 번 제너레이트를 통해서 원하는 이미지가 나올 수 있도록 합니다.

 

생성된 이미지의 수정


 

스테이블 디퓨전을 쓰다 보면 원하던 이미지를 얻기까지의 과정이 쉽지만은 않다는 것을 알 수 있습니다. 인페인트를 활용해 부분마스크로 원하는 부분만 바꿔가며 재 생성을 계속 시도해 보시거나, 원하는 이미지의 사진을 ControlNet을 이용해서 생성해 보시는 것을 추천합니다. 앞서 배워본 컨트롤넷의 여러 가지 모델들을 사용하시면 더욱 좋습니다.

 

 

Dreambooth와 Lora의 차이점


 

여기까지 드림부스와 로라에 대해서 배워 봤습니다. 둘 다 모델을 학습하지만 분명한 차이가 존재합니다. 드림부스는 모델전체의 가중치를 조정해서 이미 학습된 모델에서 새로운 개념을 추가하는 방식입니다. 주제의 시각적 특징에 대한 높은 충실도와 파인튜닝 하면서도 기존 모델의 지식을 잘 보존합니다.

하지만 단점으로는 무거운 용량과 학습까지 필요한 데이터가 많이 필요하다는 부분이 있겠습니다. 로라의 경우는 프롬프트와 이미지가 만나는 부분을 수정합니다. 따라서 메인모델인 드림부스로 만드는 체크포인트 등과 함께 사용할 수 있습니다. 플러그인 형태로 학습된 모델을 손쉽게 쓸 수 있다는 장점이 있고, 용량이 드림부스보다 훨씬 가볍습니다.

하지만 원하는 이미지를 뽑아주는 결과물을 보았을 때는 드림부스로 만든 체크포인트 모델보다 퀄리티 향상에 한계가 있기 때문에 비슷한 여러 가지 로라모델을 한 프롬프트에 써야 하는 경우도 생깁니다.

 

Text inversion과 Hyper network


 

또 다른 모델 학습 버전 2가지를 추가로 소개드립니다. 텍스트 인버전은 프롬프트의 압축버전으로써 플러그인 형태의 모델 사용이 가능합니다.

하지만 학습의 난이도도 높고 퀄리티도 낮아서 텍스트 인버전 자체를 모델로 쓰는 경우는 거의 없습니다. 하이퍼 네트워크는 전체 모델보다는 얼굴이나 손등 특정부위를 학습하는 모델입니다. 학습의 난이도도 높은 편이며, 퀄리티도 그렇게 좋지 않습니다. 위의 2개의 방식도 로라와 같이 플러그인의 형태로 쓸 수 있습니다.

여기까지 여러 가지 방식을 통한 모델 학습법을 배워 보았습니다. 각각의 장단점이 있는 만큼 적절히 잘 활용하셔서 내가 원하는 이미지를 뽑는데 도움이 되었으면 좋겠습니다. 다음 글에서는 스테이블디퓨전의 핵심중 하나인 동영상을 만드는 기술에 대해서 배워보도록 하겠습니다.

 


[이전 글 목록]

2024.03.18 - [AI/GenAI - Image] - [메타코드] 생성형 AI 입문 완성강의 - Text2Image & ControlNet

2024.03.19 - [AI/GenAI - Image] - [메타코드] 생성형 AI 입문 완성강의 - Image2Image

2024.03.20 - [AI/GenAI - Image] - [메타코드] 생성형 AI 입문 완성강의 - Inpaint

2024.03.21 - [AI/GenAI - Image] - [메타코드] 생성형 AI 입문 완성강의 - Dreambooth를 활용한 나만의 모델 학습하기

 

본 글은 메타코드 서포터즈 활동을 위해서 강의를 제공받아 작성하였습니다.

메타코드M은 빅데이터, AI 강의를 제공하는 플랫폼이자 IT 현직자 모임을 위한 커뮤니티입니다. 이곳에서는 다양한 IT 분야의 전문 지식과 실무 기술을 배울 수 있는 온라인 강의를 제공하고, 같은 분야에 관심이 있는 사람들과 소통할 수 있는 공간을 제공합니다. 빅데이터 자격증, 데이터 분석, 프로그래밍, 인공지능 등 다양한 분야의 강의와 현직자 커리어 특강을 통해 IT 분야의 전문 지식과 실무 기술을 배우고 커리어를 발전시킬 수 있습니다.

 SD 강의

https://mcode.co.kr/video/list2?viewMode=view&idx=84

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

 

https://www.youtube.com/@mcodeM

 

메타코드M

🔥강의 / 커뮤니티에 참여해 보세요!🔥 https://mcode.co.kr ⚡️강의 플랫폼 (1) 빅데이터 자격증 강의 - 빅데이터 분석기사 / SQLD / ADsP (2) 데이터분석 입문/실습 강의 (3) AI 개발/이론 강의 (4) ChatGPT

www.youtube.com

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!