capy-flash v0.7.4: 두 개의 GPU를 사용하는 Qwen3.8 엔진의 현황, 용도 및 향후 계획
요약
capy-flash v0.7.4는 Qwen3.8 모델을 위해 개발된 엔진으로, 두 개의 GPU를 활용한 텐서 병렬 처리에 중점을 둡니다. 특히 NVFP4 양자화를 통해 높은 성능과 품질을 달성하며, 다양한 하드웨어 환경에서 실행 가능합니다. 이 엔진은 Strata 대비 코딩 세션 등 전반적인 작업에서 평균 약 1.76배 빠른 속도를 보여주었습니다.
핵심 포인트
- 두 개의 GPU를 사용한 텐서 병렬 처리가 핵심이며, NVFP4 양자화를 적용했습니다.
- 3-bit 전문가 모델(experts)이 더 작은 크기 덕분에 디코딩 속도가 빠릅니다.
- Strata와 비교했을 때, 전반적인 작업에서 평균 약 1.76배 빠른 성능을 기록했습니다.
- Linux 환경의 다중 GPU 구성에서 최적화되었으며, Windows도 WSL2/Docker로 실행 가능합니다.
마지막 게시물 이후 시간이 좀 지났기 때문에, capy-flash가 현재 어떤 상태인지 알려드립니다. 이 엔진은 제가 직접 만든 것으로, 두 모델인 Qwen3.8-27B와 Qwen3.8-Flash-Next를 위한 것입니다. 원래는 NInfer의 ninfer-tp2 포크로 시작했으며 PCIe를 통한 텐서 병렬(tensor parallel) 기능을 추가했지만, 지금 시점에서는 자체적인 엔진이 되었고 원본 코드는 거의 남아있지 않습니다.
용도 (What it's for)
리눅스 환경에서 RTX 50 카드 두 장을 사용하는 것입니다. 두 카드에 걸친 텐서 병렬 처리와, Flash-Next의 경우 두 카드가 공유하는 VRAM expert cache가 있으며, 누락(misses)은 CPU로 계산됩니다. 모든 것은 하나의 시스템에서 조정되었습니다: 2× RTX 5070 Ti 16 GB, Ryzen 9 9900X, 96 GB DDR5. 이 엔진은 특히 NVFP4 Nvidia quantisation을 위해 탄생했습니다. 또한 더 작은 구성에서도 실행할 수 있어 더 많은 사람들이 시도해 볼 수 있습니다: 16 GB 카드 한 장 (5060 Ti 이상), 64 GB RAM과 함께 Flash-Next, 또는 5070 Ti와 5060 Ti 같은 혼합 쌍입니다. 사용자들은 issues에 2× 5080, 2× RTX PRO 4000 Blackwell, 그리고 2× 5060 Ti의 수치를 게시했습니다. 또한 WSL2나 Docker를 통해 Windows에서도 실행할 수 있습니다. 이 경우 두 카드의 속도는 리눅스보다 느리며, 네이티브 Windows 포트는 현재 진행 중입니다.
용도가 아닌 것 (What it isn't)
단일 카드에서 NInfer나 Strata를 능가하려 하지는 않습니다. 만약 GPU가 하나만 있거나(예: 5090 옆의 5060 Ti, Mac, AMD 카드와 같은) 특이한 조합이라면, 해당 엔진들을 살펴보는 것이 좋습니다. 이들은 매우 훌륭하며, 단일 카드에서는 종종 제가 만든 것보다 빠릅니다. capy-flash가 단일 카드에서도 작동하는 주된 이유는 사용자가 엔진이나 모델 파일을 변경하지 않고 하나로 시작하여 나중에 두 번째 카드를 추가할 수 있도록 하기 위함입니다.
현황 (Where it stands)
모두 제 시스템에서, 한 번에 하나의 요청을 처리합니다. 디코딩은 LocalMaxxing reasoning-v1을 사용하며, '검증됨(verified)'이라는 것은 검증된 LocalMaxxing 실행을 의미합니다.
| 모델 | 카드 | 디코드 토크/초 (tok/s) | 프리필 토크/초 (tok/s) |
|---|---|---|---|
| Qwen3.8-Flash-Next | NVFP4 (96 GB RAM) 2× 5070 Ti | 178 | 4,828 |
| Qwen3.8-Flash-Next | 3-bit (64 GB RAM) 2× 5070 Ti | 234 | 3,994 |
| Qwen3.8-Flash-Next | 3-bit (64 GB RAM) 1× 5070 Ti | 121 | 2,921 |
세 가지 디코드 수치 모두 검증된 실행 결과입니다. 3-bit 전문가 모델이 더 작기 때문에 디코딩 속도가 더 빠릅니다.
NVFP4가 품질 면에서 최고의 선택입니다. Strata 자체 수치에 따르면 3-bit 전문가(experts)의 KL 값의 절반 수준이며, GSM8K와 MMLU-Pro에서는 동일한 가중치를 사용했을 때 GB300을 사용하는 vLLM과 동등합니다. 같은 장비에서 직접 테스트해 본 결과 Strata와 비교하자면: NVFP4 (2개 카드)가 명확하게 앞섭니다. 동일한 NVIDIA 가중치로 짧은 프롬프트에서는 약 1.5배 빠르고, 언어 및 코드 전반에 걸쳐 평균적으로는 약 1.76배 빠르며, 실제 53턴의 코딩 세션이 268초가 아닌 177초 만에 완료됩니다. 이는 제가 NVFP4로 측정한 마지막 버전인 Strata 0.1.45와 비교한 수치입니다.
3-bit, Strata 0.2.2의 IQ3_S 전문가를 사용했을 경우: 전반적으로는 Strata가 더 빠릅니다. 긴 프리필(prefill)은 카드 1개 또는 2개를 사용하는 Strata에서 더 빠릅니다. 카드 1개에서는 디코딩 속도도 더 빠르지만, 이는 주로 캐시를 놓치는 낮은 순위의 전문가를 제거하는 'route tail skip' 기능 덕분입니다. 저는 모델이 선택하는 모든 전문가를 계산합니다. 이 스킵 기능을 비활성화하면, Strata는 카드 1개에서 저보다 약 10% 느리게 디코딩됩니다. 두 개의 카드를 사용했을 때는 스킵 기능을 활성화해도 제 디코딩 속도가 약간 앞섭니다.
Qwen3.8-27B의 경우, Strata에서는 실행되지 않습니다. 두 개의 카드에 걸쳐 VRAM에 적재 가능 여부는 다음과 같습니다:
| 가중치 | 카드 수 | 디코드 (tok/s) | 검증됨 |
|---|---|---|---|
| NVFP4, DFlash2 | 2× 5070 Ti | 379 | 예 |
| NVFP4, MTP | 2× 5070 Ti | 175 | 아니오 |
| NVFP4, MTP (총 8 요청) | 2× 5070 Ti | 927 | 아니오 |
| 3-bit, MTP | 2× 5070 Ti | 288 | 예 |
| 3-bit, MTP | 1× 5070 Ti | 174 | 예 |
'아니오'로 표시된 두 행은 LocalMaxxing이 아닌 제가 직접 측정한 동시성(concurrency) 벤치마크 결과입니다.
NVFP4를 두 개의 카드로 사용한 프리필 속도는 4-16k에서 약 9,300 tok/s, 64k에서 6,300 tok/s입니다. 제가 측정한 것 외에 LocalMaxxing에서 확인한 가장 빠른 2개 카드 실행은 SGLang 포크를 2× 5090으로 사용했을 때의 315입니다.
3-bit 방식도 비용이 따릅니다: GSM8K는 NVFP4와 동일하지만, MMLU-Pro 점수는 0.78에서 약 0.72로 떨어집니다. 두 개의 카드를 사용할 때는 NVFP4가 더 나은 선택입니다.
v0.6 이후 변경된 사항:
- 카드 1개부터 시작하여 나중에 카드 2개를 추가할 수 있게 되었습니다.
- Flash-Next: RAM 64GB를 가진 카드 1개 또는 2개에서 사용 가능합니다 (ISTA-DASLab의 3-bit 전문가 활용).
- 27B 모델을 3-bit 가중치로 카드 1개(16GB)에 사용할 수 있습니다.
- 디스크 기반 컨텍스트 캐시 기능이 추가되었습니다 (@KouShuo가 아이디어와 첫 버전을 구현).
- 긴 에이전트 세션이 재시작 후에도 유지됩니다.
두 개의 카드를 사용하는 27B 모델의 경우, 80k 토큰을 재개하는 데 21초의 프리필(prefill) 대신 0.7초가 소요되었고, 140k 토큰은 48초 대신 1.1초가 소요되었습니다 (토큰 수는 동일). 64GB Flash-Next에서는 더 빠른 긴 프롬프트 처리가 가능합니다: 두 카드를 사용할 경우 64k 프리필에서 +19% 향상, 한 카드를 사용할 경우 +35% 향상이 관찰됩니다.
에이전트 클라이언트(Agent clients)의 경우, Claude Code, Codex CLI 및 OpenCode가 서버를 대상으로 작동하며, 설정 방법은 README에 나와 있습니다. 만약 사용자의 클라이언트가 개발자 역할을 전송하여 400 에러를 받았을 경우, HF 아티팩트에는 이를 수용하는 채팅 템플릿이 포함되어 배포됩니다.
CPU 측면에서는 전문가 스레드(Expert threads)가 CPU에서 선택되며 taskset을 준수하고, AVX2 CPU도 작동하며, API 키는 파일에서 가져올 수 있고, 동일 포트의 두 번째 서버는 거부됩니다. Qwen4의 목표는 출시되는 즉시 완전한 Qwen4 지원을 하는 것입니다. Flash-Next가 이미 새로운 아키텍처의 대부분을 사용하고 있기 때문에 상당 부분 작업이 완료되었습니다.
저장소(The repo)와 부탁: 최근 몇 주 동안 저장소가 크게 성장했습니다. 거의 100개의 스타와 약 30개의 이슈 및 PR이 있습니다. 최근 배포된 내용 대부분은 이러한 이슈들에서 비롯되었으므로, 이슈를 열어주신 모든 분께 감사드립니다. 하지만 이곳은 1인 프로젝트입니다. 저는 이슈, 기기 사양에 대한 수치, 기능 요청을 받는 것은 환영하지만, 이 모든 것을 따라가기는 어렵습니다. 초점이 맞춰지고 구조화된 PR이 매우 환영받으며, 무언가를 가장 빠르게 반영할 수 있는 방법입니다.
한 가지 더 말씀드립니다. GitHub에는 여전히 capy-flash가 NInfer의 포크(fork)로 나열되어 있지만, 실제로는 그렇지 않습니다. 히스토리, 스타 등 다른 내용을 잃지 않으면서 이를 분리하는 방법을 아시는 분은 저에게 메시지를 보내주시면 감사하겠습니다. 티켓을 올려보았지만 작동하지 않았고 AI 지원에 의해 차단되었습니다.
제한 사항: Linux에서 가장 좋습니다. Windows에서는 WSL2 또는 Docker를 통해 실행되며, 두 카드를 사용할 경우 속도가 느립니다. RTX 50 시리즈(sm_120)의 경우, 제가 제시하는 수치는 한 대의 기기에서 얻은 것과 이슈를 통해 보고된 내용을 합친 것입니다. Flash-Next에서는 요청당 하나가 테스트 사례입니다. 만약 50 시리즈 카드 두 개를 사용하신다면, 특히 P2P(Peer-to-Peer) 기능이 있는 보드와 9900X 이외의 CPU를 사용하는 경우 수치를 공유해 주시면 감사하겠습니다.
저장소(Repo): https://github.com/ValerioDolci/capy-flash
릴리스(Releases): https://github.com/ValerioDolci/capy-flash/releases /u/FeydRowan가 r/LocalLLaMA에 제출함 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기