AMD 8845HS 780M 으로 ComfyUI 돌려보기

제가 최근에 A1111의 Stable-Diffusion-webui를 버리고 ComfyUI로 완전히 넘어갔습니다. 초반에 사용법 익히는게 살짝 까다롭긴 한데 좀 써보면 다양한걸 할 수 있어서 더 추천드립니다.

1. 시작하기 전에…

간단하게나마 이 글을 꼭 읽어보고 오세요.

그럼 이놈이 왜 이렇게 했지 라는 거에 대해 조금이라도 이해 하는데 보탬이 됩니다.

Specs..

AMD 8845HS,
DDR5 16g X 2개 = 32g,
780m 내장 그래픽(vram 16g할당)

2. 폴더 구조

폴더 구조는 이렇게 했습니다.

  • ComfyUI-USER : 이건 제가 편하게 관리 할려고 만든거라 없어도 됩니다.
  • git : 설명 필요 없죠
  • python3.10.11 : 파이썬 3.10.11 버전을 넣어줍니다.
  • ROCm : 밑에서 추가 설명 나옵니다.
  • USERPROFILE : 홈디렉토리를 이곳으로 지정해서 설치시 받는 각종 설치 파일과 가장 중요한 Zluda 캐싱 파일을 저장하는 공간입니다.

솔직히 제가 한대로 폴더 구성을 안 해도 상관없습니다. 그냥 설정할때 경로만 확실하게 지정해주면 되는데 제가 이런 구성을 한 이유는 나중에 윈도우 재설치나 용량 부족으로 다른 SSD로 옮겨도 경로문제로 실행 안되는 거를 방지하기 위해서입니다.

3. 파일 다운로드

git, python 설치는 이전 글을 참고 하세요.

ㄱ. ROCm 설치

ROCm : https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html

위 링크로 가서 Windows 11용 6.2.4 버전을 받습니다. 이전 글과 마찬가지로 ETC\ROCm\6.2 폴더로 옮겨줍니다. (파일 복사 이후 설치했던 원본은 언인스톨 해도 됩니다)

ㄴ. ROCmLibs 패치

ROCmLibs : https://github.com/likelovewant/ROCmLibs-for-gfx1103-AMD780M-APU

위 링크로 가서 0.6.2.4 버전을 받으면 됩니다. 만약 780m이 아닌 다른 라데온 카드라면 거기에 맞는 버전을 받으면 됩니다. 다운 받은 파일 압축을 풀고

rocblas.dll은 ETC\ROCm\6.2\bin 로
library폴더는 ETC\ROCm\6.2\bin\rocblas 로 복사하면 됩니다.

4. 설치

우선 ComfyUI-Zluda 폴더를 만듭니다.

@echo off

rem 부모경로 패스를 저장
FOR %%A IN ("%~dp0.") DO set parent_path=%%~dpA

set PATH=%parent_path%ETC\git\cmd

git init .

git remote add origin https://github.com/patientx/ComfyUI-Zluda.git
git pull origin master

ComfyUI-Zluda-download.bat 라는 이름으로 파일을 생성하고 위 내용으로 채웁니다. 그리고 실행합니다.

참고로 받는 건 ComfyUI 공식이 아니라 zluda 적용한 포크 버전을 받는것입니다.

rem 부모경로 패스를 저장
FOR %%A IN ("%~dp0.") DO set parent_path=%%~dpA
set PYTHON_PATH=%parent_path%ETC\python3.10.11
set GIT_PATH=%parent_path%ETC\git\cmd\
set VENV_DIR=%~dp0venv
set USERPROFILE=%parent_path%ETC\USERPROFILE\ComfyUI-Zluda-ROCm6.2\
set "PATH=%GIT_PATH%;%PYTHON_PATH%;%PATH%"

rem AppData\Local폴더가 없으면 zluda cache 파일이 생성되지 않음
If Not Exist "%USERPROFILE%AppData\Local\" (
    mkdir %USERPROFILE%AppData\Local\
	mkdir %USERPROFILE%AppData\Roaming\
)

If Not Exist "%VENV_DIR%\Scripts\activate.bat" (
	python.exe -m venv %VENV_DIR%
)

If Not Exist "%VENV_DIR%\Scripts\activate.bat" Exit /B 1
Call "%VENV_DIR%\Scripts\activate.bat"
 
echo -------------------------------------------------------------
Echo ******************* COMFYUI-ZLUDA INSTALL *******************
echo -------------------------------------------------------------
python.exe -m pip install --upgrade pip


pip install -r requirements.txt
pip uninstall torch torchvision torchaudio -y
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118
pip install onnxruntime
pip uninstall numpy -y
pip install numpy==1.26.2

echo Custom node(s) installation ...
cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
cd ..

pause

위 내용으로 ComfyUI-Zluda-install.bat 만들고 실행합니다.

위 스크립트에서 중요한 설명을 추가하자면…

set USERPROFILE=%parent_path%ETC\USERPROFILE\ComfyUI-Zluda-ROCm6.2\

이거 해놓으면 설치캐시파일이 ComfyUI-Zluda-ROCm6.2에 저장되서 나중에 venv 폴더 날리고 재설치시 조금 더 빨리 재설치가 가능합니다. 그리고 가장 중요한 Zluda 캐시 파일이 여기 하위 폴더로 저장됩니다. (처음 생성시 8845hs에서 약 40~50분 걸림)

pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118

이거 원래는 2.3.1이 아니라 2.3.0인데 시맨틱 버전관리법에 의하 맨 마지막 숫자는 패치버전이라 그냥 최신 버전으로 했습니다. 전에 누가webui 처럼 2.3.1 버전 쓰면 안되냐는 질문에 포크 버전 관리 하는 분이 댓글로 그거 쓰면 컴파일 후 빈 화면이 나온다고 했던가.. 뭔가 작동 안된다고 썼던데 일단 780m에서는 정상 작동합니다. 혹시 작동 안되면 2.3.0, 0.18.0, 2.3.0으로 고쳐서 재설치를 해보세요.

@Echo off
rmdir /S /q zluda

set VENV_DIR=%~dp0venv

set "ver_str=- Patching ZLUDA (Zluda 3.8.6 for HIP SDK 6.2.4)"
set "zluda_url=https://github.com/lshqqytiger/ZLUDA/releases/download/rel.d60bddbc870827566b3d2d417e00e1d2d8acc026/ZLUDA-windows-rocm6-amd64.zip"


echo %ver_str%
curl -s -L %zluda_url% > zluda.zip
tar -xf zluda.zip


del zluda.zip
copy zluda\cublas.dll	%VENV_DIR%\Lib\site-packages\torch\lib\cublas64_11.dll /y >NUL
copy zluda\cusparse.dll	%VENV_DIR%\Lib\site-packages\torch\lib\cusparse64_11.dll /y >NUL
copy zluda\nvrtc.dll	%VENV_DIR%\Lib\site-packages\torch\lib\nvrtc64_112_0.dll /y >NUL


echo.
@echo * ZLUDA is patched.
pause

위 내용으로 ComfyUI-Zluda-install-zluda.bat를 만들고 실행합니다.

@echo off

rem 부모경로 패스를 저장
FOR %%A IN ("%~dp0.") DO set parent_path=%%~dpA

set PYTHON_PATH=%parent_path%ETC\python3.10.11\
set PYTHON=%PYTHON_PATH%python.exe
set GIT_PATH=%parent_path%ETC\git\cmd\
set GIT=%GIT_PATH%git.exe
set VENV_DIR=%~dp0venv
set USERPROFILE=%parent_path%ETC\USERPROFILE\ComfyUI-Zluda-ROCm6.2\
set HIP_PATH=%parent_path%ETC\ROCm\6.2\
set HIP_PATH_62=%HIP_PATH%
set "PATH=%PYTHON_PATH%;%GIT_PATH%;%HIP_PATH%;%HIP_PATH%bin;%HIP_PATH_62%;%PATH%;"

rem AppData\Local폴더가 없으면 zluda cache 파일이 생성되지 않음
If Not Exist "%USERPROFILE%AppData\Local\" (
    mkdir %USERPROFILE%AppData\Local\
	mkdir %USERPROFILE%AppData\Roaming\
)

REM 폴더 경로가 바뀌어도 가상 파이쏜 정상 실행 되도록 경로 수정
set tmp_pypath=home = %PYTHON_PATH%
set tmp_venvpath=set VIRTUAL_ENV=%VENV_DIR%
if exist "%VENV_DIR%\" (
	powershell -command "$text = (gc %VENV_DIR%\pyvenv.cfg) -replace 'home = .*', $env:tmp_pypath; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines('%VENV_DIR%\pyvenv.cfg', $text, $Utf8NoBomEncoding);"
	powershell -command "$text = (gc %VENV_DIR%\Scripts\activate.bat) -replace 'set VIRTUAL_ENV=.*', $env:tmp_venvpath; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines('%VENV_DIR%\Scripts\activate.bat', $text, $Utf8NoBomEncoding);"
)

set COMMANDLINE_ARGS=--use-quad-cross-attention --fp8_e4m3fn-text-enc --fp8_e4m3fn-unet --output-directory "%parent_path%Outputs"
git pull origin master

If Not Exist "%VENV_DIR%\Scripts\activate.bat" Exit /B 1
Call "%VENV_DIR%\Scripts\activate.bat"

.\zluda\zluda.exe --  python.exe main.py %COMMANDLINE_ARGS%

위 내용이 복잡하게 보이지만 전부 다 경로 문제 때문에 작성된것이고 제가 겪은 실행이 안되는 문제가 전부 경로 문제 였었습니다.

깃헙에서 caffe2_nvrtc.dll 문제 뜨면 파이썬 버전 확인하고 venv 폴더 삭제 후 재 설치 해보라고 하는데

set "PATH=%PYTHON_PATH%;%GIT_PATH%;%HIP_PATH%;%HIP_PATH%bin;%HIP_PATH_62%;%PATH%;"

powershell -command "$text = (gc %VENV_DIR%\Scripts\activate.bat) -replace 'set VIRTUAL_ENV=.*', $env:tmp_venvpath; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines('%VENV_DIR%\Scripts\activate.bat', $text, $Utf8NoBomEncoding);"

저는 위 두 줄로 해결되었습니다.

5. 마무리…

설명이 좀 부실하긴 한데 이전글 읽고 보면 이해가 되실거라 봅니다.

그리고 zluda 캐싱파일은 zluda 버전업하거나 ROCm 버전이 바뀌면 새로 생성해야 합니다. 그리고 버전 업그레이드 한다고 해도 속도에 딱히 차이가 없는걸 보아 (7000번대 그래픽 카드는 다를지도 모름) 현재 잘 쓰고 있다면 굳이 업그레이드 할 필요는 없어 보입니다.

ComfyUI-Zluda 원래 설치 파일을 열어보면 커스텀 노드에 deep-cache 노드도 있는데 이거 제가 써보니깐 속도는 빨라지지만 그림이 망가집니다. 안망가질려면 스텝수를 올려야 하는데 그럼 비례해서 생성 속도가 늘어나기 때문에 제 생각에 굳이??? 라는 생각에 안 넣었습니다.

780m으로 이정도 퀄리티 한장 뽑는데 약 2분 이내로 가능합니다. (Illustrious 베이스 기반 모델)

AI 관련 게시판 보면 보통 고사양 PC로 모델 학습시키는거 까지 하시던데 저는 그냥 취미로 재미있는 짤 뽑는 용도로만 적당히 사용하고 말 생각입니다.


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다