Goal
Ship a pip-installable vLLM plugin that injects Infera/HyperLoom-optimized Attention and MoE kernels into stock vLLM — no vLLM fork — using vLLM's out-of-tree plugin mechanism (vllm.platform_plugins + vllm.general_plugins). This is the delivery vehicle for op-injection: swap just the hot kernels while staying on upstream vLLM's model code, so we track vLLM releases instead of maintaining a fork.
Mechanism (verified against vLLM 0.23; cf. AMD's vLLM-ATOM)
- Attention →
Platform.get_attn_backend_cls() returns a custom AttentionBackend / AttentionImpl. Clean, per-kernel seam (also settable via VLLM_ATTENTION_BACKEND). This is exactly what vLLM-ATOM uses (ATOMPlatform(RocmPlatform) → AiterBackend/AiterMLABackend).
- MoE →
FusedMoEModularKernel (FusedMoEPrepareAndFinalize + FusedMoEPermuteExpertsUnpermute) or FusedMoEMethodBase.apply() — swap just the experts GEMM while keeping vLLM's routing / quant / EP-DP dispatch.
- vLLM-ATOM instead replaces the whole model via
ModelRegistry.register_model; we prefer the less-invasive per-op seams above, and keep whole-model wrapping only as a fallback where a per-op seam is insufficient (e.g. deep MLA fusion).
Packaged as entry_points so it activates on install, gated by an env kill-switch (INFERA_VLLM_OPS_DISABLE=1), mirroring ATOM's ATOM_DISABLE_VLLM_PLUGIN.
Plan
Non-goals (for now)
Whole-model wrapper; quant-method rewrites; SGLang (separate mechanism).
Progress will be posted as comments on this issue.
Goal
Ship a pip-installable vLLM plugin that injects Infera/HyperLoom-optimized Attention and MoE kernels into stock vLLM — no vLLM fork — using vLLM's out-of-tree plugin mechanism (
vllm.platform_plugins+vllm.general_plugins). This is the delivery vehicle for op-injection: swap just the hot kernels while staying on upstream vLLM's model code, so we track vLLM releases instead of maintaining a fork.Mechanism (verified against vLLM 0.23; cf. AMD's vLLM-ATOM)
Platform.get_attn_backend_cls()returns a customAttentionBackend/AttentionImpl. Clean, per-kernel seam (also settable viaVLLM_ATTENTION_BACKEND). This is exactly what vLLM-ATOM uses (ATOMPlatform(RocmPlatform)→AiterBackend/AiterMLABackend).FusedMoEModularKernel(FusedMoEPrepareAndFinalize+FusedMoEPermuteExpertsUnpermute) orFusedMoEMethodBase.apply()— swap just the experts GEMM while keeping vLLM's routing / quant / EP-DP dispatch.ModelRegistry.register_model; we prefer the less-invasive per-op seams above, and keep whole-model wrapping only as a fallback where a per-op seam is insufficient (e.g. deep MLA fusion).Packaged as
entry_pointsso it activates on install, gated by an env kill-switch (INFERA_VLLM_OPS_DISABLE=1), mirroring ATOM'sATOM_DISABLE_VLLM_PLUGIN.Plan
entry_points(register_platform,register_ops), env-gated.InferaPlatform(RocmPlatform)withget_attn_backend_cls→ pass-through attention backend (delegates to the default impl) as the injection seam.FusedMoEModularKernelexperts pass-through stub as the injection seam.INFERA_VLLM_OPS_DISABLE=1; numerics match (pass-through = bitwise identical).Non-goals (for now)
Whole-model wrapper; quant-method rewrites; SGLang (separate mechanism).
Progress will be posted as comments on this issue.