AMD 8845HS 780M으로 ComfyUI 돌려보기 (Zluda버전)

최근에 A1111님의 Stable-Diffusion-webui를 정리하고 ComfyUI로 완전히 넘어갔습니다. 초반에 사용법 익히는게 살짝 난해하긴 해도 한번 배워두면 이 쪽이 좀 더 자유롭게 많은걸 할 수 있어서 이쪽을 더 추천드립니다.

이 글도 방문자가 늘어나길래 4월 26일 기준으로 본문 업데이트를 했습니다.

TheRock 버전을 추천합니다. 요것도 써보세요.

1. 폴더 구조

폴더 구조는 위와 같습니다. 이렇게 작성한 이유는 C:\AI 폴더만 백업하면 추후 윈도우 재설치후 AI폴더만 옮기면 바로 실행이 가능하기 때문입니다.

구조는 원하시는 대로 작성해도 상관없지만 아래 스크립트는 위 구조를 기반으로 작동한다는걸 참고해주세요.

2. 공통 파일 다운로드

2-1 Git

Download : https://git-scm.com/downloads/win

git 포터블 버전을 받아서 실행하면 폴더가 하나 생기는데 이걸 전부 ETC\git 폴더로 옮겨줍니다.

2-2 Python 3.12.10

Download : https://www.python.org/downloads/release/python-31210/

설치할때 ETC\python3.12.10 폴더로 지정하거나 기본 설치 후 ETC\python3.12.10 폴더로 옮겨줍니다.

2-3 AMD HIP SDK

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

6.2.4, 6.1.2, 5.7.1 세가지 버전 중 원하는 것을 선택하시고 만약 설치한 버전으로 작동하지 않는다면 다른 버전을 선택하세요. (780m은 셋다 작동합니다)

6.24 버전을 설치하면 C:\Program Files\AMD\ROCm\6.2 이라는 폴더가 생기는데 이걸 ETC\ROCm\6.2 로 옮겨줍니다.

2-4 ROCmLibs 패치

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

HIP SDK는 6000~7000번 최신 라데온 그래픽카드만 공식적으로 지원하는데 능력자분들이 미지원 그래픽카드도 작동하도록 만들어주셨습니다.

위 링크 Release 에서 본인의 그래픽카드에 맞는 파일이 어떤건지 모르겠다면, ETC\ROCm\6.1\bin\amdgpu-arch.exe를 실행하면 됩니다.

다운 받은 파일 압축을 풀면 rocblas.dll과 library 폴더가 나오는데요.

rocblas.dll -> ETC\ROCm\6.2\bin\rocblas.dll
library -> ETC\ROCm\6.2\bin\rocblas\library

으로 복사하면 됩니다.

3. 설치&&실행

3-1 ComfyUI-Zluda_download.cmd

@echo off
REM ---------------------------------------------------------------------------
REM parent path를 구함 ex) c:\AI\
FOR %%A IN ("%~dp0.") DO set PARENT_PATH=%%~dpA
set USERPROFILE=%PARENT_PATH%ETC\USERPROFILE\
set GIT_PATH=%PARENT_PATH%ETC\git\cmd\
set "PATH=%GIT_PATH%;%PATH%;"

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

이 스크립트는 깃헙에서 ComfyUI-Zluda 포크 버전을 다운 받습니다.

3-2 ComfyUI-Zluda_install.cmd

@echo off
REM ---------------------------------------------------------------------------
REM parent path를 구함 ex) c:\AI\
FOR %%A IN ("%~dp0.") DO set PARENT_PATH=%%~dpA

set USERPROFILE=%PARENT_PATH%ETC\USERPROFILE\
set VENV_DIR=%~dp0venv
set PYTHON_PATH=%PARENT_PATH%ETC\python3.12.10\
set GIT_PATH=%PARENT_PATH%ETC\git\cmd\
set "PATH=%GIT_PATH%;%PATH%;"

REM ---------------------------------------------------------------------------
REM 폴더 경로가 바뀌어도 가상 파이쏜 정상 실행 되도록 경로 수정
if exist "%VENV_DIR%\" (
set tmp_pypath=home = %PYTHON_PATH%
set tmp_venvpath=set VIRTUAL_ENV=%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);"
)

REM ---------------------------------------------------------------------------
REM 가상화 실행
If Not Exist "%VENV_DIR%\Scripts\activate.bat" (
	%PYTHON_PATH%python.exe -m venv %VENV_DIR%
)
If Not Exist "%VENV_DIR%\Scripts\activate.bat" Exit /B 1
Call "%VENV_DIR%\Scripts\activate.bat"
REM ---------------------------------------------------------------------------
REM 실제 설치 하는 부분
 
python.exe -m pip install --upgrade pip

pip3 install -r requirements.txt

pip3 uninstall torch torchvision torchaudio -y
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

pip3 install onnxruntime
pip3 install piexif 

cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
cd ..
pause

이 스크립트는 Comfy 구동에 필요한 라이브러리를 설치합니다.

3-3 ComfyUI-Zluda_install_zluda.cmd

@Echo off

If Exist "zluda" (
	rmdir /S /q zluda
)

set VENV_DIR=%~dp0venv

set "ver_str=- Patching ZLUDA (Zluda 3.9.3 for HIP SDK 6.2.4)"
set "zluda_url=https://github.com/lshqqytiger/ZLUDA/releases/download/rel.0d1513a017397bf9ebbac0b3c846160c8d4fc700/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

이 스크립트는 zluda 파일을 다운받고 설치합니다.

3-4 extra_model_paths.yaml

linsoo:
    base_path: C:\AI\
    is_default: true
    custom_nodes: ETC/ComfyUI_DATA/custom_nodes/
    
    checkpoints: Models/checkpoints/
    clip: Models/clip/
    clip_vision: Models/clip_vision/
    configs: Models/configs/
    controlnet: Models/controlNet/
    diffusion_models: |
        Models/diffusion_models
        Models/unet
    embeddings: Models/embeddings/
    loras: Models/loras/
    upscale_models: Models/upscale_models/
    vae: Models/vae/
    ipadapter: Models/ipadapter/
    hypernetworks: Models/hypernetworks/
    sams: Models/sams/
    ultralytics: Models/ultralytics/
    ultralytics_bbox: Models/ultralytics/bbox/
    ultralytics_segm: Models/ultralytics/segm/

이 파일은 ETC\ComfyUI_DATA\extra_model_paths.yaml 에 저장됩니다.

ComfyUI에서 각종 모델 파일 위치를 지정해주는 설정인데 base_path를 기준으로 상대 경로 위치가 됩니다.

3-4 ComfyUI-Zluda_run.cmd

@echo off
REM ---------------------------------------------------------------------------
REM parent path를 구함 ex) c:\AI\
FOR %%A IN ("%~dp0.") DO set PARENT_PATH=%%~dpA

set CURRENT_PATH=%~dp0
set USERPROFILE=%PARENT_PATH%ETC\USERPROFILE\
set VENV_DIR=%~dp0venv
set PYTHON_PATH=%PARENT_PATH%ETC\python3.12.10\
set GIT_PATH=%PARENT_PATH%ETC\git\cmd\
set HIP_PATH=%PARENT_PATH%ETC\ROCm\6.2\
set HIP_PATH_62=%HIP_PATH%
set "PATH=%GIT_PATH%;%HIP_PATH%;%HIP_PATH%bin;%HIP_PATH_62%;%PATH%;"

REM ---------------------------------------------------------------------------
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);"
)

REM ---------------------------------------------------------------------------
REM 컴피 전용
set COMFYUI_USER_PATH=%PARENT_PATH%ETC\ComfyUI_DATA\
set EXTRA_MODEL_PATH_FILE=%COMFYUI_USER_PATH%extra_model_paths.yaml
set COMFYUI_MODEL_PATH=%PARENT_PATH%Models\

REM ComfyUI 유저정보 저장하는 폴더가 없으면 실행 안됨
If Not Exist "%COMFYUI_USER_PATH%" (
    mkdir %COMFYUI_USER_PATH%
)

REM 추가모델 경로 설정파일 수정
set "tmp_extra_path=%EXTRA_MODEL_PATH_FILE%"
set tmp_2=base_path: %PARENT_PATH%
if exist "%tmp_extra_path%" (
	powershell -command "$text = (gc %tmp_extra_path%) -replace 'base_path: .*', $env:tmp_2; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines('%tmp_extra_path%', $text, $Utf8NoBomEncoding);"
)

REM ---------------------------------------------------------------------------
REM 가상화 실행
If Not Exist "%VENV_DIR%\Scripts\activate.bat" Exit /B 1
Call "%VENV_DIR%\Scripts\activate.bat"

REM ---------------------------------------------------------------------------

set COMMANDLINE_ARGS=--use-quad-cross-attention --highvram --output-directory "%PARENT_PATH%Outputs" --user-directory %COMFYUI_USER_PATH% --extra-model-paths-config %EXTRA_MODEL_PATH_FILE% --preview-method auto
.\zluda\zluda.exe --  python.exe main.py %COMMANDLINE_ARGS%

pause

이 스크립트는 ComfyUI를 실행합니다.

4. 마무리…

설명이 부실하긴 한데 그 부분은 근성과 기합 그리고 노오오오력 하시면 이해가 되실거라 봅니다.

그럼 제가 뽑은 짤 보시면서 좋은 하루 되시길 빌겠습니다.


Comments

“AMD 8845HS 780M으로 ComfyUI 돌려보기 (Zluda버전)”에 대한 4개의 응답

  1. ㅇㅇ 아바타
    ㅇㅇ

    ComfyUI-Zluda_run.cmd는 아래와 같이 작성해야 잘 작동하네요 (제 환경에서는)

    REM —————————————————————————
    REM parent path를 구함 ex) c:\AI\
    FOR %%A IN (“%~dp0.”) DO set PARENT_PATH=%%~dpA

    set CURRENT_PATH=%~dp0
    set USERPROFILE=%PARENT_PATH%ETC\USERPROFILE\
    set VENV_DIR=%~dp0venv
    set PYTHON_PATH=%PARENT_PATH%ETC\python3.12.10\
    set GIT_PATH=%PARENT_PATH%ETC\git\cmd\
    set HIP_PATH=%PARENT_PATH%ETC\ROCm\6.2\
    set HIP_PATH_62=%HIP_PATH%
    set “PATH=%GIT_PATH%;%HIP_PATH%;%HIP_PATH%bin;%HIP_PATH_62%;%PATH%;”
    set ZLUDA_EXE=%CURRENT_PATH%zluda.exe

    REM —————————————————————————
    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);”
    )

    REM —————————————————————————
    REM 컴피 전용
    set COMFYUI_USER_PATH=%PARENT_PATH%ETC\ComfyUI_DATA\
    set EXTRA_MODEL_PATH_FILE=%COMFYUI_USER_PATH%extra_model_paths.yaml
    set COMFYUI_MODEL_PATH=%PARENT_PATH%Models\

    REM ComfyUI 유저정보 저장하는 폴더가 없으면 실행 안됨
    If Not Exist “%COMFYUI_USER_PATH%” (
    mkdir %COMFYUI_USER_PATH%
    )

    REM 추가모델 경로 설정파일 수정
    set “tmp_extra_path=%EXTRA_MODEL_PATH_FILE%”
    set tmp_2=base_path: %PARENT_PATH%
    if exist “%tmp_extra_path%” (
    powershell -command “$text = (gc %tmp_extra_path%) -replace ‘base_path: .*’, $env:tmp_2; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines(‘%tmp_extra_path%’, $text, $Utf8NoBomEncoding);”
    )

    REM —————————————————————————
    REM 가상화 실행
    If Not Exist “%VENV_DIR%\Scripts\activate.bat” Exit /B 1
    Call “%VENV_DIR%\Scripts\activate.bat”

    REM —————————————————————————

    set COMMANDLINE_ARGS=–use-quad-cross-attention –highvram –output-directory “%PARENT_PATH%Outputs” –user-directory %COMFYUI_USER_PATH% –extra-model-paths-config %EXTRA_MODEL_PATH_FILE% –preview-method auto
    “%ZLUDA_EXE%” — python.exe main.py %COMMANDLINE_ARGS%

    pause

    1. Linsoo 아바타

      혹시 zluda dev 버전 링크를 쓰신건가요?
      dev 버전은 그냥 압축되어 있고 릴리즈버전은 zluda 폴더에 들어 있는걸로 압축되어 있거든요.

  2. ㅇㅇ 아바타
    ㅇㅇ

    C:\ai\ComfyUI-Zluda 폴더 내에서 cmd 구문을 실행 하도록 안내 해주시면 더 좋겠네요. 잘 봤습니다.

    1. Linsoo 아바타

      구문 추가했습니다.

답글 남기기

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