From 7e91b83d884a2c0612a5556234c69a99b2cfeaa6 Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Sun, 24 May 2026 01:27:52 +0800 Subject: [PATCH] Set PYTHONHASHSEED=42 for elastic mode to ensure consistent block hashes Root cause confirmed: NONE_HASH = os.urandom(32) differs between scheduler and bootstrap server even in the same process (init_none_hash called separately by each import path). PYTHONHASHSEED makes it deterministic: NONE_HASH = hash_fn(seed), same across all code paths. Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/bench.sh | 1 + .../kv_connector/v1/mooncake/mooncake_utils.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/bench.sh b/scripts/bench.sh index c5c6e97..207c0ae 100755 --- a/scripts/bench.sh +++ b/scripts/bench.sh @@ -133,6 +133,7 @@ launch_instances() { local logfile="$OUTDIR/vllm_inst_${i}.log" if [ "$MODE" = "elastic" ]; then + PYTHONHASHSEED=42 \ VLLM_MOONCAKE_BOOTSTRAP_PORT=$((8998 + i)) \ MASTER_PORT=$master \ CUDA_VISIBLE_DEVICES=$i \ diff --git a/third_party/vllm/vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py b/third_party/vllm/vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py index 0620b72..afc7ead 100644 --- a/third_party/vllm/vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py +++ b/third_party/vllm/vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py @@ -252,11 +252,17 @@ class MooncakeBootstrapServer: prev_hash = block_hash bid = self._hash_table.get(block_hash.hex()) + if i == 0: + table_sample = next(iter(self._hash_table)) if self._hash_table else "empty" + logger.info( + "_lookup_by_tokens: block0 hash=%s, NONE_HASH=%s, table_sample=%s", + block_hash.hex()[:16], NONE_HASH.hex()[:16], table_sample[:16]) if bid is not None: block_ids.append(bid) pinned_ids.append(bid) else: - block_ids.append(None) + if i == 0: + block_ids.append(None) break return block_ids, pinned_ids