efficientmoe/moe-infinity는 MoE(Mixture of Experts, 여러 전문가 중 일부만 활성화해 연산량을 줄이는 모델 구조) 모델을 PyTorch로 서빙하는 라이브러리다. 2026년 10월 26일 커밋 a0b48949a67082456befef910b9817b37f8a47b9는 여기에 Qwen3.5-MoE의 paged attention(키·값 캐시를 고정 크기 블록으로 나누어 관리하는 방식) 서빙을 추가했다. 이 모델 계열은 한 번에 여러 토큰을 디코드할 때 출력이 깨지는 상태였다.
추가된 Qwen3_5MoePagedAttention은 게이트가 걸린 풀 어텐션 계층만 HuggingFace의 어텐션 구현을 대체해 paged KV 캐시에 연결한다. 선형 어텐션 계층인 Gated DeltaNet과 비전 타워는 원래 클래스를 그대로 쓰며, 캐시는 풀 어텐션 계층 인덱스로만 크기를 잡고 키를 매겨 선형 계층에는 KV 영역을 할당하지 않는다. Gated DeltaNet의 conv·recurrent 상태는 시퀀스별로 따로 보관하고, GPU에는 최대 max_batch_size개 시퀀스(시퀀스당 스냅샷 두 개)만 남긴다. 그 밖의 시퀀스는 최근 사용이 적은 순으로 호스트 메모리로 옮기고 다음 forward에서 되살린다.
이미지·영상 프롬프트에는 HuggingFace의 get_rope_index로 M-RoPE 위치를 계산하고 이후 디코드마다 시퀀스별 rope delta를 적용한다. 같은 커밋은 러너와 엔진이 서로를 참조해 엔진이 버려진 뒤에도 GPU KV 스토어(32GB V100에서 엔진당 5.4GiB)가 사이클릭 GC까지 남던 문제를 약한 참조 기반으로 고쳐 V100의 test_engine.py에서 OOM 7건이 사라졌다. 오프로드 경로의 수정으로 Qwen3.5-MoE 상주 백본 배치는 GPU 쪽으로 바뀌었다. 새 모듈 boundary/, serving/linear_attention_state.py와 1162줄짜리 테스트 파일이 늘었다.
다만 선형 어텐션 상태는 캐시로 재사용할 수 없어 prefix reuse와 chunked prefill, speculative 실행이 hybrid_linear_attention_state_unsupported라는 사유로 꺼져 있고 decode CUDA graph도 대상이 아니다. 호환성 문서는 이 기능을 'Qwen3.5 paged serving tiny-checkpoint validated (CPU)' 수준으로만 적고 있으며 GPU 실측 성능 수치는 제시하지 않는다. 실제 모델에서 확인할 판단은 아직 이르다.