가장 쉬운 방법은 AMD에 최적화된 배포본인 nod-ai의 SHARK를 쓰는 것인데, 이쪽은 아직 확장 프로그램이 따라오는게 늦은 상태입니다. 그냥 편하게 AMD GPU에서 이미지 생성만 해보고 싶으면 SHARK를 쓰고, 확장을 해보고 싶으면 다음 내용을 참고해서 고난의 여정;;에 참여하면 됩니다.
AMD GPU 환경에서 Stable Diffusion을 이용하려면 CUDA를 대체하는 MS의 기술인 DirectML을 사용해야 합니다. DirectML을 사용하면 CUDA보다 느리다고 알려져있긴 한데, 아예 안 되는 것보다는 나은 상황이므로 AMD GPU를 쓰는 죄(;;)로 느릴 뿐 아니라 설치가 번거롭기까지 하지만 DirectML 기반으로 환경을 구축해 보겠습니다.
큰 흐름은 이전 글에 링크된 CUDA 버전을 다루는 문서와 일치하지만 세부적으로 약간 차이가 있습니다.
https://skyksit.com/useful/install-stable-diffusion-for-windows/
DirectML 버전의 설치 방법은 다음 문서에 나와 있습니다.
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs
- 필수 설치
1. Python 설치
2. Git 설치
3. stable-diffusion-webui 다운로드(DirectML 대응)
4. repositories의 구성요소 다운로드(DirectML 대응)
5. stable-diffusion Model 파일 다운로드
6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)
- 옵션
7. waifu-diffusion 파일 다운로드
8. GFPGAN 파일 다운로드
1. Python 설치
명령 프롬프트를 열고
winget install python
2. Git 설치
winget install git
3. stable-diffusion-webui 다운로드(DirectML 대응)
명령프롬프트에서 설치할 경로로 이동한 후
git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git
여기서부터 이전 글에 링크한 문서와 차이가 생기는데, CUDA에 대응하는 원본은 https://github.com/AUTOMATIC1111/stable-diffusion-webui에 있지만, 우리는 DirectML에 대응하도록 수정한 버전을 설치해야 합니다. https://github.com/lshqqytiger/stable-diffusion-webui-directml
4. repositories의 구성요소 다운로드(DirectML 대응)
명령 프롬프트에서 stable-diffusion-webui-directml/repositories 경로로 이동한 후
git clone https://github.com/lshqqytiger/k-diffusion-directml k-diffusion
git clone https://github.com/lshqqytiger/stablediffusion-directml stable-diffusion-stability-ai
5. stable-diffusion Model 파일 다운로드
다음 주소로 이동하여 무료 회원 가입 후 Model을 골라 설치해 봅니다.
https://huggingface.co/models
다운받을 수 있는 모델 포맷은 .ckpt나 .safetensors 파일인데, .safetensors 파일이 모델 변경 시 속도가 더 빠르다고 알려져 있습니다. 체감적으로는 별 차이를 모르겠네요. 다운 받은 후 models/Stable-diffusion 폴더에 넣어줍니다.
6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)
webui-user.bat를 열고 다음과 같이 수정합니다.
set COMMANDLINE_ARGS=--opt-sub-quad-attention --lowvram --no-half-vae
저 옵션들은 제 PC에서 몇차례 실행하면서 RX6600에서 필요하다고 확인한 것들인데, 각자의 환경에 따라 더하거나 빠질 수 있습니다. 이제 webui-user.bat를 실행하고 기다리면 오류가 없을 경우 명령 프롬프트에 접속할 수 있는 웹주소가 나타납니다.