CMP 170HX GPU 2개에 최적화된 Qwen 3.8 Flash Next
Qwen 3.8 Flash Next optimized for two CMP 170hx GPUs
핵심 요약
CMP 170HX GPU 2대를 활용해 Qwen 3.8 Flash Next 모델의 추론 성능을 극대화한 최적화 레시피 공유.
- 성능 최적화 — W4A16 AutoRound 체크포인트와 vLLM 패치로 높은 처리량 달성
- 하드웨어 구성 — PCIe Gen2 x4로 연결된 CMP 170HX GPU 2대 사용
- 추론 결과 — 8개 동시 요청 시 코드 생성 기준 116 tok/s 속도 기록
- 기술적 특징 — NVMe 기반 n-gram 테이블 메모리 매핑 및 262k 토큰 컨텍스트 지원
CMP 170HX 카드 두 장 꽂아서 로컬 환경에서 Qwen 3.8 Flash Next 최적화 좀 해봤는데, 드디어 공유할 만한 결과가 나왔다. 둘 다 PCIe Gen2 x4로 돌리는 중이고, x16 모드나 TP2 같은 건 안 썼음.
W4A16 AutoRound 체크포인트에 패치된 vLLM, 파이프라인 병렬 처리, 그리고 네이티브 MTP 추측 디코딩(speculative decoding) 조합으로 돌렸다. n-gram 테이블은 NVMe에서 메모리 매핑해서 쓰고 나머지는 전부 GPU 두 장에 다 때려 박았음.
동시성별 디코딩 처리량 — 사용자당 속도가 아니라 전체 합산 tok/s 기준:
| Concurrent requests | Code | JSON | Prose |
|---|---|---|---|
| 1 | 226 | 198 | 157 |
| 2 | 363 | 320 | 212 |
| 4 | 560 | 537 | 385 |
| 8 | 840 | 873 | 567 |
코드 요청 8개 동시에 돌렸을 때, 요청당 디코딩 속도는 116 tok/s 나왔고 첫 토큰까지 231ms 걸림.
기타 결과 몇 개 더 적어봄:
-
4k~64k 프롬프트에서 프리필(prefill) 6,300~7,100 tok/s, 128k에서는 대략 5,900 tok/s 정도 나옴.
-
일반 문장 디코딩은 4k 컨텍스트에서 158 tok/s, 128k에서도 142 tok/s로 잘 버텨줌.
-
HumanEval: 157/164 (95.7%), GSM8K: 1,271/1,319 (96.4%) 찍음. 둘 다 챗 모드에 생각(thinking) 기능 끄고 돌린 결과임.
-
262,144 토큰 윈도우 꽉 채워서 사용함.
처리량 측정은 sparkDash 프로토콜 썼다. 그리디 디코딩에 생각 기능 끄고, 400 토큰 출력 고정해서 3번 돌린 것 중 중간값으로 냄. 최고점 찍은 거 가져온 거 아님. 긴 컨텍스트 디코딩 체크는 저 프로토콜에 추가로 붙인 거임.
지금까지 찾아본 CMP 170HX 2장짜리 세팅 중에서는 이게 제일 빠르길래 커뮤니티에 공유한다. 카드들 아주 날아다님 :)
전체 레시피, 고정된 Docker 이미지, 패치, 상세 결과는 여기 있음: https://github.com/AlexBrandes/cmp170hx-qwen38-flash-next
