Specter는 양자화 드래프트로 MoE 오프로딩의 PCIe 지연을 숨긴다
Specter: Fast MoE Inference via Quantization-Enabled Multi-Step Speculative Offloading
무엇인가
MoE 모델은 전문가 파라미터 전체를 단일 가속기 메모리에 올리기 어려워 비활성 전문가를 호스트 메모리로 오프로딩한다. 문제는 라우팅이 데이터 의존적이고 순차적이라 전문가 전송이 임계 경로에 남고, 기존 프리페칭은 현재 토큰의 앞선 레이어 은닉 상태로 뒤 레이어 라우팅만 예측하는 intra-token 수준에 머문다는 점이다. 이 방식은 마이크로초급 계산 창밖에 만들지 못해 기가바이트급 전문가의 밀리초급 PCIe 전송을 가리기 어렵다. Specter는 이 간극을 토큰 간 다단계 lookahead로 메우려 한다.
어떻게 동작하나
핵심 아이디어는 대상 MoE 자체를 INT4로 양자화한 모델을 드래프트로 쓰는 것이다. 별도 소형 dense 드래프트는 라우팅 기능이 없고, 독립 소형 MoE 드래프트는 학습 비용과 라우팅 불일치가 크다. 반면 양자화된 대상 모델은 동일한 라우팅 구조와 파라미터 계보를 공유해 학습 없이 전문가 활성화를 예측한다. 드래프트-검증 구조는 최종 출력 분포를 바꾸지 않으면서 여러 미래 토큰의 전문가 수요를 미리 알려 준다. Specter는 SIC, PIO, SEE 세 구성요소로 이를 시스템화한다. 다만 K개 미래 토큰을 동시에 예측하면 전문가 폭발이 일어나 PCIe 대역폭과 VRAM 캐시를 압박한다. 예를 들어 DeepSeekV2-Lite에서 K를 1에서 16으로 늘리면 레이어당 전문가 수요가 6.0에서 31.7로 5.3배 늘어 전체 64개 전문가의 거의 절반을 건드린다. Specter의 PIO와 SEE는 이 폭발을 캐시·전송·실행 스케줄로 흡수하는 장치다.
무엇과 다른가
SIC는 하이브리드 정밀도 모델 초기화, 추론 깊이 프로파일링, 대상 일관 디코딩 상태 관리를 맡는다. 임베딩·어텐션·정규화 등 비전문가 텐서는 드래프트와 타깃이 공유하고, 라우터 게이팅과 어텐션, 항상 활성화되는 공유 전문가는 FP16으로 둔다. 나머지 전문가 MLP는 INT4로 양자화한다. 추론 깊이 K는 오프라인 프로파일링으로 고른다. 측정된 평균 토큰 수용률 96.63%에서 기대 연속 수용 토큰 수가 28.7로 계산되어 Kmax를 32로 두고, K={2,4,6,8,12,16,20,24,32}를 25개 대표 프롬프트에서 세 번씩 평가해 평균 TPOT가 최소인 값을 선택한다. 그 결과 DeepSeekV2-Lite는 16, Qwen1.5-MoE는 8, Phi-3.5-MoE는 16을 쓴다. 상태 관리자는 타깃이 승인한 접두사 KV 캐시를 공유하고, 드래프트의 임시 KV 확장과 거부된 접미사는 버려 다음 반복이 유효한 KV 경계에서 시작하게 한다. 검증에서 거부가 나면 보정 토큰, 전부 수용되면 보너스 토큰이 다음 캐시되지 않은 입력이 된다.
어떻게 쓰나
PIO는 드래프트 라우터가 낸 전문가 ID를 레이어별 활성화 카운터인 ELB에 누적한다. 각 체크포인트에서 레이어별로 상위 M개 전문가를 골라 캐시 용량에 맞춘 프리페치 계획을 만들고, 이를 한 번에 CPU 런타임으로 넘겨 토큰마다 제어 동기화하는 비용을 줄인다. 레이어 인식 프리페치 플래너는 Cold Start, Prefetch Overlap, Final Cleanup 세 단계로 나누어 증분 H2D 배치를 제출하고, 예상 계산 시간과 전송 시간이 비슷해지도록 다음 청크 경계를 온라인으로 정한다. 검증이 시작되면 타깃 라우터의 권위 있는 선택을 기준으로 캐시 적중 전문가는 계산 큐에, 미적중 전문가는 H2D 큐에 넣어 남은 전송과 계산을 겹친다. SEE는 드래프트용 융합 양자화 MoE 커널과 검증용 전문가 중심 재정렬, 비동기 오버랩으로 파이프라인 버블을 줄인다.
전제와 한계
실험은 DeepSeekV2-Lite, Qwen1.5-MoE, Phi-3.5-MoE와 다섯 데이터셋에서 high-memory/low-memory 설정으로 진행됐다. 베이스라인은 vLLM, Transformers, llama.cpp, Mixtral-Offloading-SC, Mixtral-Offloading-SM, SpecMoEOff다. 단일 요청에서 Specter는 주요 베이스라인 SpecMoEOff 대비 평균 1.50배, 최대 1.88배 TPOT 개선을 냈다. Phi-3.5-MoE는 평균 163.3ms로 SpecMoEOff 292.1ms, MO-SM 295.1ms, vLLM 297.5ms, Transformers 960.6ms보다 낮았고 Transformers 대비 최대 5.9배다. Qwen1.5-MoE는 35.3ms/token으로 SpecMoEOff 66.4ms, MO-SM 74.2ms, vLLM 176.6ms, Transformers 258.2ms를 앞섰다. DeepSeekV2-Lite는 평균 TPOT를 Transformers 344.9ms에서 72.2ms로 줄였다.
배치 실험은 B={1,2,4,8,16,32}, 16토큰 접두사, 요청당 128토큰 생성으로 DeepSeekV2-Lite와 Qwen1.5-MoE에서 수행됐다. B=1에서 32로 가며 Specter의 TPOT는 각각 단일 요청 값의 1.65배, 7.37배가 됐고 처리량은 9.41배, 3.54배로 늘었다. SpecMoEOff 대비 최대 이득은 DeepSeekV2-Lite에서 B=32일 때 평균 TPOT 6.02배, B=16일 때 평균 처리량 3.89배다. Qwen1.5-MoE 12K 컨텍스트에서 전체 GPU 메모리는 7.68GB로, 드래프트와 타깃을 완전히 독립적으로 둔 단순 구현보다 43% 줄었다. 프리페치 캐시 적중률은 16GB, 24GB, 32GB 예산에서 각각 99.85%, 98.62%, 96.25%였다. 전체 로딩 시간 중 겹쳐 숨긴 비율은 DeepSeekV2-Lite 55.5%, Qwen1.5-MoE 60.5%, Phi-3.5-MoE 22.4%다. PIO를 끄면 TPOT가 69.2ms에서 83.5ms로, SIC까지 제거하면 94.4ms로, SEE까지 제거하면 130.4ms로 나빠졌다. 라우팅 예측 정확도를 1.000에서 0.410으로 떨어뜨리면 TPOT는 63.0ms에서 84.2ms로 1.34배 느려졌고, 드래프트의 타깃 전문가 재현율은 0.930~0.961을 유지했다.
개발자 관점에서 Specter는 상용 단일 GPU에서 MoE를 호스트 오프로딩할 때 양자화 드래프트를 토큰 가속기이자 라우팅 예측기로 함께 쓰는 설계를 보여 준다. 캐시 용량, KV 공유, 비동기 H2D 스트림, 커널 융합을 함께 손봐야 효과가 나며, 대상 모델의 INT4 버전이 라우팅을 얼마나 보존하는지와 K를 오프라인으로 정할 수 있는 대표 프롬프트가 있는지 먼저 확인해야 한다. 원문이 밝힌 전제는 메모리 제약 단일 GPU와 부분 오프로딩이며, K는 모델·프롬프트별 오프라인 프로파일링으로 선택한다. 평가는 세 MoE 모델과 다섯 데이터셋에 한정되고, 라우팅 오예측은 출력 품질이 아니라 프리페치·실행 성능에 영향을 준다. 별도의 한계 절은 없지만 이 전제와 민감도 수치가 적용 범위를 사실상 규정한다.