Vulkan이 성공하기 전 실패했던 모든 시도들이 우리의 RX 580 AI 설정을 구했다
요약
AMD RX 580 GPU를 사용하여 로컬 AI 환경을 구축하는 과정에서 DirectML, ROCm, OpenVINO 등 다양한 프레임워크를 시도하며 겪은 기술적 실패 사례를 분석합니다. 각 기술의 호환성 문제와 아키텍처 한계를 상세히 다룹니다.
핵심 포인트
- DirectML은 텐서 접근 차단 문제로 인해 성능과 안정성이 매우 낮음
- AMD ROCm은 Polaris/GCN4 아키텍처에 대한 공식 지원이 종료됨
- OpenVINO 확장 프로그램은 최신 Forge 아키텍처와 호환되지 않음
- 구형 GPU 환경에서는 프레임워크 간의 아키텍처 불일치가 주요 병목임
이 기사의 모든 이미지는 아래에 설명된 모든 문제를 해결한 후, RX 580 8GB에서 로컬로 생성되었습니다. 실패의 무덤(The graveyard). Vulkan이 작동하기 전, 우리는 모든 것을 시도했습니다. 이것은 기술적인 사후 분석(autopsy)입니다.
- DirectML — 충돌을 일으킨 Microsoft의 약속
시도: ComfyUI에서--directml플래그를 사용한torch-directml.
GPU는privateuseone0로 감지되었습니다. 유망해 보였습니다. 그러다 실행할 때마다 다음과 같은 메시지가 나타났습니다:
WARNING: torch-directml barely works, is very slow, has not been updated in over 1 year and might be removed soon, please don't use it.
NotImplementedError: Cannot access storage of OpaqueTensorImpl
근본 원인: DirectML은 텐서(tensor) 데이터를 OpaqueTensorImpl이라고 불리는 불투명한 객체(opaque objects)로 래핑(wrap)합니다. ComfyUI의 현대적인 어텐션(attention) 백엔드가 원시 메모리 콘텐츠를 읽으려고 시도할 때, Microsoft 레이어가 접근을 완전히 차단합니다. 이 프로젝트는 1년 이상 업데이트되지 않았습니다. 사실상 방치된 상태입니다.
수동 수정 시도: 2024년 5월 개발 빌드로 다운그레이드:
pip uninstall torch torch-directml torchaudio
pip install torch == 2.3.1+cpu --index-url https://download.pytorch.org/whl/cpu
pip install torch-directml == 0.2.1.dev240521 --no-deps
이 방법은 충돌을 멈추지만, 성능이 너무 느려 사용할 수 없는 수준입니다.
-
ROCm — GCN4에서는 공식적으로 종료됨
시도: AMD의 공식 GPGPU 프레임워크.
현실: AMD는 ROCm v5.x에서 Polaris/GCN4 아키텍처에 대한 공식 지원을 영구적으로 중단했습니다. 해결 방법은 없습니다.
Windows 환경: 네이티브 ROCm 지원이 전혀 없습니다.
호환 레이어를 사용한 WSL2 환경: 무거운 추론(inference) 부하 상황에서 커널 패닉(kernel panics)이 발생합니다.
RX 580에서 작동하는 유일한 ROCm 경로는gfx803을 에뮬레이션하는 Docker 컨테이너를 통하는 것인데, 이는 Amihart가 2025년 1월에 기록한 내용입니다. Stable Diffusion에는 작동하지만, Docker 오버헤드가 필요하며 현대적인 FLUX 아키텍처는 지원하지 않습니다. -
OpenVINO + Stable Diffusion Forge
시도: Forge 내부에서 Intel의sd-webui-openvino확장 프로그램을 사용하는 것.
ModuleNotFoundError: 'ldm'이라는 이름의 모듈을 찾을 수 없음
ModuleNotFoundError: 'sgm'이라는 이름의 모듈을 찾을 수 없음
Error build_unet: Invalid backend: 'openvino'
근본 원인: 해당 확장 프로그램은 구형 AUTOMATIC1111 아키텍처를 위해 설계되었습니다. Forge는 코드베이스를 완전히 재구조화했으며 기존의 ldm 및 sgm 모듈을 교체했습니다. 따라서 OpenVINO 주입(injection)이 기초 단계에서 실패합니다.
- CPU + HDD — 기준점(baseline)이 되는 재앙
GPU 가속을 사용하기 전 상황:
부팅 시간: 85초
LLM 응답 속도: 3–5 tok/s
이미지 생성: 512×512 이미지당 약 19분
FLUX 16GB 모델 로드: HDD에서 25분 소요
기계식 드라이브(HDD)는 GPU 가속의 부재만큼이나 큰 병목 현상(bottleneck)이었습니다.
실제로 작동했던 것
이 모든 과정을 거친 후: Vulkan.
llama.cpp와 stable-diffusion.cpp의 ggml 엔진은 Vulkan을 네이티브 GPU 백엔드(backend)로 사용합니다. RX 580은 2017년 드라이버부터 Vulkan 1.x를 지원해 왔습니다. 특별한 설치도, 호환성 레이어(compatibility layers)도 필요 없습니다. 그저 -DGGML_VULKAN=ON 옵션으로 컴파일하기만 하면 됩니다.
전환 후 결과:
LLM: 15–16 tok/s (3–5에서 상승)
이미지: ~72초 (약 19분에서 단축)
FLUX 로드: 30초 (NVMe로 이전한 후, 25분에서 단축)
교훈
하드웨어가 문제는 아니었습니다. 위의 모든 실패는 소프트웨어 문제였습니다:
DirectML: Microsoft에 의해 방치됨
ROCm: AMD의 아키텍처 정책 결정 문제
OpenVINO: 최신 프론트엔드(frontends)를 위한 유지보수 미비
HDD: 잘못된 저장 장치 선택
RX 580은 ggml + Vulkan을 기다리고 있었습니다.
전체 문서 📖 setup-ia-local-rx580-vulkan.web.app
📦 github.com/aivisionslab-studios/rx580-local-ai-guide
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기