Show GN: Qwen3.5/3.6 hybrid 모델을 채굴카드(CMP 100-210)에서 돌리는 CUDA 추론 엔진
(github.com/Haru-neo)저렴하게 큰 모델을 돌릴 방법이 있을까 생각하다가 cmp 100-210을 발견해서 4장을 구매 해봤어요.
HBM2에 16GB라(개당) 좋은것 같더라구요.
근데 NVIDIA가 너무 작정하고 막아놨더라구요.
- Tensor Core가 64배 느려요 (HMMA latency 8→512 cycle)
- PCIe Gen1 x1에 P2P도 없음
- CUPTI도 막혀서 torch.profiler도 못 씀
- 다이에 박힌 e-fuse라 펌웨어로도 못 풉니다 (다 시도해봄)
그래서 vLLM, llama.cpp 기본 경로, FA, bnb 다 안 됩니다.
cuBLAS Tensor Core 건드리는 건 전부 1/64 속도로 돌거나 죽어요.
64만원치 GPU가 책상 위에서 굴러다니는 게 아까워서 직접 추론 엔진을 짰습니다.
throttle 안 걸리는 경로만 골라서:
- GEMM은 DP4A (int8, 17 TFLOP) 자작 커널
- attention은 자작 FlashAttention + MInference 스타일 block-sparse
- GPU 간엔 pinned-host로 hidden state bridge (P2P 없으니까)
- 256K context는 3-bit KV cache (WHT + Lloyd-Max) 로 17GB → 3.5GB
지금은 Qwen3.5/3.6 hybrid (GDN + Attention) 모델이면 27B / 9B 둘 다 됩니다.
OpenAI 호환 API, streaming, tool calls, vision (mmproj), /no_think 다 됩니다.
벤치 (vs llama.cpp build 8462, 같은 Q8_0 GGUF, 같은 하드웨어):
- 9B 단일 GPU prefill: 1.22 ~ 2.99x
- 27B 3GPU prefill: 1.45 ~ 2.86x
- gen은 +30 ~ 50%
솔직한 한계:
- MoE는 안 됩니다 (dense hybrid만)
- A100 / H100 있으면 vLLM 쓰세요. 훨씬 빠릅니다.
- DFlash 같은 거 코드만 있고 안 굴러갑니다 (drafter mismatch)
- Q8_0만 정식 지원
같은 환경에 갇힌 분들 도움됐으면 좋겠어요.
고1이 클로드를 이용해 만든 엔진이라 버그, 스파게티 코드등이 많을수가 있습니다.
이슈나 PR 환영합니다!