레이블이 Stable-diffusion인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Stable-diffusion인 게시물을 표시합니다. 모든 게시물 표시

2025년 3월 3일 월요일

stable diffusion webui with amd gpu

 RX 7700 XT GPU를 가지고 windows에서 stable diffusion을 동작시키기 위한 시행 착오에 대해서 정리해보았습니다.

누군가는 동일한 시행 착오를 격지 않길 바라는 마음에 정리를 해보았습니다.

따라하지 마시고 끝까지 다읽어 보시는걸 추천 드립니다. 


NVIDIA의 막강한 무기가 CUDA인걸 모르는지 시간이 많이 지났음에도 AMD의 개발 환경은 여전히 쉽지 않았습니다.

요즘 딥러닝하면 pytorch를 많이 사용합니다. 그래서 pytorch site에서 설치하는 방법을 살펴 보았습니다.

여기에서부터 고행은 시작되었습니다.

 


ROCm(Radeon Open Compute)은 AMD에서 개발한 오픈 소스 기반의 GPU 컴퓨팅 플랫폼입니다. 이는 NVIDIA의 CUDA와 유사한 개념으로, AMD GPU에서 고성능 병렬 컴퓨팅을 수행할 수 있도록 설계되었습니다.
ROCm 이 Windows 에서 설치가 불가능 하였습니다.

Linux 에서는 설치가 가능했기 때문에 WSL을 이용해서 설치를 시도하였습니다.

**WSL(Windows Subsystem for Linux)**은 Windows에서 직접 Linux 환경을 실행할 수 있도록 하는 기능입니다.
즉, 가상 머신(VM) 없이 Windows에서 Linux 명령어, 도구, 애플리케이션을 사용할 수 있도록 지원하는 Microsoft의 서브시스템입니다.


아래를 참고해서 6.1.3 버전을 설치하였습니다.

https://www.reddit.com/r/ROCm/comments/1ep4cru/rocm_613_complete_install_instructions_from_wsl/

문제는 여전히 CUDA를 인식하지 못하는 이슈가 있었습니다.

다시 아래 AMD의 WSL 가이드를 이용하여 ROCm 6.2.3 버전 설치를 시도 하였습니다.

https://rocm.docs.amd.com/projects/radeon/en/latest/docs/install/wsl/install-radeon.html

여전히 unsupported GPU라고 뜹니다.

여기저기 찾아보니 내장 그래픽 카드를 off 하라고 해서 BIOS에서 Off 설정을 해보았지만 여전히 동일하였습니다.


여기에서 자세한 설명은 안하였지만 wsl 내에서 docker 이미지를 이용해서도 설치해보았습니다. 여전히 인식하지 못하였습니다.

중요한 문서가 있는데... 지원되는 그래픽 카드가 정해져 있다는 것입니다.

https://rocm.docs.amd.com/projects/radeon/en/latest/docs/compatibility/wsl/wsl_compatibility.html

이쯤와서는 거의 다 포기하였습니다.

stable diffusion 은 directml(윈도우의 DirectX12 API) 이란것을 이용해서 동작시키는 방법이 있었습니다. 또 다른 방법은 ZLUDA를 이용하는 방법인데 AMD GPU를 이용해서 CUDA 흉내를 내는 방식입니다.

그래서 아래 코드를 참고해서 git 을 받고 

https://github.com/lshqqytiger/stable-diffusion-webui-amdgpu

아래와 같이 실행하였습니다. 물론 그전에 python 3.10.6 버전을 꼭 설치해야합니다.

webui-user.bat --use-zluda


Using ZLUDA

Most of AMDGPUs are compatible.

Start WebUI with --use-zluda.


정리해 보면 아래와 같습니다.

Automatic Installation on Windows

  1. Install Python 3.10.6 (Newer version of Python does not support torch), checking "Add Python to PATH".
  2. Install git.
  3. Download the stable-diffusion-webui-amdgpu repository, for example by running git clone https://github.com/lshqqytiger/stable-diffusion-webui-amdgpu.git.
  4. Run webui-user.bat from Windows Explorer as normal, non-administrator, user.

4번 실행시 webui-user.bat --use-zluda 라고 실행 시키면 됩니다.


동작하다가 numpy 관련 오류가 발생하는데 아래 가이드 보고 pip install numpy==1.23.5 로 새로 설치하였습니다.

https://myview7144.tistory.com/96


최초 동작시 NVIDIA 사용할때보다 굉장히 느립니다.

동작은 되는데 이미지 크기를 키우면 굉장히 느려집니다.

 

2024년 4월 28일 일요일

Stable-diffusion / SDXL 설치

Stable-diffusion / SDXL 설치


windows 환경에서 설치 방법입니다.


1. stable-diffusion-webui 설치

https://github.com/AUTOMATIC1111/stable-diffusion-webui

최신 버전도 많지만 v1.5.1 tag가 붙은 버전을 설치합니다.

https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.5.1

stable-diffusion-webui-1.5.1.zip 파일을 다운로드 받아서 적당한 위치에 압축을 해제합니다.



2. python 3.10.6 설치

Stable-diffusion이 구동될려면 python, git 이 설치 되어어야 합니다.

https://www.python.org/downloads/release/python-3106/

버전을 맞춰주시고 path 설정도 해줍니다.

1번에서 해제된 압축 파일을내에 webui-user.bat 파일을 열어

PYTHON 경로를 넣어줍니다. (경로는 사용자마다 다릅니다.)

예) set PYTHON=C:\Users\AppData\Local\Programs\Python\Python310\python.exe

추가로 아래 부분도 변경 시켜주세요

set COMMANDLINE_ARGS=--xformers --no-half-vae 

이 부분을 안해주면 결과물이 이상하게 나옵니다.



3. git 설치

아래에서 맞는 버전을 설치해줍니다.

https://git-scm.com/download/win


4. SDXL 모델 다운로드

huggingface 에서 각각 아래 파일을 다운로드 받습니다.

https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main

sd_xl_base_1.0.safetensors

https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/tree/main

sd_xl_refiner_1.0.safetensors

Stable-diffusion 만 설치하는 것이라면 4, 5 단계를 무시하면 됩니다.


5. 다운로드 받은 파일을 models\Stable-diffusion 폴더로 복사

경로는 아래 위치가 됩니다.


6. webui-user.bat 실행

실행된 내용에 있는 주소를 브라우저로 엽니다. 커맨드 라인의 Running on local URL 입니다.

아래 화면에서는 http://127.0.0.1:7860/ 이곳입니다.




stable diffusion checkpoint 에서 어떤 모델을 선택하느냐에 따라 SDXL이 되는 것입니다.

앞에 다운로드 받았던, sd_xl_base_1.0.safetensors, sd_xl_refiner_1.0.safetensors 를 선택한다면  SDXL 이 됩니다.



[에러 발생시]

Version: 1.5.1

Commit hash: <none>

Launching Web UI with arguments:

Traceback (most recent call last):

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\launch.py", line 39, in <module>

    main()

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\launch.py", line 35, in main

    start()

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\modules\launch_utils.py", line 390, in start

    import webui

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\webui.py", line 44, in <module>

    import gradio  # noqa: F401

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\gradio\__init__.py", line 3, in <module>

    import gradio.components as components

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\gradio\components.py", line 55, in <module>

    from gradio import processing_utils, utils

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\gradio\utils.py", line 339, in <module>

    class AsyncRequest:

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\gradio\utils.py", line 358, in AsyncRequest

    client = httpx.AsyncClient()

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\httpx\_client.py", line 1397, in __init__

    self._transport = self._init_transport(

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\httpx\_client.py", line 1445, in _init_transport

    return AsyncHTTPTransport(

  File "D:\dev\SDXL\stable-diffusion-webui-1.5.1\venv\lib\site-packages\httpx\_transports\default.py", line 275, in __init__

    self._pool = httpcore.AsyncConnectionPool(

TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument 'socket_options'


=>pip install httpx==0.24.1

그런데 venv로 동작하고 있어서 venv 환경의 httpx 설치를 바꿔줘야 합니다.

cmd 창을 열고

설치된 폴더 stable-diffusion-webui-1.5.1\venv\Scripts 여기로 이동한뒤 activate.bat 를 실행 시킵니다. 그러면 아래와 같은 화면이 나오고 앞에 (venv) 가 붙습니다.



위와 같이 pip install httpx==0.24.1 명령을 수행합니다.

그 이후 webui-user.bat 를 다시 실행시키면 됩니다.