Native Vulkan을 통해 구형 AMD RX 580 (8GB)에서 Flux Schnell (12B) 및 LLM 실행하기 — 전체 아키텍처
요약
AMD RX 580과 같은 구형 GPU에서 Vulkan을 활용해 Flux Schnell 및 LLM을 실행하는 기술적 방법을 분석합니다. ROCm이나 CUDA 없이도 하이브리드 메모리 세분화를 통해 제한된 VRAM 환경에서 AI 모델을 구동하는 아키텍처를 제시합니다.
핵심 포인트
- Vulkan 네이티브 빌드를 통해 ROCm 지원이 끊긴 Polaris 아키텍처 활용 가능
- 하이브리드 메모리 세분화로 VRAM 초과 모델을 CPU/GPU에 분산 배치
- DirectML의 OpaqueTensorImpl 오류를 우회하는 기술적 대안 제시
- Flux Schnell 구동 시 VAE 및 T5XXL의 CPU 할당이 필수적임
대부분의 사람들은 2026년에 RX 580이 AI용으로는 수명이 다했다고 들었습니다. CUDA 전용 생태계, v5.x 버전부터 Polaris 지원을 중단한 ROCm, 그리고 성숙하기도 전에 버려진 DirectML 때문입니다. 이것은 우리가 그 생각이 틀렸음을 증명한 전체 기술적 분석입니다.
하드웨어 설정
GPU: AMD RX 580 2048SP — 8GB GDDR5 VRAM (Vulkan 1.x native)
CPU: Intel Xeon E5-2690 v3 — 12c/24t @ 3.5GHz boost
RAM: 32GB DDR4 REG ECC Quad Channel
Storage: NVMe 1TB — 결정적인 병목 현상 해결책
OS: Windows 10 Pro + WSL2 Ubuntu 22.04.5
다른 모든 방법이 실패한 이유
| 솔루션 | 상태 | 이유 |
|---|---|---|
| CUDA | ❌ | Nvidia 전용 |
| ROCm | ❌ | v5.x에서 Polaris 지원 중단 |
| DirectML | ❌ | CLIPTextEncode에서 OpaqueTensorImpl 충돌 발생 |
| OpenVINO | ❌ | Forge에서 ldm/sgm 모듈 누락 |
DirectML의 치명적인 오류: NotImplementedError: Cannot access storage of OpaqueTensorImpl. 드라이버가 메모리를 OpaqueTensorImpl로 래핑(wrap)하여 ComfyUI의 어텐션(attention) 백엔드가 읽을 수 없습니다. 이는 막다른 길입니다.
해결책 — 이중 아키텍처 (Dual Architecture)
경로 1 — GPU Vulkan (RX 580 가속)
-DGGML_VULKAN=ON으로 컴파일된 stable-diffusion.cpp의 네이티브 빌드. ggml 엔진은 ROCm이나 CUDA 없이 GPU에 직접 매핑됩니다. SD 1.5 GGUF 모델은 약 72초 만에 렌더링됩니다.
경로 2 — CPU Xeon (SOTA 헤비 모델)
FLUX.1 Schnell은 16GB를 사용하여 물리적 VRAM을 초과합니다. ComfyUI는 WSL2 내부에서 CPU를 통해 실행되며, 안정적인 가상 VRAM으로서 ECC RAM을 사용합니다. 전체 768x768 생성에 약 24분이 소요됩니다.
Flux (12B Q4_K)를 위한 하이브리드 메모리 세분화 (Hybrid Memory Segmentation)
| 구성 요소 | 파일 | 할당 | 크기 |
|---|---|---|---|
| Diffusion Model | flux1-schnell-q4_k.gguf | GPU VRAM | ~6.5GB |
| VAE | ae.safetensors | CPU RAM | ~160MB |
| CLIP L | clip_l.safetensors | GPU VRAM | ~235MB |
| T5XXL | t5xxl_fp16.safetensors | CPU RAM | ~9.3GB |
실행 명령 (Production command)
sd-server.exe --listen-ip 0.0.0.0 --listen-port 7860 \ --diffusion-model "E:\models\flux1-schnell-q4_k.gguf" \ --vae "E:\models\ae.safetensors" \ --clip_l "E:\models\clip_l.safetensors" \ --t5xxl "E:\models\t5xxl_fp16.safetensors" \ --cfg-scale 1.0 --steps 4 --clip-on-cpu --vae-on-cpu --vae-tiling
--vae-on-cpu와 --vae-tiling은 타협할 수 없는 필수 사항입니다. 이것들이 없으면 즉시 DeviceMemoryAllocation 충돌이 발생합니다.
| 작업 부하 (Workload) | 백엔드 (Backend) | 결과 (Result) |
|---|---|---|
| LLM 텍스트 추론 (LLM text inference) | CPU 전용 (CPU only) | 3–5 tokens/s ❌ |
| LLM 텍스트 추론 (LLM text inference) | RX 580 Vulkan | 15–16 tokens/s ✅ |
| SD 1.5 20 steps | DirectML | ~450s + 충돌 (crash) ❌ |
| SD 1.5 20 steps | Vulkan native | ~72s ✅ |
| Flux 1024x1024 | Xeon CPU WSL2 | ~24 min ✅ |
NVMe의 영향: 모델 로드 시간이 25분(HDD)에서 4분(NVMe)으로 단축되었습니다. Flux 16GB의 경우: 25분에서 약 30초로 단축되었습니다. 저장 장치는 연산 장치만큼이나 중요합니다.
서비스 맵 (Service Map)
OpenWebUI Docker :3000
├── llama-server.exe :8081 (Vulkan — RX 580)
├── sd-server.exe :7860 (Vulkan — RX 580)
└── ComfyUI :8188 (CPU — Xeon WSL2)
리소스 (Resources)
전체 문서, .bat 오케스트레이션 스크립트, 컴파일된 바이너리 및 모델 설정: 👉 https://setup-ia-local-rx580-vulkan.firebaseapp.com/
하드웨어는 죽지 않습니다. 올바른 소프트웨어를 통해 해방될 뿐입니다. 구형 AMD 카드를 사용 중이신가요? 여러분의 버퍼 할당(buffer allocation) 및 커맨드 큐 지연 시간(command queue latency) 조사 결과를 댓글로 공유해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기