본문으로 건너뛰기
r/LocalLLaMA조회 1

AMD Instinct MI50(gfx906)에서 ROCm 6.4 기반 llama.cpp 추론을 성공시키는 방법

공식 지원이 중단된 AMD MI50 GPU에서 ROCm 6.4와 llama.cpp를 활용해 고속 추론 환경을 구축하는 3단계 해결 방법을 제시한다.

커뮤니티 반응

공식 지원이 끊긴 구형 엔터프라이즈 하드웨어를 최신 소프트웨어 스택에서 활용하려는 시도에 대해 매우 긍정적인 반응이다. 특히 가성비 좋은 MI50 카드를 대량으로 보유한 사용자들에게 실질적인 가이드라인을 제공했다는 평가를 받았다.

실용적 조언

  • MI50 32GB 모델 사용 시 VRAM 16GB 제한이 있다면 Radeon Pro V420 VBIOS로 플래싱하여 해결할 수 있다.
  • 실행 시 HSA_ENABLE_SDMA=0 환경 변수를 설정하면 SDMA 엔진 대신 블릿 커널을 사용하여 데이터 전송 안정성을 높일 수 있다.
  • IQ4_XS와 같은 특정 양자화 형식은 gfx906에서 충돌을 일으킬 수 있으므로 Q4_K_M, Q8_0 등 표준 형식을 권장한다.

섹션별 상세

ROCm 6.4 버전부터 gfx906 아키텍처용 TensileLibrary 커널 파일이 rocBLAS 패키지에서 제외되었다. 이로 인해 추론 실행 시 아무런 오류 메시지 없이 작동이 멈추는 현상이 발생한다. 해결을 위해 Arch Linux의 rocBLAS 패키지 등에서 추출한 gfx906 관련 텐서 파일들을 /opt/rocm/lib/rocblas/library/ 경로에 수동으로 복사해야 한다.
bash
sudo cp /path/to/extracted/rocblas/opt/rocm/lib/rocblas/library/*gfx906* /opt/rocm/lib/rocblas/library/
ls /opt/rocm/lib/rocblas/library/ | grep gfx906

ROCm 6.4에서 누락된 gfx906용 rocBLAS 커널 파일을 수동으로 복사하고 확인하는 과정

메인라인 llama.cpp는 gfx906 커널을 컴파일할 때 단순한 문자열만 사용하여 실제 하드웨어의 ISA와 불일치가 발생한다. MI50은 gfx906:sramecc+:xnack-라는 구체적인 식별자를 요구하며, 이를 맞추지 않으면 'invalid device function' 오류와 함께 실행이 실패한다. iacopPBK의 전용 포크를 사용하고 컴파일 스크립트에서 해당 아키텍처 문자열을 명시적으로 지정하여 이 문제를 해결했다.
bash
// SCRIPT_compile_MI50.sh 수정
AMDGPU_ARCH="gfx906:sramecc+:xnack-"

정확한 ISA 매칭을 위해 컴파일 스크립트의 GPU 아키텍처 변수를 하드코딩하는 방법

llama-server의 초기화 과정 중 투기적 디코딩 호환성을 확인하는 common_speculative_is_compat 함수가 gfx906 환경에서 전체 프로세스를 충돌시킨다. 소스 코드의 해당 함수 시작 부분에 HIP/ROCm 빌드 시 즉시 false를 반환하도록 코드를 추가하여 이 체크 과정을 우회해야 한다. 이 패치는 투기적 디코딩 기능을 비활성화하지만 서버의 안정적인 구동을 가능하게 한다.
cpp
bool common_speculative_is_compat(llama_context * ctx_tgt) {
#if defined(GGML_USE_HIP)
    return false;
#endif
    auto * mem = llama_get_memory(ctx_tgt);
    // ...

gfx906에서 충돌을 일으키는 투기적 디코딩 호환성 체크를 비활성화하는 패치

설정이 완료된 듀얼 MI50 환경에서 Qwen3-8B Q4_K_M 모델 기준 약 62 t/s의 추론 속도를 기록했다. 두 카드의 VRAM을 합쳐 총 64GB의 HBM2 메모리를 모델 가중치와 KV 캐시에 할당할 수 있다. 다만 Qwen3.5와 같이 최신 아키텍처나 SSM/Mamba 하이브리드 레이어를 사용하는 모델은 필요한 커널이 구현되지 않아 현재 gfx906에서 실행이 불가능하다.
bash
HSA_OVERRIDE_GFX_VERSION=9.0.6 HSA_ENABLE_SDMA=0 \
./build/bin/llama-server \
-m /your/model.gguf \
--device ROCm0,ROCm1 \
--split-mode layer \
-ngl 99

환경 변수 설정과 함께 듀얼 GPU로 llama-server를 실행하는 최종 명령어

용어 해설

라데온 오픈 컴퓨팅 플랫폼(ROCm)
AMD GPU에서 가속 컴퓨팅을 수행하기 위한 오픈 소스 소프트웨어 스택이다. NVIDIA의 CUDA에 대응하며, 딥러닝 프레임워크가 AMD 하드웨어의 병렬 처리 능력을 활용할 수 있도록 라이브러리와 드라이버를 제공한다.
gfx906 아키텍처(gfx906)
AMD Instinct MI50 및 Radeon VII GPU에 사용된 Vega 20 아키텍처의 코드네임이다. ROCm 최신 버전에서 공식 지원이 중단되기 시작하여 최신 AI 도구를 실행하려면 수동 설정이 필요하다.
명령어 집합 구조 타겟 문자열(ISA Target String)
컴파일러가 특정 GPU 하드웨어의 세부 사양에 맞춰 코드를 생성할 때 사용하는 식별자이다. gfx906의 경우 sramecc나 xnack 같은 기능의 활성화 여부를 정확히 명시해야 런타임 오류를 방지할 수 있다.
투기적 디코딩(Speculative Decoding)
작은 모델이 먼저 토큰을 예측하고 큰 모델이 이를 검증하는 방식으로 LLM 추론 속도를 높이는 기법이다. 특정 하드웨어 환경에서는 이 기능을 확인하는 초기화 과정에서 시스템 충돌이 발생할 수 있다.
비디오 바이오스(VBIOS)
GPU 하드웨어를 초기화하고 운영체제와 통신하는 데 필요한 저수준 펌웨어이다. MI50 32GB 모델의 경우 VRAM 전체를 인식시키기 위해 특정 버전으로 플래싱하는 작업이 필요할 수 있다.

언급된 도구

llama.cpp (iacopPBK fork)추천링크

gfx906 아키텍처 최적화 및 ISA 매칭 수정이 포함된 LLM 추론 엔진

Open WebUI추천

llama-server를 백엔드로 사용하는 사용자 인터페이스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 21.수집 2026. 03. 21.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.