----------------------------------------------------------------------------------

학습챈에 썼다가 꼴받아서 지웠는데 아닌 것 같아서 복구했음 ㅈㅅ

----------------------------------------------------------------------------------

매우 간단히 설치하게 바꿈

----------------------------------------------------------------------------------

❗❗바빠서 2023-06-01 UTC 00:00 부터 AS 못함❗❗

❗❗트러블슈팅 및 아카에 에러 내용 검색 바람❗❗

Dreambooth LoRA 탭 관련 수정으로, 아?마 더 수정할 일 없을듯

----------------------------------------------------------------------------------


kohya_ss 드림부스가 CLI 기반이라 어려운 사람들을 위한 gradio 기반으로 WebUI처럼 사용할 수 있는 방법을 소개할거임


CLI 무섭지 않으면 그대로 해도 됨 어차피 명령어만 대신 입력해주는 웹 확장임


LoRA뿐만 아니라 일반 드림부스도 당연히 할 수 있음. 다만 이 글에선 LoRA를 위주로 설명할 것


필요한 것

 - VRAM 6GB 이상 NVIDIA 그래픽 카드 권장. 이것보다 낮은 건 자료가 없어서 ㅁ?ㄹ

 - Windows / linux는 추가 설치 일부 필요(venv에서 pip install triton)

 - python 3.10.x

  - 설치 시 PATH 환경 변수 추가 하기 확인

1번 누르고 설치해라 버전은 신경쓰지 마셈

 - git

 - stable diffusion WebUI 

 - WebUI 확장기능

   - LoRA 확장기능 https://github.com/KohakuBlueleaf/a1111-sd-webui-locon. 기본 기능으로 편입됨

   - WD Tagger 1.4 https://github.com/toriato/stable-diffusion-webui-wd14-tagger

 - 학습할 데이터셋 (리사이징 안 해도 된다고 함, 학습할 해상도보다 크기만 하면 됨)

 - 적당한 독해력(원 클릭, 세 줄 요약 그런 거 없다)


https://github.com/bmaltais/kohya_ss 을 기반으로 설명할 것이고, 이 글을 안보고 링크의 README 따라서 잘 해도 됨



옛날 설치법(열지마셈)

1. kohya_ss gradio설치


설치할 곳에서 우클릭 - git bash here 로 git을 열자. 꽤 오래 동안 안 닫을 것이니 꼮!!!!!!!!!!! 켜둬라


git clone https://github.com/bmaltais/kohya_ss.git

입력



설치 끝 


2. 파이썬 가상환경 생성



cd kohya_ss

python -m venv --system-site-packages venv


한 줄 씩 붙여넣으셈. 생성 끝.


이제부턴 설치된 kohya_ss 폴더의 가상환경에서 작업할 거임. bash 끄지마라



3. 파이썬 가상환경 설정




 

source .\\venv\\Scripts\\activate

(venv) 이 git bash에 있으면 이제 가상환경으로 들어온 거임

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl


한 줄 씩 붙여 넣자 설치하느라 오래걸린다. 다시 한번 말하지만 가상환경에서 설치해라



4. 윈도우용 파일들 덮어 씌우기

cp -r ./bitsandbytes_windows/*.dll ./venv/Lib/site-packages/bitsandbytes/
cp -r ./bitsandbytes_windows/cextension.py ./venv/Lib/site-packages/bitsandbytes/cextension.py
cp -r ./bitsandbytes_windows/main.py ./venv/Lib/site-packages/bitsandbytes/cuda_setup/main.py

여러 번 말하지만 가상환경에서 해야 한다. 한 줄 씩 붙여넣기.

얜 입력해도 반응이 없으니 정말 잘 됐는지 궁금하면  venv/Lib/site-pakages/bitsandbytes/ 로 가서 수정된 날짜 보셈


안 될리가 없지만, 안되면 bitsandbytes_windows에 있는 파일들을 venv/Lib/site-pakages/bitsandbytes/로 직접 복사 해주면 된다.

main.py는 혼자서 venv/Lib/site-pakages/bitsandbytes/cuda_setup에 넣어야 하니 폴더 제대로 보고 옮겨라!!!!! (중요)



 조금 옛날 설치법(열지마셈) 


0. 파워쉘 정책 해제 



관리자 권한으로 킨다



Set-ExecutionPolicy Unrestricted 입력


A 입력


Get-ExecutionPolicy 입력 후 Unrestricted로 출력되는 지 확인 후 파워쉘 종료



1. 설치할 곳에서 파워쉘 열기

설마 못하겠노?



2. kohya_ss gui 설치하기

git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss

python -m venv venv
.\venv\Scripts\activate

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl

cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py

위 내용 전부을 파워쉘에 복사한다


붙여 넣는다. 엔터 친다.


설치 끝났다.


아직 파워쉘 끄지마라



5. accelerate 설정


파워쉘에서 accelerate config 입력 후


This machine [엔터]

No distributed training [엔터]

NO [엔터] - 기본값이 NO 엔터만 쳐도 됨!

NO [엔터] 

NO [엔터] 

all  [입력] 

fp16 [숫자 1 눌러서 선택 후 엔터]

순서대로 입력해준다. CLI 존나 구리니깐 숫자키랑 엔터말고 누르면 에러 나서 바로 꺼짐


꺼지면 침착하게 설치폴더로 이동 후 파워쉘을 열고



./venv/Scripts/activate 를 입력한 후에

다시 accelerate config를 하면 된다



6. 30xx/40xx 오우너를 위한 추가 설정


여기  에 들어가서 압축파일을 받은 다음에 해제 한 후에, 폴더 이름을 cudnn_windows로 변경 후


cudnn_windows폴더를 kohy_ss 폴더 내로 이동.


여기서도 (venv) 꼭 확인해라

python .\tools\cudann_1.8_install.py

5.에서 파워쉘 창 안 끄고 그대로 입력하면 끝



-------------------------------------시작-------------------------------------

1. 설치할 곳에서 파워쉘 열기

설마 못하겠노? 연 다음에 다음을 복붙 후 엔터


git clone https://github.com/bmaltais/kohya_ss.git


그럼 kohya_ss 폴더가 생겼을거임 거기 들어가셈



2. 초간단 설치방법(최신버전부터)


setup.bat 더블클릭



2 누르고 엔터, 다시 2 누르고 엔터


그럼 알아서 설치 다 하고 accelerate config로 넘어감

쉘 색 달라진건 옛날 설치법 재탕이라 그럼. 무시 ㄱ



This machine [엔터]

No distributed training [엔터]

NO [엔터] - 기본값이 NO 엔터만 쳐도 됨!

NO [엔터] 

NO [엔터] 

all  [입력] 

fp16 [숫자 1 눌러서 선택 후 엔터]

순서대로 입력해준다. CLI 존나 구리니깐 숫자키랑 엔터말고 누르면 에러 나서 바로 꺼짐


7. gradio 시작하기


gui.bat 실행


webui와 똑같이 저 주소로 들어가면 됨


혹시나 webui 켜놨으면 꺼라. 따로 포트 설정 안 하면 겹치기도 하고 VRAM 절약해야됨


gradio 실행 끝.



8. 데이터셋 가공하기


시작하기 앞서 D:/test/test에다가 난 이미지를 미리 준비해놨음


데이터셋을 아직 구하지 못했다면 픽시브 단부루 구글 기타등등 알잘딱 구해놓길 바람


그리고 데이터셋만 잘 구하면 학습은 잘된다. 데이터셋을 목적에 맞게 잘 수집하길 바람.


잘 구하는 방법은 너무 길어서 여따 적진 않을거임


 이거 하지마셈 


누르면 WD Tagger를 알아서 받고 webui 확장기능이랑 똑같이 태깅을 해준다. webui 확장기능으로 태깅해도 됨. 


(추가) 가끔 cudart 에러가 나는 사람이 있는데  이 링크 를 타고가서 쿠다 툴킷을 설치하고 진행해보도록



잠시 WebUI를 키고 확장기능을 다운 받는다. https://github.com/toriato/stable-diffusion-webui-wd14-tagger


WebUI 확장 기능에서 Ctrl+F로 wd14 검색 후 설치. 설치하고 webui 재시작


재시작 후 Tagger 탭으로 이동

인풋 이미지 경로에 너가 모아둔 이미지 파일들 경로 적어두고



밑에 설정에 두 개 체크한 다음에, 가중치는 0.35가 적절한데 바꾸고 싶으면 바꾸든가 해라. 높을수록 더 정확한 태그만 붙여줌


설정 다 했으면 interrogate 누르면 끝. 이제 WebUI는 꺼도 됨


태깅 끝. 다시 kohya_ss gui로 돌아와서


----필독----


Drembooth LoRA가 안보이면 그냥 LoRA 선택해서 하셈!!!!!!!!!!!!!!!


바빠서 짤 업뎃은 못 하는데 자꾸 물어보는 것 같아서 그럼. Dreambooth LoRA(구 버전 트레이너), LoRA(최?신 버전 트레이너임)


아무튼 얘네도 업뎃을 중단한 프로젝트들이 아니어서 내가 작성한 시점, 2023-06-01, 과 너가 보는 UI가 매우 다를 수 있음


다만 지금 하려는 것은 LoRA 트레이닝이기 때문에 LoRA탭만 잘 찾아서 들어가면 똑같은 결과를 얻을 수 있을 거임


그리고 LoRA 페이지 내에서도 여러 옵션들의 위치가 바뀌어 있을 수도 있는데, 그림 맞추기를 하지 말고 설정 이름을 보고 천천히 찾아서 하면 될거임


당장 뭘 해서 결과를 출력하고 싶은 마음이 대부분 있겠지만, 제대로 방법을 습득하면 나중엔 거의 자동화 수준으로 작업이 가능함.


잘 안 보인다? 무엇을 의미하는 지 모르겠다? 어차피 나중에도 계속 볼 화면들이라 조금은 느리더라도 익숙해지는 것이 좋을 듯 함.


----------




1. https://arca.live/b/hypernetworks/66495748? 1토큰 모음집 보고 적당한 1토큰 입력


2. 클래스명 입력. 화풍이면 style, art 등등. 캐릭터면 1girl, girl, 1boy, boy, person 등등 너가 준비한 데이터 셋에 맞게 입력


 - 1, 2는 태깅을 했으면 아무런 기능을 하지 않음 그냥 알아볼 수만 있게 입력해두셈


3. 이미지 경로 지정


4. 데이터셋 몇 번 반복할 지 설정, 100이면 학습 다 하고 남으니깐 100으로


5. 저장할 폴더 입력, 모델, 이미지, log 등등. 이미지 폴더랑은 다른 곳으로 해야함


❗❗❗prepare training data 눌러라❗❗❗


데이터 가공 끝.



9. 학습 설정


9-1. 기본 설정


❗❗❗❗❗❗주의❗❗❗❗❗❗ GTX 10번대 사용자는 AdamW8bit 선택하지 말 것! AdamW 등 다른 거로 선택


rank가 크면 클수록 모델이 커지지만 성능이 좋아질 지는 몰?루. rank=128 기준 LoRA 144MB, rank=4 기준 4.7MB


Optimizer 설정은 AdamW8bit를 쓰고, 다른 optimizer가 뭔지 궁금하면 챈에 검색해보면 누가 설명 잘 해놨을거임.


안 나온다? 잘 안 쓰는거



9-2. 고급 설정


이대로 하셈. 나중에 학습에 대해서 알게 되면 뭐가 뭔지 알 수 있을 건데 지금은 이대로만 해도 됨


Cache latent 랑 Random crop은 둘 중 하나만 체크하기!!!!!!!!!

cache latent는 일반 설정에 있고 random crop은 advanced option에 있음


학습 설정 끝.



10. 학습 시작



학습을 시킬 베이스 모델을 선택한다.


밑에 v2는 SD 2.x모델 일 때 체크하셈. 나머진 체크 풀고,


옆에  v_parameterization 도 마찬가지



8. 에서 생성된 이미지 폴더, 모델 폴더, 로그 폴더를 각각 선택해주고 model 이름을 지정 해주면 끝임.


설정도 암데나 저장해두셈


Train model 누르면 아래처럼 돌아감

학습하다가 LoRA론 아직 OOM을 본 적은 없는데 만약 메모리 부족이 뜨면

1. 배치를 줄여보자

2. 학습 해상도 줄이기

3. 그래도 안되면 안됨 ㅅㄱ


학습 기다리면 끝. 



11. WebUI에서 LoRA 모델 사용하기


https://github.com/KohakuBlueleaf/a1111-sd-webui-locon 을 webui에 설치하기


학습 된 결과를 stable-diffusion webui/models/lora에 넣으면 


프롬프트에 <lora:name:weight> 입력하는 걸로 적용 가능함



밑에 설명은 확장기능 기준(몰라도 됨!)

 옛날 기준 사용법 열지마셈 

-----------------------------------------------------------------------------------------------------


WebUI로 돌아가서 https://github.com/kohya-ss/sd-webui-additional-networks 확장기능으로 설치한다



확장기능 설치 했으면 t2i 밑에 Additional Networks탭이 생김.


Enable 체크하고 너가 생성한 모델 선택해주면 병합 과정 없이도 LoRA 모델을 기존 모델에 붙여서 이미지 생성을 할 수 있음




12. 참고용 이미지


Original ArtNo LoRALoRA weight=1.



13. 끝



----------------------------------------------트러블슈팅----------------------------------------

0. subprocess.CalledProcessError

이건 에러 뜨면 나오는 공통 사항이니 더 위에 있는 에러로 검색


1. ValueError: fp16 mixed precision requires a GPU 


1. accelerate config 대소문자 엄격히 구분하기 or GPU지정해주기

 1.1 GPU 지정해주기 하는 방법

kohya_ss 폴더에서 파워쉘을 연 다음에

./venv/Scripts/activate

accelerate config 입력 한 부분에서

This machine [엔터]

No distributed training [엔터]

NO [엔터] - 기본값이 NO 엔터만 쳐도 됨!

NO [엔터] 

NO [엔터]  <-- 여기까지 동일

all   에서 all 대신 0(숫자) 으로 입력 (GPU 2개 이상이면 원하는 GPU 번호 지정하기)

gpu는 내장그래픽을 제외하고 숫자 셈. 내장+3090이면 작업관리자에선 3090이 1이지만, 여기선 0번임


2. 파이썬 버전 낮추고 재설치


3. CUDA 설치 후 kohya_ss설치하기


4. 그래픽 드라이버 설치.


가장 오류가 많이 나오지만 정확한 이유 및 상황에 따른 해결책은 아직도 잘 모르겠음



2. 'accelerate'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 


(venv)환경 생성하고 pip install 3개 한 지 확인 



3.  mean ar error (without repeats): nan, No data found. Please verify arguments


이미지 폴더는 매우 유연하지 못한 구조로 되어있기 떄문에, 학습 시 지정된 폴더 안에는 이미지가 없어야함.


예시) 이미지 지정할 폴더 C:/img 라면


img폴더 밑에 [반복 수][토큰]_[클래스]형태의 폴더만 존재 해야함.


C

 ㄴ img

       ㄴ 100_sks girl

           ㄴ 1.png

           ㄴ 1.txt 

       ㄴ 50_iom girl

           ㄴ 1.png

           ㄴ 1.txt 


이렇게 폴더 구조를 완성해줘야함. 수동으로 하면 헷갈리니깐 8번 데이터셋 가공하기에서 prepare data set 버튼 누르면 알아서 잘 해줌



4.  No module called tkinter 


파이썬 지웠다가 3.10.6 버전으로 재설치(venv아님)



5. Error no kernel image is available for execution on the device at line 167


8bit adam, xformers 꺼라. 아마 10xx번대(파스칼) 그래픽카드 이용자들에게 뜨는 듯(확인 필요)



6.  No data found. Please verify arguments (train_data_dir must be the parent of folders with images) 


train data 폴더 구조를 명확히 해주길 바람. train data 폴더 밑에는 이미지+텍스트없어야함


이미지 + 텍스트 대신 [반복횟수]_[토큰] [클래스] 형식폴더만 있어야함


올바른 폴더 구조 예시)



7. Installation Failed: "\kohya_ss\tools\..\cudnn_windows" could not be found.


6번 시작 전에 여기에 있는 파일 받고 압축 푼 다음 kohy_ss 폴더에 넣었는지 확인



8.  OSError: [WinError 1455] 이 작업을 완료하기 위한 페이징 파일이 너무 작습니다. 

8.  returned non-zero exit status 3221225477 


링크 참고해서 가상메모리를 늘려준다.



9.  OSError: Unable to load weights from pytorch checkpoint file for "경로"


C:\users\<사용자명>에 있는 ./cache 폴더 지우고 다시 하기



10.  AssertionError: when caching latents, random_crop cannot be used 


cache latent나 random crop 설정 두 개 중 하나는 꺼라.


이미지를 비율에 맞게 다 잘라놨다면 random crop을 끄고, 대충 구해다 놨으면 cache latent 끄셈



11. ValueError: persistent_workers option needs num_workers > 0


Max num workers for DataLoader 숫자 2 넣거나

Persistent data loader 꺼라



(AS서비스 종료)