MI60 GPU에서 최적의 LLM 설정을 찾기 위한 30번의 벤치마크 테스트 공유 (Gemma 4, Qwen 3)
Did a 30 runs of llama-bench to find optimal settings for my use case (Frigate and HomeAssistant) on my MI60 32gb VRAM GPU - two models tested Gemma4 and Qwen3.6 - Figured I'd share in case it helps anyone else
핵심 요약
MI60 GPU 환경에서 Frigate와 HomeAssistant 최적화를 위해 Gemma 4와 Qwen 3 모델을 30회 벤치마크한 결과 공유.
- 벤치마크 자동화 — Claude로 작성한 스크립트를 통해 모델별 최적 설정값 도출함
- 하드웨어 최적화 — MI60 GPU에서 Gemma 4 및 Qwen 3 모델의 속도와 효율성 극대화함
- 사용 사례 적용 — Frigate 영상 분석 및 HomeAssistant 음성 명령 응답 속도 개선함
- 설정 변수 분석 — KV 캐시 양자화, ubatch 크기 등 다양한 파라미터가 성능에 미치는 영향 확인함
llama.cpp를 실행하기 위해 이 도커 컨테이너를 사용 중임: https://github.com/mixa3607/ML-gfx906 (이전처럼 소스에서 빌드하는 것보다 훨씬 쉬움). MI60(또는 MI50)은 Ubuntu 24.04에서 작동하게 만드는 게 정말 골치 아픈데, 이 컨테이너를 쓰면 몇 분 만에 설정이 끝나서 시간을 엄청나게 아껴줌.
아무튼, LLM을 사용하는 주된 목적은 Frigate가 카메라 영상을 검토해서 "알림 노이즈"를 줄이는 것임(마치 사람이 영상을 보고 무엇을 알아야 하고 무엇을 무시해야 할지 판단하는 것과 같음). 다른 용도는 HomeAssistant임. Alexa 기기를 다 치우고 이걸로 대체했는데 정말 대단함.
어쨌든, 내 하드웨어에서 속도와 효율성을 최대한 뽑아내고 싶었음. Claude한테 내가 사용하는 두 가지 모델에 대해 정확도가 높게 나오는 테스트 스크립트를 짜달라고 했음.
- Gemma 4 26B.A4B Q4_1
- Qwen3 35B.A3B Q4_0
MI60(및 MI50)은 _0 및 _1 양자화에서 본질적으로 속도 향상이 있어서 이걸 사용함. 둘 다 4_1을 쓰지 않는 유일한 이유는 크기 때문임. 나는 각각 고유한 캐시를 가진 3개의 슬롯을 사용하는데, Qwen 4_0과 4_1의 크기 차이가 내가 원하는 컨텍스트 크기에 비해 너무 많은 공간을 차지했음.
테스트 최종 결과는 HA(음성 명령 완료까지 1.2초 미만)와 Frigate(영상 리뷰 요약까지 18초 미만)의 속도에 엄청난 영향을 줬음. 다른 사람들에게도 도움이 될까 싶어 공유함. 아래는 Claude가 생성한 내용임(스크립트가 한 일에 대한 요약과 스크립트 실행 결과로 생성된 결과 표):
벤치마크 스윕 스크립트는 총 30번의 실행을 8개 섹션에 걸쳐 수행했음. 두 모델(Gemma 4 26B Q4_1 및 Qwen3 35B Q4_0)을 세 가지 KV 캐시 프리필 깊이(0, 1,000, 6,000 토큰)에 대해 테스트했고, 512 토큰 프롬프트와 128 생성 토큰을 고정했으며, 통계적 안정성을 위해 llama-bench 내부에서 5번씩 반복했음. 조정한 변수는 다음과 같음: 플래시 어텐션 켜기/끄기, 세 가지 레벨의 KV 캐시 양자화(f16 기본값, q8_0, q4_0), 네 가지 ubatch 크기(512, 2048, 4096, 8192), 두 가지 논리적 배치 크기(2048, 8192), 세 가지 CPU 스레드 수(8, 12, 24), 그리고 두 가지 ROCm 전용 환경 변수 — GGML_ROCM_FORCE_MMQ(1 대 0, 양자화된 matmul 커널과 rocBLAS GEMM 간 전환) 및 HSA_ENABLE_SDMA(활성화 대 비활성화, DMA와 blit-copy 메모리 전송 간 전환). 섹션 1부터 7까지는 프로덕션 기준값을 유지하면서 정확히 하나의 파라미터만 변경하여 각 항목의 성능 기여도를 명확히 파악할 수 있게 했음.


