취미 기록용 블로그

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

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

  1. ㅇㅇ 아바타
    ㅇㅇ

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

    1. Linsoo 아바타

      구문 추가했습니다.

  2. ㅇㅇ 아바타
    ㅇㅇ

    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 폴더에 들어 있는걸로 압축되어 있거든요.

답글 남기기

이메일 주소는 공개되지 않습니다. (이름과 이메일은 안써도 됩니다)

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.