TL;DR
작성자는 AMD Ryzen AI MAX+ 395와 RTX 3090 Ti에 Qwen3.8 27B를 분할 배치하고 159회 실험해, AMD 단독 9.474 tok/s 기준을 code-shaped generation에서 32K 문맥 153.32 tok/s까지 높였습니다. 가장 큰 변화는 Qwen-Sharp chat template로 출력 토큰과 wall time을 줄인 조치였고, q4_0 KV cache는 2,176 MiB를 확보해 full-attention layer를 빠른 카드로 옮기게 했습니다. draft-mtp와 ngram-mod는 코드 출력에서 72~140% 개선됐지만 외부 draft 모델과 parallel drafting은 PCIe 통신 및 27B 검증 병목으로 실패했습니다. 15/15 retrieval과 HumanEval 159/164 결과는 유의미하지만, q4_0의 품질 변화와 로컬·원격 모델 구성 차이 때문에 개별 workload에서 재검증해야 합니다.
주요 논점
작성자의 159회 실험은 layer 배치, KV cache 정밀도, chat template, 추측 생성, vision encoder 장치 선택을 분리해 비교했고 구체적인 속도·메모리·정확도 수치를 제시했습니다.
153.32 tok/s라는 수치는 code-shaped generation과 n-gram 추측 생성에 크게 의존하며, 로컬과 원격의 모델·배포 스택도 달라 순수 하드웨어 비교로 해석하기 어렵습니다.
q4_0 K cache와 비동일한 모델 구성을 사용한 비교는 품질 저하나 성능 우위를 일반화하기 어렵게 만들 수 있습니다. 다만 글 자체가 이 조건을 명시하고 자체 workload 검증을 요구합니다.
합의점 vs 논쟁점
논쟁점
- Q4_K_M 로컬 모델과 AWQ-MTP 원격 모델을 비교한 결과를 하드웨어 성능 차이로 어느 정도까지 해석할 수 있는지가 쟁점입니다. 두 시스템은 모델 양자화와 fine-tune 상태가 달라 동일 조건의 benchmark가 아닙니다. 따라서 HumanEval과 retrieval 결과는 배포 스택 전체의 사례 비교에 가깝습니다.
- q4_0 KV cache가 15/15 retrieval gate를 통과했더라도 K cache 정밀도 저하가 다른 작업의 답변 품질에 미치는 영향은 별도로 검증해야 합니다. 작성자는 이 형식이 실제 quality change라고 명시했습니다. 긴 문맥 retrieval 결과만으로 일반적인 생성 품질까지 보장할 수는 없습니다.
실용적 조언
- 긴 문맥 추론을 튜닝할 때 GPU layer 배치만 먼저 바꾸기보다 chat template의 불필요한 서술을 줄이는 실험을 우선할 필요가 있습니다. 이 글에서는 Qwen-Sharp template이 출력 토큰을 51%, wall time을 44% 줄였습니다. 같은 모델과 workload에서 template 전후의 정확도와 실제 출력 길이를 함께 기록해야 합니다.
- KV cache를 q8_0에서 q4_0으로 바꾸면 K와 V 모두에서 2,176 MiB를 확보할 수 있지만 품질 변화가 발생할 수 있습니다. 확보한 메모리는 full-attention layer를 더 빠른 GPU로 옮기는 데 사용되며, 이 실험에서는 prefill 28%와 generation 20% 개선으로 이어졌습니다. 적용 전후에 자신의 retrieval·코딩·대화 workload를 따로 실행해 품질과 속도를 함께 비교해야 합니다.
- 코드 생성에서는 draft 모델을 무조건 추가하기보다 ngram-mod와 draft-mtp를 같은 환경에서 비교하는 편이 타당합니다. 외부 draft 모델은 PCIe 통신과 순차 생성 지연 때문에 target 검증 이득을 상쇄했고 multi-lane 방식은 1.62 tok/s까지 낮아졌습니다. draft 단계의 메모리가 부족할 때는 --spec-draft-ubatch를 64로 낮춰 1,039 MiB를 확보하는 방법도 실험 대상이 됩니다.
섹션별 상세
--spec-type draft-mtp,ngram-modMTP와 n-gram 기반 추측 생성을 함께 활성화하는 llama.cpp 실행 옵션입니다.
--spec-draft-ubatch추측 단계의 micro-batch 크기를 target 설정과 분리하는 llama.cpp 옵션입니다.
MTMD_BACKEND_DEVICE=Vulkan1vision encoder를 첫 번째 GPU 대신 Vulkan1 장치에서 실행하도록 지정하는 환경 변수입니다.
용어 해설
- KV 캐시(KV cache)
- — Transformer가 이전 토큰의 Key와 Value를 저장해 긴 문맥에서 같은 계산을 반복하지 않게 하는 메모리 구조입니다. 저장 형식과 정밀도에 따라 메모리 사용량과 GPU별 layer 배치가 달라지므로 긴 문맥 추론 속도에 직접 영향을 줍니다.
- Gated DeltaNet
- — Qwen3.8의 일부 layer에 사용된 순환형 상태 갱신 구조입니다. 일반적인 full attention과 달리 모든 이전 토큰 사이의 attention을 유지하지 않으므로 문맥 길이에 따른 KV cache 부담이 적습니다. 이 글에서는 64개 layer 중 48개가 이 구조로 구성됐습니다.
- 추측 디코딩(Speculative Decoding)
- — 작은 draft 모델이나 별도 예측기를 이용해 여러 토큰을 먼저 생성한 뒤 큰 target 모델이 한 번에 검증하는 추론 방식입니다. 검증 비용과 장치 간 통신 지연이 draft 이득보다 크면 일반 생성보다 느려질 수 있습니다.
- 마이크로 배치(micro-batch)
- — 한 번의 연산에서 함께 처리하는 토큰 묶음의 크기입니다. 크기를 키우면 prefill 처리량이 높아질 수 있지만 compute buffer를 더 많이 예약합니다. 이 글에서는 draft 단계의 micro-batch를 줄여 GPU 메모리를 확보했습니다.
- HumanEval
- — 생성된 코드가 주어진 함수 문제의 공식 테스트를 통과하는지 측정하는 코드 생성 benchmark입니다. 이 실험에서는 164개 문제를 실제 coding agent인 pi-agent로 실행하고 테스트 결과를 집계했습니다.
언급된 도구
AMD Vulkan과 NVIDIA CUDA에 하나의 27B 모델을 분할 배치하고 target 및 speculative generation을 실행하는 추론 엔진입니다.
실제 coding agent로 HumanEval 164개 문제의 코드를 생성하고 공식 테스트를 실행하는 데 사용됐습니다.
원격 2x RTX 3090 환경에서 tensor parallelism 2로 모델을 서비스하고 로컬 결과와 비교하는 배포 스택입니다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.