(본인쟝 4090 괴롭히기 기록)


본인쟝 4090사고 처음에 돌리니깐 5it/s 나와서 넘무 슬펐어 ㅠㅠ


근데 레딧 보니깐 4090 평균 28~30이고


4090 최고기록은 리눅스 환경에서 40 it/s 나온기록도 있어 


아무튼 4090 성능을 최고로 뽑아내는 방법은  아래와같아.


 본인쟝도 아래 방법을 통해 5 -> 30 으로 6배 상승했으니 너네들도 할 수 있을거야


##################

수정사항 1. 아래 최적화 사항들은 성능 안나오는 4000번대 그래픽 카드들의 성능을 정상으로 되돌려 주는 것이지....

정상으로 잘 나오고 있는 친구들의 성능을 드라마틱하게 올리지는 않아요

https://docs.getgrist.com/3mjouqRSdkBY/sdperformance/p/1

레딧 친구들이 집단지성으로 자기네들 성능 모아둔 곳인데 자기 그래픽 카드와 성능 비교해보시고 많이 낮으시다면 적용해보세요


수정사항 2. 추후에 다른 버전의 pytorch와 cuda 버전이 나오시면 그 버전으로 설치하시면 됩니다. 꼭 pytorch 2 + cuda 11.8 + cudnn 8.7.0을 고집할 필요는 없어요


수정사항 3. 통팩 + 원클릭의 경우 내가 사용을 안해봐서 잘 몰라... 그래서 통팩 또는 원클릭 유저라면

1. 다른 폴더 하나 만든다

2. 거기에 stable diffusion web ui를 git clone 한다.

ㅎㅎ 폴더 하나 만들어서 새로 시작하라는 뜻...... (나중에 models 폴더만 다시 붙여넣어주면 됨)


수정사항 4. https://arca.live/b/aiart/71620824?p=1 원클릭 유저 참고

https://arca.live/b/aiartreal/71609267 반실사 챈 친구가 쓴 요약본


수정사항 5. 통팩이니 원클릭 등 자동좌 깃헙에서 정석적으로 설치하시지 않으신 분들 에러가 많이 납니다. 이 이유는 통팩, 원클릭 만들 때 파일 경로가 자동자 깃헙 파일경로랑 조금씩 다르거나, 파이썬 환경 변수 및 가상환경 문제로 추측됩니다. (venv가 아니라 virtualenv, 최상위 폴더 이름이 stable-diffusion-webui가 아닌 repo 라던지...) 이렇게 사용자 마다 다른걸 저한테 질문하시면 저는 여러분들의 환경을 모르기 때문에 도움을 줄 수 없습니다. 직접 경로를 확인해주시기 바랍니다.) 


에러가 나면 가장 간단한 방법은 그냥 폴더 하나 파고 자동좌 깃헙 클론해오셔서 다시 시작해주세요. 여러모로 꼬인 환경 고치기 귀찮잖아요. 기존의 통팩, 원클릭 폴더의 models만 가져와서 넣어주시면 똑같이 사용 할 수 있습니다.


1. git 설치 (이 문구 그대로 구글 검색)

2. 설치하고 싶은 폴더에서 cmd를 연 후 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 입력


이후 진행하시면 됩니다.

###################


1. cuda 11.8 이상 사용하기

rtx40번대 Ada Lovelace는 cuda 11.7이하에서는 성능을 제 성능을 못 뽑아내 ㅠㅠ


2. pytorch 2 사용하기

pytorch 1.x 버전과 pytorch 2.0 이상 버전은 백엔드 수준이 완전히 달라서 성능차이가 심하게 나 ㅠㅠ


3. cudnn 8.7.0 이상 사용하기

이건 많이 알려진 사실인데 cudnn 8.7.0 이상 버전 받아서 dll (linux의 경우 .so) 파일 바꾸어주면 돼!


4. xformers 자기 환경에 맞게 컴파일 해서 사용하기

내가 1번 2번만 해서 사용하니깐 18it/s였는데 이거 하고 나서 30it/s 됨 ㅋㅋ


차근차근 어떻게 하는지 가르쳐줄게


(참고로 stable diffusion web ui 23년 3월 기준 기본 버전은 torch1.13.1 + cuda11.7이야... 위에서 말한 것 하나도 만족 못시켜 ㅠㅠ)

#############################


1+2. Stable diffusion web ui 파이토치 + 쿠다 버전 바꾸기

1번이랑 2번은 한 번에 해결가능해. 깃헙에서 클론 해왔다고 가정할게 (git 없으면 안됨)


1. Stable diffusion web ui 폴더로 들어가자

2. venv 폴더를 지우자

3. webui-user.bat 파일을 아래와 같이 수정하면 돼


6번줄과 8번줄만 위 그림처럼 고치면 됨

만약 새로운 pytorch 버전이 나왔으면 TORCH_COMMAND 명령어만 바꾸어 주면 됨. 이건 https://pytorch.org/get-started/locally/ 가서 nightly, pip로 선택해서 나오는 설치 명령어 가져오면 됨. (pip3가 아니라 pip인거 주의)

귀찮은 사람은 밑에거 복사해서 붙여넣기 하도록


set COMMANDLINE_ARGS=--theme dark --xformers
set TORCH_COMMAND=pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu118


이렇게 수정 한 다음 저장하고 webui-user.bat 파일 더블클릭해서 실행하면 알아서 최신버전 pytorch와 cuda11.8버전이 설치될거야


3. cudnn 8.7.0 이상 사용하기


이건 많이 알려져 있어서 대충 설명할게

위에서 pytorch와 cuda11.8 설치했으면 venv 폴더가 생기고 거기에 pytorch 및 기타 모듈들이 설치될거야

근데 이 친구들은 cudnn이 낮은 버전이라서 cudnn 8.7.0 버전 이상의 dll로 바꾸어 주어야해

해당 방법은 https://arca.live/b/aiart/69929406?mode=best&target=all&keyword=4090&p=1 이 글에서 잘 설명해놨더라고

너네들도 잘 아는 방법일거라 생각하고 생략할게


4. xformers 자기 환경에 맞게 컴파일 해서 사용하기

xformers는 모델을 학습할 때 여러모로 최적화를 도와주는 모듈이야

이 친구가 있으면 학습은 물론 evaluation도 빨라져

근데 안타깝게도 맨 앞단계(1+2)에서 webui 설치하면서 자동으로 설치되는 xformers는 pytorch 1.13.1 + cuda 11.7으로 프리컴파일 된 xformers라서 제 성능을 내지 못하고

우리처럼 pytorch 버전과 쿠다 버전을 강제로 업그레이드 한 상태면 명령어가 달라서 오류가 나면서 실행이 되지 않는 경우도 있어

그래서 우리는 xformers를 우리가 쓰는 환경에서 컴파일 해서 쓸거야


좀 복잡할 수 있는데 아래를 차근 차근 따라하면 될거야


1. stable diffusion web ui 폴더로 간다.


2. 오른쪽 클릭을 하면 (터미널에서 열기) 라는 항목이 나오는데 그걸 눌러서 cmd를 켜주자

    (만약 그런게 안나오는 친구들이면 cmd를 켠 다음 

      cd (stable diffusion web ui 경로)를 입력해주면 돼 (당연히 괄호는 빼고)


3. ./venv/scripts/activate 를 입력한다


입력하면 위 그림처럼 (venv)라는게 터미널 창 맨 앞에 뜰거야. 안뜨면 안돼 이거 뜨는지 확인하고 진행해

(안되면 https://itpro.tistory.com/100 참조)


4. 명령프롬프트 창에 pip uninstall xformers 입력하기

잘못 설치된 xformers를 지워주는 과정이야


5. cuda 11.8 설치 

https://developer.nvidia.com/cuda-11-8-0-download-archive 이거 들어가서 window 버전 알아서 잘 설치해줘


앞에서  cuda11.8 설치 했는데 왜 또 설치하냐고?

pytorch를 설치할 때 같이 설치되는 cuda는 런타임 파일만 가지고 있고 컴파일러(nvcc)는 같이 설치되지 않아. 사람마다 환경이 다 달라서 pytorch 설치할 때 생기는 문제를 방지하기 위해 cuda도 같이 최소한의 묶음으로 끼워서 설치하는거라 완벽한 cuda가 아니라고 생각하면 돼

그리고 가상환경에 설치한거라 그 환경에서만 돌아가기도 하고


우리는 컴파일러만 필요하기 때문에 cuda 11.8 설치 할 때 모든 파일이 다 필요없어. 아래 항목만 체크하고 진행하면 돼

아무튼 진행하면 cuda 11.8 설치 완료!


6. Microsoft C++ Build Tools 설치

보다싶이 xformers는 순수하게 python으로만 짜여진 언어가 아니라 C++ 관련 다른 빌드 툴이 필요해. 리눅스라면 build-essentials로 간단하게 끝낼 수 있지만 윈도우는 마이크로소프트 c++ 빌드 툴을 따로 설치해줘야해

https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/

해당 사이트 들어가면 설치 가능해 그냥 쭉 따라서 설치하면 되니깐 어려울거 없어.


7. ninja 설치하기

pip install ninja

위의 명령어를 4번에서 사용했던 명령프롬프트 창에 입력해줘. 이거 없으면 컴파일 완전 완전 느려짐

혹시나 12번에서 에러나면 setuptools가 제대로 설치 되어있는지 확인해봐

pip install setuptools

pip install wheel


이렇게 하면 xformers를 컴파일 할 준비가 끝났어 이제 xformers를 컴파일 해보자


8. 명령프롬프트에  cd ./repositories 입력하기 

여기에 stable diffusion web ui에서 사용하는 다른 github 프로젝트들이 모여 살고 있어

이제 xformers를 불러와주자


9. xformers 리포지토리 클론하기

git clone https://github.com/facebookresearch/xformers.git --recurse-submodules

xformers는 다른 리포지토리들을 참조하고 있기에 뒤에 recurse 머시기 안붙이면 설치 안돼! 주의해서 설치해야해


10. 다른 컴파일러 사용한다고 컴퓨터한테 알려주기

지금 사용하고 있는 프롬프트가 powershell일 경우

$env:NVCC_FLAGS = "-allow-unsupported-compiler"

cmd일 경우

set NVCC_FLAGS =-allow-unsupported-compiler

입력해주면돼


11. 방금 clone 한 폴더로 들어가기

cd ./xformers

위 명령어 입력해주면 우리가 방금 다운 받은 폴더로 들어가짐


12. 컴파일 하기

python setup.py build

python setup.py bdist_wheel


위 두 명령어를 순서대로 입력해주면 컴파일 돼

컴파일하는데 5분정도 걸릴거야. 똥컴이면 더 걸리고....

두 번째 명령어는 첫 번째 명령어 다 끝나면 입력해줘야해!


13. python에 우리가 새롭게 컴파일 한 xformers 다시 설치하기

우리가 컴파일한 xformers는 dist 폴더에 wheel 파일로 생성되어 있을거야

이걸 python에 설치해주면 돼

그러니깐

cd ./dist

pip install xformers-xxxxxxx.whl

뒤의 xxx는 버전마다 달라지는데 dist 폴더에 파일 하나 밖에 없을거니 그거 설치해주면 돼


이렇게 한 뒤 pip list 쳐보면 우리가 컴파일 한 xformers가 설치되어 있을거야


이렇게  하면 진짜 성능 존나존나존나 빨라지니깐 다들 차근차근 따라해봐


나는 이제 초당 2장씩 만들어지는 젖통보고 딸치러 갈거니깐 질문은 편하게 댓글로 남겨줘