Muse Spark Open에 대한 vLLM Day 0 지원: 816B-A42B MoE, DSpark 추측 디코딩 및 LoRA RL

vLLM과 Meta Superintelligence Labs는 오픈 가중치 희소 혼합 전문가 모델인 Muse Spark Open에 대한 day 0 지원을 출시했습니다. 이 모델은 총 816B 파라미터와 토큰당 42B 활성 파라미터를 가지며, 장기 에이전트 코딩 워크플로우를 위해 설계되었습니다. 이번 릴리스가 중요한 이유는 현재까지 가장 뛰어난 미국 오픈 가중치 모델(Muse Glimmer 30B가 증류된 모델)을 가중치가 공개된 당일에 Nvidia, AMD, TPU 하드웨어에서 프로덕션 서빙 스택으로 제공하기 때문입니다.

Muse Spark Open이란 무엇인가

Muse Spark Open은 장기 에이전트 코딩 워크플로우를 위해 설계된 오픈 가중치 희소 혼합 전문가(MoE) 모델입니다. vLLM은 이를 현재까지 가장 뛰어난 미국 오픈 가중치 모델로 설명하며, Muse Glimmer 30B가 이 모델에서 증류되었다고 언급합니다.

주요 사양은 다음과 같습니다:

  • 아키텍처: 총 816B 파라미터, 토큰당 42B 활성 파라미터, 1M 컨텍스트 창.
  • 양자화: Meta는 BF16 및 NVFP4 형식으로 모델을 출시했습니다. MXFP4 가중치는 AMD에서 출시되었습니다.
  • 멀티모달: Muse Glimmer에서 사용하는 것과 동일한 Perception Encoder를 통한 네이티브 이미지 및 비디오 인식, 추가 오디오 지원.
  • 병렬 처리: Nvidia 및 AMD에서 텐서 병렬 처리 및 파이프라인 병렬 처리. Nvidia에서 전문가 병렬 처리(EP), TEP, DEP, PD 분리. TPU에서도 초기 지원이 제공됩니다.
  • 추측 디코딩: vLLM 팀이 학습시킨 DSpark 드래프트 모델로, CUDA 및 ROCm에서 지원되며 SPEED 벤치에서 테스트되었습니다.

실행 방법

두 벤더 모두에 대해 사전 빌드된 이미지를 사용할 수 있습니다:

  • Nvidia: vllm/vllm-openai:muse-spark-open
  • AMD: vllm/vllm-openai-rocm:muse-spark-open

이 모델은 PR #61879의 코드가 검토되고 병합된 후에만 nightly PyPI 휠에서 사용할 수 있으며, vLLM에 따르면 일반적으로 약 일주일이 걸립니다.

권장 서빙 명령은 Rust 프론트엔드를 사용하고 전문가 병렬 처리, 1M 토큰 최대 모델 길이, Muse 추론 및 도구 호출 파서, DSpark 추측 디코딩을 활성화합니다:

# Rust 프론트엔드 권장
حامل VLLM_USE_RUST_FRONTEND=1

vllm serve meta-models/Muse-Spark-Open-816B-A42B-NVFP4 \
    --tensor-parallel-size 8 \
    --enable-expert-parallel \
    --max-model-len 1048576 \
    --reasoning-parser muse \
    --tool-call-parser muse \
    --enable-auto-tool-choice \
    --speculative-config '{"method":"dspark","model": "Inferact/Muse-Spark-Open-DSpark","num_speculative_tokens":7,"draft_sample_method":"probabilistic","rejection_sample_method":"block","enable_adaptive_verification":true}'

일반 텍스트 요청은 reasoning_effort를 xhigh로 설정할 수 있습니다:

curl http://localhost:8000/v1/chat/completions \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "meta-models/Muse-Spark-Open-816B-A42B-NVFP4",
      "messages": [{"role": "user", "content": "Refactor this module."}],
      "reasoning_effort": "xhigh"
    }'

멀티모달 요청은 단일 메시지에서 이미지, 비디오 및 오디오 콘텐츠 부분을 허용합니다:

curl http://localhost:8000/v1/chat/completions \
   -H 'Content-Type: application/json' \
   -d '{
     "model": "meta-models/Muse-Spark-Open-816B-A42B",
     "messages": [{"role": "user", "content": [
       {"type": "image_url", "image_url": {"url": "https://example.com/screenshot.png"}},
       {"type": "video_url", "video_url": {"url": "https://example.com/demo.mp4"}},
       {"type": "audio_url", "audio_url": {"url": "https://example.com/clip.wav"}},
       {"type": "text",      "text": "What is happening here, and when?"}
     ]}]
   }'

모델 아키텍처: 816B 파라미터의 위치

Muse Spark Open은 텍스트 디코더를 포함한 총 816B 파라미터의 혼합 전문가 모델이며, 그 외에 2B 비전 인코더와 소형 오디오 인코더가 있습니다. 디코더는 62개의 레이어로 구성되며, 모든 레이어가 혼합 전문가 레이어입니다.

가중치 예산은 다음과 같이 나뉩니다:

부분 크기
레이어당 256개 전문가 799 B
어텐션 13.5 B
MoE 잠재 투영 4.2 B
임베딩 및 출력 레이어 3.3 B
비전 타워(별도) 1.9 B

아키텍처는 Muse Glimmer와 유사하며, 이해할 가치가 있는 세 가지 설계 선택이 있습니다.

샌드위치 정규화

대부분의 디코더는 각 블록 앞에 하나의 정규화 레이어를 배치하여 x + F(norm(x))를 만듭니다. Muse Spark Open은 Muse Glimmer와 마찬가지로 블록 앞과 뒤에 하나씩 정규화를 배치합니다 — "블록이 그 사이에 있는 샌드위치의 두 조각처럼" — x + post_norm(F(norm(x)))를 만듭니다.

잠재 MoE

모든 MoE 레이어는 해당 레이어의 256개 전문가가 공유하는 두 개의 추가 행렬을 포함합니다. 코드는 이를 pooler 및 unpooler라고 부르지만, 둘 다 일반적인 의미의 풀링은 아닙니다. 둘 다 차원을 축소하고 확장하는 학습된 투영입니다. Pooler는 8192 × 4096 행렬로, 전문가에 도달하기 전에 각 토큰의 너비를 절반으로 줄이고, unpooler는 이후 전체 너비를 복원합니다. 따라서 전문가는 8192가 아닌 전체적으로 4096에서 작업하므로 두 전문가 투영 레이어에 필요한 파라미터 수를 효과적으로 절반으로 줄입니다.

하이브리드 슬라이딩 윈도우 및 전체 어텐션

레이어는 4의 반복 주기로 전체 어텐션과 슬라이딩 윈도우 어텐션(SWA)을 번갈아 사용합니다. 3개 레이어는 2048 토큰 창을 처리하고 네 번째는 전체 컨텍스트를 봅니다. 이 주기는 스택 끝에 고정되어 마지막 레이어는 항상 전체 어텐션 레이어입니다. 62개 레이어에서 46개의 좁은 레이어와 16개의 넓은 레이어가 생성되며, 좁은 레이어는 최근 KV만 보유합니다. 1M 토큰에서 캐시는 전체 어텐션이 필요한 것의 4분의 1보다 약간 더 많은 수준이 되며, 이는 1M 컨텍스트 길이를 실현 가능하게 만드는 요소입니다.

비전 및 오디오 인코더

Muse Spark Open은 Muse Glimmer와 동일한 Perception Encoder를 사용합니다. 이는 2B 파라미터 타워로, 이미지를 정사각형으로 크기 조정하지 않고 네이티브 해상도로 읽습니다. 비디오는 동일한 인코더를 통과합니다. 프레임은 로드 시 일련의 샘플링된 비디오 프레임으로 샘플링되며, 타임스탬프는 프롬프트에서 토큰화됩니다.

오디오는 24kHz의 원시 파형으로 읽히며, 1920개 샘플(80ms)마다 일련의 변환을 통해 하나의 토큰이 됩니다. 전체 오디오 인코더는 118M 파라미터에 불과합니다. 비디오의 오디오 트랙은 처리되지 않습니다. 모델에 클립의 영상과 소리를 모두 제공하려면 비디오와 추출된 오디오를 동일한 요청의 두 개별 콘텐츠 부분으로 보내십시오.

DSpark 추측 디코딩

vLLM에서 Muse Spark Open 추론을 가속화하기 위해 팀은 DSpark를 사용하여 스페큘레이터를 학습시켰습니다. DSpark는 블록 확산을 사용하여 단일 패스에서 최대 7개의 드래프트 토큰을 제안하는 추측 디코딩 알고리즘입니다. 신뢰도 기반 스케줄링은 추측 디코딩이 전통적으로 수익이 감소하는 대규모 배치 크기에서도 상당한 속도 향상을 유지하는 데 도움이 됩니다.

스페큘레이터는 또한 Muse Spark Open의 슬라이딩 윈도우 어텐션을 사용하여 1M 토큰 컨텍스트에서도 드래프팅을 가볍게 유지합니다. 이러한 선택은 다양한 배치 크기와 컨텍스트 길이에 걸친 프로덕션 워크로드에 적합하게 만듭니다.

DSpark는 서버 시작 시 다음으로 활성화됩니다:

--speculative-config '{"method":"dspark","model": "Inferact/Muse-Spark-Open-DSpark","num_speculative_tokens":7,"draft_sample_method":"probabilistic","rejection_sample_method":"block","enable_adaptive_verification":true}'

하드웨어 백엔드: Nvidia, AMD 및 TPU

Nvidia

Nvidia 팀은 FlashInfer 및 vLLM 전반에 걸쳐 Muse Spark Open 추론을 개선했습니다. 융합 정규화, 게이팅 및 잔차 커널, 텐서 병렬 통신 및 RMSNorm과 함께하는 융합 MoE 마무리, 새로운 저지연 BF16 GEMM 구현 및 컴파일 오버헤드 감소, 융합 MNNVL 컬렉티브와 함께하는 TEP pooler/unpooler 샤딩, norm의 FP32 출력으로 공급되는 TF32 라우터 GEMM, 데이터 이동, 하드웨어 지원 및 런타임 안정성 개선을 포함합니다.

AMD

AMD 팀의 지원으로 Muse Spark Open은 AMD Instinct MI355X GPU에서 FP8 및 MXFP4 양자화 형식으로 실행되어 추론 성능과 배포 효율성을 제공합니다. ROCm은 현재 텐서 병렬 처리와 파이프라인 병렬 처리를 모두 지원합니다.

TPU

vLLM은 TorchTPU 위에 Muse Spark Open 지원을 추가했습니다. 코드 액세스는 vLLM 또는 Google에 문의해야 합니다. 팀은 또한 Muse Spark Open용 메가커널을 구축했습니다. DSpark 추측 디코딩을 수용 길이 6으로 사용하면 4개의 TPU v7 칩에서 초당 650개 이상의 토큰, 8개 칩에서 초당 960개 이상의 토큰에 도달합니다. 추측 디코딩 없이도 각각 초당 270개 및 350개 이상의 토큰을 제공합니다.

vLLM에서의 강화 학습

vLLM은 Muse Spark Open에 대한 LoRA RL을 day 0부터 지원하여 Verl FSDP2를 트레이너로 사용하는 롤아웃 엔진 역할을 합니다. vLLM은 원래 NVFP4 체크포인트에 LoRA 어댑터를 적용하여 서빙합니다. 트레이너는 동일한 가중치의 BF16 역양자화로 실행되며 어댑터(순위 32, 알파 64)만 업데이트하며, 이는 어텐션, MoE 잠재 투영 및 모든 라우팅된 전문가를 포함합니다. 또한 롤아웃의 MoE 라우팅(R3)을 재생하며, 각 단계 후 어댑터만 vLLM에 다시 동기화됩니다.

팀은 16개의 GB300 GPU에서 DAPO-Math-17K로 GRPO를 150스텝 동안 학습시켰으며, 단계당 32개 프롬프트 각각에 대해 8개의 응답을 샘플링하고 응답당 최대 4K 토큰을 사용했습니다. AIME-2024(mean@8) 정확도는 학습 전 0.56에서 실행 종료 시 0.85로 향상되었습니다. 실행 내내 트레이너와 vLLM의 로그 확률 사이의 k3 KL은 2×10⁻⁴ 근처에서 유지되었습니다. 자세한 내용은 Verl PR #8257에서 확인할 수 있습니다. vLLM 생태계에서 Titan RL도 vLLM을 롤아웃 엔진으로 사용하여 day-0 RL 지원을 제공합니다.

누가 만들었나

vLLM은 day 0 지원에 대해 Meta Superintelligence Labs와 vLLM 커뮤니티에 감사를 표하며, DSpark 스페큘레이터 학습 및 TPU 통합에 대해 Inferact, 하드웨어 최적화에 대해 NVIDIA 및 AMD에 감사를 표합니다.

발표에 나열된 기여자:

  • Inferact: Jie Li, Zifeng Mo, Zixi Qi, Jeff Ma, Ziqi Zhao, Dakai An, Ao Shen
  • Meta: Beto de Paola, Sidhartha Reddy Potu
  • Nvidia: Cyrus Chang, Duncan Moss, Marek Pikulski, Seong Hee Lee
  • AMD: Andy Luo, Hongxia Yang, Haichen Zhang

이번 릴리스가 중요한 이유

Day 0 지원은 서빙 경로, 양자화 형식, 병렬 처리 전략, 추측 디코딩 및 RL 롤아웃 통합이 가중치가 게시되는 순간에 모두 존재한다는 것을 의미합니다. 몇 주 후가 아니라요. 1M 토큰 컨텍스트 창을 가진 816B 파라미터 MoE의 경우 하이브리드 어텐션, 잠재 MoE 압축 및 DSpark 드래프팅의 조합이 모델을 단순히 사용 가능하게 만드는 것이 아니라 실제로 배포 가능하게 만듭니다. 동시에 Nvidia, AMD 및 TPU 지원을 제공한다는 것은 모델이 단일 가속기 벤더에 고정되지 않는다는 것을 의미합니다.

Sources