From 2fec09ea87c315223265e30f254544a4a89fad69 Mon Sep 17 00:00:00 2001 From: FujitsuPolycom <87842395+FujitsuPolycom@users.noreply.github.com> Date: Sun, 6 Sep 2026 07:59:46 -0500 Subject: [PATCH 1/5] Expose cache resource controls and validate MTP3 prefix reuse Resolve capture modes, report payload allocation budgets, and keep managed mesh supervision responsive during Docker status delays. Package source-attested MTP3 checkpoint and lease transforms with offline composition checks and request-level reuse analysis. Preserve published image pins, source verification boundaries, and merged startup memory gates. Record bounded four-GB10 text-only cache-pressure evidence without claiming 40 GiB or multimodal qualification. Validation: 2,748 offline tests passed, 42 skipped; numeric evidence verification and Ruff passed. --- ...53_JJ_R8_GB10_SPARKCACHE_TP4_QUICKSTART.md | 27 +- performance/harnesses/validation/README.md | 113 ++++++ .../validation/analyze_conversation_reuse.py | 233 +++++++++++++ .../harnesses/validation/conversation_soak.py | 323 ++++++++++++++++++ .../harnesses/validation/prefill_probe.py | 4 +- .../test_analyze_conversation_reuse.py | 149 ++++++++ .../validation/test_conversation_soak.py | 168 +++++++++ .../mtp3-cache-history-observations.json.gz | Bin 0 -> 466020 bytes .../mtp3-cache-history-validation.md | 77 +++++ .../test_mtp3_cache_history_record.py | 22 ++ runtime/glm53-flash-jj-r8-gb10/README.md | 45 ++- runtime/glm53-flash-jj-r8-gb10/launch-rank.sh | 82 ++++- .../runtime.env.example | 10 +- .../test_image_contract.py | 2 +- .../test_launcher_contract.py | 110 +++++- runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md | 9 + .../experiments/cache-reuse/.gitattributes | 3 + .../experiments/cache-reuse/README.md | 164 +++++++++ .../check_mtp3_checkpoint_allocations.py | 211 ++++++++++++ .../experiments/cache-reuse/compose.py | 125 +++++++ .../experiments/cache-reuse/conftest.py | 32 ++ .../cache-reuse/fixtures/manifest.json | 66 ++++ .../fixtures/original-python-sources.zip | Bin 0 -> 159016 bytes .../cache-reuse/patch_mtp3_barrier.py | 52 +++ .../patch_mtp3_lease_accounting.py | 60 ++++ .../patch_mtp3_local_lease_preference.py | 77 +++++ .../patch_mtp3_partial_tail_eligibility.py | 63 ++++ .../patch_mtp3_sparse_retention.py | 106 ++++++ .../repro_mtp3_checkpoint_materialization.py | 140 ++++++++ .../repro_mtp3_sparse_retention.py | 168 +++++++++ .../cache-reuse/test_composition.py | 70 ++++ .../cache-reuse/test_mtp3_lease_accounting.py | 118 +++++++ .../test_mtp3_local_lease_preference.py | 169 +++++++++ .../test_mtp3_partial_tail_eligibility.py | 42 +++ .../cache-reuse/test_mtp3_sparse_retention.py | 128 +++++++ .../glm53-spark-mtp3-mesh/managed_service.py | 59 +++- .../test_managed_service.py | 183 ++++++++++ 37 files changed, 3384 insertions(+), 26 deletions(-) create mode 100644 performance/harnesses/validation/analyze_conversation_reuse.py create mode 100644 performance/harnesses/validation/conversation_soak.py create mode 100644 performance/harnesses/validation/test_analyze_conversation_reuse.py create mode 100644 performance/harnesses/validation/test_conversation_soak.py create mode 100644 performance/records/glm53-flash/mtp3-cache-history-observations.json.gz create mode 100644 performance/records/glm53-flash/mtp3-cache-history-validation.md create mode 100644 performance/records/glm53-flash/test_mtp3_cache_history_record.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/.gitattributes create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/check_mtp3_checkpoint_allocations.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/conftest.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/manifest.json create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/original-python-sources.zip create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_barrier.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_lease_accounting.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_local_lease_preference.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_partial_tail_eligibility.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_sparse_retention.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_checkpoint_materialization.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_sparse_retention.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_composition.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_lease_accounting.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_local_lease_preference.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_partial_tail_eligibility.py create mode 100644 runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_sparse_retention.py diff --git a/docs/GLM53_JJ_R8_GB10_SPARKCACHE_TP4_QUICKSTART.md b/docs/GLM53_JJ_R8_GB10_SPARKCACHE_TP4_QUICKSTART.md index 66e93de2..8892c6e3 100644 --- a/docs/GLM53_JJ_R8_GB10_SPARKCACHE_TP4_QUICKSTART.md +++ b/docs/GLM53_JJ_R8_GB10_SPARKCACHE_TP4_QUICKSTART.md @@ -305,6 +305,11 @@ SPARKCACHE_ACCESS_MODE=read-write # restore existing entries and publish new o SPARKCACHE_ACCESS_MODE=restore-only # restore existing entries; never capture new prompts ``` +Keep `SPARKCACHE_ASYNC_PAGE_CAPTURE=auto` from the environment template to +disable capture automatically in restore-only mode or when SparkCache is off. +An explicit `1` with either setting is rejected. Explicit `0` in read-write +mode selects synchronous publication. + The GLM-5.3 profile retains a verified shared GPU prefix for up to five minutes so one restore can serve an extended request queue: @@ -360,7 +365,7 @@ and `IMAGE_ID`; keep the page-tail settings unchanged. The recommended DCP4 profile enables bounded asynchronous page capture: ```bash -SPARKCACHE_ASYNC_PAGE_CAPTURE=1 +SPARKCACHE_ASYNC_PAGE_CAPTURE=auto SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES=auto SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT=2 ``` @@ -368,12 +373,26 @@ SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT=2 The `auto` slot policy selects 8 GiB for DCP1, 5 GiB for DCP2, or 3 GiB for DCP4. Two capture slots let the background publisher consume one completed capture while a later capture uses the other. Restore separately overlaps -bounded NVMe reads and CUDA placement through two 256 MiB mapped arenas. More -restore arenas are not part of this profile because measured arena waits did -not justify the additional unified-memory pressure. DCP1 and DCP2 page-tail +bounded NVMe reads and CUDA placement through two 256 MiB mapped arenas per +load lane. Eight lanes reserve 4 GiB per rank; adding the DCP4 capture slots +gives 10 GiB per rank (40 GiB across TP4) of configured payload capacity, +before KV, models, metadata, retained objects and transport. Restore-only +omits the 6 GiB capture ring. DCP1 and DCP2 page-tail capture have no matching live record; use complete snapshots or test those layouts separately. +Print the resolved memory plan without host or GPU access before launching: + +```bash +SPARKRING_PRINT_MEMORY_PLAN=1 bash runtime/glm53-flash-jj-r8-gb10/launch-rank.sh \ + 0 /path/to/rank.env +``` + +Set `SPARKCACHE_BUFFER_BUDGET_BYTES` in that configuration to enforce a +per-rank restore-plus-capture payload ceiling; zero disables it. The report +shows KV separately and names excluded memory. It does not predict total +resident memory or replace a hardware capacity test. + The environment template enables `DFLASH_WARMUP=1`. Rank 0 waits for the API, then exercises every concurrency from C1 through C16 and scheduled prompt spans covering DFlash's Triton block-size specializations. DFlash depth seven diff --git a/performance/harnesses/validation/README.md b/performance/harnesses/validation/README.md index 5bef1c6b..d80b2af6 100644 --- a/performance/harnesses/validation/README.md +++ b/performance/harnesses/validation/README.md @@ -81,3 +81,116 @@ unique-prefix samples per context. It calibrates prompts using `/tokenize`, records actual usage and cache evidence, and writes incremental JSONL receipts. It requests one output token; its metric is prompt tokens divided by TTFT. See the shared runbook for commands and the complete measurement protocol. + +## Growing-conversation soak and idle probes + +Status: **implemented**. `conversation_soak.py` reuses the prefill probe's +HTTP and streaming helpers to measure concurrent conversations that grow by a +calibrated number of prompt tokens each turn. It runs sequential, unique-prefix +5,300-token probes before and immediately after the conversation workers finish. +It never changes the serving stack, speculation method, cache access mode, or +namespace. Select those externally and record their identities with `--metadata`. +The `--arm` option labels a receipt; it does not configure the server. + +Print the request and output bounds without any network activity first. This +example targets the GLM-5.3 native-MTP3 profile: + +```bash +python3 performance/harnesses/validation/conversation_soak.py \ + --plan --model glm-5.3-flash-spark --arm baseline-mtp3 --context-limit 1m \ + --concurrency 2 --start-tokens 32768 --max-turns-per-agent 4 \ + --tail-tokens 2048 --max-tokens 64 --probe-output-tokens 64 \ + --duration-seconds 300 --max-soak-prompt-tokens 1000000 \ + --reset-tokens 160000 --seed 2026090601 +``` + +Replace `--plan` with `--endpoint http://192.0.2.10:8015` and +`--output /existing-results-directory/baseline-mtp3.jsonl` to execute. The +short shape admits at most eight conversation requests and six idle probes. +Every request is guarded by successful server tokenization and the declared +context limit. Calibration preserves prior messages and includes the same +chat-template options used for generation. + +For a longer MTP3 run, use `--concurrency 4 --start-tokens 100000 +--max-turns-per-agent 200 --duration-seconds 3600 --max-soak-prompt-tokens +50000000 --reset-tokens 160000 --max-tokens 512 --probe-output-tokens 300`. +Keep the remaining options explicit and run `--plan` first. The time limit +stops admission of new soak requests; calibration, probes, and requests already +in flight can extend wall time. The HTTP timeout is an inactivity timeout. +The global token ceiling counts full prompt tokens admitted across all workers, +including cached tokens, and excludes the separately bounded idle probes. +Each worker stops when its next prompt cannot fit the remaining shared token +budget; other workers may still admit smaller prompts. Token or turn limits +can end the run before the configured duration. Workers rotate to a fresh +conversation before its next prompt and output would exceed `--reset-tokens`. +Request errors stop further soak admissions; other in-flight requests can finish. + +Use identical seeds, shapes, template settings, MTP3 settings and model +identities for paired runs. Provide isolated persistent namespaces externally +when cold independence matters, or explicitly record retained cache state. +The same seed produces the same initial synthetic prompts, while actual +assistant replies grow subsequent histories; receipts preserve those replies +and prompt hashes. Distinct seeds create fresh contexts but do not establish a +byte-identical paired comparison. Probe prefixes differ between the before and +after phases; reported cached-token counts remain available to check whether +either population was already cached. A run name does not isolate GPU prefix +caching or disk state. + +`--image /path/to/fixture.png --image-every 10` adds the same local PNG or JPEG +to every tenth continuation. The receipt records its SHA-256. Keep the fixture +alongside the receipt when reproducing a multimodal run. Image bytes are sent +as a data URL and never fetched from another server. The image must be at most +4 MiB. Tokenization must account for it; an endpoint that cannot tokenize this +shape fails calibration instead of using an estimated count. + +Each turn records the client request ID sent in `X-Request-ID`, response and +server request IDs when returned, start time, actual usage, tokenized prompt +count, prompt hash, assistant text and reasoning, finish reason, elapsed time, +TTFT, and timestamp offsets for every content or reasoning delta. TTFT runs +from client submission to the first nonempty content or reasoning delta. +The decode estimate is `(completion_tokens - 1) / (last_delta - first_delta)`; +streaming chunks may contain several tokens, so this is not a token-level +inter-token latency measurement. The full delta timestamps and usage allow +recalculation. `finish_reason=length` is accepted for the bounded load and is +recorded as output-budget exhaustion, not a correctness pass. + +The summary compares continuation turns with reported cached tokens below or +above half the prompt, using the condition of a positive prompt increase below +10,000 tokens in the same conversation. Missing cached-token usage is excluded +from that classification. These are server-reported numbers: the harness does +not infer local reuse, external restore, or recomputation from latency. Correlate +request IDs with connector and vLLM logs to establish those causes. Tokenization +uses the serving host's CPU and is excluded from each chat latency; its overhead +and in-flight work affect the interval before the after probes. + +Analyze a saved receipt offline with: + +```bash +python3 performance/harnesses/validation/conversation_soak.py \ + --model glm-5.3-flash-spark --arm analysis --context-limit 1m \ + --analyze /existing-results-directory/baseline-mtp3.jsonl +``` + +JSONL records are flushed after each completion and existing output files are +never overwritten. API keys come from the environment and are omitted from +receipts; error bodies are omitted as well. Preserve model/image/source IDs, +topology, actual KV allocation, access mode, namespace, concurrent traffic and +initial store occupancy in the supplied metadata or an accompanying evidence +record. One short successful run does not qualify a long soak or a performance +improvement. Offline tests use in-memory HTTP fixtures and contact no hosts. + +`analyze_conversation_reuse.py` joins a saved receipt to the compact +`sparkcache-reuse-trace/v1` records in saved rank logs. Supply the expected +physical ranks explicitly. A verified-restore classification requires a +successful completion for the same engine request, digest and token span on +every expected rank; an offer alone is insufficient. Scheduler lease-attachment +events are reported separately. API-only evidence is labeled `reported_cached`: +positive counts do not identify local versus external reuse, and zero counts +do not exclude a GPU lease. + +The join accepts recorded request/response IDs and the runtime's exact +eight-hex-character engine suffix. Ambiguous joins cannot establish a restore +quorum. The output preserves per-rank queue, service and phase timings without +summing token spans across ranks. Log captures can contain requests outside the +receipt window; inspect unmatched IDs and timestamps before assigning them to a +missing-rank or request failure. diff --git a/performance/harnesses/validation/analyze_conversation_reuse.py b/performance/harnesses/validation/analyze_conversation_reuse.py new file mode 100644 index 00000000..ff4dd5de --- /dev/null +++ b/performance/harnesses/validation/analyze_conversation_reuse.py @@ -0,0 +1,233 @@ +"""Join saved conversation receipts to rank-local SparkCache reuse traces; no network access.""" +import argparse +from collections import Counter, defaultdict +import hashlib +import json +import math +from pathlib import Path +import re +import statistics + +TRACE_SCHEMA = "sparkcache-reuse-trace/v1" +MARKER = "spark-context-cache-reuse:" + + +def parse_trace(line): + """Accept Docker log prefixes and JSON log envelopes without interpreting prose.""" + raw = line.split(MARKER, 1)[1].lstrip() if MARKER in line and not line.lstrip().startswith("{") else line.lstrip() + try: + value, _ = json.JSONDecoder().raw_decode(raw) + except (ValueError, TypeError): + return None + if not isinstance(value, dict): + return None + if value.get("schema") == TRACE_SCHEMA: + return value + for field in ("log", "message"): + if isinstance(value.get(field), str) and MARKER in value[field]: + return parse_trace(value[field]) + return None + + +def aliases(record): + values = set() + for name in ("request_id", "response_id", "server_request_id"): + value = record.get(name) + if isinstance(value, str) and value: + values.add(value) + values.add(value.removeprefix("chatcmpl-") if value.startswith("chatcmpl-") else "chatcmpl-" + value) + return values + + +def finite_number(value): + return type(value) in (int, float) and math.isfinite(value) and value >= 0 + + +def median(values): + valid = [value for value in values if finite_number(value)] + return statistics.median(valid) if valid else None + + +def latest_completions(traces, expected): + candidates = defaultdict(list) + for trace in traces: + rank = trace.get("rank") + if (trace.get("event") == "worker_restore_completed" and trace.get("role") == "worker" + and type(rank) is int and rank in expected and type(trace.get("time_ns")) is int): + candidates[rank].append(trace) + latest, conflicts = {}, [] + for rank, rows in candidates.items(): + newest = max(row["time_ns"] for row in rows) + current = [row for row in rows if row["time_ns"] == newest] + identities = {json.dumps(row, sort_keys=True) for row in current} + if len(identities) > 1: + conflicts.append(rank) + else: + latest[rank] = current[0] + return latest, conflicts + + +def classify(turn, traces, expected, *, ambiguous=False): + latest, conflicts = latest_completions(traces, expected) + verified = len(latest) == len(expected) and not conflicts + identities = set() + for row in latest.values(): + span = row.get("requested_span_tokens") + if type(span) is not int or not isinstance(row.get("digest"), str): + verified = False + continue + verified &= (row.get("outcome") == "verified" and span > 0 + and type(row.get("verified_span_tokens")) is int + and row.get("verified_span_tokens") == span + and bool(row["digest"])) + identities.add((row.get("digest"), span, row.get("request_id"))) + verified = bool(verified and len(identities) == 1 and turn.get("valid") and not ambiguous) + attached = [row for row in traces if row.get("event") == "gpu_lease_attached" + and row.get("role") == "scheduler" and type(row.get("lease_span_tokens")) is int + and row["lease_span_tokens"] > 0] + cached = turn.get("cached_tokens_reported") + usage = turn.get("usage") or {} + prompt = usage.get("prompt_tokens") + positive_report = type(cached) is int and type(prompt) is int and 0 < cached <= prompt + if ambiguous or not turn.get("valid"): + source = "unknown" + elif verified: + source = "verified_all_rank_external_restore" + elif attached: + source = "gpu_lease_attached" + elif positive_report: + source = "reported_cached" + else: + source = "unknown" + return {"type": "turn_analysis", "request_id": turn.get("request_id"), + "response_id": turn.get("response_id"), "identity": turn.get("identity"), + "phase": turn.get("phase"), "continuation": turn.get("continuation", False), + "elapsed_seconds": turn.get("elapsed_seconds"), "ttft_seconds": turn.get("ttft_seconds"), + "source": source, "trace_join_ambiguous": ambiguous, + "cached_tokens_reported": cached, "prompt_tokens_reported": prompt, + "all_rank_worker_verification": verified, + "verified_span_tokens": next(iter(identities))[1] if verified else None, + "gpu_lease_attachment_observed": bool(attached), + "lease_span_tokens_observed": max((row["lease_span_tokens"] for row in attached), default=None), + "offer_count": sum(row.get("event") == "external_restore_offer" for row in traces), + "expected_ranks": sorted(expected), "completed_ranks": sorted(latest), + "missing_ranks": sorted(expected - latest.keys()), "conflicting_ranks": sorted(conflicts), + "worker_completions_by_rank": {str(rank): row for rank, row in sorted(latest.items())}, + "trace_events": traces, + "reported_cache_interpretation": "API cached tokens only; positive counts do not distinguish local reuse from external restore, and zero counts do not exclude GPU lease reuse"} + + +def analyze(receipts, traces, expected_ranks): + expected = set(expected_ranks) + if not expected or any(type(rank) is not int or rank < 0 for rank in expected): + raise ValueError("Expected physical ranks must be explicit nonnegative integers") + turns = [row for row in receipts if row.get("type") == "turn"] + owners, response_owners, joined, ambiguous = defaultdict(set), defaultdict(set), defaultdict(list), set() + for index, turn in enumerate(turns): + for alias in aliases(turn): + owners[alias].add(index) + response_id = turn.get("response_id") + if isinstance(response_id, str) and response_id: + response_owners[response_id].add(index) + seen, unmatched, duplicated = set(), 0, 0 + for trace in traces: + encoded = json.dumps(trace, sort_keys=True) + if encoded in seen: + duplicated += 1 + continue + seen.add(encoded) + request_id = trace.get("request_id") + matches = set(owners.get(request_id, set())) if isinstance(request_id, str) else set() + if isinstance(request_id, str): + # vLLM appends an eight-hex engine nonce to the observed API response + # ID. Only that exact suffix grammar is accepted; never prefix-match. + match = re.fullmatch(r"(.+)-[0-9a-fA-F]{8}", request_id) + if match: + matches.update(response_owners.get(match.group(1), set())) + if len(matches) == 1: + joined[next(iter(matches))].append(trace) + elif matches: + ambiguous.update(matches) + else: + unmatched += 1 + rows = [classify(turn, joined[index], expected, ambiguous=index in ambiguous) + for index, turn in enumerate(turns)] + by_source = {} + by_phase_and_source = {} + for source in sorted({row["source"] for row in rows}): + population = [row for row in rows if row["source"] == source] + by_source[source] = {"turns": len(population), + "median_latency_seconds": median(row["elapsed_seconds"] for row in population), + "median_ttft_seconds": median(row["ttft_seconds"] for row in population)} + for phase in sorted({row.get("phase") or "unknown" for row in rows}): + by_phase_and_source[phase] = {} + for source in by_source: + population = [row for row in rows if (row.get("phase") or "unknown") == phase and row["source"] == source] + if population: + by_phase_and_source[phase][source] = { + "turns": len(population), "continuations": sum(row["continuation"] for row in population), + "median_latency_seconds": median(row["elapsed_seconds"] for row in population), + "median_ttft_seconds": median(row["ttft_seconds"] for row in population)} + timings = {} + for rank in sorted(expected): + population = [trace for row in rows for trace in row["trace_events"] + if trace.get("role") == "worker" and trace.get("event") == "worker_restore_completed" + and type(trace.get("rank")) is int and trace["rank"] == rank] + phases = sorted({phase for row in population for phase in (row.get("phase_ms") or {})}) + timings[str(rank)] = {"completions": len(population), + "outcomes": dict(Counter(row.get("outcome", "unknown") for row in population)), + **{f"median_{field}": median(row.get(field) for row in population) + for field in ("queue_wait_ms", "service_ms", "end_to_end_ms")}, + "median_phase_ms": {phase: median((row.get("phase_ms") or {}).get(phase) for row in population) + for phase in phases}} + return {"schema": "sparkring-conversation-reuse-analysis/v1", "trace_schema": TRACE_SCHEMA, + "expected_ranks": sorted(expected), "turns": rows, + "summary": {"turns": len(rows), "by_source": by_source, "by_phase_and_source": by_phase_and_source, + "per_rank_restore_timings": timings, + "unmatched_trace_events": unmatched, "duplicate_trace_events": duplicated, + "ambiguous_turns": len(ambiguous)}, + "limits": ["No recomputation or local-miss inference from zero or missing API cache counts", + "Offers do not prove an executed restore; every expected physical rank must verify the same span and digest", + "Worker verification plus successful client completion does not expose vLLM's internal receive-aggregation decision", + "An observed lease attachment proves attachment, not its full subsequent lifetime", + "Rank token counts are never summed; source classes may coexist and the strongest observed evidence is selected"]} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--receipt", type=Path, required=True) + parser.add_argument("--log", type=Path, action="append", required=True, + help="Saved rank log; repeat for every physical rank") + parser.add_argument("--expected-ranks", required=True, help="Physical ranks, for example 0,1,2,3") + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + try: + ranks = [int(value) for value in args.expected_ranks.split(",")] + if len(set(ranks)) != len(ranks): + raise ValueError("Expected ranks must be unique") + receipts = [json.loads(line) for line in args.receipt.read_text(encoding="utf-8").splitlines() if line.strip()] + traces, malformed, sources = [], 0, [] + for path in args.log: + sources.append({"path": str(path), "sha256": hashlib.sha256(path.read_bytes()).hexdigest()}) + with path.open(encoding="utf-8", errors="replace") as stream: + for line in stream: + record = parse_trace(line) + if record: + traces.append(record) + elif MARKER in line: + malformed += 1 + result = analyze(receipts, traces, ranks) + result["inputs"] = {"receipt": str(args.receipt), + "receipt_sha256": hashlib.sha256(args.receipt.read_bytes()).hexdigest(), "logs": sources} + result["summary"]["malformed_trace_lines"] = malformed + with args.output.open("x", encoding="utf-8") as stream: + json.dump(result, stream, indent=2) + stream.write("\n") + except (ValueError, OSError) as error: + parser.error(str(error)) + print(json.dumps(result["summary"], sort_keys=True)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/performance/harnesses/validation/conversation_soak.py b/performance/harnesses/validation/conversation_soak.py new file mode 100644 index 00000000..266cadc5 --- /dev/null +++ b/performance/harnesses/validation/conversation_soak.py @@ -0,0 +1,323 @@ +"""Measure bounded growing conversations and idle probes; never change server cache state.""" +import argparse +import base64 +from concurrent.futures import ThreadPoolExecutor +import hashlib +import json +import math +import os +from pathlib import Path +import statistics +import sys +import threading +import time +import uuid + +sys.path.insert(0, str(Path(__file__).resolve().parent)) +from needle_hunt import base_url # noqa: E402 +from prefill_probe import build_text, events, has_token, request, tokens # noqa: E402 + +SCHEMA = "sparkring-conversation-soak/v1" + + +def digest(value): + return hashlib.sha256(json.dumps(value, sort_keys=True, separators=(",", ":")).encode()).hexdigest() + + +def fixture(identity, chars): + text = build_text(identity, chars) + return text.replace("Read the notes and reply OK.", + "Analyze these maintenance notes in detail and recommend next actions.", 1) + + +def count_tokens(config, messages): + payload = {"model": config["model"], "messages": messages, "add_generation_prompt": True, + "chat_template_kwargs": config["chat_template_kwargs"]} + with request(config["endpoint"] + "/tokenize", payload, config["api_key"], config["timeout"]) as response: + count = json.load(response).get("count") + if type(count) is not int or count <= 0: + raise ValueError("Tokenizer must return a positive integer count") + return count + + +def calibrated_user(config, history, identity, target_total, image=None): + """Calibrate the added user message while preserving every preceding message byte.""" + previous = count_tokens(config, history) if history else 0 + chars = max(256, (target_total - previous) * 5) + for _ in range(10): + text = fixture(identity, chars) + content = text if image is None else [ + {"type": "text", "text": text}, {"type": "image_url", "image_url": {"url": image}}] + messages = history + [{"role": "user", "content": content}] + count = count_tokens(config, messages) + if abs(count - target_total) <= max(8, (target_total - previous) * 0.01): + return messages, count + chars = max(128, min(64 * 1024 * 1024, round(chars * max(1, target_total - previous) + / max(1, count - previous)))) + raise ValueError("Token calibration did not converge") + + +def stream_turn(config, messages, count, max_tokens, identity, phase, *, request_id=None, clock=time.perf_counter): + if count + max_tokens > config["context_limit"]: + raise ValueError("Tokenized prompt plus output exceeds the context limit") + request_id = request_id or "soak-" + uuid.uuid4().hex + payload = {"model": config["model"], "messages": messages, "max_tokens": max_tokens, + "stream": True, "stream_options": {"include_usage": True}, + "temperature": config["temperature"], "seed": config["seed"], "top_p": 1, + "chat_template_kwargs": config["chat_template_kwargs"]} + effort = config["probe_reasoning_effort"] if phase != "soak" else config["reasoning_effort"] + if effort: + payload["reasoning_effort"] = effort + chunks, content, reasoning, usage, response_id, finish = [], [], [], None, None, None + started_unix, started = time.time(), clock() + with request(config["endpoint"] + "/v1/chat/completions", payload, config["api_key"], + config["timeout"], request_id=request_id) as response: + header_id = response.headers.get("X-Request-ID") if hasattr(response, "headers") else None + for event in events(response): + now = clock() + if event.get("id"): + response_id = event["id"] + if has_token(event): + chunks.append(now - started) + if event.get("usage"): + usage = event["usage"] + for choice in event.get("choices", []): + delta = choice.get("delta", {}) + if delta.get("content"): + content.append(delta["content"]) + if delta.get("reasoning_content") or delta.get("reasoning"): + reasoning.append(delta.get("reasoning_content") or delta["reasoning"]) + finish = choice.get("finish_reason") or finish + elapsed = clock() - started + if not chunks or not isinstance(usage, dict) or type(usage.get("prompt_tokens")) is not int or usage["prompt_tokens"] <= 0: + raise ValueError("Missing first delta or authoritative prompt usage") + completion = usage.get("completion_tokens") + if type(completion) is not int or completion < 1 or finish not in ("stop", "length"): + raise ValueError("Missing output usage or normal finish reason") + cached = (usage.get("prompt_tokens_details") or {}).get("cached_tokens") + if cached is not None and (type(cached) is not int or not 0 <= cached <= usage["prompt_tokens"]): + raise ValueError("Invalid reported cached-token count") + assistant = {"role": "assistant", "content": "".join(content)} + if reasoning: + assistant["reasoning_content"] = "".join(reasoning) + span = chunks[-1] - chunks[0] + record = {"type": "turn", "phase": phase, "identity": identity, "valid": True, + "request_id": request_id, "server_request_id": header_id, "response_id": response_id, + "started_unix": started_unix, "prompt_sha256": digest(messages), + "assistant": assistant, "tokenized_prompt_tokens": count, "usage": usage, + "cached_tokens_reported": cached, "cached_fraction_reported": cached / usage["prompt_tokens"] + if cached is not None and usage["prompt_tokens"] > 0 else None, + "ttft_seconds": chunks[0], "elapsed_seconds": elapsed, + "content_delta_offsets_seconds": chunks, "decode_span_seconds": span, + "decode_tokens_per_second_estimate": (completion - 1) / span if span > 0 else None, + "finish_reason": finish, "output_budget_exhausted": finish == "length"} + return record, assistant + + +def median(values): + available = [value for value in values if value is not None] + return statistics.median(available) if available else None + + +def summarize(records): + good = [r for r in records if r.get("type") == "turn" and r.get("valid")] + continuation = [r for r in good if r.get("continuation")] + known = [r for r in continuation if r["cached_fraction_reported"] is not None] + low = [r for r in known if r["cached_fraction_reported"] < 0.5] + high = [r for r in known if r["cached_fraction_reported"] >= 0.5] + probes = {phase: {"samples": len(rows), + "cached_token_counts_reported": [r["cached_tokens_reported"] for r in rows], + "median_ttft_seconds": median(r["ttft_seconds"] for r in rows), + "median_decode_tokens_per_second_estimate": median(r["decode_tokens_per_second_estimate"] for r in rows)} + for phase in ("before", "after") + for rows in [[r for r in good if r["phase"] == phase]]} + return {"type": "summary", "valid_turns": len(good), + "soak_turns": sum(r["phase"] == "soak" for r in good), + "errors": sum(r.get("type") == "error" for r in records), + "continuations": len(continuation), "continuations_with_cache_usage": len(known), + "continuations_below_half_cached": len(low), + "fraction_below_half_cached": len(low) / len(known) if known else None, + "low_cached_median_latency_seconds": median(r["elapsed_seconds"] for r in low), + "high_cached_median_latency_seconds": median(r["elapsed_seconds"] for r in high), + "probes": probes, + "cache_interpretation": "server-reported cached tokens; no inference of local hit, external restore, or recompute"} + + +def execute(config, output): + lock, stop = threading.Lock(), threading.Event() + records, consumed = [], 0 + image = config.get("image_data") + safe_config = {key: value for key, value in config.items() if key not in ("api_key", "image_data")} + with Path(output).open("x", encoding="utf-8") as stream: + def emit(record): + with lock: + records.append(record) + line = json.dumps(record) + stream.write(line + "\n") + stream.flush() + print(line, flush=True) + + emit({"type": "start", "schema": SCHEMA, "config": safe_config, + "harness_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "http_helper_sha256": hashlib.sha256(Path(__file__).with_name("prefill_probe.py").read_bytes()).hexdigest(), + "started_unix": time.time()}) + + def probe(phase, index): + identity = f"{config['seed']}-probe-{phase}-{index}" + request_id = "soak-" + uuid.uuid4().hex + try: + messages, count = calibrated_user(config, [], identity, config["probe_tokens"]) + record, _ = stream_turn(config, messages, count, config["probe_output_tokens"], identity, + phase, request_id=request_id) + emit(record) + except Exception as error: + emit({"type": "error", "phase": phase, "identity": identity, + "request_id": request_id, "error": type(error).__name__}) + stop.set() + + def worker(agent, deadline): + nonlocal consumed + history, prior_count, conversation, turn = [], None, 0, 0 + for _ in range(config["max_turns_per_agent"]): + if stop.is_set() or time.monotonic() >= deadline: + break + if prior_count is not None and prior_count + config["tail_tokens"] + config["max_tokens"] > config["reset_tokens"]: + history, prior_count, turn = [], None, 0 + conversation += 1 + identity = f"{config['seed']}-agent-{agent}-conversation-{conversation}-turn-{turn}" + request_id = "soak-" + uuid.uuid4().hex + try: + initial = config["start_tokens"][agent % len(config["start_tokens"])] + target = initial if prior_count is None else prior_count + config["tail_tokens"] + picture = image if image and turn > 0 and turn % config["image_every"] == 0 else None + messages, count = calibrated_user(config, history, identity, target, picture) + if count + config["max_tokens"] > config["context_limit"]: + raise ValueError("Context limit exceeded") + with lock: + if stop.is_set() or time.monotonic() >= deadline or consumed + count > config["max_soak_prompt_tokens"]: + break + consumed += count + record, assistant = stream_turn(config, messages, count, config["max_tokens"], identity, + "soak", request_id=request_id) + record.update(agent=agent, conversation=conversation, turn=turn, + prompt_token_growth=count - prior_count if prior_count is not None else None, + continuation=prior_count is not None and 0 < count - prior_count < 10000, + image_added=picture is not None) + emit(record) + history, prior_count, turn = messages + [assistant], count, turn + 1 + except Exception as error: + emit({"type": "error", "phase": "soak", "identity": identity, + "request_id": request_id, "error": type(error).__name__}) + stop.set() + break + + try: + for index in range(config["probe_repeats"]): + probe("before", index) + if stop.is_set(): + break + deadline = time.monotonic() + config["duration_seconds"] + with ThreadPoolExecutor(max_workers=config["concurrency"]) as pool: + list(pool.map(lambda agent: worker(agent, deadline), range(config["concurrency"]))) + if not stop.is_set(): + for index in range(config["probe_repeats"]): + probe("after", index) + if stop.is_set(): + break + except Exception as error: + emit({"type": "error", "phase": "probe", "error": type(error).__name__}) + summary = summarize(records) + summary["soak_prompt_tokens_admitted"] = consumed + summary["success"] = not summary["errors"] and summary["soak_turns"] > 0 + summary["completed_unix"] = time.time() + emit(summary) + return 0 if summary["success"] else 2 + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--endpoint") + parser.add_argument("--model", required=True) + parser.add_argument("--arm", required=True, help="Evidence label only; never changes server configuration") + parser.add_argument("--seed", type=int, default=20260906) + parser.add_argument("--concurrency", type=int, default=4) + parser.add_argument("--start-tokens", default="75000,106000,128000,150000") + parser.add_argument("--tail-tokens", type=tokens, default=2048) + parser.add_argument("--reset-tokens", type=tokens, default=300000) + parser.add_argument("--context-limit", type=tokens, required=True) + parser.add_argument("--max-tokens", type=tokens, default=512) + parser.add_argument("--duration-seconds", type=float, default=300) + parser.add_argument("--max-turns-per-agent", type=int, default=20) + parser.add_argument("--max-soak-prompt-tokens", type=int, default=10000000) + parser.add_argument("--temperature", type=float, default=1) + parser.add_argument("--reasoning-effort", default="low") + parser.add_argument("--probe-reasoning-effort", default="low") + parser.add_argument("--probe-tokens", type=tokens, default=5300) + parser.add_argument("--probe-output-tokens", type=tokens, default=300) + parser.add_argument("--probe-repeats", type=int, default=3) + parser.add_argument("--timeout", type=float, default=900, help="HTTP inactivity timeout, not a wall-clock deadline") + parser.add_argument("--api-key-env", default="OPENAI_API_KEY") + parser.add_argument("--chat-template-kwargs", default="{}") + parser.add_argument("--metadata", default="{}", help="JSON evidence identities; do not include credentials") + parser.add_argument("--image", type=Path, help="Optional local PNG or JPEG, at most 4 MiB") + parser.add_argument("--image-every", type=int, default=10) + parser.add_argument("--output", type=Path) + parser.add_argument("--plan", action="store_true", help="Print bounds without tokenization or HTTP requests") + parser.add_argument("--analyze", type=Path, help="Summarize an existing JSONL receipt without HTTP") + args = parser.parse_args() + if args.analyze: + print(json.dumps(summarize([json.loads(line) for line in args.analyze.read_text(encoding="utf-8").splitlines()]))) + return 0 + config = vars(args).copy() + for name in ("output", "plan", "analyze", "image"): + config.pop(name) + try: + config["start_tokens"] = [tokens(value) for value in args.start_tokens.split(",")] + config["chat_template_kwargs"] = json.loads(args.chat_template_kwargs) + config["metadata"] = json.loads(args.metadata) + if not isinstance(config["chat_template_kwargs"], dict) or not isinstance(config["metadata"], dict): + raise ValueError("Template options and metadata must be JSON objects") + if not 1 <= args.concurrency <= 32 or not 1 <= args.max_turns_per_agent <= 10000 or not 0 <= args.probe_repeats <= 20 or args.image_every < 1: + raise ValueError("Invalid concurrency, repetition, or image frequency") + if not math.isfinite(args.duration_seconds) or not 0 < args.duration_seconds <= 14400: + raise ValueError("Duration must be positive and at most 4 hours") + if not 1 <= args.max_soak_prompt_tokens <= 1000000000: + raise ValueError("Soak token budget must be between 1 and 1000000000") + if not math.isfinite(args.timeout) or not 0 < args.timeout <= 3600 or not 0 <= args.temperature <= 2: + raise ValueError("Invalid timeout or temperature") + if max(config["start_tokens"]) + args.max_tokens > args.reset_tokens or args.reset_tokens > args.context_limit: + raise ValueError("Starting prompts plus output must fit reset threshold and context limit") + if args.probe_tokens + args.probe_output_tokens > args.context_limit: + raise ValueError("Probe prompt plus output must fit context limit") + if args.endpoint: + config["endpoint"] = base_url(args.endpoint) + if args.image: + if args.image.stat().st_size > 4 * 1024 * 1024: + raise ValueError("Image exceeds 4 MiB") + raw = args.image.read_bytes() + mime = "image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8\xff") else None + if mime is None: + raise ValueError("Image must be PNG or JPEG") + config["image_sha256"] = hashlib.sha256(raw).hexdigest() + image_data = "data:" + mime + ";base64," + base64.b64encode(raw).decode() + else: + image_data = None + except (ValueError, OSError, argparse.ArgumentTypeError) as error: + parser.error(str(error)) + if args.plan: + print(json.dumps({"schema": SCHEMA, "config": config, + "max_chat_requests": args.concurrency * args.max_turns_per_agent + 2 * args.probe_repeats, + "max_output_tokens": args.concurrency * args.max_turns_per_agent * args.max_tokens + + 2 * args.probe_repeats * args.probe_output_tokens, + "duration_scope": "soak admission window; probes, calibration and in-flight requests may extend elapsed time", + "status": "implemented; no hardware qualification"})) + return 0 + if not args.endpoint or not args.output: + parser.error("Execution requires --endpoint and --output") + config["api_key"] = os.environ.get(args.api_key_env, "") + config["image_data"] = image_data + return execute(config, args.output) + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/performance/harnesses/validation/prefill_probe.py b/performance/harnesses/validation/prefill_probe.py index d89134f3..a47b9c62 100644 --- a/performance/harnesses/validation/prefill_probe.py +++ b/performance/harnesses/validation/prefill_probe.py @@ -20,8 +20,10 @@ def tokens(value): return result -def request(url, payload, key, timeout): +def request(url, payload, key, timeout, request_id=None): headers = {'Content-Type': 'application/json'} + if request_id: + headers['X-Request-ID'] = request_id if key: headers['Authorization'] = 'Bearer ' + key class NoRedirect(urllib.request.HTTPRedirectHandler): diff --git a/performance/harnesses/validation/test_analyze_conversation_reuse.py b/performance/harnesses/validation/test_analyze_conversation_reuse.py new file mode 100644 index 00000000..2f688aa5 --- /dev/null +++ b/performance/harnesses/validation/test_analyze_conversation_reuse.py @@ -0,0 +1,149 @@ +"""Reuse evidence tests are entirely offline; incomplete quorum never verifies.""" +import importlib.util +import json +from pathlib import Path + +import pytest + +spec = importlib.util.spec_from_file_location("reuse_analysis_test", Path(__file__).with_name("analyze_conversation_reuse.py")) +analysis = importlib.util.module_from_spec(spec) +spec.loader.exec_module(analysis) + + +def turn(**overrides): + return {"type": "turn", "request_id": "soak-one", "response_id": "chatcmpl-soak-one", "valid": True, + "phase": "soak", "cached_tokens_reported": 0, "usage": {"prompt_tokens": 12000}, + "elapsed_seconds": 5, "ttft_seconds": 1, **overrides} + + +def completion(rank, **overrides): + return {"schema": analysis.TRACE_SCHEMA, "event": "worker_restore_completed", + "request_id": "chatcmpl-soak-one", "role": "worker", "rank": rank, + "dcp_rank": rank % 2, "time_ns": 100, "digest": "0123456789ab", + "requested_span_tokens": 10000, "verified_span_tokens": 10000, "outcome": "verified", + "queue_wait_ms": 1 + rank, "service_ms": 20, "end_to_end_ms": 21 + rank, + "phase_ms": {"read": 12, "place": 8}, **overrides} + + +def test_log_prefix_and_docker_envelope(): + record = completion(0) + line = "2026-09-06 (Worker_TP0) INFO " + analysis.MARKER + json.dumps(record) + assert analysis.parse_trace(line) == record + assert analysis.parse_trace(json.dumps({"log": line, "stream": "stderr"})) == record + assert analysis.parse_trace("not a trace") is None + assert analysis.parse_trace(analysis.MARKER + "{partial") is None + + +def test_every_physical_rank_required_and_tokens_not_summed(): + report = analysis.analyze([turn()], [completion(rank) for rank in range(4)], [0, 1, 2, 3]) + row = report["turns"][0] + assert row["source"] == "verified_all_rank_external_restore" + assert row["verified_span_tokens"] == 10000 + assert row["missing_ranks"] == [] + assert report["summary"]["per_rank_restore_timings"]["3"]["median_queue_wait_ms"] == 4 + assert report["summary"]["per_rank_restore_timings"]["2"]["median_phase_ms"] == {"read": 12, "place": 8} + + +@pytest.mark.parametrize("traces", [ + [completion(0), completion(1)], + [completion(rank, outcome="recompute", verified_span_tokens=0) for rank in range(4)], + [completion(rank, digest="different" if rank == 3 else "0123456789ab") for rank in range(4)], + [completion(rank, requested_span_tokens=11000 if rank == 3 else 10000) for rank in range(4)], + [completion(rank, role="scheduler") for rank in range(4)], +]) +def test_partial_failed_or_mismatched_completions_do_not_verify(traces): + row = analysis.analyze([turn()], traces, [0, 1, 2, 3])["turns"][0] + assert row["source"] == "unknown" + assert row["verified_span_tokens"] is None + + +def test_offer_is_not_restore_and_zero_api_not_local_miss(): + offer = {"schema": analysis.TRACE_SCHEMA, "request_id": "chatcmpl-soak-one", "role": "scheduler", + "event": "external_restore_offer", "selected_span_tokens": 10000} + row = analysis.analyze([turn()], [offer], [0, 1, 2, 3])["turns"][0] + assert row["source"] == "unknown" + assert row["offer_count"] == 1 + assert not row["all_rank_worker_verification"] + missing = analysis.analyze([turn(cached_tokens_reported=None)], [], [0])["turns"][0] + assert missing["source"] == "unknown" + + +def test_gpu_attachment_and_positive_report_are_separate_evidence(): + attached = {"schema": analysis.TRACE_SCHEMA, "request_id": "soak-one", "event": "gpu_lease_attached", + "role": "scheduler", "lease_span_tokens": 9000} + row = analysis.analyze([turn(cached_tokens_reported=8000)], [attached], [0, 1, 2, 3])["turns"][0] + assert row["source"] == "gpu_lease_attached" + assert not row["all_rank_worker_verification"] + assert row["lease_span_tokens_observed"] == 9000 + assert analysis.analyze([turn(cached_tokens_reported=8000)], [], [0])["turns"][0]["source"] == "reported_cached" + + +def test_latest_failure_overrides_prior_success_and_duplicates_do_not_make_quorum(): + records = [completion(rank) for rank in range(4)] + records += [completion(3, time_ns=200, outcome="recompute", verified_span_tokens=0)] + report = analysis.analyze([turn()], records + records, [0, 1, 2, 3]) + assert report["turns"][0]["source"] == "unknown" + assert report["summary"]["duplicate_trace_events"] == 5 + assert analysis.analyze([turn()], [completion(0)] * 4, [0, 1, 2, 3])["turns"][0]["source"] == "unknown" + + +def test_conflicting_same_time_and_ambiguous_ids_do_not_verify(): + records = [completion(rank) for rank in range(4)] + [completion(0, outcome="recompute", verified_span_tokens=0)] + row = analysis.analyze([turn()], records, [0, 1, 2, 3])["turns"][0] + assert row["source"] == "unknown" and row["conflicting_ranks"] == [0] + report = analysis.analyze([turn(), turn()], [completion(rank) for rank in range(4)], [0, 1, 2, 3]) + assert report["summary"]["ambiguous_turns"] == 2 + assert all(row["source"] == "unknown" for row in report["turns"]) + + +def test_unmatched_id_not_fuzzily_associated_and_rank_set_explicit(): + report = analysis.analyze([turn()], [completion(0, request_id="chatcmpl-soak-one-other")], [0]) + assert report["summary"]["unmatched_trace_events"] == 1 + with pytest.raises(ValueError, match="explicit"): + analysis.analyze([turn()], [], []) + + +def test_malformed_completion_never_verifies(): + row = analysis.analyze([turn()], [completion(0, requested_span_tokens=[10000])], [0])["turns"][0] + assert row["source"] == "unknown" + row = analysis.analyze([turn()], [completion(0, digest=[])], [0])["turns"][0] + assert row["source"] == "unknown" + + +def test_phase_populations_remain_separate_and_retry_timings_retained(): + turns = [turn(), turn(phase="before", request_id="probe-id", response_id="chatcmpl-probe-id", elapsed_seconds=1)] + report = analysis.analyze(turns, [completion(0, time_ns=50, outcome="recompute", verified_span_tokens=0), completion(0)], [0]) + phases = report["summary"]["by_phase_and_source"] + assert phases["soak"]["verified_all_rank_external_restore"]["median_latency_seconds"] == 5 + assert phases["before"]["unknown"]["median_latency_seconds"] == 1 + assert report["summary"]["per_rank_restore_timings"]["0"]["outcomes"] == {"recompute": 1, "verified": 1} + + +def test_observed_response_id_engine_nonce_joins_strictly(): + response_id = "chatcmpl-soak-cc0bdb28896248beab09f145c9418947" + rows = [completion(rank, request_id=response_id + "-b4884e31") for rank in range(4)] + report = analysis.analyze([turn(response_id=response_id)], rows, [0, 1, 2, 3]) + assert report["turns"][0]["source"] == "verified_all_rank_external_restore" + assert report["summary"]["unmatched_trace_events"] == 0 + for suffix in ("-b4884e3", "-b4884e311", "-b4884e3z", "-b4884e31-more"): + report = analysis.analyze([turn(response_id=response_id)], [completion(0, request_id=response_id + suffix)], [0]) + assert report["turns"][0]["source"] == "unknown" + assert report["summary"]["unmatched_trace_events"] == 1 + + +def test_engine_nonce_requires_observed_response_id_and_refuses_collisions(): + engine_id = "chatcmpl-soak-one-1234abcd" + row = analysis.analyze([turn(response_id=None)], [completion(0, request_id=engine_id)], [0])["turns"][0] + assert row["source"] == "unknown" + turns = [turn(), turn(request_id=engine_id, response_id="other-api-id")] + report = analysis.analyze(turns, [completion(0, request_id=engine_id)], [0]) + assert report["summary"]["ambiguous_turns"] == 2 + assert all(row["source"] == "unknown" for row in report["turns"]) + + +def test_different_engine_requests_cannot_be_combined_into_quorum(): + rows = [completion(0, request_id="chatcmpl-soak-one-1234abcd"), + completion(1, request_id="chatcmpl-soak-one-5678abcd")] + row = analysis.analyze([turn()], rows, [0, 1])["turns"][0] + assert row["source"] == "unknown" + assert not row["all_rank_worker_verification"] diff --git a/performance/harnesses/validation/test_conversation_soak.py b/performance/harnesses/validation/test_conversation_soak.py new file mode 100644 index 00000000..7da518c6 --- /dev/null +++ b/performance/harnesses/validation/test_conversation_soak.py @@ -0,0 +1,168 @@ +"""Bounded soak tests use in-memory HTTP fixtures and never contact a host.""" +import importlib.util +import io +import json +from pathlib import Path +import sys + +import pytest + +spec = importlib.util.spec_from_file_location("soak_under_test", Path(__file__).with_name("conversation_soak.py")) +soak = importlib.util.module_from_spec(spec) +spec.loader.exec_module(soak) + + +def config(**overrides): + return {"endpoint": "http://192.0.2.1:8015", "model": "glm-5.3-flash-spark", + "api_key": "secret-not-for-receipts", "timeout": 1, "context_limit": 8192, + "temperature": 1, "seed": 20260906, "arm": "mtp3-test", "reasoning_effort": "low", + "probe_reasoning_effort": "low", "chat_template_kwargs": {"enable_thinking": True}, + "probe_tokens": 300, "probe_output_tokens": 64, "probe_repeats": 1, + "start_tokens": [1000], "max_tokens": 64, "tail_tokens": 200, + "reset_tokens": 3000, "concurrency": 2, "duration_seconds": 30, + "max_turns_per_agent": 3, "max_soak_prompt_tokens": 20000, + "image_every": 10, **overrides} + + +def fake_count(messages): + length = 0 + for message in messages: + content = message["content"] + if isinstance(content, list): + length += sum(len(part.get("text", "")) + (500 if part["type"] == "image_url" else 0) + for part in content) + else: + length += len(content) + length += len(message.get("reasoning_content", "")) + 20 + return max(1, length // 5) + + +def fake_http(calls, *, cached=0, missing_usage=False, error=False): + def send(url, payload, key, timeout, request_id=None): + calls.append((url, payload, request_id)) + count = fake_count(payload["messages"]) + if url.endswith("/tokenize"): + return io.BytesIO(json.dumps({"count": count}).encode()) + if error: + raise ValueError("credential echoed by server: secret-not-for-receipts") + records = [ + {"id": "chatcmpl-fixture", "choices": [{"delta": {"reasoning_content": "think"}}]}, + {"choices": [{"delta": {"content": "answer"}, "finish_reason": "length"}]}, + ] + if not missing_usage: + records.append({"usage": {"prompt_tokens": count, "completion_tokens": 3, + "prompt_tokens_details": {"cached_tokens": cached}}}) + return io.BytesIO(("".join("data: " + json.dumps(record) + "\n" for record in records) + + "data: [DONE]\n").encode()) + return send + + +def test_calibration_preserves_conversation_and_template(monkeypatch): + calls = [] + monkeypatch.setattr(soak, "request", fake_http(calls)) + history = [{"role": "user", "content": "original"}, {"role": "assistant", "content": "reply"}] + original = json.dumps(history) + messages, count = soak.calibrated_user(config(), history, "seed-agent-1", 1000) + assert abs(count - 1000) <= 10 + assert messages[:2] == history + assert json.dumps(history) == original + assert all(payload["chat_template_kwargs"] == {"enable_thinking": True} for _, payload, _ in calls) + + +def test_stream_records_ids_usage_reasoning_and_delta_clock(monkeypatch): + calls = [] + monkeypatch.setattr(soak, "request", fake_http(calls, cached=1)) + ticks = iter([100, 101, 103, 104, 105]) + record, assistant = soak.stream_turn(config(), [{"role": "user", "content": "fixture"}], + 100, 64, "identity", "soak", request_id="fixture-id", clock=lambda: next(ticks)) + assert record["request_id"] == calls[0][2] == "fixture-id" + assert record["response_id"] == "chatcmpl-fixture" + assert record["cached_tokens_reported"] == 1 + assert record["ttft_seconds"] == 1 + assert record["elapsed_seconds"] == 5 + assert record["content_delta_offsets_seconds"] == [1, 3] + assert record["decode_tokens_per_second_estimate"] == 1 + assert assistant == {"role": "assistant", "content": "answer", "reasoning_content": "think"} + assert record["output_budget_exhausted"] + assert calls[0][1]["reasoning_effort"] == "low" + + +def test_guard_and_missing_usage_fail_closed(monkeypatch): + calls = [] + monkeypatch.setattr(soak, "request", fake_http(calls, missing_usage=True)) + with pytest.raises(ValueError, match="context limit"): + soak.stream_turn(config(), [], 8192, 64, "id", "soak") + assert not calls + with pytest.raises(ValueError, match="authoritative"): + soak.stream_turn(config(), [{"role": "user", "content": "text"}], 50, 64, "id", "soak") + + +def test_bounded_conversations_and_before_after_probes(monkeypatch, tmp_path): + calls = [] + monkeypatch.setattr(soak, "request", fake_http(calls)) + path = tmp_path / "receipt.jsonl" + assert soak.execute(config(), path) == 0 + records = [json.loads(line) for line in path.read_text().splitlines()] + turns = [record for record in records if record["type"] == "turn"] + assert len(turns) == 8 + assert [record["phase"] for record in turns][0] == "before" + assert [record["phase"] for record in turns][-1] == "after" + assert sum(record.get("continuation", False) for record in turns) == 4 + assert len({record["request_id"] for record in turns}) == 8 + assert len({record["prompt_sha256"] for record in turns}) == 8 + assert records[-1]["soak_turns"] == 6 + assert records[-1]["fraction_below_half_cached"] == 1 + assert "secret-not-for-receipts" not in path.read_text() + with pytest.raises(FileExistsError): + soak.execute(config(), path) + + +def test_global_admission_budget_counts_all_agents(monkeypatch, tmp_path): + monkeypatch.setattr(soak, "request", fake_http([])) + path = tmp_path / "budget.jsonl" + assert soak.execute(config(max_soak_prompt_tokens=2100), path) == 0 + summary = json.loads(path.read_text().splitlines()[-1]) + assert summary["soak_prompt_tokens_admitted"] <= 2100 + assert summary["soak_turns"] == 2 + assert summary["probes"]["after"]["samples"] == 1 + + +def test_failure_stops_before_soak_and_redacts_error(monkeypatch, tmp_path): + calls = [] + monkeypatch.setattr(soak, "request", fake_http(calls, error=True)) + path = tmp_path / "failed.jsonl" + assert soak.execute(config(), path) == 2 + records = [json.loads(line) for line in path.read_text().splitlines()] + errors = [record for record in records if record["type"] == "error"] + assert len(errors) == 1 and errors[0]["request_id"] + assert records[-1]["soak_turns"] == 0 + assert "secret-not-for-receipts" not in path.read_text() + assert sum(url.endswith("/v1/chat/completions") for url, _, _ in calls) == 1 + + +def test_unknown_cache_usage_is_not_a_miss(): + rows = [{"type": "turn", "phase": "soak", "valid": True, "continuation": True, + "cached_fraction_reported": None, "elapsed_seconds": 10}] + summary = soak.summarize(rows) + assert summary["continuations"] == 1 + assert summary["continuations_with_cache_usage"] == 0 + assert summary["fraction_below_half_cached"] is None + + +def test_fixture_seed_reproducible_and_image_added(monkeypatch): + assert soak.fixture("seed-one", 1000) == soak.fixture("seed-one", 1000) + assert soak.fixture("seed-one", 1000) != soak.fixture("seed-two", 1000) + monkeypatch.setattr(soak, "request", fake_http([])) + messages, count = soak.calibrated_user(config(), [], "image-seed", 1000, "data:image/png;base64,fixture") + assert messages[0]["content"][1]["type"] == "image_url" + assert abs(count - 1000) <= 10 + + +def test_plan_requires_no_endpoint_or_key(monkeypatch, capsys): + monkeypatch.setattr(soak, "request", lambda *args, **kwargs: pytest.fail("unexpected HTTP")) + monkeypatch.setattr(sys, "argv", ["conversation_soak.py", "--plan", "--model", "glm-5.3-flash-spark", + "--arm", "baseline-mtp3", "--context-limit", "1m"]) + assert soak.main() == 0 + plan = json.loads(capsys.readouterr().out) + assert plan["max_chat_requests"] == 86 + assert "api_key" not in plan["config"] diff --git a/performance/records/glm53-flash/mtp3-cache-history-observations.json.gz b/performance/records/glm53-flash/mtp3-cache-history-observations.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..17c3d990ff86fb73cace0cc351a85f5c7b933dc2 GIT binary patch literal 466020 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⁢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℘-Dj1P1nK_15T*5 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/&boUgEBxid!@m0gG0!f|jBzY-(b&LHaN~Gb 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 literal 0 HcmV?d00001 diff --git a/performance/records/glm53-flash/mtp3-cache-history-validation.md b/performance/records/glm53-flash/mtp3-cache-history-validation.md new file mode 100644 index 00000000..4a007783 --- /dev/null +++ b/performance/records/glm53-flash/mtp3-cache-history-validation.md @@ -0,0 +1,77 @@ +# Persistent-cache pressure with native MTP3 decoding + +Status: **research-only**. This record qualifies only the functional and +measurement conditions below; it is not a production throughput guarantee. + +## Conditions + +GLM-5.3-Flash-NVFP4-Spark revision +`df116c4fb16b1d37ae43d2cfd624de26ffbc832e` ran on four NVIDIA GB10 hosts with +TP4/DCP4, native MTP depth three, 24 GiB KV capacity per rank, and dual-rail +hardware-forwarded RoCE transport. The serving image was +`sha256:75050f7b4dd7287f1ecb3e7e34226d24aa6c5b3e012a8bd6c8399e411cfbd908`, +containing SparkCache `607ccef061d0f511f45a2a8a93f74514c955d3a3` and the source +transforms in `runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/`. + +The transport library SHA-256 was +`056243fad27d224b82e437925ffa2aed42037e6bd29f239f56076a832f6ca5cb`; +the SparkCache placement library SHA-256 was +`2657cdd2e54a097c9544e4c79ae62c0646db6db123ff24e4f0c384238c3a1e8d`. +The persisted cache used a 2 GiB maximum and 1.5 GiB low watermark per rank, +eight restore lanes, and a 16,384-token full-capture interval. Periodic full +capture is opt-in and increases write traffic. + +Four text-only conversations started around 100K tokens and grew by about +2K tokens per turn, with a 512-token response limit and rotation at 160K. +Admission lasted 3,600 seconds; a 100M prompt-token ceiling was not reached. +Thinking was enabled. Three approximately 5.3K-token, 300-output-token probes +ran before and after load. Startup and warmup completed before measurement. + +## Measurement + +The harness `performance/harnesses/validation/conversation_soak.py` records +client monotonic-clock TTFT and stream-delta offsets. Decode rate is estimated +as `(completion_tokens - 1) / (last_delta - first_delta)`; it is not exact +token-level inter-token latency. Reported cached tokens come from API usage. +They do not independently distinguish local hits from external restores. + +The numeric observations are in +[`mtp3-cache-history-observations.json.gz`](mtp3-cache-history-observations.json.gz). +The artifact identifies the raw receipt and harness by SHA-256 and preserves +all 551 response timings and stream offsets. Endpoint addresses, request IDs, +and prompt/generated text are omitted; numeric observations are unchanged. +The artifact verifier recomputes response counts and probe medians. + +## Result + +The run completed 551 responses without request errors: 545 conversation +requests and six probes. It admitted 70,074,391 prompt tokens, including +cached tokens, in 60m58.46s including probes and drain. All 525 continuations +reported at least half their prompt tokens cached. + +| Probe median | Before load | After load | +|---|---:|---:| +| Client TTFT | 2.9436 s | 2.9798 s | +| Estimated decode rate | 51.20 tokens/s | 47.80 tokens/s | + +The decode estimate decreased 6.65%; individual probe ranges overlap. Three +samples per side do not support a precise confidence interval or a claim of +zero performance drift. + +## Conclusion + +This four-rank composition completed the specified sustained cache workload +without request errors or a population of low-reported-cache continuations. +The probes did not reproduce the approximately 35% post-load slowdown +described in SparkCache issue #60 under these conditions. + +## Limitations + +The image combines SparkCache and runtime changes, so this is not an isolated +comparison of any individual patch. No matched original-image or restore-only +control was completed. The 2 GiB test policy is not the original issues' +40 GiB cache policy; multimodal traffic, C8/C16, and near-1M serving are not +qualified. Some resumed schedules still miss safely. One startup attempt +exited for an undetermined reason; the same image passed startup on retry. +This record does not qualify unattended startup availability or close +SparkCache issues #60 or #61. diff --git a/performance/records/glm53-flash/test_mtp3_cache_history_record.py b/performance/records/glm53-flash/test_mtp3_cache_history_record.py new file mode 100644 index 00000000..6487c09f --- /dev/null +++ b/performance/records/glm53-flash/test_mtp3_cache_history_record.py @@ -0,0 +1,22 @@ +import gzip +import json +import statistics +from pathlib import Path + + +def test_mtp3_cache_history_numeric_observations(): + path = Path(__file__).with_name('mtp3-cache-history-observations.json.gz') + record = json.loads(gzip.decompress(path.read_bytes())) + turns = record['turns'] + assert len(turns) == 551 and all(t['valid'] for t in turns) + assert record['summary']['errors'] == 0 + soak = [t for t in turns if t['phase'] == 'soak'] + assert len(soak) == 545 + assert sum(t['tokenized_prompt_tokens'] for t in soak) == 70074391 + assert sum(t['cached_tokens_reported'] > 0 for t in soak) == 525 + for phase in ('before', 'after'): + probes = [t for t in turns if t['phase'] == phase] + assert len(probes) == 3 + expected = record['summary']['probes'][phase] + assert statistics.median(t['ttft_seconds'] for t in probes) == expected['median_ttft_seconds'] + assert statistics.median(t['decode_tokens_per_second_estimate'] for t in probes) == expected['median_decode_tokens_per_second_estimate'] diff --git a/runtime/glm53-flash-jj-r8-gb10/README.md b/runtime/glm53-flash-jj-r8-gb10/README.md index 95bfd2c4..bee09a47 100644 --- a/runtime/glm53-flash-jj-r8-gb10/README.md +++ b/runtime/glm53-flash-jj-r8-gb10/README.md @@ -178,7 +178,8 @@ ports 19006/19007 and secondary ports 19106/19107. The derivation reserves two ports for each admitted capacity Q1024/Q2048/Q4096/Q8192. SIRCL's two transport slots are independent from SparkCache's two 3-GiB -asynchronous page-capture slots and two 256-MiB restore arenas. +asynchronous page-capture slots and sixteen 256-MiB restore arenas (two for +each of eight load lanes). #### Recorded functional evidence @@ -228,6 +229,11 @@ With the connector enabled, `SPARKCACHE_ACCESS_MODE=read-write` restores and publishes persistent entries. `restore-only` reuses compatible entries but does not capture or publish new prompt state. Missing entries are computed by vLLM normally. `store-only` and `disabled` are diagnostic modes. +The environment template sets `SPARKCACHE_ASYNC_PAGE_CAPTURE=auto`: capture +is enabled for `read-write` and `store-only`, and disabled for `restore-only`, +`disabled`, or `SPARKCACHE_ENABLED=0`. Explicit `1` still rejects a mode that +cannot publish. Explicit `0` uses synchronous publication in publishing modes. +The launcher defaults to `0` when no capture setting is supplied. ### Choose the persistent publication format @@ -277,14 +283,43 @@ not discard Triton, TorchInductor, B12X, or vLLM compilation caches. Each rank keeps its own persistent copy under `CACHE_HOST_ROOT`; the four ranks do not write to one network-shared compilation directory. -Set `SPARKCACHE_ASYNC_PAGE_CAPTURE=1` to capture manager pages through the +Set `SPARKCACHE_ASYNC_PAGE_CAPTURE=auto` to capture manager pages through the bounded CUDA ring. `SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES` defaults to 8 GiB for DCP1, 5 GiB for DCP2, and 3 GiB for DCP4. The DCP4 profile uses two 3 GiB capture slots, so the background publisher can consume one completed capture while a later capture uses the other. Restore separately pipelines bounded -NVMe reads and CUDA placement through two 256 MiB mapped arenas. A third arena -is not part of the profile because the two-stage pipeline has no measured -arena wait that would justify more unified-memory pressure. +NVMe reads and CUDA placement through two 256 MiB mapped arenas **per load +lane**. Eight lanes reserve 4 GiB per rank for restore payloads. With the 6 GiB +capture ring, the DCP4 profile configures 10 GiB per rank (40 GiB across TP4), +in addition to the 24 GiB per-rank KV allocation. Restore-only configures +4 GiB per rank and no capture slots. These figures describe payload capacities; +control arrays, Python objects, shared bases, transport, model weights and +allocator overhead require additional memory. `SPARKCACHE_LOAD_THREADS` defaults +to eight; throughput and memory-pressure effects need hardware measurements. + +### Inspect configured memory before launch + +Status: **implemented**. The launcher can print a JSON allocation plan without +Docker, GPUs, checkpoint files, or cache directories. It sources the same trusted +shell configuration as a launch and resolves its byte counts and capture mode: + +```bash +SPARKRING_PRINT_MEMORY_PLAN=1 bash runtime/glm53-flash-jj-r8-gb10/launch-rank.sh \ + 0 runtime/glm53-flash-jj-r8-gb10/runtime.env.example +``` + +Set `SPARKCACHE_BUFFER_BUDGET_BYTES` in the configuration to reject restore +and capture payload capacities above that per-rank ceiling before host checks +or Docker access. Zero, the default, disables the ceiling. For example, +`10737418240` admits the 10 GiB DCP4 read-write configuration exactly. The +report includes per-rank and topology totals; DCP shards state but does not +reduce the physical TP rank count. A normal launch also logs the plan. + +This ceiling does not cap total process memory or predict whether serving fits. +It excludes model weights, KV allocation, transient reads, retained shared bases, +CUDA control arrays, compilation and transport buffers, and allocator overhead. +The report lists KV separately. A passing offline plan does not qualify a CUDA +allocation or a serving performance result. When `DFLASH_WARMUP=1`, the readiness entrypoint runs `warmup_dflash.py` before Docker reports rank 0 as healthy. The readiness wrapper, diff --git a/runtime/glm53-flash-jj-r8-gb10/launch-rank.sh b/runtime/glm53-flash-jj-r8-gb10/launch-rank.sh index 2090f0a3..bb205a48 100644 --- a/runtime/glm53-flash-jj-r8-gb10/launch-rank.sh +++ b/runtime/glm53-flash-jj-r8-gb10/launch-rank.sh @@ -28,6 +28,11 @@ fi : "${CONTAINER_PREFIX:=glm53-jj-r8-gb10}" : "${SPARKRING_CREATE_ONLY:=0}" : "${SPARKRING_PRINT_CONTAINER_SPEC:=0}" +: "${SPARKRING_PRINT_MEMORY_PLAN:=0}" +case "${SPARKRING_PRINT_MEMORY_PLAN}" in + 0|1) ;; + *) printf 'SPARKRING_PRINT_MEMORY_PLAN must be 0 or 1\n' >&2; exit 78 ;; +esac case "${SPARKRING_PRINT_CONTAINER_SPEC}" in 0|1) ;; *) printf 'SPARKRING_PRINT_CONTAINER_SPEC must be 0 or 1\n' >&2; exit 78 ;; @@ -132,6 +137,7 @@ esac : "${SPARKCACHE_ASYNC_PAGE_CAPTURE:=0}" : "${SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES:=auto}" : "${SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT:=2}" +: "${SPARKCACHE_BUFFER_BUDGET_BYTES:=0}" : "${SPARKCACHE_SOURCE_OVERLAY:=}" : "${VLLM_KV_METRICS_OVERLAY:=}" : "${MULTIMODAL_INPUTS:=1}" @@ -184,6 +190,7 @@ do done require_uint SPARKCACHE_LOW_WATERMARK_BYTES require_uint SPARKCACHE_TTL_SECONDS +require_uint SPARKCACHE_BUFFER_BUDGET_BYTES require_uint NCCL_IB_GID_INDEX require_uint MAX_IMAGES_PER_PROMPT require_uint MAX_VIDEOS_PER_PROMPT @@ -297,13 +304,21 @@ case "${ENABLE_PROMPT_TOKENS_DETAILS}" in *) die 'ENABLE_PROMPT_TOKENS_DETAILS must be 0 or 1' ;; esac case "${SPARKCACHE_ASYNC_PAGE_CAPTURE}" in - 0|1) ;; - *) die 'SPARKCACHE_ASYNC_PAGE_CAPTURE must be 0 or 1' ;; + auto|0|1) ;; + *) die 'SPARKCACHE_ASYNC_PAGE_CAPTURE must be auto, 0, or 1' ;; esac case "${SPARKCACHE_ACCESS_MODE}" in read-write|restore-only|store-only|disabled) ;; *) die 'SPARKCACHE_ACCESS_MODE must be read-write, restore-only, store-only, or disabled' ;; esac +if [[ "${SPARKCACHE_ASYNC_PAGE_CAPTURE}" == auto ]]; then + SPARKCACHE_ASYNC_PAGE_CAPTURE=0 + if [[ "${SPARKCACHE_ENABLED}" == 1 ]]; then + case "${SPARKCACHE_ACCESS_MODE}" in + read-write|store-only) SPARKCACHE_ASYNC_PAGE_CAPTURE=1 ;; + esac + fi +fi if [[ "${SPARKCACHE_ASYNC_PAGE_CAPTURE}" == 1 ]]; then [[ "${SPARKCACHE_ENABLED}" == 1 ]] || \ die 'asynchronous page capture requires SPARKCACHE_ENABLED=1' @@ -312,6 +327,69 @@ if [[ "${SPARKCACHE_ASYNC_PAGE_CAPTURE}" == 1 ]]; then *) die 'asynchronous page capture requires a publication-capable access mode' ;; esac fi + +# Resolve the payload buffers before inspecting checkpoints or contacting Docker. +# Python integers avoid overflow when comparing operator-supplied byte budgets. +command -v python3 >/dev/null 2>&1 || die 'python3 is required to resolve the memory plan' +export SPARKCACHE_ENABLED SPARKCACHE_ACCESS_MODE SPARKCACHE_LOAD_THREADS +export SPARKCACHE_CUDA_ARENA_BYTES SPARKCACHE_ASYNC_PAGE_CAPTURE +export SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT +export SPARKCACHE_BUFFER_BUDGET_BYTES KV_CACHE_MEMORY_BYTES +export TENSOR_PARALLEL_SIZE PIPELINE_PARALLEL_SIZE DECODE_CONTEXT_PARALLEL_SIZE +memory_plan="$(python3 - <<'PY' +import json +import os +import sys + +def integer(name): + return int(os.environ[name]) + +enabled = os.environ["SPARKCACHE_ENABLED"] == "1" +mode = os.environ["SPARKCACHE_ACCESS_MODE"] +# The pinned manager-page connector caps active placement lanes at eight. +requested_lanes = integer("SPARKCACHE_LOAD_THREADS") +lanes = min(8, requested_lanes) if enabled and mode in ("read-write", "restore-only") else 0 +slots = integer("SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT") if os.environ["SPARKCACHE_ASYNC_PAGE_CAPTURE"] == "1" else 0 +restore = lanes * 2 * integer("SPARKCACHE_CUDA_ARENA_BYTES") +capture = slots * integer("SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES") +buffers = restore + capture +budget = integer("SPARKCACHE_BUFFER_BUDGET_BYTES") +ranks = integer("TENSOR_PARALLEL_SIZE") * integer("PIPELINE_PARALLEL_SIZE") +kv = integer("KV_CACHE_MEMORY_BYTES") +print(json.dumps({ + "status": "implemented", + "basis": "configured payload capacities; not measured resident memory", + "access_mode": mode if enabled else "disabled", + "async_page_capture": slots > 0, + "dcp_degree": integer("DECODE_CONTEXT_PARALLEL_SIZE"), + "rank_count": ranks, + "requested_restore_lanes_per_rank": requested_lanes, + "restore_lanes_per_rank": lanes, + "arenas_per_restore_lane": 2, + "capture_slots_per_rank": slots, + "restore_payload_bytes_per_rank": restore, + "capture_payload_bytes_per_rank": capture, + "sparkcache_payload_bytes_per_rank": buffers, + "sparkcache_payload_bytes_all_ranks": buffers * ranks, + "buffer_budget_bytes_per_rank": budget or None, + "within_buffer_budget": budget == 0 or buffers <= budget, + "kv_cache_bytes_per_rank": kv, + "kv_and_payload_bytes_per_rank": kv + buffers, + "kv_and_payload_bytes_all_ranks": (kv + buffers) * ranks, + "excluded": ["model weights", "CUDA control arrays", "Python objects and read buffers", + "shared base retention", "transport", "compilation workspaces", "allocator overhead"], +}, sort_keys=True)) +if budget and buffers > budget: + print(f"SparkCache payload buffers require {buffers} bytes per rank, exceeding " + f"SPARKCACHE_BUFFER_BUDGET_BYTES={budget}", file=sys.stderr) + sys.exit(78) +PY +)" || { printf '%s\n' "${memory_plan}"; exit 78; } +if [[ "${SPARKRING_PRINT_MEMORY_PLAN}" == 1 ]]; then + printf '%s\n' "${memory_plan}" + exit 0 +fi +printf 'sparkcache: memory_plan %s\n' "${memory_plan}" >&2 if [[ -n "${CHAT_TEMPLATE_HOST_PATH}" ]]; then [[ "${CHAT_TEMPLATE_HOST_PATH}" == /* ]] || \ die 'CHAT_TEMPLATE_HOST_PATH must be an absolute host path when set' diff --git a/runtime/glm53-flash-jj-r8-gb10/runtime.env.example b/runtime/glm53-flash-jj-r8-gb10/runtime.env.example index 0931cda2..4b59df75 100644 --- a/runtime/glm53-flash-jj-r8-gb10/runtime.env.example +++ b/runtime/glm53-flash-jj-r8-gb10/runtime.env.example @@ -176,9 +176,15 @@ SPARKCACHE_LOAD_THREADS=8 SPARKCACHE_MAX_PENDING_RESTORES=8 SPARKCACHE_CUDA_RESTORE_IO_WORKERS=8 SPARKCACHE_CUDA_ARENA_BYTES=268435456 +# Each load lane owns two mapped arenas: 8 * 2 * 256 MiB = 4 GiB per rank. +# Optional per-rank ceiling for restore and capture payload buffers, in bytes. +# Zero disables the ceiling. This excludes models, KV, control arrays and reads. +SPARKCACHE_BUFFER_BUDGET_BYTES=0 # Two bounded capture slots let the background publisher consume one capture -# while a later request uses the other. Set to 0 for synchronous publication. -SPARKCACHE_ASYNC_PAGE_CAPTURE=1 +# while a later request uses the other. Auto enables capture only for enabled +# read-write/store-only modes; restore-only and disabled modes allocate no slots. +# Set to 0 for synchronous publication or 1 to require asynchronous capture. +SPARKCACHE_ASYNC_PAGE_CAPTURE='auto' SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES='auto' SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT=2 diff --git a/runtime/glm53-flash-jj-r8-gb10/test_image_contract.py b/runtime/glm53-flash-jj-r8-gb10/test_image_contract.py index 0a4a8570..25bcbe36 100644 --- a/runtime/glm53-flash-jj-r8-gb10/test_image_contract.py +++ b/runtime/glm53-flash-jj-r8-gb10/test_image_contract.py @@ -470,7 +470,7 @@ def test_launcher_keeps_gather_workspace_below_native_context_limit() -> None: "KV_CACHE_MEMORY_BYTES='auto'", "B12X_MLA_CKV_GATHER_MAX_TOKENS=524288", "SPARKCACHE_MAX_SPAN_TOKENS=1048576", - "SPARKCACHE_ASYNC_PAGE_CAPTURE=1", + "SPARKCACHE_ASYNC_PAGE_CAPTURE='auto'", "SPARKCACHE_ASYNC_CAPTURE_SLOT_BYTES='auto'", "SPARKCACHE_ASYNC_CAPTURE_SLOT_COUNT=2", "SPARKCACHE_SHARED_PREFIX_LEASE_TTL_SECONDS=300", diff --git a/runtime/glm53-flash-jj-r8-gb10/test_launcher_contract.py b/runtime/glm53-flash-jj-r8-gb10/test_launcher_contract.py index 333e5798..279ae9f4 100644 --- a/runtime/glm53-flash-jj-r8-gb10/test_launcher_contract.py +++ b/runtime/glm53-flash-jj-r8-gb10/test_launcher_contract.py @@ -58,6 +58,7 @@ def test_environment_exposes_reproducible_operator_defaults() -> None: assert values["SPARKCACHE_ENABLED"] == "1" assert values["ENABLE_PROMPT_TOKENS_DETAILS"] == "1" assert values["SPARKCACHE_ACCESS_MODE"] == "read-write" + assert values["SPARKCACHE_ASYNC_PAGE_CAPTURE"] == "auto" assert values["SPARKCACHE_SHARED_PREFIX_LEASE_TTL_SECONDS"] == "300" assert values["SPARKCACHE_CACHE_NAMESPACE"] == ( "glm53-flash-vllm-e02b1746-b12x-9ae41c5c-" @@ -74,8 +75,110 @@ def test_environment_exposes_reproducible_operator_defaults() -> None: ) +def _memory_plan(tmp_path: Path, *settings: str) -> subprocess.CompletedProcess[str]: + config = tmp_path / "memory-plan.env" + # Nonexistent checkpoint and cache paths prove this mode needs no model, + # cache directories, Docker daemon, GPU, or serving host. + config.write_text( + "\n".join(( + f"source '{_bash_path(ENVIRONMENT)}'", + "HOST_IP=rank0.example.net", + "MASTER_ADDR=rank0.example.net", + "TARGET_MODEL_HOST_PATH=/nonexistent-memory-plan/target", + "DFLASH_MODEL_HOST_PATH=/nonexistent-memory-plan/draft", + "CACHE_HOST_ROOT=/nonexistent-memory-plan/cache", + "SPARKRING_PRINT_MEMORY_PLAN=1", + *settings, + )), + encoding="utf-8", + newline="\n", + ) + return subprocess.run( + ["bash", _bash_path(LAUNCHER), "0", _bash_path(config)], + cwd=ROOT, text=True, capture_output=True, check=False, + ) + + +@pytest.mark.parametrize("dcp,slot_gib", [(1, 8), (2, 5), (4, 3)]) +def test_memory_plan_resolves_dcp_and_all_lane_allocations( + tmp_path: Path, dcp: int, slot_gib: int, +) -> None: + result = _memory_plan(tmp_path, f"DECODE_CONTEXT_PARALLEL_SIZE={dcp}") + assert result.returncode == 0, result.stderr + plan = json.loads(result.stdout) + gib = 1024 ** 3 + assert plan["restore_payload_bytes_per_rank"] == 4 * gib + assert plan["capture_payload_bytes_per_rank"] == 2 * slot_gib * gib + assert plan["sparkcache_payload_bytes_all_ranks"] == (4 + 2 * slot_gib) * gib * 4 + assert plan["kv_and_payload_bytes_all_ranks"] == (24 + 4 + 2 * slot_gib) * gib * 4 + assert plan["buffer_budget_bytes_per_rank"] is None + + +@pytest.mark.parametrize("mode,enabled,restore_gib,capture_gib", [ + ("read-write", 1, 4, 6), ("restore-only", 1, 4, 0), + ("store-only", 1, 0, 6), ("disabled", 1, 0, 0), + ("read-write", 0, 0, 0), +]) +def test_auto_capture_respects_access_mode( + tmp_path: Path, mode: str, enabled: int, restore_gib: int, capture_gib: int, +) -> None: + result = _memory_plan(tmp_path, f"SPARKCACHE_ACCESS_MODE={mode}", f"SPARKCACHE_ENABLED={enabled}") + assert result.returncode == 0, result.stderr + plan = json.loads(result.stdout) + assert plan["restore_payload_bytes_per_rank"] == restore_gib * 1024 ** 3 + assert plan["capture_payload_bytes_per_rank"] == capture_gib * 1024 ** 3 + assert plan["async_page_capture"] == bool(capture_gib) + + +@pytest.mark.parametrize("setting,error", [ + ("SPARKCACHE_ACCESS_MODE=restore-only", "publication-capable access mode"), + ("SPARKCACHE_ACCESS_MODE=disabled", "publication-capable access mode"), + ("SPARKCACHE_ENABLED=0", "requires SPARKCACHE_ENABLED=1"), +]) +def test_explicit_capture_contradictions_remain_errors( + tmp_path: Path, setting: str, error: str, +) -> None: + result = _memory_plan(tmp_path, setting, "SPARKCACHE_ASYNC_PAGE_CAPTURE=1") + assert result.returncode == 78 + assert error in result.stderr + + +def test_buffer_budget_rejects_overcommit_before_host_checks(tmp_path: Path) -> None: + required = 10 * 1024 ** 3 + result = _memory_plan(tmp_path, f"SPARKCACHE_BUFFER_BUDGET_BYTES={required - 1}") + assert result.returncode == 78 + assert "exceeding SPARKCACHE_BUFFER_BUDGET_BYTES" in result.stderr + assert json.loads(result.stdout)["within_buffer_budget"] is False + accepted = _memory_plan(tmp_path, f"SPARKCACHE_BUFFER_BUDGET_BYTES={required}") + assert accepted.returncode == 0, accepted.stderr + assert json.loads(accepted.stdout)["within_buffer_budget"] is True + + +def test_explicit_synchronous_capture_and_custom_lane_sizes(tmp_path: Path) -> None: + result = _memory_plan(tmp_path, "SPARKCACHE_ASYNC_PAGE_CAPTURE=0", + "SPARKCACHE_LOAD_THREADS=3", "SPARKCACHE_CUDA_ARENA_BYTES=1048576") + assert result.returncode == 0, result.stderr + plan = json.loads(result.stdout) + assert plan["capture_payload_bytes_per_rank"] == 0 + assert plan["restore_payload_bytes_per_rank"] == 6 * 1048576 + + +def test_memory_plan_uses_connector_lane_limit(tmp_path: Path) -> None: + result = _memory_plan(tmp_path, "SPARKCACHE_LOAD_THREADS=64") + assert result.returncode == 0, result.stderr + plan = json.loads(result.stdout) + assert plan["requested_restore_lanes_per_rank"] == 64 + assert plan["restore_lanes_per_rank"] == 8 + assert plan["restore_payload_bytes_per_rank"] == 4 * 1024 ** 3 + + +@pytest.mark.parametrize("capture_mode,access_mode,capture_enabled", [ + ("0", "read-write", False), + ("auto", "read-write", True), + ("auto", "restore-only", False), +]) def test_launcher_resolves_dcp_profiles_and_prompt_token_details( - tmp_path: Path, + tmp_path: Path, capture_mode: str, access_mode: str, capture_enabled: bool, ) -> None: subprocess.run(["bash", "-n", _bash_path(LAUNCHER)], check=True, cwd=ROOT) fake_bin = tmp_path / "bin" @@ -148,6 +251,8 @@ def test_launcher_resolves_dcp_profiles_and_prompt_token_details( "IMAGE_REF=test-image:r8", f"IMAGE_ID={IMAGE_ID}", f"DECODE_CONTEXT_PARALLEL_SIZE={dcp}", + f"SPARKCACHE_ASYNC_PAGE_CAPTURE={capture_mode}", + f"SPARKCACHE_ACCESS_MODE={access_mode}", ) ), encoding="utf-8", @@ -201,7 +306,8 @@ def test_launcher_resolves_dcp_profiles_and_prompt_token_details( extra = connector["kv_connector_extra_config"] assert extra["spark_cache_publication_schema"] == "tail-cow-v2" assert extra["spark_cache_model_profile"] == "glm53-flash-hybrid" - assert extra["spark_cache_access_mode"] == "read-write" + assert extra["spark_cache_access_mode"] == access_mode + assert extra["spark_cache_async_page_capture"] is capture_enabled assert extra["spark_cache_shared_prefix_lease_ttl_seconds"] == 300 assert "spark_cache_store" not in extra assert "spark_cache_restore" not in extra diff --git a/runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md b/runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md index eca6395f..f795f032 100644 --- a/runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md +++ b/runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md @@ -362,6 +362,7 @@ The bounded `--run-seconds` mode is for isolated diagnostics only. |---|---| | Child-process and peer checks | 1-second loop; peer HTTP timeout 2 seconds | | Unavailable peer connection | 4-second grace after the first transport failure; degraded health blocks model startup | +| Docker container status | One background query at a time, 3-second timeout; unknown status blocks model startup | | MAC/IP, Ethernet MTU, sysfs GID/netdev, routes, qdiscs, TC state | 5-second periodic check | | Full RDMA active-MTU probe | Startup and approximately every 60 seconds | | Health progress freshness | Readiness rejected after 10 seconds without supervisor progress | @@ -375,6 +376,14 @@ An authentication failure, explicit negative readiness, or changed process generation does not receive transport-error grace: it triggers failure when observed. Local marker exits also trigger failure without that grace. +Docker status queries run outside the fabric-monitor loop. A slow or failed +query reports `docker_status_degraded: true`; it does not declare fabric +failure or interrupt existing serving. Marker, network, and authenticated +peer checks continue. A completed query reporting that the model stopped +still enforces the model-exit policy. Pending queries never reuse a previous +stopped result as proof. Startup and teardown use separate synchronous +checks: unknown Docker state cannot authorize marker or network removal. + These are polling and timeout settings, not zero-window guarantees. Command execution, scheduling, management-network delays, and container-stop time affect detection and containment. In-flight requests can fail; a successful diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/.gitattributes b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/.gitattributes new file mode 100644 index 00000000..66e025bc --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/.gitattributes @@ -0,0 +1,3 @@ +# Transform script hashes include their original line endings. +patch_mtp3_*.py -text whitespace=cr-at-eol +fixtures/*.zip -text diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md new file mode 100644 index 00000000..9cc72f32 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md @@ -0,0 +1,164 @@ +# MTP3 cache-reuse source experiment + +Status: **research-only**. These source transforms coordinate recurrent prefix +reuse, GPU-lease accounting, and the fused indexer's histogram barrier for +GLM-5.3 native-MTP3. `compose.py` produces and verifies their exact Python output +from one specified base image. The package includes source inputs and CPU tests +of the allocation, lookup, retention, and accounting rules. + +The composition tool is implemented. Serving and performance qualification +require separate evidence for the complete image, SparkCache package, native +libraries, and workload. Published runtime pins and production Dockerfiles are +outside this experiment's output. + +The scope is GLM-5.3 native-MTP3 on four GB10 ranks, TP4/DCP4, with 512-token +recurrent/hash pages, 2,048-token attention scheduling alignment, one prefill +lookahead token, and aligned recurrent caching. Other speculation methods, +geometries and images require separate evidence. + +## Exact inputs and outputs + +The supported source input is local image ID +`sha256:2e41b1e934a85ff7c21b780532db2f0a0e978df081e52f4ae2bf11f8992fb24f`. +This is a local immutable image identity, not a registry pull reference. +`fixtures/manifest.json` lists the ten input Python files, their paths in +that image, byte counts and SHA-256 values. The 155 KiB fixture archive contains +only those files. Source bytes and their existing SPDX/copyright headers are +preserved. Models, compiled libraries, credentials and site configuration are +excluded. Fixtures are test inputs and do not enter a production image build. + +| Component | Output or required-library SHA-256 | +|---|---| +| vLLM scheduler | `75efa57e7ff5a77c76714b85e2e4d8e1d7f456d9a9eec6c67ebb11ca382942f9` | +| vLLM single-type KV manager | `d2e35b012e0cf45ab3771f545c35ca48f2a5858549c574a352975607369124e2` | +| B12X fused indexer | `b43a4a2802c7dfc4a049bbb5751fc7e7688b05cb06d4ece716ab7a1d91d23d2a` | +| Separately supplied SparkCache placement library | `2657cdd2e54a097c9544e4c79ae62c0646db6db123ff24e4f0c384238c3a1e8d` | +| Required SparkCache capture library | `4398f18b8913e743e7bf1ed8fe29560d4580e61b6a1e2ab8b16684b19b6573b5` | + +The fixture manifest attests each patch script's exact bytes. Each transform +accepts only its declared input SHA-256 or its own output SHA-256. Apply them in +this dependency order: + +1. `patch_mtp3_barrier.py` adds the CTA synchronization before the histogram + arrival signal and increments that kernel's compile-cache revision. +2. `patch_mtp3_lease_accounting.py` includes an attached GPU lease in initial + prefill cache statistics without labeling it an external transfer. +3. `patch_mtp3_local_lease_preference.py` prefers a strictly longer converged + local prefix over a shorter GPU lease and reuses that lookup result. +4. `patch_mtp3_sparse_retention.py` pairs an explicit speculative replay + checkpoint stop with sparse retention of its predecessor state. +5. `patch_mtp3_partial_tail_eligibility.py` decides whether a partial recurrent + tail requires a stop from the recurrent page size, rather than attention's + DCP-scaled scheduling unit. + +Every transform rejects an unknown input and checks its complete output. Its +own output is idempotent; source produced by another transform must still match +one of those two declared hashes. Use `compose.py --verify-candidate` to check +the composed output tree. + +The `original/` directory contains the exact source inputs. The `candidate/` +directory contains transformed output, and `composition.json` records output +hashes and transform receipts. These directory names describe the tool's file +interface, not deployment or qualification status. + +## Offline composition and tests + +Python 3.10 or later is sufficient for composition. Pytest is needed for tests. +No Docker, vLLM installation, Torch, model files or GPU is required: + +```bash +python runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py --check +python -m pytest runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse -q -rs +``` + +To retain the exact source trees and receipt in a fresh local directory: + +```bash +python runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py \ + --output-root work/mtp3-cache-reuse-composition +python runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py \ + --verify-candidate work/mtp3-cache-reuse-composition/candidate +python runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/check_mtp3_checkpoint_allocations.py \ + --source-root work/mtp3-cache-reuse-composition/original/vllm \ + --candidate-root work/mtp3-cache-reuse-composition/candidate/vllm \ + --output work/mtp3-checkpoint-allocations.json +``` + +Existing output directories and result files are rejected. `--source-root` +on the composition command accepts an independently extracted original tree, +with `vllm/` and `b12x/` immediately beneath it; every file is checked against +the same manifest before output creation. + +The allocator checker executes the actual allocation and block-registration +methods against planned running-state and GDN checkpoint writes. It covers +336 fresh and 336 resumed empty-table replay schedules with varied shared +boundaries, chunk budgets and speculative buffer counts. A selected null slot +is skipped by the real registration method. A selected non-null slot whose +planned state does not match its hash boundary fails the check. This tests +metadata consistency, not completion of CUDA writes. Some resumed schedules +can still miss a prompt predecessor; the report distinguishes those safe misses +from stale-state registration. + +The tests also cover lease/API accounting, local-versus-lease selection, +speculative backoff, prompt-length boundaries and recurrent partial-tail +eligibility. One optional test uses the companion SparkCache checkout directly: + +```bash +SPARKCACHE_SOURCE_ROOT=/path/to/sparkcache python -m pytest \ + runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse -q -rs +``` + +That optional test needs the companion checkout's CPU development dependencies. +It is explicitly skipped when `SPARKCACHE_SOURCE_ROOT` is absent. + +## Independent fixture extraction + +Use only the exact base image above on a local Docker host. A stopped container +can expose its files without launching Python, CUDA or serving. The following +Python fragment creates that stopped container, copies only manifest-listed +files, and removes the temporary container. It changes local Docker metadata; +do not run it against a serving container or a remote Docker context. + +```python +import json +from pathlib import Path +import subprocess + +package = Path('runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse') +manifest = json.loads((package / 'fixtures/manifest.json').read_text()) +output = Path('work/mtp3-extracted-original') +output.mkdir(parents=True, exist_ok=False) +image = manifest['base_image_id'] +observed = subprocess.check_output(['docker', 'image', 'inspect', image, + '--format', '{{.Id}}'], text=True).strip() +assert observed == image +container = subprocess.check_output(['docker', 'create', '--entrypoint', + '/bin/true', image], text=True).strip() +try: + for name, record in manifest['files'].items(): + target = output / name + target.parent.mkdir(parents=True, exist_ok=True) + subprocess.run(['docker', 'cp', container + ':' + record['image_path'], + str(target)], check=True) +finally: + subprocess.run(['docker', 'rm', container], check=True) +``` + +Then run `compose.py --source-root work/mtp3-extracted-original --check` to +verify the independently copied inputs and complete transform chain. + +## Serving composition boundary + +To serve with these Python sources, select a SparkCache commit and supply both +native libraries with the hashes listed above. The experimental image also +needs a runtime contract that attests the output scheduler and manager hashes. +The contract is +`sparkcache/runtime_patches/vllm-manager-page-async-contract-55969c16.json`; +the exact scheduler and manager preimage hashes are in the fixture manifest. +Record the resulting contract, full SparkCache source tree, native libraries, +image ID, model identity, topology, namespace and workload settings together. +The source composer does not rewrite that contract or published source pins. + +CPU test success establishes the stated source and metadata checks. Throughput, +deployment readiness, and unmeasured preemption/CUDA schedules require hardware +evidence that identifies the complete image and its test conditions. diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/check_mtp3_checkpoint_allocations.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/check_mtp3_checkpoint_allocations.py new file mode 100644 index 00000000..a62855da --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/check_mtp3_checkpoint_allocations.py @@ -0,0 +1,211 @@ +"""Reproduce MTP3 aligned checkpoint allocation and cache registration on CPU. + +Execute allocation and BlockPool.cache_full_blocks from the declared source +fixtures together with the transformed split/retention methods. Synthetic block +state labels track the running endpoint and GDN internal checkpoint scheduled +for GPU writes. This checks metadata/allocator consistency; it does not execute +GPU kernels or prove those writes completed on hardware. +Fresh and resumed cases start with an empty block table (preemption replay). +""" +from __future__ import annotations + +import argparse +import ast +import datetime +import hashlib +import json +import os +from pathlib import Path +from types import SimpleNamespace + +from repro_mtp3_checkpoint_materialization import ( + checkpoint_kernel_metadata, extracted_method, load_scheduler, + partial_hit_eligibility, +) +from repro_mtp3_sparse_retention import MambaSpec, ROOT, execute, load_algorithms + +WORK = Path(__file__).resolve().parent +PATCHED = Path(os.environ.get('MTP3_RETENTION_SOURCE', str(WORK / 'mtp3-retention-patched'))) +EXPECTED_SCHEDULER = '75efa57e7ff5a77c76714b85e2e4d8e1d7f456d9a9eec6c67ebb11ca382942f9' +EXPECTED_MANAGER = 'd2e35b012e0cf45ab3771f545c35ca48f2a5858549c574a352975607369124e2' +EXPECTED_ALLOCATOR = '10846c4994e7860deab8b42c8bcd3315ddc96d14a478d4012c398418cc17a04c' + + +def sha256(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def extracted_classes(): + allocation = ast.parse('class Allocator:\n pass').body[0] + allocation.body = [extracted_method(ROOT / 'v1/core/single_type_kv_cache_manager.py', + 'MambaManager', method) + for method in ('_needs_internal_checkpoint', 'allocate_new_blocks')] + scope = {'MambaSpec': MambaSpec, 'cdiv': lambda a, b: (a + b - 1) // b} + execute([allocation], scope) + algorithms = load_algorithms(ROOT / 'v1/core/kv_cache_utils.py', + manager_source=PATCHED / 'v1/core/single_type_kv_cache_manager.py') + registration = ast.parse('class Registrar:\n pass').body[0] + registration.body = [extracted_method(ROOT / 'v1/core/block_pool.py', 'BlockPool', 'cache_full_blocks')] + register_scope = {'resolve_block_hashes': algorithms.resolve_block_hashes, + 'make_block_hash_with_group_id': lambda value, group: (value, group)} + execute([registration], register_scope) + return scope['Allocator'], register_scope['Registrar'], algorithms + + +def run_case(prompt, total, shared, budget, speculative, classes, Scheduler, checkpoint): + Allocator, Registrar, algorithms = classes + scheduler = Scheduler() + scheduler.cache_config = SimpleNamespace(block_size=512) + scheduler.use_eagle = True + scheduler.mamba_has_prefill_checkpoint_blocks = True + scheduler.hash_block_size = 512 + scheduler.block_size = 2048 + scheduler.need_mamba_block_aligned_split = True + scheduler.kv_cache_manager = SimpleNamespace(coordinator=SimpleNamespace(enable_partial_hash_hits=True)) + scheduler.mamba_partial_cache_hit = partial_hit_eligibility(scheduler, + SimpleNamespace(kv_cache_groups=[SimpleNamespace(kv_cache_spec=MambaSpec(512))]), + PATCHED / 'v1/core/sched/scheduler.py') + scheduler.max_num_scheduled_tokens = 8192 + scheduler.scheduler_config = SimpleNamespace(long_prefill_token_threshold=0) + scheduler.num_prefill_lookahead = 1 + scheduler._recurrent_publication_boundaries = lambda request: ((prompt - 1) // 2048 * 2048,) + request = SimpleNamespace(request_id='replay', num_prompt_tokens=prompt, num_tokens=total, + num_computed_tokens=0, shared_prefix_boundary=shared, + block_hashes=list(range(512, total + 1, 512))) + allocator = Allocator() + allocator.kv_cache_spec = MambaSpec(512) + allocator.kv_cache_spec.num_prefill_checkpoint_blocks = 1 + allocator.mamba_cache_mode = 'align' + allocator.block_size = 512 + allocator.num_speculative_blocks = speculative + allocator.req_to_blocks = {'replay': []} + allocator._num_checkpoint_blocks = {} + allocator._partial_hit_reqs = {} + allocator._allocated_block_reqs = set() + allocator.last_state_block_idx = {} + allocator._null_block = SimpleNamespace(is_null=True, state=None, block_hash=None) + allocator.block_pool = SimpleNamespace(get_new_blocks=lambda n: [ + SimpleNamespace(is_null=False, state=None, block_hash=None, block_hash_num_tokens=None) + for _ in range(n)]) + failures, retained, selected_null, steps = [], set(), 0, [] + registrar = Registrar() + registrar.hash_block_size = 512 + registrar.enable_kv_cache_events = False + + def insert(block_hash, block, *, num_tokens): + if block.state != num_tokens: + failures.append({'expected_tokens': num_tokens, 'state_tokens': block.state, + 'step_start': request.num_computed_tokens}) + else: + retained.add(num_tokens) + block.block_hash, block.block_hash_num_tokens = block_hash, num_tokens + + def remove(block): + block.block_hash, block.block_hash_num_tokens = None, None + return [] + + registrar._insert_block_hash = insert + registrar._remove_cached_block_hashes = remove + registrar._emit_block_removed_events = lambda removed: None + cached = 0 + while request.num_computed_tokens < total: + start = request.num_computed_tokens + count = scheduler._mamba_block_aligned_split(request, min(budget, total - start)) + count = scheduler._reserve_prefill_lookahead(request, start, count) + if count <= 0: + raise AssertionError(f'zero progress: {prompt=}, {total=}, {shared=}, {budget=}, {start=}') + end = start + count + last = allocator.last_state_block_idx.get('replay') + # The source fixture's remove_skipped_blocks retires this state slot. + if last is not None and last < (start + 511) // 512 - 1: + allocator.req_to_blocks['replay'][last] = allocator._null_block + allocator._num_checkpoint_blocks['replay'] = int( + allocator._needs_internal_checkpoint('replay', end, start)) + allocator.allocate_new_blocks('replay', end, end) + blocks = allocator.req_to_blocks['replay'] + running = blocks[(end + 511) // 512 - 1] + assert not running.is_null + running.state = end + internal = checkpoint(start, end, 512) + if internal is not None and not blocks[internal // 512 - 1].is_null: + blocks[internal // 512 - 1].state = internal + mask = algorithms.MambaManager.reachable_block_mask( + start_block=cached, end_block=end // 512, alignment_tokens=2048, + kv_cache_spec=allocator.kv_cache_spec, use_eagle=True, retention_interval=0, + reachable_boundaries=(prompt - 1, shared)) + selected_null += sum(keep and blocks[index].is_null for index, keep in enumerate(mask, cached)) + # Execute cache registration so its null-slot handling participates in + # the check of every hash boundary against the planned state writes. + registrar.cache_full_blocks(request, blocks, cached, end // 512, 512, 1, mask) + steps.append(end) + cached, request.num_computed_tokens = end // 512, end + assert len(steps) < 1024 + required_prompt = ((prompt - 1) // 512 - 1) * 512 + return {'prompt_tokens': prompt, 'num_tokens': total, 'shared_boundary': shared, + 'budget': budget, 'speculative_blocks': speculative, 'steps': steps, + 'retained_boundaries': sorted(retained), 'selected_null_slots': selected_null, + 'stale_or_unwritten_registered_states': failures, + 'prompt_predecessor_retained': required_prompt in retained} + + +def main(): + global ROOT, PATCHED + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output', type=Path, required=True) + parser.add_argument('--source-root', type=Path, default=ROOT, help='Original vllm directory produced by compose.py') + parser.add_argument('--candidate-root', type=Path, default=PATCHED, help='Candidate vllm directory produced by compose.py') + args = parser.parse_args() + ROOT, PATCHED = args.source_root, args.candidate_root + # The extracted helpers resolve their unchanged support files from this root. + import repro_mtp3_sparse_retention as sparse_helpers + import repro_mtp3_checkpoint_materialization as checkpoint_helpers + sparse_helpers.ROOT = ROOT + checkpoint_helpers.ROOT = ROOT + paths = {'scheduler': PATCHED / 'v1/core/sched/scheduler.py', + 'retention_manager': PATCHED / 'v1/core/single_type_kv_cache_manager.py', + 'allocator_manager': ROOT / 'v1/core/single_type_kv_cache_manager.py', + 'block_pool': ROOT / 'v1/core/block_pool.py', + 'gdn_metadata': ROOT / 'v1/attention/backends/gdn_attn.py', + 'hash_utils': ROOT / 'v1/core/kv_cache_utils.py', + 'coordinator': ROOT / 'v1/core/kv_cache_coordinator.py', + 'algorithm_loader': WORK / 'repro_mtp3_sparse_retention.py', + 'checkpoint_loader': WORK / 'repro_mtp3_checkpoint_materialization.py', + 'checker': Path(__file__).resolve()} + identities = {name: {'path': str(path), 'sha256': sha256(path)} for name, path in paths.items()} + for name, expected in [('scheduler', EXPECTED_SCHEDULER), ('retention_manager', EXPECTED_MANAGER), + ('allocator_manager', EXPECTED_ALLOCATOR)]: + if identities[name]['sha256'] != expected: + raise RuntimeError(f'unexpected {name} SHA-256: {identities[name]["sha256"]}') + classes = extracted_classes() + Scheduler = load_scheduler(paths['scheduler']) + checkpoint = checkpoint_kernel_metadata() + populations = {'fresh': [(value, value) for value in (32768, 32789, 33280, 100968)], + 'resumed': [(32789, 33301), (32789, 40000), (32768, 33301), (32768, 40000)]} + result = {'schema': 'mtp3-checkpoint-allocation-registration-check/v1', + 'time_utc': datetime.datetime.now(datetime.timezone.utc).isoformat(), + 'source_inputs': identities, 'gpu_executed': False, 'populations': {}, + 'limits': ['Checks allocator/retention against planned endpoint/checkpoint writes; no GPU execution', + 'Fresh and resumed requests start from empty block tables, not an injected partial local hit', + 'Only align mode with 512-token recurrent/hash pages, DCP4 retention alignment2048, and lookahead1', + 'Missing retained prompt predecessors are reported safe misses, not treated as corruption']} + for label, pairs in populations.items(): + cases = [run_case(prompt, total, shared, budget, speculative, classes, Scheduler, checkpoint) + for prompt, total in pairs for shared in (8192, 12345, 15872, 16384, 16401, 20000, 30000) + for budget in (8192, 7680, 1024, 512) for speculative in (0, 1, 3)] + summary = {'cases': len(cases), 'selected_null_slots': sum(case['selected_null_slots'] for case in cases), + 'stale_or_unwritten_registered_states': sum(len(case['stale_or_unwritten_registered_states']) for case in cases), + 'cases_without_prompt_predecessor_retention': sum(not case['prompt_predecessor_retained'] for case in cases)} + result['populations'][label] = {'summary': summary, 'cases': cases} + assert summary['cases'] == 336 + result['passed'] = all(not item['summary']['stale_or_unwritten_registered_states'] + for item in result['populations'].values()) + with args.output.open('x', encoding='utf-8') as stream: + json.dump(result, stream, indent=2) + stream.write('\n') + print(json.dumps({'passed': result['passed'], 'output': str(args.output), + 'summary': {name: item['summary'] for name, item in result['populations'].items()}}, indent=2)) + return 0 if result['passed'] else 1 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py new file mode 100644 index 00000000..49559a85 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/compose.py @@ -0,0 +1,125 @@ +"""Build hash-verified MTP3 Python source output in an unused local directory. + +The candidate directory is transformed source output. Its hashes verify source +composition; serving qualification requires separate complete-image evidence. +The tool performs no Docker, network, or model operations. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path +import shutil +import tempfile +import zipfile + +import patch_mtp3_barrier as barrier +import patch_mtp3_lease_accounting as accounting +import patch_mtp3_local_lease_preference as preference +import patch_mtp3_partial_tail_eligibility as partial +import patch_mtp3_sparse_retention as retention + +HERE = Path(__file__).resolve().parent +FIXTURES = HERE / 'fixtures' +NATIVE_PLACEMENT_SHA256 = '2657cdd2e54a097c9544e4c79ae62c0646db6db123ff24e4f0c384238c3a1e8d' +FINAL_SHA256 = { + 'vllm/v1/core/sched/scheduler.py': partial.AFTER_SHA256, + 'vllm/v1/core/single_type_kv_cache_manager.py': retention.MANAGER_AFTER, + 'b12x/attention/dsa_indexer/fused_indexer.py': barrier.AFTER_SHA256, +} + + +def sha256(data): + return hashlib.sha256(data).hexdigest() + + +def manifest(): + return json.loads((FIXTURES / 'manifest.json').read_text(encoding='utf-8')) + + +def source_bytes(source_root=None): + """Validate every input before creating any output files.""" + metadata = manifest() + if source_root is None: + archive = FIXTURES / 'original-python-sources.zip' + if sha256(archive.read_bytes()) != metadata['archive_sha256']: + raise ValueError('Source fixture archive checksum differs') + with zipfile.ZipFile(archive) as bundle: + if sorted(bundle.namelist()) != sorted(metadata['files']): + raise ValueError('Source fixture archive members differ') + content = {name: bundle.read(name) for name in metadata['files']} + else: + content = {name: (Path(source_root) / name).read_bytes() for name in metadata['files']} + for name, data in content.items(): + if sha256(data) != metadata['files'][name]['sha256']: + raise ValueError(f'Original source checksum differs: {name}') + for name, expected in metadata['transform_script_sha256'].items(): + if sha256((HERE / name).read_bytes()) != expected: + raise ValueError(f'Attested transform script differs: {name}') + return content + + +def verify_candidate(root): + metadata = manifest() + verified = {} + for name, original in metadata['files'].items(): + expected = FINAL_SHA256.get(name, original['sha256']) + observed = sha256((Path(root) / name).read_bytes()) + if observed != expected: + raise ValueError(f'Candidate source checksum differs: {name}') + verified[name] = observed + return verified + + +def compose(output, *, source_root=None): + content = source_bytes(source_root) + output = Path(output) + output.mkdir(parents=True, exist_ok=False) + original, candidate = output / 'original', output / 'candidate' + for name, data in content.items(): + path = original / name + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(data) + shutil.copytree(original, candidate) + scheduler = candidate / 'vllm/v1/core/sched/scheduler.py' + steps = [barrier.apply_patch(candidate / 'b12x/attention/dsa_indexer/fused_indexer.py'), + accounting.apply_patch(scheduler), preference.apply_patch(scheduler), + retention.apply_patch(candidate / 'vllm'), partial.apply_patch(scheduler)] + result = {'schema': 'sparkring-mtp3-cache-reuse-composition/v1', 'status': 'research-only', + 'base_image_id': manifest()['base_image_id'], 'speculation': 'native MTP3', + 'topology': 'TP4/DCP4, 512-token recurrent/hash pages', + 'candidate_files': verify_candidate(candidate), 'transform_receipts': steps, + 'required_native_placement_sha256': NATIVE_PLACEMENT_SHA256, + 'limits': ['Python source composition only; no SparkCache package or native binary is installed', + 'No serving, transport, GPU, or throughput qualification is implied', + 'Published runtime pins and production Dockerfiles are unchanged']} + (output / 'composition.json').write_text(json.dumps(result, indent=2) + '\n', encoding='utf-8') + return result + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source-root', type=Path, help='Original fixture layout from the exact base image; defaults to bundled fixtures') + parser.add_argument('--output-root', type=Path, help='Fresh destination; existing directories are rejected') + parser.add_argument('--check', action='store_true', help='Compose and verify only in a temporary directory') + parser.add_argument('--verify-candidate', type=Path, help='Read-only verification of an already composed candidate directory') + args = parser.parse_args() + try: + if args.verify_candidate: + result = {'verified_files': verify_candidate(args.verify_candidate)} + elif args.check: + with tempfile.TemporaryDirectory(prefix='mtp3-cache-reuse-') as temporary: + result = compose(Path(temporary) / 'composition', source_root=args.source_root) + elif args.output_root: + result = compose(args.output_root, source_root=args.source_root) + else: + parser.error('Choose --check, --output-root, or --verify-candidate') + except (ValueError, OSError) as error: + parser.error(str(error)) + print(json.dumps(result, sort_keys=True)) + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/conftest.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/conftest.py new file mode 100644 index 00000000..7c6f36c2 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/conftest.py @@ -0,0 +1,32 @@ +"""Make source-extracted tests self-contained using an attested temporary composition.""" +import os +from pathlib import Path +import sys +import tempfile + +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import compose # noqa: E402 + + +def pytest_configure(config): + temporary = tempfile.TemporaryDirectory(prefix='mtp3-cache-reuse-tests-') + config._mtp3_cache_reuse_temporary = temporary + output = Path(temporary.name) / 'composition' + compose.compose(output) + values = {'MTP3_ORIGINAL_SOURCE': str(output / 'original/vllm'), + 'MTP3_RETENTION_SOURCE': str(output / 'candidate/vllm'), + 'MTP3_SCHEDULER_SOURCE': str(output / 'candidate/vllm/v1/core/sched/scheduler.py')} + config._mtp3_cache_reuse_environment = {key: os.environ.get(key) for key in values} + os.environ.update(values) + + +def pytest_unconfigure(config): + for key, value in getattr(config, '_mtp3_cache_reuse_environment', {}).items(): + if value is None: + os.environ.pop(key, None) + else: + os.environ[key] = value + temporary = getattr(config, '_mtp3_cache_reuse_temporary', None) + if temporary: + temporary.cleanup() diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/manifest.json b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/manifest.json new file mode 100644 index 00000000..2d3de924 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/manifest.json @@ -0,0 +1,66 @@ +{ + "schema": "sparkring-mtp3-cache-reuse-fixtures/v1", + "status": "research-only", + "base_image_id": "sha256:2e41b1e934a85ff7c21b780532db2f0a0e978df081e52f4ae2bf11f8992fb24f", + "purpose": "Exact original Python files required by source transforms and extracted CPU tests; not model/runtime assets", + "files": { + "b12x/attention/dsa_indexer/fused_indexer.py": { + "sha256": "893fbcade135b7e1d146b8fb6530cde0650be515f69bf9a17ced0a9c61a141e2", + "bytes": 143038, + "image_path": "/usr/local/lib/python3.12/dist-packages/b12x/attention/dsa_indexer/fused_indexer.py" + }, + "vllm/entrypoints/openai/chat_completion/serving.py": { + "sha256": "9982953285e9df469032a82fffa4095d0e9d86278bede6e2b91d03d02373d182", + "bytes": 56414, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/chat_completion/serving.py" + }, + "vllm/v1/attention/backends/gdn_attn.py": { + "sha256": "fd75fb72efeb762ec558d332364e889df44a9ea483026bd5ded8f77f42be9b7f", + "bytes": 40208, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/attention/backends/gdn_attn.py" + }, + "vllm/v1/core/block_pool.py": { + "sha256": "ddee56dccb2208411b3a035918e917ce8f56a9858471e9ca12b420d5d79bc69c", + "bytes": 33243, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/core/block_pool.py" + }, + "vllm/v1/core/kv_cache_coordinator.py": { + "sha256": "149222b2b1de1ee3714c7c4e0843b9c38c730a605740ce7dc913308df906f20f", + "bytes": 41494, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/core/kv_cache_coordinator.py" + }, + "vllm/v1/core/kv_cache_utils.py": { + "sha256": "9b5ec588681252832e322387fc7ecea3b146061305f8abb1b02bb55e219c2a8c", + "bytes": 100179, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/core/kv_cache_utils.py" + }, + "vllm/v1/core/sched/scheduler.py": { + "sha256": "122d9722b48f8cec267d2136a18c184b8901a5a0a46187eab7030d6227f1983d", + "bytes": 157770, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/core/sched/scheduler.py" + }, + "vllm/v1/core/single_type_kv_cache_manager.py": { + "sha256": "10846c4994e7860deab8b42c8bcd3315ddc96d14a478d4012c398418cc17a04c", + "bytes": 89918, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/core/single_type_kv_cache_manager.py" + }, + "vllm/v1/engine/output_processor.py": { + "sha256": "f46abafd45792b4816e75c0702113b510f4b3e15ea33016d155ee00abaa3fb59", + "bytes": 33588, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/engine/output_processor.py" + }, + "vllm/v1/metrics/stats.py": { + "sha256": "e8c3cbcfb880e7a2a496a1e499d4e4efccf70ba1eef56f4a1a6ee44cc0bf49bc", + "bytes": 22775, + "image_path": "/usr/local/lib/python3.12/dist-packages/vllm/v1/metrics/stats.py" + } + }, + "archive_sha256": "b54fa2cdde26099905be15a3462144877c2c511299642c744daecbcdcdcf7219", + "transform_script_sha256": { + "patch_mtp3_barrier.py": "751cb641cfe42ffa7aa907774a8059edcf69c446d0299612d12b13ed7a1230ec", + "patch_mtp3_lease_accounting.py": "ece6753aa79571eb0f7a9901ac8be69f3bfbf26d10bbdc315134847977d019ae", + "patch_mtp3_local_lease_preference.py": "3489feb646f2b768220422988a6d120a3f82e30972df8c1095d1c4b03fab0bb8", + "patch_mtp3_sparse_retention.py": "a6d27c5804fc4a79b01835beaae01d33a8ef495e98c30b655121d620c62d2afa", + "patch_mtp3_partial_tail_eligibility.py": "2e0609a62a3028841431e92531ea3b5af958cc863274b8518547ce56da7f2c89" + } +} diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/original-python-sources.zip b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/fixtures/original-python-sources.zip new file mode 100644 index 0000000000000000000000000000000000000000..c52e2a83bcf71ae3aa1e4a43b35d78ff32f1017a GIT binary patch literal 159016 zcmV(}K+wNXO9KQH000080000X00zryR_=KK0KP5)04o3h0AevRcrRgebY*UIX>V>X zWOHF(X>Md?cx7@gW_5FAWM64+WMz0|axQRr?7i)B+c>r;`oF9C9k`vE-BK*cmhAR; zoG7&&$LUEqiF;zFd(KVe(v(EmY*V5_Qg%GEXX^Yqb${PFPjO%1{=bj1pX9C&00cmg zq8w+wc60CPSR}9jEC37Z3u|p`Y`mXG(Wtv-gTJH!}!3<#z`7_ zpZ>r9_u4yr`@+k@I2`9*o-Df8P}WQ4p%(|s`S_~$?Kj_k^CHZm%emLe!q8j9!MuIo z1zwumcE?Gw2-6^sZs0?hW>J=h^IWvz-Cl*zNEnQ-yrc6&FU!*~m}Oq@?KfE*jYBV) zQbV7XVS0z)zRSFm4tFi%zTHHDcX2WMJYDQxTzGHZ975;v#LKRN6oxhnXGwbZ?KiEN zH}tN;V3K)T-kU!hwmaT5iQyMDP4FgOwj6cyC=MAyFo%D;XK#+*cfGtKD@q$w$oq|efC=8BuKNcyWbr}dG`v2n_Q;B%-i%vcX`-N!)Y`Rq4{7w z!69eR#q=`#_8UNHzD(ym?{#t+<(W4RZ(uS~>fdFYjDlDU#`~}T`M&{^!8M|@3pnv^ zlk^(9mxZ|(W#4{t+QJ?|8}lUhPFpAKo;ObBd33oz%DuOHvXQTLzM!{GCbbHYRrZyTwS6e}R z8{EO*B--1wO3ncv-Yl6c5y=?=JUcpk`SSGjivzKmuqV^#vg1vnY!T!*`XCQ8ob;4_ z=4q4=`gjt=LK?@=Cz$mxj(grYyq_*JoKo!WfBmojTdZDDc$7@;pt(8BKj4tMvA7DL z{I}oW+VxsL;xDfcohLLs@%Y66UL2jiJ%9DX`_uPl{+ri_9^*4Ws!Dl!t-f)`nT%*x10SN0^@PPnWRDL*MtJ*&<1ycXOyr z>nl^G#z~Cb!*{)4G?qo*1d9c<((%qhpa=7DD2h*lJfP_Zk|2tzSE9%iR#u)Qu__R! zOMeVoE5t^{yClF71jOe%gO2xVF8|rv?Rf7a{ApI94)lN^<A zW-OJZTi<@;!E-_j>4-m`!B+3^d$A3n`v}74pW+*=ge*yY0nwiZ;~c)UOHD$@(`cSW zV>Lvk$NnNuVd3~oHLRkJ+}~y|&-m^0<#ZaRS}#Rue?%Yrto()h>g?VUR

Xc$ucK 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

f)e_x4i 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 dict: + source = path.read_bytes() + digest = hashlib.sha256(source).hexdigest() + if digest == AFTER_SHA256: + return {"status": "already_patched", "source_sha256": digest, "changed": False} + if digest != BEFORE_SHA256: + raise RuntimeError(f"unsupported MTP3 B12X source preimage: {digest}") + if source.count(_BEFORE) != 1 or source.count(_OLD_CACHE) != 1: + raise RuntimeError("attested barrier or compile revision anchor differs") + patched = source.replace(_BEFORE, _AFTER, 1).replace(_OLD_CACHE, _NEW_CACHE, 1) + if hashlib.sha256(patched).hexdigest() != AFTER_SHA256: + raise RuntimeError("MTP3 B12X transform differs from its expected postimage") + ast.parse(patched.decode("utf-8"), filename=str(path)) + if not check_only: + path.write_bytes(patched) + return {"status": "checked" if check_only else "patched", "before_sha256": digest, + "after_sha256": AFTER_SHA256, "changed": not check_only, "compile_revision": 2} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("path", type=Path) + parser.add_argument("--check", action="store_true", help="validate the transform without writing") + args = parser.parse_args() + print(json.dumps(apply_patch(args.path, check_only=args.check), sort_keys=True)) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_lease_accounting.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_lease_accounting.py new file mode 100644 index 00000000..e1db6902 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_lease_accounting.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""Account for resident GPU lease reuse in the pinned MTP3 prefill statistics.""" + +from __future__ import annotations + +import argparse +import ast +import hashlib +import json +from pathlib import Path + + +BEFORE_SHA256 = "122d9722b48f8cec267d2136a18c184b8901a5a0a46187eab7030d6227f1983d" +AFTER_SHA256 = "3ec6f357fdc770212528ca3f5dfd48234186f972ec5657a514e8b841df61e48b" +_BEFORE = b''' request.num_computed_tokens = min( + attached_tokens, request.num_tokens - 1 + ) + attached = getattr( +''' +_AFTER = b''' request.num_computed_tokens = min( + attached_tokens, request.num_tokens - 1 + ) + # Lease attachment skips hash lookup but still reuses + # resident GPU state. Include it in prefill/API totals + # without reporting a fresh external KV transfer. + if request.prefill_stats and request.num_preemptions <= 0: + request.prefill_stats.set( + num_prompt_tokens=request.num_prompt_tokens, + num_local_cached_tokens=request.num_computed_tokens, + num_external_cached_tokens=0, + ) + attached = getattr( +''' + + +def apply_patch(path: Path, *, check_only: bool = False) -> dict: + source = path.read_bytes() + digest = hashlib.sha256(source).hexdigest() + if digest == AFTER_SHA256: + return {"status": "already_patched", "source_sha256": digest, "changed": False} + if digest != BEFORE_SHA256: + raise RuntimeError(f"unsupported MTP3 scheduler preimage: {digest}") + if source.count(_BEFORE) != 1: + raise RuntimeError("MTP3 lease attachment anchor differs") + patched = source.replace(_BEFORE, _AFTER, 1) + if hashlib.sha256(patched).hexdigest() != AFTER_SHA256: + raise RuntimeError("MTP3 lease accounting postimage differs") + ast.parse(patched.decode("utf-8"), filename=str(path)) + if not check_only: + path.write_bytes(patched) + return {"status": "checked" if check_only else "patched", "changed": not check_only, + "before_sha256": digest, "after_sha256": AFTER_SHA256} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("path", type=Path) + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + print(json.dumps(apply_patch(args.path, check_only=args.check), sort_keys=True)) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_local_lease_preference.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_local_lease_preference.py new file mode 100644 index 00000000..9ab4ab94 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_local_lease_preference.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +"""Prefer a strictly longer converged GPU prefix over a shorter shared lease.""" + +from __future__ import annotations + +import argparse +import ast +import hashlib +import json +from pathlib import Path + + +BEFORE_SHA256 = "3ec6f357fdc770212528ca3f5dfd48234186f972ec5657a514e8b841df61e48b" +AFTER_SHA256 = "0df01bf90bbe6ab1e6bc127ca7b15f6286ace944b430c994539d3d81049f2b4a" +TRANSFORMS = ( + (b" did_prefix_cache_lookup = False\n", + b" did_prefix_cache_lookup = False\n local_lease_alternative = None\n"), + (b''' candidate = get_lease(request) if get_lease is not None else None + if candidate is not None: + lease_key, lease_tokens = candidate +''', b''' candidate = get_lease(request) if get_lease is not None else None + if candidate is not None: + lease_key, lease_tokens = candidate + if 0 < lease_tokens <= request.num_tokens: + # This lookup reconciles every KV group and applies + # speculative backoff before any blocks are adopted. + alternative = self.kv_cache_manager.get_computed_blocks(request) + if alternative[1] > min(lease_tokens, request.num_tokens - 1): + local_lease_alternative = (*alternative, False) + candidate = None + # Release this request's follower binding only; + # the verified lease and its other users remain. + rejected = getattr( + self.connector, "shared_prefix_lease_rejected", None + ) + if rejected is not None: + rejected(request_id, lease_key) + if candidate is not None: + lease_key, lease_tokens = candidate +'''), + (b''' ) = self._get_local_prefix_cache_hit(request) +''', b''' ) = ( + local_lease_alternative + if local_lease_alternative is not None + else self._get_local_prefix_cache_hit(request) + ) +'''), +) + + +def apply_patch(path: Path, *, check_only: bool = False) -> dict: + source = path.read_bytes() + digest = hashlib.sha256(source).hexdigest() + if digest == AFTER_SHA256: + return {"status": "already_patched", "source_sha256": digest, "changed": False} + if digest != BEFORE_SHA256: + raise RuntimeError(f"unsupported accounted MTP3 scheduler preimage: {digest}") + patched = source + for before, after in TRANSFORMS: + if patched.count(before) != 1: + raise RuntimeError("MTP3 local/lease selection anchor differs") + patched = patched.replace(before, after, 1) + if hashlib.sha256(patched).hexdigest() != AFTER_SHA256: + raise RuntimeError("MTP3 local/lease selection postimage differs") + ast.parse(patched.decode("utf-8"), filename=str(path)) + if not check_only: + path.write_bytes(patched) + return {"status": "checked" if check_only else "patched", "changed": not check_only, + "before_sha256": digest, "after_sha256": AFTER_SHA256} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("path", type=Path) + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + print(json.dumps(apply_patch(args.path, check_only=args.check), sort_keys=True)) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_partial_tail_eligibility.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_partial_tail_eligibility.py new file mode 100644 index 00000000..e5ca8802 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_partial_tail_eligibility.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""Avoid recurrent partial-tail stops created only by DCP attention geometry.""" + +from __future__ import annotations + +import argparse +import ast +import hashlib +import json +from pathlib import Path + + +BEFORE_SHA256 = "5c0bd785d2d17dce39cdf867a55b5327487070d315851f3c67d9c2cf7a1d4c49" +AFTER_SHA256 = "75efa57e7ff5a77c76714b85e2e4d8e1d7f456d9a9eec6c67ebb11ca382942f9" +BEFORE = b''' # A finer prefix_match_unit is configured: a mamba partial tail entry + # can only be registered by a step ending exactly at the prompt's last + # hash boundary, so the split adds that stop. + self.mamba_partial_cache_hit = ( + self.need_mamba_block_aligned_split + and self.hash_block_size < self.block_size + and self.kv_cache_manager.coordinator.enable_partial_hash_hits + ) +''' +AFTER = b''' # An interior recurrent-page hash needs an explicit tail stop. + # DCP can enlarge attention's scheduling unit without making the + # recurrent page larger than a hash, so inspect Mamba specs directly. + self.mamba_partial_cache_hit = ( + self.need_mamba_block_aligned_split + and any( + isinstance(group.kv_cache_spec, MambaSpec) + and self.hash_block_size < group.kv_cache_spec.block_size + for group in kv_cache_config.kv_cache_groups + ) + and self.kv_cache_manager.coordinator.enable_partial_hash_hits + ) +''' + + +def apply_patch(path: Path, *, check_only=False): + source = path.read_bytes() + digest = hashlib.sha256(source).hexdigest() + if digest == AFTER_SHA256: + return {"status": "already_patched", "source_sha256": digest, "changed": False} + if digest != BEFORE_SHA256: + raise RuntimeError(f"unsupported checkpoint-patched MTP3 scheduler: {digest}") + if source.count(BEFORE) != 1: + raise RuntimeError("MTP3 partial-tail eligibility anchor differs") + patched = source.replace(BEFORE, AFTER, 1) + if hashlib.sha256(patched).hexdigest() != AFTER_SHA256: + raise RuntimeError("MTP3 partial-tail eligibility postimage differs") + ast.parse(patched.decode("utf-8")) + if not check_only: + path.write_bytes(patched) + return {"status": "checked" if check_only else "patched", "changed": not check_only, + "before_sha256": digest, "after_sha256": AFTER_SHA256} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("path", type=Path) + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + print(json.dumps(apply_patch(args.path, check_only=args.check), sort_keys=True)) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_sparse_retention.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_sparse_retention.py new file mode 100644 index 00000000..63a2f205 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/patch_mtp3_sparse_retention.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +"""Pair speculative replay checkpoint materialization with sparse retention. + +Attested for the installed scheduler after lease accounting/local preference. +Serving qualification targets native MTP3 with 512-token hash/Mamba pages and +DCP4; no GPU or model execution is performed by this source transformer. +""" + +from __future__ import annotations + +import argparse +import ast +import hashlib +import json +from pathlib import Path + + +SCHEDULER_BEFORE = "0df01bf90bbe6ab1e6bc127ca7b15f6286ace944b430c994539d3d81049f2b4a" +SCHEDULER_AFTER = "5c0bd785d2d17dce39cdf867a55b5327487070d315851f3c67d9c2cf7a1d4c49" +MANAGER_BEFORE = "10846c4994e7860deab8b42c8bcd3315ddc96d14a478d4012c398418cc17a04c" +MANAGER_AFTER = "d2e35b012e0cf45ab3771f545c35ca48f2a5858549c574a352975607369124e2" +SCHEDULER_TRANSFORMS = ( + (b''' if self.use_eagle: + last_cache_position = max(last_cache_position - block_size, 0) +''', b''' if self.use_eagle: + # Lookup excludes the final prompt token, then drops its proof + # block. The corresponding recurrent state needs its own stop. + last_cache_position = max( + (request.num_tokens - 1) // block_size * block_size - block_size, 0 + ) +'''), + (b''' if use_internal_checkpoint: + last_cache_position = 0 +''', b''' if use_internal_checkpoint and not self.use_eagle: + # The internal checkpoint covers the final aligned state only; + # speculative replay may require the preceding state as well. + last_cache_position = 0 +'''), +) +MANAGER_TRANSFORMS = ( + (b''' if start_block <= boundary_block < end_block: + mask[boundary_block - start_block] = True + + return mask + + def remove_skipped_blocks( +''', b''' if start_block <= boundary_block < end_block: + mask[boundary_block - start_block] = True + + if use_eagle: + # Retain the predecessor when materialized, alongside the + # scheduler-aligned fallback. Unmaterialized shared-junction + # slots remain null and cache_full_blocks skips them. + predecessor_block = boundary_tokens // block_size - 2 + if start_block <= predecessor_block < end_block: + mask[predecessor_block - start_block] = True + + return mask + + def remove_skipped_blocks( +'''), +) + + +def transform(source, expected_before, expected_after, transforms): + digest = hashlib.sha256(source).hexdigest() + if digest == expected_after: + return source + if digest != expected_before: + raise RuntimeError(f"unsupported MTP3 checkpoint preimage: {digest}") + for before, after in transforms: + if source.count(before) != 1: + raise RuntimeError("MTP3 checkpoint source anchor differs") + source = source.replace(before, after, 1) + if hashlib.sha256(source).hexdigest() != expected_after: + raise RuntimeError("MTP3 checkpoint postimage differs") + ast.parse(source.decode("utf-8")) + return source + + +def apply_patch(root: Path, *, check_only=False): + files = ( + (root / "v1/core/sched/scheduler.py", SCHEDULER_BEFORE, SCHEDULER_AFTER, SCHEDULER_TRANSFORMS), + (root / "v1/core/single_type_kv_cache_manager.py", MANAGER_BEFORE, MANAGER_AFTER, MANAGER_TRANSFORMS), + ) + prepared = [] + for path, before, after, transforms in files: + original = path.read_bytes() + patched = transform(original, before, after, transforms) + prepared.append((path, original, patched)) + # Validate both preimages before changing either source file. + if not check_only: + for path, original, patched in prepared: + if original != patched: + path.write_bytes(patched) + return {str(path.relative_to(root)): dict(before_sha256=hashlib.sha256(original).hexdigest(), + after_sha256=hashlib.sha256(patched).hexdigest(), changed=original != patched and not check_only) + for path, original, patched in prepared} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("vllm_root", type=Path) + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + print(json.dumps(apply_patch(args.vllm_root, check_only=args.check), sort_keys=True)) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_checkpoint_materialization.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_checkpoint_materialization.py new file mode 100644 index 00000000..35993c4c --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_checkpoint_materialization.py @@ -0,0 +1,140 @@ +"""Trace MTP3 checkpoint scheduling and retention from exact source fixtures. + +The fixture manifest identifies the image and source inputs. The checker uses +512-token recurrent/hash pages and 2,048-token DCP4 scheduling alignment. +Controlled scheduling budgets expose produced and retained checkpoint +boundaries without GPU execution or a reconstruction of a live request trace. +""" + +import ast +import json +import math +from types import SimpleNamespace + +from repro_mtp3_sparse_retention import ROOT, FullAttentionSpec, MambaSpec, execute, load_algorithms + + +def extracted_method(path, cls_name, method_name): + tree = ast.parse(path.read_text()) + cls = next(node for node in tree.body if isinstance(node, ast.ClassDef) and node.name == cls_name) + return next(node for node in cls.body if isinstance(node, ast.FunctionDef) and node.name == method_name) + + +def load_scheduler(path=None): + path = path or ROOT / "v1/core/sched/scheduler.py" + shell = ast.parse("class Scheduler:\n pass\n").body[0] + shell.body = [extracted_method(path, "Scheduler", name) for name in + ("_mamba_block_aligned_split", "_reserve_prefill_lookahead")] + scope = {} + execute([shell], scope) + return scope["Scheduler"] + + +def partial_hit_eligibility(scheduler, kv_cache_config, path=None): + """Execute the source fixture's recurrent partial-tail eligibility rule.""" + tree = ast.parse((path or ROOT / "v1/core/sched/scheduler.py").read_text()) + nodes = [node for node in ast.walk(tree) if isinstance(node, ast.Assign) + and any(ast.unparse(target) == "self.mamba_partial_cache_hit" for target in node.targets)] + assert len(nodes) == 1 + execute(nodes, dict(self=scheduler, kv_cache_config=kv_cache_config, MambaSpec=MambaSpec)) + return scheduler.mamba_partial_cache_hit + + +def checkpoint_kernel_metadata(): + tree = ast.parse((ROOT / "v1/attention/backends/gdn_attn.py").read_text()) + loops = [node for node in ast.walk(tree) if isinstance(node, ast.For) + and ast.unparse(node.target) == "row" and ast.unparse(node.iter) == "request_rows"] + assert len(loops) == 1 + function = ast.parse("def checkpoint(start, end, block_size):\n pass\n").body[0] + function.body = ast.parse("all_query_lens=[end-start]\nseq_lens=[end]\nrequest_rows=[0]\ncheckpoint_offsets=[]\ncheckpoint_columns=[]").body + function.body.append(loops[0]) + function.body.extend(ast.parse("return start+checkpoint_offsets[0] if checkpoint_offsets[0] else None").body) + scope = {} + execute([function], scope) + return scope["checkpoint"] + + +def main(): + algorithms = load_algorithms(ROOT / "v1/core/kv_cache_utils.py") + utils = ast.parse((ROOT / "v1/core/kv_cache_utils.py").read_text()) + resolve = next(node for node in utils.body if isinstance(node, ast.FunctionDef) + and node.name == "resolve_kv_cache_block_sizes") + scope = dict(math=math, AttentionSpec=FullAttentionSpec, MambaSpec=MambaSpec) + execute([resolve], scope) + recurrent = MambaSpec(512) + recurrent.mamba_cache_mode = "align" + cache = SimpleNamespace(block_size=512, prefix_match_unit=None, enable_prefix_caching=True) + config = SimpleNamespace(cache_config=cache, + parallel_config=SimpleNamespace(decode_context_parallel_size=4), + kv_transfer_config=object()) + groups = SimpleNamespace(kv_cache_groups=[SimpleNamespace(kv_cache_spec=FullAttentionSpec(512)), + SimpleNamespace(kv_cache_spec=recurrent)]) + scheduler_size, hash_size = scope[resolve.name](groups, config) + assert (scheduler_size, hash_size) == (2048, 512) + checkpoint = checkpoint_kernel_metadata() + Scheduler = load_scheduler() + cases = [] + for label, budgets in ( + ("full_8192_token_budgets", [8192] * 8), + ("reduced_budget_materializes_predecessor", [8192, 8192, 8192, 7680, 8192, 8192]), + ): + scheduler = Scheduler() + scheduler.cache_config = cache + scheduler.use_eagle = True + scheduler.mamba_has_prefill_checkpoint_blocks = True + scheduler.mamba_partial_cache_hit = True + scheduler.hash_block_size = hash_size + scheduler.max_num_scheduled_tokens = 8192 + scheduler.scheduler_config = SimpleNamespace(long_prefill_token_threshold=0) + # One native MTP module, repeated three times, uses one prefill lookahead. + scheduler.num_prefill_lookahead = 1 + scheduler._recurrent_publication_boundaries = lambda request: (32768,) + request = SimpleNamespace(num_prompt_tokens=32789, num_tokens=32789, + num_computed_tokens=0, shared_prefix_boundary=0) + steps = [] + materialized = set() + retained = set() + cached_blocks = 0 + for budget in budgets: + start = request.num_computed_tokens + if start == request.num_prompt_tokens: + break + count = scheduler._mamba_block_aligned_split(request, min(budget, request.num_tokens-start)) + count = scheduler._reserve_prefill_lookahead(request, start, count) + assert count > 0 + end = start + count + internal = checkpoint(start, end, recurrent.block_size) + produced = {end} if end % recurrent.block_size == 0 else set() + if internal is not None: + produced.add(internal) + materialized.update(produced) + num_full = end // recurrent.block_size + mask = algorithms.MambaManager.reachable_block_mask( + start_block=cached_blocks, end_block=num_full, + alignment_tokens=scheduler_size, kv_cache_spec=recurrent, + use_eagle=True, retention_interval=0, + reachable_boundaries=(request.num_prompt_tokens-1,), + ) + registered = {(cached_blocks + index + 1) * recurrent.block_size + for index, keep in enumerate(mask) if keep} + retained.update(registered.intersection(materialized)) + steps.append(dict(start=start, end=end, internal_checkpoint=internal, + produced=sorted(produced), newly_retained=sorted(registered))) + cached_blocks = num_full + request.num_computed_tokens = end + assert request.num_computed_tokens == request.num_prompt_tokens + assert retained == {32768} + cases.append(dict(case=label, steps=steps, materialized=sorted(materialized), + retained=sorted(retained), required_predecessor=32256, + predecessor_materialized=32256 in materialized, + predecessor_retained=32256 in retained)) + assert not cases[0]["predecessor_materialized"] + assert cases[1]["predecessor_materialized"] + print(json.dumps(dict(schema="mtp3-installed-checkpoint-trace/v1", gpu_executed=False, + unique_effective_group_sizes=[2048,512], scheduler_block_size=scheduler_size, + hash_block_size=hash_size, lookup_alignment=hash_size, retention_alignment=scheduler_size, + retention_interval=0, num_prefill_checkpoint_blocks=1, cases=cases), sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_sparse_retention.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_sparse_retention.py new file mode 100644 index 00000000..58a70962 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/repro_mtp3_sparse_retention.py @@ -0,0 +1,168 @@ +"""Check prefix lookup and retention using exact vLLM source fixtures on CPU. + +The block pool contains explicitly described synthetic materialized checkpoints. +The result identifies lookup/retention mismatches under the supplied geometry. +It does not establish which intermediate states a live model materializes. +""" + +from __future__ import annotations + +import argparse +import ast +import copy +import hashlib +import itertools +import json +import os +from collections import namedtuple +from collections.abc import Sequence +from pathlib import Path +from types import SimpleNamespace +from typing import overload + + +ROOT = Path(os.environ.get("MTP3_ORIGINAL_SOURCE", str(Path(__file__).resolve().parent / "mtp3-vllm-source"))) + + +class FullAttentionSpec: + def __init__(self, block_size, dcp_replicated=False): + self.block_size = block_size + self.dcp_replicated = dcp_replicated + + +class MambaSpec: + def __init__(self, block_size): + self.block_size = block_size + + +class ChunkedLocalAttentionSpec: + pass + + +def execute(nodes, scope): + tree = ast.Module(body=[ast.ImportFrom(module="__future__", names=[ast.alias(name="annotations")], level=0), + *copy.deepcopy(nodes)], type_ignores=[]) + exec(compile(ast.fix_missing_locations(tree), "", "exec"), scope) + + +def load_algorithms(hash_utils, *, manager_source=None): + scope = dict(FullAttentionSpec=FullAttentionSpec, MambaSpec=MambaSpec, + ChunkedLocalAttentionSpec=ChunkedLocalAttentionSpec, Sequence=Sequence, + itertools=itertools, overload=overload, cdiv=lambda a, b: (a + b - 1) // b) + utils_tree = ast.parse(hash_utils.read_text()) + execute([node for node in utils_tree.body if isinstance(node, (ast.FunctionDef, ast.ClassDef)) + and node.name in {"BlockHashListWithBlockSize", "resolve_block_hashes"}], scope) + manager_tree = ast.parse((manager_source or ROOT / "v1/core/single_type_kv_cache_manager.py").read_text()) + for name, methods in (("FullAttentionManager", {"find_longest_cache_hit"}), + ("MambaManager", {"find_longest_cache_hit", "reachable_block_mask"})): + original = next(node for node in manager_tree.body if isinstance(node, ast.ClassDef) and node.name == name) + shell = ast.parse(f"class {name}:\n supports_fine_grained_hash_lookup = True\n").body[0] + shell.body += [node for node in original.body if isinstance(node, ast.FunctionDef) and node.name in methods] + execute([shell], scope) + coordinator = ast.parse((ROOT / "v1/core/kv_cache_coordinator.py").read_text()) + original = next(node for node in coordinator.body if isinstance(node, ast.ClassDef) + and node.name == "HybridKVCacheCoordinator") + shell = ast.parse("class HybridKVCacheCoordinator:\n pass\n").body[0] + shell.body = [node for node in original.body if isinstance(node, ast.FunctionDef) + and node.name in {"find_longest_cache_hit", "_cache_hit_alignment_tokens"}] + execute([shell], scope) + return SimpleNamespace(**scope) + + +class Pool: + def __init__(self, hash_block_size, retained_mamba, shared_boundary): + self.hash_block_size = hash_block_size + self.null_block = SimpleNamespace(is_null=True, block_hash=None) + self.retained_mamba = set(retained_mamba) + self.shared_boundary = shared_boundary + self.queries = [] + + def get_cached_block(self, block_hash, groups): + self.queries.append((block_hash, tuple(groups))) + if block_hash > self.shared_boundary or any( + group == 1 and block_hash not in self.retained_mamba for group in groups + ): + return None + return [SimpleNamespace(is_null=False, block_hash=(block_hash, group)) for group in groups] + + +def run_case(algorithms, args, *, drop=True, extra_checkpoint=None): + Full = algorithms.FullAttentionManager + Mamba = algorithms.MambaManager + target = FullAttentionSpec(args.page) + state = MambaSpec(args.page) + draft = FullAttentionSpec(args.page, dcp_replicated=True) + mask = Mamba.reachable_block_mask( + start_block=0, end_block=args.shared // args.page, + alignment_tokens=args.scheduler_alignment, kv_cache_spec=state, + use_eagle=False, retention_interval=0, reachable_boundaries=(args.prompt - 1,), + ) + retained = [(index + 1) * args.page for index, keep in enumerate(mask) if keep] + if extra_checkpoint is not None: + retained.append(extra_checkpoint) + pool = Pool(args.hash_unit, retained, args.shared) + coordinator = algorithms.HybridKVCacheCoordinator() + coordinator.kv_cache_config = SimpleNamespace(kv_cache_groups=(target, state, draft)) + coordinator.single_type_managers = ( + SimpleNamespace(block_size=args.page * args.dcp), + SimpleNamespace(block_size=args.page), SimpleNamespace(block_size=args.page), + ) + spec_group = namedtuple("SpecGroup", "spec group_ids manager_cls use_eagle") + coordinator.attention_groups = [spec_group(target, [0], Full, False), spec_group(state, [1], Mamba, False), + spec_group(draft, [2], Full, drop)] + coordinator.block_pool = pool + coordinator.hash_block_size = args.hash_unit + coordinator.scheduler_block_size = args.scheduler_alignment + coordinator.enable_partial_hash_hits = args.fine_hits + coordinator.dcp_world_size = args.dcp + hashes = list(range(args.hash_unit, args.continuation, args.hash_unit)) + separate = [] + for spec, groups, manager, use_eagle in coordinator.attention_groups: + _, hit = manager.find_longest_cache_hit( + block_hashes=hashes, max_length=args.continuation - 1, + kv_cache_group_ids=groups, block_pool=pool, kv_cache_spec=spec, + drop_eagle_block=use_eagle, alignment_tokens=coordinator._cache_hit_alignment_tokens, + dcp_world_size=args.dcp if isinstance(spec, FullAttentionSpec) else 1, + ) + separate.append(hit) + _, reconciled, uncached = coordinator.find_longest_cache_hit(hashes, args.continuation - 1) + return dict(drop_speculative_draft=drop, retained_mamba_tokens=retained, + extra_materialized_checkpoint=extra_checkpoint, + per_group_hit_tokens=separate, reconciled_hit_tokens=reconciled, + uncached_shared_prefix_tokens=uncached) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--hash-utils-source", type=Path, default=ROOT / "v1/core/kv_cache_utils.py") + parser.add_argument("--hash-unit", type=int, default=256) + parser.add_argument("--scheduler-alignment", type=int, default=2048) + parser.add_argument("--page", type=int, default=512) + parser.add_argument("--dcp", type=int, default=4) + parser.add_argument("--prompt", type=int, default=32789) + parser.add_argument("--continuation", type=int, default=34856) + parser.add_argument("--shared", type=int, default=32768) + parser.add_argument("--fine-hits", action=argparse.BooleanOptionalAction, default=True) + args = parser.parse_args() + algorithms = load_algorithms(args.hash_utils_source) + baseline = run_case(algorithms, args) + controls = [run_case(algorithms, args, drop=False)] + draft_hit = baseline["per_group_hit_tokens"][-1] + for unit in sorted({args.page, args.scheduler_alignment}): + checkpoint = draft_hit // unit * unit + if checkpoint > 0: + controls.append(run_case(algorithms, args, extra_checkpoint=checkpoint)) + paths = [ROOT / "v1/core/single_type_kv_cache_manager.py", ROOT / "v1/core/kv_cache_coordinator.py", + args.hash_utils_source] + print(json.dumps(dict(schema="mtp3-sparse-retention-metadata-reproducer/v1", + geometry={key: value for key, value in vars(args).items() if key != "hash_utils_source"}, + synthetic_checkpoint_metadata=True, gpu_executed=False, + sources={str(path): hashlib.sha256(path.read_bytes()).hexdigest() for path in paths}, + baseline=baseline, controls=controls), sort_keys=True)) + if baseline["reconciled_hit_tokens"] == 0 and baseline["per_group_hit_tokens"][0] > 0: + assert controls[0]["reconciled_hit_tokens"] > 0 + assert all(case["reconciled_hit_tokens"] > 0 for case in controls[1:]) + + +if __name__ == "__main__": + main() diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_composition.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_composition.py new file mode 100644 index 00000000..1b4a4d20 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_composition.py @@ -0,0 +1,70 @@ +"""Composition tests use bundled source fixtures; no Docker, Torch or GPU required.""" +import json +from pathlib import Path +import subprocess +import sys + +import pytest + +import compose + + +def test_composition_entrypoint_is_self_contained(tmp_path): + output = tmp_path / 'composition' + result = subprocess.run([sys.executable, str(Path(compose.__file__)), '--output-root', str(output)], + text=True, capture_output=True, check=False) + assert result.returncode == 0, result.stderr + receipt = json.loads(result.stdout) + assert receipt['candidate_files']['vllm/v1/core/sched/scheduler.py'].startswith('75efa57e') + assert receipt['candidate_files']['vllm/v1/core/single_type_kv_cache_manager.py'].startswith('d2e35b01') + assert compose.verify_candidate(output / 'candidate') == receipt['candidate_files'] + with pytest.raises(FileExistsError): + compose.compose(output) + + +def test_original_drift_rejected_before_output_created(tmp_path): + output = tmp_path / 'prepared' + compose.compose(output) + source = output / 'original' + (source / 'vllm/v1/core/sched/scheduler.py').write_bytes(b'not the attested source') + rejected = tmp_path / 'rejected' + with pytest.raises(ValueError, match='Original source checksum'): + compose.compose(rejected, source_root=source) + assert not rejected.exists() + + +def test_candidate_drift_rejected(tmp_path): + output = tmp_path / 'prepared' + compose.compose(output) + path = output / 'candidate/vllm/v1/core/sched/scheduler.py' + path.write_bytes(path.read_bytes() + b'\n') + with pytest.raises(ValueError, match='Candidate source checksum'): + compose.verify_candidate(output / 'candidate') + + +def test_each_final_patch_remains_idempotent(tmp_path): + output = tmp_path / 'prepared' + compose.compose(output) + candidate = output / 'candidate' + assert not compose.barrier.apply_patch(candidate / 'b12x/attention/dsa_indexer/fused_indexer.py')['changed'] + assert not compose.partial.apply_patch(candidate / 'vllm/v1/core/sched/scheduler.py')['changed'] + # Earlier chain stages intentionally reject later scheduler postimages. + with pytest.raises(RuntimeError, match='preimage'): + compose.accounting.apply_patch(candidate / 'vllm/v1/core/sched/scheduler.py') + + +def test_actual_allocator_checker_accepts_final_source_composition(tmp_path): + output = tmp_path / 'prepared' + compose.compose(output) + receipt = tmp_path / 'allocator.json' + result = subprocess.run([sys.executable, str(Path(compose.__file__).with_name('check_mtp3_checkpoint_allocations.py')), + '--source-root', str(output / 'original/vllm'), + '--candidate-root', str(output / 'candidate/vllm'), '--output', str(receipt)], + text=True, capture_output=True, check=False) + assert result.returncode == 0, result.stderr + data = json.loads(receipt.read_text()) + assert data['passed'] + assert data['source_inputs']['scheduler']['sha256'] == compose.partial.AFTER_SHA256 + for name in ('fresh', 'resumed'): + assert data['populations'][name]['summary']['cases'] == 336 + assert data['populations'][name]['summary']['stale_or_unwritten_registered_states'] == 0 diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_lease_accounting.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_lease_accounting.py new file mode 100644 index 00000000..3929aae4 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_lease_accounting.py @@ -0,0 +1,118 @@ +"""Exercise extracted installed vLLM lease/statistics/API code without a GPU.""" + +import ast +import copy +import os +from dataclasses import dataclass +from pathlib import Path +from types import SimpleNamespace + +import pytest + + +ROOT = Path(os.environ["MTP3_ORIGINAL_SOURCE"]) + + +def compile_nodes(nodes, namespace=None): + scope = {} if namespace is None else dict(namespace) + tree = ast.fix_missing_locations(ast.Module(body=copy.deepcopy(nodes), type_ignores=[])) + exec(compile(tree, "", "exec"), scope) + return scope + + +def extract_class(path, name): + tree = ast.parse(path.read_text()) + return next(node for node in tree.body if isinstance(node, ast.ClassDef) and node.name == name) + + +def wrapper(name, arguments, statements): + tree = ast.parse(f"def {name}({arguments}):\n pass\n") + tree.body[0].body = statements + return tree.body[0] + + +@pytest.fixture +def runtime(): + stats = compile_nodes([extract_class(ROOT / "v1/metrics/stats.py", "PrefillStats")], + {"dataclass": dataclass})["PrefillStats"] + path = Path(os.environ.get("MTP3_SCHEDULER_SOURCE", str(ROOT / "v1/core/sched/scheduler.py"))) + tree = ast.parse(path.read_text()) + candidates = [node for node in ast.walk(tree) if isinstance(node, ast.If) + and ast.unparse(node.test) == "request.num_computed_tokens == 0 and self.connector is not None"] + assert len(candidates) == 1 + setup = ast.parse("request_id = request.request_id").body + apply_lease = compile_nodes([wrapper("apply_lease", "self, request", setup + candidates)])["apply_lease"] + processor = ast.parse((ROOT / "v1/engine/output_processor.py").read_text()) + output = [node for node in ast.walk(processor) if isinstance(node, ast.If) + and ast.unparse(node.test) == "req_state.is_prefilling"] + assert len(output) == 1 + receive = compile_nodes([wrapper("receive", "req_state, engine_core_output", output)])["receive"] + serving = ast.parse((ROOT / "entrypoints/openai/chat_completion/serving.py").read_text()) + helper = next(node for node in serving.body if isinstance(node, ast.FunctionDef) + and node.name == "_make_prompt_tokens_details") + details = compile_nodes([helper], {"PromptTokenUsageInfo": SimpleNamespace})[helper.name] + return SimpleNamespace(Stats=stats, apply=apply_lease, receive=receive, details=details) + + +def attach(runtime, prompt, lease, *, accepted=True, preempted=0, stats=True): + events = [] + request = SimpleNamespace(request_id="request", num_computed_tokens=0, + num_tokens=prompt, num_prompt_tokens=prompt, + num_preemptions=preempted, + prefill_stats=runtime.Stats() if stats else None) + connector = SimpleNamespace(get_shared_prefix_lease_candidate=lambda request: ("lease", lease), + shared_prefix_lease_attached=lambda *args: events.append("attached"), + shared_prefix_lease_rejected=lambda *args: events.append("rejected")) + scheduler = SimpleNamespace(connector=connector, kv_cache_manager=SimpleNamespace( + attach_shared_prefix_lease=lambda *args: lease if accepted else 0, + get_computed_blocks=lambda request: (None, 0, 0))) + runtime.apply(scheduler, request) + return scheduler, request, events + + +@pytest.mark.parametrize("prompt,lease,expected", [(40000, 32768, 32768), (32768, 32768, 32767)]) +def test_attached_gpu_prefix_reaches_api_total_without_external_transfer(runtime, prompt, lease, expected): + scheduler, request, events = attach(runtime, prompt, lease) + stats = request.prefill_stats + assert stats.num_cached_tokens == expected + assert stats.num_local_cached_tokens == expected + assert stats.num_external_cached_tokens == 0 + assert stats.num_computed_tokens == prompt - expected + assert request.num_computed_tokens == expected + # Reentering scheduling cannot double-count the attached prefix. + runtime.apply(scheduler, request) + assert events == ["attached"] + stats.finalize(prompt) + state = SimpleNamespace(is_prefilling=True, num_cached_tokens=0, num_cache_creation_tokens=0) + runtime.receive(state, SimpleNamespace(prefill_stats=stats)) + details = runtime.details(True, state.num_cached_tokens, state.num_cache_creation_tokens, None) + assert details.cached_tokens == expected + assert details.created_cache_tokens == prompt - expected + + +def test_rejected_lease_leaves_normal_lookup_accounting_untouched(runtime): + _, request, events = attach(runtime, 40000, 32768, accepted=False) + assert events == ["rejected"] + assert request.num_computed_tokens == 0 + assert vars(request.prefill_stats) == vars(runtime.Stats()) + + +def test_preemption_does_not_rewrite_first_prefill_stats(runtime): + _, request, events = attach(runtime, 40000, 32768, preempted=1) + assert events == ["attached"] + assert vars(request.prefill_stats) == vars(runtime.Stats()) + + +def test_absent_stats_does_not_change_lease_attachment(runtime): + _, request, events = attach(runtime, 40000, 32768, stats=False) + assert request.prefill_stats is None + assert request.num_computed_tokens == 32768 + assert events == ["attached"] + + +def test_existing_local_plus_external_total_remains_distinct(runtime): + stats = runtime.Stats() + stats.set(num_prompt_tokens=40000, num_local_cached_tokens=8000, num_external_cached_tokens=12000) + details = runtime.details(True, stats.num_cached_tokens, 0, None) + assert (stats.num_local_cached_tokens, stats.num_external_cached_tokens) == (8000, 12000) + assert details.cached_tokens == 20000 diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_local_lease_preference.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_local_lease_preference.py new file mode 100644 index 00000000..9302f4b2 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_local_lease_preference.py @@ -0,0 +1,169 @@ +"""GPU-free execution of installed scheduler selection with allocator stubs.""" + +import ast +import os +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from test_mtp3_lease_accounting import ROOT, compile_nodes, wrapper + + +@pytest.fixture +def selection(): + path = Path(os.environ.get("MTP3_SCHEDULER_SOURCE", str(Path(__file__).parent / "mtp3_scheduler_accounted.py"))) + tree = ast.parse(path.read_text()) + lease = next(node for node in ast.walk(tree) if isinstance(node, ast.If) + and ast.unparse(node.test) == "request.num_computed_tokens == 0 and self.connector is not None") + ordinary = min((node for node in ast.walk(tree) if isinstance(node, ast.If) + and ast.unparse(node.test) == "request.num_computed_tokens == 0" + and node.lineno > lease.lineno), key=lambda node: node.lineno) + # Execute the real selection/lease branch and the real local-lookup assignment. + ordinary.body = ordinary.body[:2] + ordinary.orelse = [] + setup = ast.parse("request_id = request.request_id\nlocal_lease_alternative = None\ndid_prefix_cache_lookup = False\nnum_new_local_computed_tokens = 0\nhit_diverged = False").body + result = ast.parse("return did_prefix_cache_lookup, num_new_local_computed_tokens, hit_diverged").body + return compile_nodes([wrapper("select", "self, request", setup + [lease, ordinary] + result)])["select"] + + +def case(selection, *, local, lease=1024, attach=True, stale=False, preempted=False, candidate=True): + calls = [] + members = {"request", "other-follower"} + current = [local] + request = SimpleNamespace(request_id="request", num_computed_tokens=0, num_tokens=2048, + num_prompt_tokens=2048, prefill_stats=None, + num_preemptions=int(preempted), shared_prefix_boundary=0) + + def lookup(request): + calls.append("converged_lookup") + return ("local-blocks", current[0], current[0]) + + def ordinary(request): + calls.append("ordinary_lookup") + return (*lookup(request), False) + + def attach_lease(*args): + calls.append("attach") + if stale: + current[0] = 0 + return lease if attach else 0 + + def reject(*args): + calls.append("reject") + members.discard("request") + + connector = SimpleNamespace(get_shared_prefix_lease_candidate=lambda request: ("lease", lease) if candidate else None, + shared_prefix_lease_attached=lambda *args: calls.append("attached"), + shared_prefix_lease_rejected=reject) + scheduler = SimpleNamespace(connector=connector, + kv_cache_manager=SimpleNamespace(get_computed_blocks=lookup, attach_shared_prefix_lease=attach_lease), + _get_local_prefix_cache_hit=ordinary) + result = selection(scheduler, request) + return result, request, calls, members + + +def test_strictly_longer_converged_local_hit_skips_attachment_and_reuses_lookup(selection): + result, request, calls, members = case(selection, local=1536) + assert result == (True, 1536, False) + assert calls == ["converged_lookup", "reject"] + assert request.num_computed_tokens == 0 # Normal scheduler allocation owns adoption. + assert members == {"other-follower"} + + +@pytest.mark.parametrize("local", [0, 512, 1024]) +def test_equal_or_shorter_local_hit_keeps_lease(selection, local): + result, request, calls, members = case(selection, local=local) + assert not result[0] + assert request.num_computed_tokens == 1024 + assert calls == ["converged_lookup", "attach", "attached"] + assert members == {"request", "other-follower"} + + +def test_rejected_lease_returns_to_normal_lookup(selection): + result, request, calls, members = case(selection, local=512, attach=False) + assert result == (True, 512, False) + assert calls == ["converged_lookup", "attach", "reject", "ordinary_lookup", "converged_lookup"] + assert request.num_computed_tokens == 0 + assert members == {"other-follower"} + + +def test_failed_attachment_does_not_reuse_potentially_stale_probe_blocks(selection): + result, _, calls, _ = case(selection, local=512, attach=False, stale=True) + assert result == (True, 0, False) + assert calls[-2:] == ["ordinary_lookup", "converged_lookup"] + + +def test_preempted_request_still_uses_normal_allocation_for_a_longer_local_hit(selection): + result, request, calls, _ = case(selection, local=1536, preempted=True) + assert result == (True, 1536, False) + assert request.num_computed_tokens == 0 + assert "attach" not in calls + + +def test_no_lease_performs_only_the_ordinary_lookup(selection): + result, _, calls, _ = case(selection, local=1536, candidate=False) + assert result == (True, 1536, False) + assert calls == ["ordinary_lookup", "converged_lookup"] + + +@pytest.mark.skipif(not os.environ.get("SPARKCACHE_SOURCE_ROOT"), reason="optional companion SparkCache source integration") +def test_actual_connector_decline_preserves_verified_lease_and_other_followers(selection, tmp_path): + import sys + sys.path.insert(0, os.environ["SPARKCACHE_SOURCE_ROOT"]) + from sparkcache import test_spark_context_cache_connector as fixtures + + helper = fixtures.AsyncRestoreTests() + connector = helper._cohort_connector(tmp_path) + tokens = list(range(1600)) + digest = helper._offer(connector, tokens) + leader = SimpleNamespace(request_id="leader", prompt_token_ids=tokens) + assert connector.get_num_new_matched_tokens(leader, 0) == (1024, True) + connector.update_state_after_alloc(leader, helper._blocks_stub(), 1024) + connector.build_connector_meta(fixtures._empty_scheduler_output()) + connector.update_connector_output(SimpleNamespace(invalid_block_ids=set(), finished_recving={"leader"})) + assert connector.shared_prefix_lease_published("leader", digest) + other = SimpleNamespace(request_id="other", prompt_token_ids=tokens) + assert connector.get_shared_prefix_lease_candidate(other) == (digest, 1024) + request = SimpleNamespace(request_id="prefer-local", prompt_token_ids=tokens, + num_computed_tokens=0, num_tokens=len(tokens), num_prompt_tokens=len(tokens), + num_preemptions=0, prefill_stats=None, shared_prefix_boundary=0) + scheduler = SimpleNamespace(connector=connector, kv_cache_manager=SimpleNamespace( + get_computed_blocks=lambda request: ("local-blocks", 1280, 1280), + attach_shared_prefix_lease=lambda *args: pytest.fail("short lease was attached")), + _get_local_prefix_cache_hit=lambda request: pytest.fail("lookup repeated")) + try: + assert selection(scheduler, request) == (True, 1280, False) + assert "prefer-local" not in connector._restore_flight_followers + assert "other" in connector._restore_flight_followers + assert connector._restore_flights[digest].lease_published + assert connector.get_shared_prefix_lease_candidate(other) == (digest, 1024) + finally: + connector.shutdown() + + +def test_speculative_backoff_is_applied_before_comparing_with_lease(selection): + # Execute the installed full-attention finder with equal hash/page units. + # In this geometry resolve_block_hashes is its identity branch. + import itertools + from collections.abc import Sequence + from types import SimpleNamespace + + tree = ast.parse((ROOT / "v1/core/single_type_kv_cache_manager.py").read_text()) + original = next(node for node in tree.body if isinstance(node, ast.ClassDef) and node.name == "FullAttentionManager") + method = next(node for node in original.body if isinstance(node, ast.FunctionDef) and node.name == "find_longest_cache_hit") + shell = ast.parse("class FullAttentionManager:\n supports_fine_grained_hash_lookup = True\n").body[0] + shell.body.append(method) + future = ast.parse("from __future__ import annotations").body[0] + scope = compile_nodes([future, shell], dict(FullAttentionSpec=SimpleNamespace, + ChunkedLocalAttentionSpec=type("ChunkedLocalAttentionSpec", (), {}), + resolve_block_hashes=lambda values, *args, **kwargs: values, + itertools=itertools, Sequence=Sequence, cdiv=lambda a, b: (a + b - 1) // b)) + pool = SimpleNamespace(hash_block_size=256, get_cached_block=lambda block_hash, groups: [block_hash]) + _, backed_off = scope["FullAttentionManager"].find_longest_cache_hit( + [1, 2, 3, 4, 5], max_length=1280, kv_cache_group_ids=[0], block_pool=pool, + kv_cache_spec=SimpleNamespace(block_size=256), drop_eagle_block=True, alignment_tokens=256) + assert backed_off == 1024 # Raw 1280-token evidence is not a reusable 1280-token hit. + _, request, calls, _ = case(selection, local=backed_off, lease=1024) + assert request.num_computed_tokens == 1024 + assert "attached" in calls diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_partial_tail_eligibility.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_partial_tail_eligibility.py new file mode 100644 index 00000000..835ddb13 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_partial_tail_eligibility.py @@ -0,0 +1,42 @@ +"""Execute the actual recurrent partial-tail predicate and scheduling path.""" + +from types import SimpleNamespace + +import pytest + +from repro_mtp3_checkpoint_materialization import partial_hit_eligibility +from repro_mtp3_sparse_retention import MambaSpec +from test_mtp3_sparse_retention import SOURCE, trace + + +@pytest.mark.parametrize("hash_size,page_sizes,alignment,fine,expected", [ + (512, [512], 2048, True, False), + (256, [512], 2048, True, True), + (512, [1024], 2048, True, True), + (512, [], 2048, True, False), + (256, [512], 2048, False, False), +]) +def test_predicate_uses_actual_mamba_pages(hash_size, page_sizes, alignment, fine, expected): + scheduler = SimpleNamespace(need_mamba_block_aligned_split=True, + hash_block_size=hash_size, block_size=alignment, + kv_cache_manager=SimpleNamespace(coordinator=SimpleNamespace(enable_partial_hash_hits=fine))) + config = SimpleNamespace(kv_cache_groups=[SimpleNamespace(kv_cache_spec=MambaSpec(size)) for size in page_sizes]) + assert partial_hit_eligibility(scheduler, config, SOURCE / "v1/core/sched/scheduler.py") is expected + + +@pytest.mark.parametrize("prompt,expected", [ + (5306, [4096, 4608, 5306]), + (32789, [8192, 16384, 24576, 32256, 32768, 32789]), +]) +def test_unneeded_stop_removed_but_publication_and_predecessor_remain(prompt, expected): + _, _, retained, steps = trace(prompt) + assert steps == expected + assert (prompt - 1) // 2048 * 2048 in retained + assert ((prompt - 1) // 512 - 1) * 512 in retained + + +def test_successful_100k_case_drops_only_the_unneeded_fine_tail_stop(): + _, _, retained, steps = trace(100968) + assert 100352 in steps and 100864 not in steps + assert steps[-1] == 100968 + assert 100352 in retained diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_sparse_retention.py b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_sparse_retention.py new file mode 100644 index 00000000..7a162478 --- /dev/null +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/test_mtp3_sparse_retention.py @@ -0,0 +1,128 @@ +"""Installed-algorithm tests for MTP3 checkpoint production and reuse.""" + +import os +from collections import namedtuple +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from repro_mtp3_checkpoint_materialization import checkpoint_kernel_metadata, load_scheduler, partial_hit_eligibility +from repro_mtp3_sparse_retention import ROOT, FullAttentionSpec, MambaSpec, Pool, load_algorithms + + +SOURCE = Path(os.environ.get("MTP3_RETENTION_SOURCE", str(Path(__file__).parent / "mtp3-retention-patched"))) + + +def trace(prompt, *, budget=8192, eagle=True, scheduler_source=None, manager_source=None): + algorithms = load_algorithms(ROOT / "v1/core/kv_cache_utils.py", + manager_source=manager_source or SOURCE / "v1/core/single_type_kv_cache_manager.py") + Scheduler = load_scheduler(scheduler_source or SOURCE / "v1/core/sched/scheduler.py") + scheduler = Scheduler() + scheduler.cache_config = SimpleNamespace(block_size=512) + scheduler.use_eagle = eagle + scheduler.mamba_has_prefill_checkpoint_blocks = True + scheduler.hash_block_size = 512 + scheduler.block_size = 2048 + scheduler.need_mamba_block_aligned_split = True + scheduler.kv_cache_manager = SimpleNamespace(coordinator=SimpleNamespace(enable_partial_hash_hits=True)) + partial_hit_eligibility(scheduler, + SimpleNamespace(kv_cache_groups=[SimpleNamespace(kv_cache_spec=MambaSpec(512))]), + scheduler_source or SOURCE / "v1/core/sched/scheduler.py") + scheduler.max_num_scheduled_tokens = 8192 + scheduler.scheduler_config = SimpleNamespace(long_prefill_token_threshold=0) + scheduler.num_prefill_lookahead = 1 + publication = (prompt - 1) // 2048 * 2048 + scheduler._recurrent_publication_boundaries = lambda request: (publication,) if publication else () + request = SimpleNamespace(num_prompt_tokens=prompt, num_tokens=prompt, + num_computed_tokens=0, shared_prefix_boundary=0) + spec = MambaSpec(512) + produced = set() + retained = set() + steps = [] + cached = 0 + checkpoint = checkpoint_kernel_metadata() + while request.num_computed_tokens < prompt: + start = request.num_computed_tokens + n = scheduler._mamba_block_aligned_split(request, min(budget, prompt - start)) + n = scheduler._reserve_prefill_lookahead(request, start, n) + assert n > 0 + end = start + n + point = checkpoint(start, end, 512) + if end % 512 == 0: + produced.add(end) + if point is not None: + produced.add(point) + num_full = end // 512 + mask = algorithms.MambaManager.reachable_block_mask(start_block=cached, + end_block=num_full, alignment_tokens=2048, kv_cache_spec=spec, + use_eagle=eagle, retention_interval=0, reachable_boundaries=(prompt - 1,)) + retained.update((cached + index + 1) * 512 for index, keep in enumerate(mask) + if keep and (cached + index + 1) * 512 in produced) + cached = num_full + request.num_computed_tokens = end + steps.append(end) + assert len(steps) < 100 + return algorithms, produced, retained, steps + + +def replay(algorithms, prompt, retained, *, eagle=True): + target, recurrent = FullAttentionSpec(512), MambaSpec(512) + pool = Pool(512, retained, prompt // 512 * 512) + coordinator = algorithms.HybridKVCacheCoordinator() + coordinator.kv_cache_config = SimpleNamespace(kv_cache_groups=(target, recurrent)) + coordinator.single_type_managers = (SimpleNamespace(block_size=2048), SimpleNamespace(block_size=512)) + group = namedtuple("SpecGroup", "spec group_ids manager_cls use_eagle") + coordinator.attention_groups = [group(target, [0], algorithms.FullAttentionManager, eagle), + group(recurrent, [1], algorithms.MambaManager, eagle)] + coordinator.block_pool = pool + coordinator.hash_block_size = 512 + coordinator.scheduler_block_size = 2048 + coordinator.enable_partial_hash_hits = True + coordinator.dcp_world_size = 4 + hashes = list(range(512, prompt + 1, 512)) + return coordinator.find_longest_cache_hit(hashes, prompt - 1)[1] + + +@pytest.mark.parametrize("prompt", [32768, 32769, 32789, 33280, 33281, 100968]) +@pytest.mark.parametrize("budget", [8192, 7680]) +def test_speculative_predecessor_is_materialized_retained_and_reusable(prompt, budget): + algorithms, produced, retained, _ = trace(prompt, budget=budget) + required = ((prompt - 1) // 512 - 1) * 512 + assert required in produced + assert required in retained + assert replay(algorithms, prompt, retained) == required + # Preserve the scheduler-aligned publication checkpoint as well. + assert (prompt - 1) // 2048 * 2048 in retained + + +def test_known_successful_100k_prompt_keeps_its_existing_reuse(): + algorithms, _, retained, _ = trace(100968) + assert replay(algorithms, 100968, retained) == 100352 + + +def test_non_speculative_internal_checkpoint_behavior_is_unchanged(): + _, produced, retained, steps = trace(32789, eagle=False) + assert steps == [8192, 16384, 24576, 32768, 32789] + assert 32256 not in produced + assert retained == {32768} + + +def test_dense_retention_remains_dense(): + algorithms = load_algorithms(ROOT / "v1/core/kv_cache_utils.py", + manager_source=SOURCE / "v1/core/single_type_kv_cache_manager.py") + assert algorithms.MambaManager.reachable_block_mask(start_block=0, end_block=64, + alignment_tokens=2048, kv_cache_spec=MambaSpec(512), use_eagle=True, + retention_interval=None, reachable_boundaries=(32788,)) is None + + +def test_retention_change_alone_cannot_create_the_missing_checkpoint(): + _, produced, retained, _ = trace(32789, scheduler_source=ROOT / "v1/core/sched/scheduler.py") + assert 32256 not in produced + assert 32256 not in retained + + +def test_materialization_change_alone_does_not_preserve_the_checkpoint(): + _, produced, retained, _ = trace(32789, manager_source=ROOT / "v1/core/single_type_kv_cache_manager.py") + assert 32256 in produced + assert 32256 not in retained diff --git a/runtime/glm53-spark-mtp3-mesh/managed_service.py b/runtime/glm53-spark-mtp3-mesh/managed_service.py index 3aab600b..9f1076cb 100644 --- a/runtime/glm53-spark-mtp3-mesh/managed_service.py +++ b/runtime/glm53-spark-mtp3-mesh/managed_service.py @@ -126,7 +126,8 @@ def validate_group(rows): generations = {str(row['rank']): row['generation'] for row in rows} view = digest(generations) if any(row.get('phase') != 'armed' or row.get('view_digest') != view - or row.get('peer_health_degraded', False) for row in rows): + or row.get('peer_health_degraded', False) + or row.get('docker_status_degraded', False) for row in rows): raise RuntimeError('Mesh ranks have not armed the same process generation set') return view @@ -167,10 +168,41 @@ def docker_running(name): result = subprocess.run(['docker', 'inspect', '--format', '{{.State.Running}}', name], capture_output=True, text=True, timeout=3) if result.returncode: - if 'No such' in result.stderr: + if re.search(r'No such (?:object|container): ' + re.escape(name) + r'(?:\s|$)', result.stderr): return False raise RuntimeError('Cannot establish the dependent container state') - return result.stdout.strip() == 'true' + state = result.stdout.strip() + if state not in ('true', 'false'): + raise RuntimeError('Docker returned an unknown dependent container state') + return state == 'true' + + +class DockerStatePoll: + """One bounded background query; unknown state never proves model exit.""" + + def __init__(self, name): + self.name = name + self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=1) + self.pending = None + self.error = None + + def poll(self): + running = None + if self.pending is not None and self.pending.done(): + try: + running = self.pending.result() + self.error = None + except (subprocess.TimeoutExpired, OSError, RuntimeError) as error: + self.error = str(error) + self.pending = None + if self.pending is None: + self.pending = self.executor.submit(docker_running, self.name) + # Do not reuse a previous False while a query is pending: a container + # can start between samples. Cleanup uses a separate synchronous proof. + return running + + def close(self): + self.executor.shutdown(wait=False, cancel_futures=True) def stop_model(name): @@ -405,6 +437,7 @@ def run(self): fcntl.flock(service_lock, fcntl.LOCK_EX | fcntl.LOCK_NB) for sig in (signal.SIGTERM, signal.SIGINT): signal.signal(sig, lambda *_: self.stop.set()) + docker_watch = None try: if docker_running(self.model): raise RuntimeError('Stop the dependent model before starting mesh ownership') @@ -420,6 +453,7 @@ def run(self): peer_watch = PeerWatch() last_network = time.monotonic() last_full_network = last_network + docker_watch = DockerStatePoll(self.model) while not self.stop.is_set(): if any(child.poll() is not None for child in self.children): raise RuntimeError('A managed source marker exited') @@ -429,6 +463,9 @@ def run(self): if full: last_full_network = time.monotonic() last_network = time.monotonic() + model_running = docker_watch.poll() + self.publish(docker_status_degraded=model_running is None, + docker_status_error=docker_watch.error) try: rows = group_check(self.site, self.config, self.key, self.identity) view = peer_watch.observe(rows) @@ -436,21 +473,22 @@ def run(self): except OSError: if peer_watch.generations is not None: peer_watch.transport_error(time.monotonic()) - elif docker_running(self.model): + elif model_running is True: raise self.publish(peer_health_degraded=True) except Exception: - if peer_watch.generations is not None or docker_running(self.model): + if peer_watch.generations is not None or model_running is True: raise - if self.state['phase'] != 'armed' and docker_running(self.model): + if self.state['phase'] != 'armed' and model_running is True: raise RuntimeError('Dependent model started before four-rank readiness') intent_path = self.state_dir / 'model-intent.json' if intent_path.exists(): intent = json.loads(intent_path.read_text()) if intent.get('generation') == self.generation and intent.get('active') is True: - if docker_running(self.model): + if model_running is True: self.model_seen = True - elif self.model_seen or time.monotonic() > intent['deadline_monotonic']: + elif model_running is False and ( + self.model_seen or time.monotonic() > intent['deadline_monotonic']): raise RuntimeError('Dependent model exited or failed to start') else: self.model_seen = False @@ -462,6 +500,8 @@ def run(self): self.publish(best_effort=True, local_ready=False, phase='failed', error=str(error)) print(json.dumps({'event': 'mesh_failure', 'rank': self.rank, 'error': str(error)}), flush=True) finally: + if docker_watch is not None: + docker_watch.close() self.publish(best_effort=True, local_ready=False, phase='failed' if self.failed else 'stopping') while self.owns_guard: try: @@ -534,7 +574,8 @@ def model_intent(config_path, active): raise RuntimeError('Mesh service has no readiness state') return status = json.loads(status_path.read_text()) - if active and (status.get('phase') != 'armed' or status.get('local_ready') is not True): + if active and (status.get('phase') != 'armed' or status.get('local_ready') is not True + or status.get('docker_status_degraded', False)): raise RuntimeError('Mesh is not armed for model startup') record = {'generation': status['generation'], 'active': active, 'deadline_monotonic': time.monotonic() + 15} diff --git a/runtime/glm53-spark-mtp3-mesh/test_managed_service.py b/runtime/glm53-spark-mtp3-mesh/test_managed_service.py index f2b6db54..d086795f 100644 --- a/runtime/glm53-spark-mtp3-mesh/test_managed_service.py +++ b/runtime/glm53-spark-mtp3-mesh/test_managed_service.py @@ -3,6 +3,8 @@ from pathlib import Path import threading import time +from concurrent.futures import Future +from types import SimpleNamespace import pytest @@ -167,6 +169,187 @@ class Result: assert calls == [['docker', 'kill', 'a' * 64]] +def test_docker_inspect_timeout_is_unknown_without_stalling_fabric_monitor(monkeypatch): + pending = Future() + submitted = [] + + class Executor: + def submit(self, function, name): + submitted.append((function, name)) + return pending + + def shutdown(self, **kwargs): + pass + + monkeypatch.setattr(service.concurrent.futures, 'ThreadPoolExecutor', lambda **kw: Executor()) + watcher = service.DockerStatePoll('a' * 64) + assert watcher.poll() is None + for _ in range(20): + assert watcher.poll() is None + assert len(submitted) == 1 + command = ['docker', 'inspect', '--format', '{{.State.Running}}', 'a' * 64] + pending.set_exception(service.subprocess.TimeoutExpired(command, 3)) + assert watcher.poll() is None + assert '3 seconds' in watcher.error + assert len(submitted) == 2 + watcher.close() + + +def test_docker_status_recovers_without_reusing_stale_stopped_evidence(monkeypatch): + futures = [Future(), Future(), Future()] + pending = iter(futures) + executor = SimpleNamespace(submit=lambda *args: next(pending), shutdown=lambda **kw: None) + monkeypatch.setattr(service.concurrent.futures, 'ThreadPoolExecutor', lambda **kw: executor) + watcher = service.DockerStatePoll('a' * 64) + assert watcher.poll() is None + futures[0].set_result(False) + assert watcher.poll() is False + assert watcher.poll() is None + futures[1].set_result(True) + assert watcher.poll() is True + assert watcher.error is None + watcher.close() + + +def test_unknown_docker_status_blocks_model_admission(): + changed = rows() + changed[0]['docker_status_degraded'] = True + with pytest.raises(RuntimeError): + service.validate_group(changed) + + +def test_model_arm_rechecks_local_docker_status_after_group_gate(tmp_path, monkeypatch): + monkeypatch.setattr(service, 'load_config', lambda path: ({'state_dir': str(tmp_path)},)) + (tmp_path / 'status.json').write_bytes(service.canonical({ + 'phase': 'armed', 'local_ready': True, 'generation': 'g', 'docker_status_degraded': True, + })) + with pytest.raises(RuntimeError, match='not armed'): + service.model_intent('unused', True) + assert not (tmp_path / 'model-intent.json').exists() + + +@pytest.mark.parametrize('message, missing', [ + ('Error: No such object: ' + 'a' * 64, True), + ('Error: No such object: ' + 'b' * 64, False), + ('No such file or directory: Docker socket', False), +]) +def test_only_pinned_missing_container_proves_absence(monkeypatch, message, missing): + monkeypatch.setattr(service.subprocess, 'run', lambda *args, **kw: + SimpleNamespace(returncode=1, stdout='', stderr=message)) + if missing: + assert service.docker_running('a' * 64) is False + else: + with pytest.raises(RuntimeError): + service.docker_running('a' * 64) + + +@pytest.mark.parametrize('output', ['', 'unexpected', 'False']) +def test_unknown_docker_reply_cannot_prove_model_stopped(monkeypatch, output): + monkeypatch.setattr(service.subprocess, 'run', lambda *args, **kw: + SimpleNamespace(returncode=0, stdout=output, stderr='')) + with pytest.raises(RuntimeError): + service.stop_model('a' * 64) + + +def test_docker_timeout_cannot_pass_model_stop_barrier(monkeypatch): + calls = [] + + def timeout(argv, **kwargs): + calls.append((argv, kwargs['timeout'])) + raise service.subprocess.TimeoutExpired(argv, kwargs['timeout']) + + monkeypatch.setattr(service.subprocess, 'run', timeout) + with pytest.raises(service.subprocess.TimeoutExpired): + service.stop_model('a' * 64) + assert len(calls) == 1 + assert calls[0][1] == 3 + + +@pytest.mark.parametrize('peer_failure', [False, True]) +def test_monitor_keeps_fabric_checks_live_when_docker_is_unknown(tmp_path, monkeypatch, peer_failure): + result = owner() + result.rank, result.generation, result.model = 0, 'g', 'a' * 64 + result.config = {'site_path': '/unused'} + result.site, result.identity, result.key = {}, 'identity', b'k' * 32 + result.state_dir, result.network, result.server = tmp_path, None, None + result.marker_records, result.logfiles = [], [] + result.failed, result.owns_guard, result.model_seen = False, False, True + events = [] + samples = iter([True, None, True]) + clock = [100.0] + monitor_round = [0] + + class Stop: + def is_set(self): + return monitor_round[0] >= 3 + + def wait(self, seconds): + monitor_round[0] += 1 + clock[0] += 6 + + result.stop = Stop() + result.start_markers = lambda: None + result.start_server = lambda: None + result.publish = lambda **changes: result.state.update(changes) + result.children = [SimpleNamespace( + poll=lambda: None, + terminate=lambda: events.append('marker-stop'), + wait=lambda **kw: None, + ) for _ in range(2)] + (tmp_path / 'model-intent.json').write_bytes(service.canonical({ + 'generation': 'g', 'active': True, 'deadline_monotonic': 0, + })) + monkeypatch.setattr(service.os, 'geteuid', lambda: 0, raising=False) + monkeypatch.setattr(service.signal, 'signal', lambda *args: None) + monkeypatch.setitem(service.sys.modules, 'fcntl', SimpleNamespace( + flock=lambda *args: None, LOCK_EX=1, LOCK_NB=2, + )) + monkeypatch.setitem(service.sys.modules, 'managed_network', SimpleNamespace( + NetworkManager=lambda *args: SimpleNamespace( + up=lambda: None, + check=lambda **kw: events.append('network-check'), + down=lambda: events.append('network-down') or {'clean': True}, + ) + )) + monkeypatch.setattr(service.time, 'monotonic', lambda: clock[0]) + monkeypatch.setattr(service.time, 'sleep', lambda seconds: events.append('retain-markers')) + monkeypatch.setattr(service, 'notify', lambda message: events.append(message)) + monkeypatch.setattr(service, 'docker_running', lambda name: events.append('startup-inspect') or False) + monkeypatch.setattr(service, 'DockerStatePoll', lambda name: SimpleNamespace( + poll=lambda: next(samples), error='Docker inspect timed out after 3 seconds', close=lambda: None, + )) + + def group_check(*args): + events.append('peer-check') + if peer_failure and monitor_round[0] == 1: + raise RuntimeError('Authenticated peer is not locally ready') + return rows() + + stop_attempts = [0] + + def stop_model(name): + stop_attempts[0] += 1 + if stop_attempts[0] == 1: + assert 'marker-stop' not in events and 'network-down' not in events + raise service.subprocess.TimeoutExpired(['docker', 'inspect', name], 3) + events.append('model-stop-confirmed') + + monkeypatch.setattr(service, 'group_check', group_check) + monkeypatch.setattr(service, 'stop_model', stop_model) + assert result.run() == 1 # The explicit stop barrier needed a retry. + assert events.count('startup-inspect') == 1 + assert events.count('peer-check') == (2 if peer_failure else 3) + assert 'network-check' in events + assert events.index('retain-markers') < events.index('model-stop-confirmed') + assert events.index('model-stop-confirmed') < events.index('marker-stop') + assert events.index('marker-stop') < events.index('network-down') + if peer_failure: + assert 'not locally ready' in result.state['error'] + else: + assert 'error' not in result.state + assert result.state['docker_status_degraded'] is False + + def test_units_bind_model_and_disable_automatic_recovery(): rendered = units.unit_text('/opt/sparkring/managed-mesh', '/etc/sparkring/managed-mesh', 'a' * 64) mesh, model = rendered['sparkring-mesh.service'], rendered['sparkring-mesh-model.service'] From 320e9a5b3bd08332a7dce16b89ac03353ac63db7 Mon Sep 17 00:00:00 2001 From: FujitsuPolycom <87842395+FujitsuPolycom@users.noreply.github.com> Date: Sun, 6 Sep 2026 08:02:23 -0500 Subject: [PATCH 2/5] Use a synthetic short credential in receipt-redaction tests Exercise transport-error and receipt redaction with an unmistakable test value that does not match the release credential scanner. Production authentication behavior is unchanged. All nine conversation harness tests pass. --- .../harnesses/validation/test_conversation_soak.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/performance/harnesses/validation/test_conversation_soak.py b/performance/harnesses/validation/test_conversation_soak.py index 7da518c6..0bb8bb6d 100644 --- a/performance/harnesses/validation/test_conversation_soak.py +++ b/performance/harnesses/validation/test_conversation_soak.py @@ -14,7 +14,7 @@ def config(**overrides): return {"endpoint": "http://192.0.2.1:8015", "model": "glm-5.3-flash-spark", - "api_key": "secret-not-for-receipts", "timeout": 1, "context_limit": 8192, + "api_key": "test-key", "timeout": 1, "context_limit": 8192, "temperature": 1, "seed": 20260906, "arm": "mtp3-test", "reasoning_effort": "low", "probe_reasoning_effort": "low", "chat_template_kwargs": {"enable_thinking": True}, "probe_tokens": 300, "probe_output_tokens": 64, "probe_repeats": 1, @@ -44,7 +44,7 @@ def send(url, payload, key, timeout, request_id=None): if url.endswith("/tokenize"): return io.BytesIO(json.dumps({"count": count}).encode()) if error: - raise ValueError("credential echoed by server: secret-not-for-receipts") + raise ValueError("credential echoed by server: test-key") records = [ {"id": "chatcmpl-fixture", "choices": [{"delta": {"reasoning_content": "think"}}]}, {"choices": [{"delta": {"content": "answer"}, "finish_reason": "length"}]}, @@ -112,7 +112,7 @@ def test_bounded_conversations_and_before_after_probes(monkeypatch, tmp_path): assert len({record["prompt_sha256"] for record in turns}) == 8 assert records[-1]["soak_turns"] == 6 assert records[-1]["fraction_below_half_cached"] == 1 - assert "secret-not-for-receipts" not in path.read_text() + assert "test-key" not in path.read_text() with pytest.raises(FileExistsError): soak.execute(config(), path) @@ -136,7 +136,7 @@ def test_failure_stops_before_soak_and_redacts_error(monkeypatch, tmp_path): errors = [record for record in records if record["type"] == "error"] assert len(errors) == 1 and errors[0]["request_id"] assert records[-1]["soak_turns"] == 0 - assert "secret-not-for-receipts" not in path.read_text() + assert "test-key" not in path.read_text() assert sum(url.endswith("/v1/chat/completions") for url, _, _ in calls) == 1 From 4ea84a90c94a2fa6c58e56b082341af3be9ccea5 Mon Sep 17 00:00:00 2001 From: FujitsuPolycom <87842395+FujitsuPolycom@users.noreply.github.com> Date: Sun, 6 Sep 2026 13:37:07 -0500 Subject: [PATCH 3/5] Model root-owned state in the Docker polling tests Keep service ownership checks intact while simulating root-owned fixture metadata on unprivileged Linux runners. Validation: all 37 managed-service tests pass under WSL, including both formerly failing monitor cases. No runtime or cache identity changes. --- runtime/glm53-spark-mtp3-mesh/test_managed_service.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/runtime/glm53-spark-mtp3-mesh/test_managed_service.py b/runtime/glm53-spark-mtp3-mesh/test_managed_service.py index d086795f..fcdbbac4 100644 --- a/runtime/glm53-spark-mtp3-mesh/test_managed_service.py +++ b/runtime/glm53-spark-mtp3-mesh/test_managed_service.py @@ -300,6 +300,16 @@ def wait(self, seconds): 'generation': 'g', 'active': True, 'deadline_monotonic': 0, })) monkeypatch.setattr(service.os, 'geteuid', lambda: 0, raising=False) + original_lstat = type(tmp_path).lstat + + def fixture_lstat(path): + info = original_lstat(path) + if path == tmp_path: + return SimpleNamespace(st_mode=info.st_mode, st_uid=0) + return info + + # Model the root-owned service directory without changing host ownership. + monkeypatch.setattr(type(tmp_path), 'lstat', fixture_lstat) monkeypatch.setattr(service.signal, 'signal', lambda *args: None) monkeypatch.setitem(service.sys.modules, 'fcntl', SimpleNamespace( flock=lambda *args: None, LOCK_EX=1, LOCK_NB=2, From a0715d0acca996c48628c3e14ecf466215431523 Mon Sep 17 00:00:00 2001 From: FujitsuPolycom <87842395+FujitsuPolycom@users.noreply.github.com> Date: Sun, 6 Sep 2026 13:54:43 -0500 Subject: [PATCH 4/5] Distinguish cache reuse and barrier image compositions Document incompatible indexer postimage hashes and the need for one attested combined image. Source branch integration does not repin images or cache namespaces. Documentation-only change; no stack activity. --- .../experiments/cache-reuse/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md index 9cc72f32..0feb01c6 100644 --- a/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md +++ b/runtime/glm53-spark-mtp3-mesh/experiments/cache-reuse/README.md @@ -21,6 +21,15 @@ geometries and images require separate evidence. The supported source input is local image ID `sha256:2e41b1e934a85ff7c21b780532db2f0a0e978df081e52f4ae2bf11f8992fb24f`. This is a local immutable image identity, not a registry pull reference. + +This composer and the [indexer-barrier image in PR #226](https://github.com/FujitsuPolycom/sparkring/pull/226) +are separate derivatives of that input. Both add histogram synchronization, but +their indexer output bytes and hashes differ. Do not apply this composer to the +barrier child: its preimage checks reject that source. A combined image needs +one selected indexer output, matching source receipts and cache namespace, and +validation of the complete composition. A source-branch merge alone does not +perform that integration. + `fixtures/manifest.json` lists the ten input Python files, their paths in that image, byte counts and SHA-256 values. The 155 KiB fixture archive contains only those files. Source bytes and their existing SPDX/copyright headers are From c2a023b287010c4e337e6a27f87bc5600ce2e0bb Mon Sep 17 00:00:00 2001 From: FujitsuPolycom <87842395+FujitsuPolycom@users.noreply.github.com> Date: Sun, 6 Sep 2026 14:55:49 -0500 Subject: [PATCH 5/5] Explain reboot preparation for fragmented Spark memory Recommend an optional pre-installation reboot after stopping workloads on hosts that have run large GPU jobs. Explain contiguous-memory requirements and retain the managed startup gate as the readiness check. Documentation-only change; relative links and whitespace verified. --- docs/GLM53_SPARK_MTP3_MESH_QUICKSTART.md | 7 +++++++ docs/PREREQUISITES.md | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/docs/GLM53_SPARK_MTP3_MESH_QUICKSTART.md b/docs/GLM53_SPARK_MTP3_MESH_QUICKSTART.md index fa259e9a..9c0deb93 100644 --- a/docs/GLM53_SPARK_MTP3_MESH_QUICKSTART.md +++ b/docs/GLM53_SPARK_MTP3_MESH_QUICKSTART.md @@ -19,6 +19,13 @@ first. It reuses the shared blank-cluster bootstrap and adds the secondary data interfaces, GID/MTU checks, and driver configuration required below. Return here to pull the published image and deploy the model. +**Preparing hosts that have already run GPU workloads?** Consider a reboot +before installation and the first model start, after stopping active workloads. +It can reduce memory fragmentation even when plenty of RAM appears free. +The [startup memory gate](../runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md#automatic-startup-memory-preparation) +checks available memory and large contiguous free blocks; rebooting does not +replace that check. A reboot interrupts every workload on that host. + The profile uses the `GLM-5.3-Flash-NVFP4-Spark` target's built-in multi-token predictor with three speculative tokens. Graph-native SIRCL handles most captured target verification, fused SIRCL handles large eager prefill, and diff --git a/docs/PREREQUISITES.md b/docs/PREREQUISITES.md index 11e7148a..fefa2cf7 100644 --- a/docs/PREREQUISITES.md +++ b/docs/PREREQUISITES.md @@ -86,6 +86,15 @@ cluster installer. The managed profile adds these requirements: +Before installation and the first model start, consider rebooting hosts that +have run large models or repeated GPU workloads. Stop active workloads first. +A reboot can reduce unified-memory fragmentation and restore large contiguous +free blocks; a high total-free-memory reading alone does not establish loader +readiness. This is a recommendation, not a requirement for every installation. +The [managed startup memory check](../runtime/glm53-spark-mtp3-mesh/MANAGED_MESH.md#automatic-startup-memory-preparation) +still applies after reboot and attempts compaction before requiring further +recovery. Reboots interrupt all workloads on the affected host. + - Four physical cables in the cycle `0-1-2-3-0`, with each rank's port 0/f0 connected to the next rank's port 1/f1; management stays on a separate LAN. - Four configured RDMA functions per host: primary and Socket Direct