Enable validated prefix caching and record DGX Spark optimization benchmarks

This commit is contained in:
2026-09-17 22:09:58 +08:00
parent 5f3030260e
commit 1e2f48d1a4
28 changed files with 707 additions and 8 deletions
+94
View File
@@ -0,0 +1,94 @@
"""PLE mmap adapter for pinned nightly 0bfc7a15, single GPU only.
Uses the reviewed blazux mmap reader, retaining upstream hashing and dequantization.
"""
import torch
from vllm_ple_mmap import _MmapNgramEmbedding, _setup_table_v029, _REGISTRY, _register_op
def _lookup_with_hash(input_ids: torch.Tensor, query_start_loc: torch.Tensor,
ngram_context: torch.Tensor, output: torch.Tensor,
layer_name: str) -> None:
# Capture records preceding kernels without executing them. CPU lookup must
# therefore compute its hash IDs in this eager segment as well.
from vllm_ple_mmap import _lookup_ids_impl
layer = _REGISTRY[layer_name]
ids = layer.compute_ngram_ids(input_ids, query_start_loc, ngram_context)
_lookup_ids_impl(ids, output, layer_name)
def _lookup_with_hash_fake(input_ids: torch.Tensor, query_start_loc: torch.Tensor,
ngram_context: torch.Tensor, output: torch.Tensor,
layer_name: str) -> None:
pass
class DiskEmbedding(_MmapNgramEmbedding):
supports_prefetch = False
def __init__(self, n, d, **kwargs):
super().__init__(n, d)
self.register_buffer("weight", torch.empty(0, dtype=torch.float8_e4m3fn), persistent=False)
def dequantize(self, embeddings, output_dtype):
if self.table is None:
raise RuntimeError("PLE disk table not loaded")
return embeddings.to(output_dtype) * self.weight_scale.to(output_dtype)
def start_prefetch(self, *args):
pass
def apply(cls):
import sys
from vllm.config import get_current_vllm_config
from vllm.distributed import get_etp_group
mod = sys.modules[cls.__module__]
original_init, original_load = cls.__init__, cls.load_weights
def init(self, *args, **kwargs):
if get_etp_group().world_size != 1:
raise RuntimeError("Spark disk adapter supports only ETP=1")
device_cls = mod.Qwen4ExpPLEDeviceEmbedding
host_cls = mod.Qwen4ExpPLEPinnedHostEmbedding
mod.Qwen4ExpPLEDeviceEmbedding = mod.Qwen4ExpPLEPinnedHostEmbedding = DiskEmbedding
try:
original_init(self, *args, **kwargs)
finally:
mod.Qwen4ExpPLEDeviceEmbedding, mod.Qwen4ExpPLEPinnedHostEmbedding = device_cls, host_cls
self._ple_mmap_prefix = kwargs["prefix"]
self._ple_mmap_model_path = get_current_vllm_config().model_config.model
_REGISTRY[self._ple_mmap_prefix] = self
def load(self, weights):
loaded = set()
def filtered():
for name, tensor in weights:
if name.startswith("ngram_embedding.shard_") and name.endswith(".weight"):
continue
if name == "ngram_embedding.weight_scale":
self.register_buffer("_offload_weight_scale", tensor.detach().to("cuda"), persistent=False)
continue
yield name, tensor
loaded.update(original_load(self, filtered()))
_setup_table_v029(self)
self.ngram_embedding.weight_scale = self._offload_weight_scale
return loaded
def forward(self, hidden_states, input_ids, query_start_loc, ngram_context):
output = torch.empty((input_ids.shape[0], self.embedding_dim),
dtype=torch.float8_e4m3fn, device=input_ids.device)
torch.ops.vllm.spark_ple_lookup(input_ids, query_start_loc, ngram_context,
output, self._ple_mmap_prefix)
return output
from vllm.compilation.breakable_cudagraph import eager_break_during_capture
from vllm.utils.torch_utils import direct_register_custom_op
_register_op()
if not hasattr(torch.ops.vllm, "spark_ple_lookup"):
direct_register_custom_op(
op_name="spark_ple_lookup",
op_func=eager_break_during_capture(_lookup_with_hash),
mutates_args=["output"], fake_impl=_lookup_with_hash_fake,
)
cls.__init__, cls.load_weights, cls.forward = init, load, forward