본문 바로가기

AI & Big Data/Image

[AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #4 - 생성AI 실습 (LoRA, Google Colab 실습)

728x90
반응형

  지난 강의에 이어 스스로 모델을 만들고 이미지를 만들어보고자 한다. 이전 강의와의 차이는 Dreambooth가 아닌, LoRA를 사용한다는 것이다. 이번에도 Google Colab 환경으로 테스트하기에 PC 사양에 구애받지 않고 학습할 수 있을 것으로 생각된다.  

※ 이전글1: 2024.03.20 - [AI & Big Data/Image] - [AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #3 - 생성AI 실습 (Dreambooth, Google Colab 실습)

 

메타코드M

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

mcode.co.kr

 

Index

     

    3강. 생성AI 실습

    LoRA를 사용한 모델 생성

      LoRA의 개념에 관해 다음 포스트에서 자세히 다루겠지만 Dreambooth보다 가볍다는 장점을 지니고 있다. 그런데 LoRA로 모델을 만드는 것은 Dreambooth에 비해 다소 난이도가 높다고 느껴졌다. 

      가상환경에서 Stable Diffusion을 실행했던 것처럼 Lora를 사용한 모델 생성도 아나콘다의 가상환경에서 진행된다. 구체적인 방법은 이미 배우기도 했고 교재에도 기재되어 있으니 생략한다. 'lora' (유저별 상이) 라는 가상환경을 만들었으면 그곳에 git clone을 실시한다 (git clone https://github.com/bmaltais/kohya_ss.git).

    kohya_ss GUI setup

      깃의 파일들을 문제없이 가져왔다면 경로를 kohya_ss로 바꾸고 setup.bat이라는 파일을 실행한다. 그러면 위의 이미지가 나올 텐데 1을 입력한다. 강의에서는 1번을 누르고 다음 단계로 넘어가기까지 약 15분 소요됐다고 한다.

      * 기타 환경설정

      아래 질문은 버전에 따라 나올 수도 나오지 않을 수도 있다고 하나 만에 하나를 위해 수업에서 고른 선택지를 적어둔다.

    • 환경선택: This machine
    • 머신타입: No distributed training
    • CPU Only: NO
    • Torch dynamo: NO
    • Deep Speed: NO
    • ~separated list: ALL
    • FP16 vs. BP16: FP16
    • NVIDIA 30번대, 40번대 유저라면?
      • 이 깃허브 (링크)의 ZIP 파일 다운로드.
      • Kohya가 설치된 폴더에 압축 해제.
      • 터미널에서 2번 (Install cudann files) 선택.

      설치가 끝난 사람들은 Anaconda 가상환경에서 gui.bat을 실행하거나 위 이미지에서 5번을 (Start ~ GUI in browser) 선택한다.

    Kohya GUI

      위 이미지처럼 창이 떴다면 LoRA탭으로 이동한다. Source Model 설정 후, Folders로 이동하여 이미지 폴더, 아웃풋 폴더, 로깅 폴더의 경로를 입력한다. 이를 위해 학습을 위한 이미지를 준비하며 아웃풋과 로그를 넣을 폴더도 만들어두어야 한다.

    Kohya GUI LoRA

      이미지 폴더 작성에 관한 주의사항은 트리거 명령어와 폴더명에 일반적인 명사를 사용하면 안된다는 것이다. 그래서 강의에서는 '150_augb'라는 폴더명을 주었다. (ex. 150_boots X) 여기서 150은 에폭수를 뜻한다.

    LoRA 이미지 폴더명 설정

      경로를 넣은 다음, Parameters 탭으로 간다. 대부분 기본값을 유지하나 Advanced에서 Gradient checkpointing, Memory efficient attention은 체크해준다.

    Advanced 설정

      이제 About 왼쪽에 있는 Utilities로 넘어간다. 캡션이 들어갈 이미지 폴더 경로를 입력해야 하는데 이번에는 실제로 이미지가 담긴 폴더의 경로를 넣어준다. 수업에서는 Basic으로 시도하다가 BLIP Captioning으로 바꿔서 진행했다. 경로를 지정하는 것이 끝났다면, 화면 하단의 Caption Images 버튼을 클릭한다.

    LoRA Utilites Basic 설정
    LoRA Utilites BLIP 설정

      그 결과, 이미지 옆에 해당 이미지를 묘사하는 프롬프트가 담긴 텍스트 파일이 생성된다.  

         귀찮겠지만... 'augb'를 넣어준 것처럼 이 텍스트 파일을 모두 열어 프롬프트 앞에 트리거 네임을 덧붙여야 한다. 

    트리거 네임 추가

      이 작업이 마무리됐으면 (터미널에 captioning done이라는 메시지가 뜸), LoRA로 돌아와서 Start training 버튼 클릭.

    Start training

      만일 에러가 발생했다면 대부분은 parameters - basic - optimizer에서 adamw로 변경하는 것으로 해결된다고 한다. 

      학습 완료 후, model 폴더에 safetensors 파일이 만들어진다. PC 사양 등의 문제로 실패했다면 Colab으로 시도해보자.

    LoRA safetensors 파일

       safetensors 파일을 복사하여 [stable diffusion webui] - [models] - [Lora] 폴더에 붙여넣고, 스테이블 디퓨전을 실행한다.

    safetensors 파일 붙여넣기 경로

      Generation 탭 우측을 보면 LoRA 탭이 있을 텐데 그곳으로 이동하여 추가한 LoRA를 클릭하면 프롬프트가 자동으로 추가된다. 불확실하지만 로라를 사용하면 트리거 네임으로 표현하고자 하는 단어를 나타내야 하는 것 같다.

      (2024.03.22 추가) 문의 결과 (링크), tiger를 'tige'라는 트리거 네임으로 지정했다면 'a photo of baby tige tiger'과 같이 쓰면 된다는 답변을 받음. 트리거 네임만 넣어도 LoRA에서는 나오지만 tiger를 명기하여 보다 정확하고 풍성한 정보를 제공할 수 있다고 함.

    LoRA 프롬프트 1
    LoRA 결과 1

      수 차례 이미지 생성을 반복하며 어느 정도 기준을 충족하는 이미지를 만들고 해당 이미지로 편집을 하면 된다. Inpaint와 ControlNet, 혹은 프롬프트를 추가해가며 이미지의 완성도를 높일 수 있다.

    LoRA 프롬프트 추가
    LoRA 결과 2

      Inpaint 과정에서 색상이 제대로 인식되지 않는 것으로 판단되면 그림판 등의 대체 수단으로 트러블슈팅하는 것을 고려할 수 있다. 

    Inpaint 그림판 처리
    LoRA 결과 3

    LoRA 실습 (Google Colab)

      개인 PC에 탑재된 Stable Diffusion에서 실습 시 에러가 발생했거나 사양이 좋지 않은 독자들은 Google Colab에서 진행할 수 있다. Colab에서 Stable Diffusion을 실행하는 방법은 아래의 글에서 확인하길 권한다.

    ※ 이전글2: 2024.02.29 - [AI & Big Data/Image] - [AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #1 - 생성 AI 종류, Stable Diffusion 설치 및 실행

      LoRA 역시 Dreambooth와 유사한 과정을 거친다. 코드 실행 전에 T4 GPU를 사용하는지 런타임 유형을 확인하고 드라이브를 마운트한다.

    LoRA colab model 설정

      1.2 Start File Explorer는 스킵한다. 모델은 위 리스트에서 원하는 것을 골라도 되고 기존에 설치한 것을 쓰려면 이 과정 또한 패스해도 무방하다. Stable-Diffusion-v1-5가 기본 모델이라 가볍고 실습용으로 좋으나 성능이 좋지 않다는 단점이 있다고 한다.

    Colab 경로 설정

      정규화 이미지 경로는 건너뛸 수 있다고 적혀 있으나 강의에서는 경로를 넣어야 에러가 발생하지 않는다고 설명한다. 

    Colab custom tag

      데이터 태깅 방법으로 BLIP을 사용했고 custom_tag는 위와 같이 설정했다. 반복하여 말하지만, 존재하고 있지 않은 단어로 tag를 만들어야 한다.

    LoRA Colab 모델 설정

      모델 설정은 위 이미지를 참고하여 진행한다. custom_tag로 이름을 정하고 output을 담을 폴더를 만들어 경로를 적는다.

    LoRA Colab 데이터셋 설정

      최적화 도구 설정에서는 에러 방지를 위해 optimizer를 AdamW로 변경한다.

    LoRA Colab 학습 설정

      학습 설정도 위와 같이 조정한다. 물론 개인의 선호도에 따라 다르게 할 수 있지만 입문 강의이기 때문에 강의대로 따라가는 것을 추천하는 바이다. 

    LoRA Colab Output

      코드가 정상적으로 실행됐다면 output 폴더에 safetensors 파일이 만들어졌을 것이다. 이를 스테이블 디퓨전의 로라 폴더에 넣어서 프롬프트창에 넣어주면 자신만의 LoRa 모델로 이미지를 생성할 수 있다.


      이 블로그 내용보다 상세한 내용을 듣고 싶거나 Colab용 ipynb 파일을 원하는 사람은 꼭 강의를 수강해 새로운 지식을 얻길 바란다. 다음 수업에서는 Dreambooth와 LoRA에 대한 이론을 배워보고자 한다.

    728x90
    반응형