vLLM AFD 플러그인: MoE 서빙을 위한 Attention과 FFN 분리
vLLM AFD 플러그인: MoE 서빙을 위한 Attention과 FFN 분리
vLLM은 실험적인 외부 플러그인인 vLLM AFD 플러그인을 출시했습니다. 이 플러그인은 Mixture-of-Experts(MoE) 모델에 Attention-FFN 분리(AFD) 를 구현합니다. 이 아키텍처는 Attention과 피드-포워드 네트워크(FFN) 구성 요소를 독립적으로 배포 가능한 서비스로 분리하여, vLLM 요청 생명주기나 OpenAI 호환 서빙 인터페이스를 변경하지 않고도 특정 리소스 요구에 따라 독립적으로 규모를 조정할 수 있게 합니다.
Attention-FFN 분리 근거
MoE 추론에서 Attention과 FFN 경로는 근본적으로 다른 운영 요구 사항을 가집니다. Attention은 상태를 유지하며 요청 스케줄링과 KV 캐시 관리에 연결되어 있는 반면, FFN(전문가) 경로는 라우팅된 계산과 모든-모든 통신에 의해 지배됩니다.
- 독립적인 규모 조정: Attention 용량은 시퀀스 길이와 KV-캐시 압력에 의존하며, 전문가 용량은 토큰 라우팅과 부하에 의존합니다. AFD는 이러한 경로가 서로 다른 랭크 토폴로지를 사용할 수 있게 합니다.
- 런타임 책임: 서비스를 분할함으로써 FFN 측은 경량 커넥터 기반 데몬으로 작동할 수 있어 전문가 측에서 스케줄링과 KV-캐시 조정이 필요 없어집니다.
- 백엔드별 통신: 공통 커넥터 계약은 서로 다른 하드웨어 백엔드(예: CUDA 및 Ascend)가 자체 최적화된 데이터 경로와 집단 라이브러리를 구현할 수 있게 합니다.
- 계산-통신 오버랩: 비동기 디스패치와 MoE ubatching은 독립적인 단계를 겹치게 하여 Attention 경로가 모든 전문가 작업을 직렬화하지 못하도록 합니다.
시스템 아키텍처
vLLM AFD 플러그인은 vllm.general_plugins 진입점과 --additional-config 채널을 통해 통합되며, vLLM 소스 트리를 수정할 필요가 없습니다. 런타임은 세 가지 핵심 구성 요소로 구성됩니다.
1. Attention 서비스
vLLM 스케줄러, KV 캐시, 배치, 모델 생명주기 및 샘플링 경로를 유지합니다. 플러그인 소유 모델 러너는 AFD 메타데이터를 포워드 컨텍스트에 설치하고 상태(데이터-병렬, ubatch, 레이어 및 그래프)를 FFN 서비스에 게시합니다.
2. FFN 서비스
요청 트래픽, 스케줄러 또는 KV 캐시 없이 작동합니다. 백그라운드 루프를 실행하여 메타데이터와 활성화를 수신하고, 플러그인 소유 모델 래퍼를 통해 compute_ffn_output()을 실행한 후 결과를 Attention 서비스에 반환합니다.
3. 커넥터 레이어
각 분할 레이어에서 다리 역할을 하여 Attention에서 FFN으로 숨은 상태와 실행 메타데이터를 전달하고 계산된 출력을 반환합니다.
커넥터 및 백엔드 지원 매트릭스
| 커넥터 | 백엔드 | 실행 | 권장 단계 | 그래프 지원 |
|---|---|---|---|---|
P2pNcclAFDConnector |
GPU | 동기식 P2P | 디코드 | FULL_DECODE_ONLY CUDA 그래프 |
CAMP2pAFDConnector |
NPU | 동기식 CAMP2P/HCCL | 디코드 | FULL_DECODE_ONLY ACL 그래프 |
CAMAsyncAFDConnector |
NPU | 비동기식 CAM | 프리필 | 지원되지 않음 |
성능 벤치마크
동기식 디코드 처리량 (DeepSeek-V3.2 W8A8 on Ascend 910C)
벤치마크는従来의 EP64 배포와 CAMP2pAFDConnector를 사용하는 AFD 배포를 비교했습니다. 결과는 Attention과 FFN 랭크 비율이 정규화된 처리량(토큰/초/다이)에 상당한 영향을 미친다는 것을 보여줍니다.
- 16K 고정 입력: 64A16F 구성(64 Attention, 16 FFN 랭크)은 258.9 토큰/초/다이를 달성하여 EP64 기준선(232.6 토큰/초/다이)보다 11.3% 증가했습니다. 48A16F 구성은 기준선보다 낮은 220.3 토큰/초/다이(-5.3%)를 기록했습니다.
- 32K 고정 입력: 64A16F 구성은 183.3 토큰/초/다이를 달성하여 EP64 기준선(168.2 토큰/초/다이)보다 9.0% 증가했습니다. 48A16F 구성은 기준선보다 10.0% 낮았습니다.
이 결과들은 분리만으로는 성능 향상을 보장하지 못하며, Attention과 FFN 사이의 랭크 할당이 중요함을 보여줍니다.
비동기식 프리필 성능 (DeepSeek V3.2 W8A8 on Ascend 910C)
10층 축소된 모델에서 CAMAsyncAFDConnector를 사용한 초기 실험에서 DP4PCP8 TP1 기준선과 AFD 레이아웃(Attention DP3PCP8 TP1 + FFN EP8)을 비교했습니다.
초당 12 요청의 요청률에서 median Time to First Token(TTFT)이 15.1초에서 8.0초로 감소하여 약 47% 감소함을 나타냅니다.
구현 및 로드맵
현재 지원
- 모델: DeepSeek V2/V3 패밀리(DeepSeek V3.2 포함)와 GLM MoE DSA용 래퍼.
- 하드웨어: NVIDIA GPU와 Ascend NPU.
- 실행 경로: eager, 그래프, 듀얼-배치 실행 지원; 동기식 커넥터에 대한 디코드 전용 그래프 캡처.
- 요구 사항: Python 3.10–3.13 및 vLLM
0.19.1.
미래 개발
- 업스트림 정렬: 최신 vLLM 릴리스 추적 및 모델 러너 v2 평가.
- 실행 유연성: 그래프 모드, ubatch 수 및 비동기 단계 확장.
- 프로덕션 검증: 전체 모델과 현실적인 워크로드에 대한 안정성, 정확도 및 지연 시간 결과 게시.
- 확장된 적용 범위: 더 많은 MoE 아키텍처 및 백엔드 전송 추가.
- 멀티모달 통합: vLLM-Omni 내에서 autoregressive(AR) 및 Diffusion Transformer(DIT) 단계에 대한 AFD 적용 탐색.
- 이종 하드웨어: TTFT 및 인터-토큰 지연 시간을 줄이기 위해 다양한 가속기 유형에서 Attention과 FFN 역할 배치를 조사.