From 48646da78e65b75a7a2c08d2bdd1c8ee520775f4 Mon Sep 17 00:00:00 2001 From: tzhouam Date: Thu, 24 Sep 2026 01:42:41 +0800 Subject: [PATCH] Add admitted InternVLA policy stages and update device matrix --- .../probe_omni_internvla_entrypoint.py | 128 ++ .../probe_omni_internvla_policy.py | 215 +++ .../results/e2e_expansion_20260923/README.md | 4 +- .../evidence/internvla_omni_policy/README.md | 41 + .../internvla_omni_policy/cpu_profile20.json | 1237 +++++++++++++++ .../cpu_profile20_actions.npy | Bin 0 -> 6528 bytes .../cpu_profile20_driver.log | 251 +++ .../cpu_profile20_worker.log | 38 + .../internvla_omni_policy/cpu_smoke.json | 236 +++ .../cpu_smoke_driver.log | 200 +++ .../internvla_omni_policy/cpu_worker.log | 18 + .../public_missing_pythonpath_driver.log | 24 + .../internvla_omni_policy/public_radeon.json | 62 + .../public_radeon_driver.log | 92 ++ .../public_radeon_worker.log | 18 + .../internvla_omni_policy/radeon_abort.json | 364 +++++ .../radeon_abort_driver.log | 328 ++++ .../radeon_abort_worker.log | 18 + .../radeon_profile20.json | 1353 +++++++++++++++++ .../radeon_profile20_actions.npy | Bin 0 -> 6528 bytes .../radeon_profile20_driver.log | 367 +++++ .../radeon_profile20_worker.log | 38 + .../internvla_omni_policy/radeon_smoke.json | 356 +++++ .../internvla_omni_policy/radeon_smoke2.json | 351 +++++ .../radeon_smoke2_driver.log | 315 ++++ .../radeon_smoke_driver.log | 320 ++++ .../internvla_omni_policy/radeon_worker.log | 18 + .../internvla_omni_policy/radeon_worker2.log | 18 + .../internvla_omni_policy/refusal_cpu.json | 37 + .../refusal_cpu_driver.log | 72 + .../evidence/summary/README.md | 10 +- docs/design/omni_edge_e2e_roadmap.md | 16 +- tests/edge/local/test_internvla_contract.py | 55 + vllm_omni/config/pipeline_registry.py | 2 + .../models/internvla_a1_whole_pipeline.py | 17 + vllm_omni/engine/backends/__init__.py | 4 + vllm_omni/engine/backends/internvla.py | 359 +++++ vllm_omni/engine/backends/internvla_worker.py | 246 +++ 38 files changed, 7221 insertions(+), 7 deletions(-) create mode 100644 benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py create mode 100644 benchmarks/edge_harness/experiments/probe_omni_internvla_policy.py create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/README.md create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_actions.npy create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_missing_pythonpath_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_actions.npy create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke_driver.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker2.log create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu_driver.log create mode 100644 tests/edge/local/test_internvla_contract.py create mode 100644 vllm_omni/diffusion/models/internvla_a1_whole_pipeline.py create mode 100644 vllm_omni/engine/backends/internvla.py create mode 100644 vllm_omni/engine/backends/internvla_worker.py diff --git a/benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py b/benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py new file mode 100644 index 000000000..9b9f99814 --- /dev/null +++ b/benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Check a bounded InternVLA action request through public AsyncOmni.""" + +from __future__ import annotations + +import argparse +import asyncio +import hashlib +import json +import tempfile +import time +from pathlib import Path + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as source: + for block in iter(lambda: source.read(8 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +async def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + for name in ("model-dir", "cosmos-dir", "processor-dir", "python-bin", "log-file", "output-report"): + parser.add_argument(f"--{name}", type=Path, required=True) + parser.add_argument("--graph-file", type=Path) + parser.add_argument("--placement", choices=("cpu", "radeon-cosmos"), required=True) + args = parser.parse_args() + if args.placement == "radeon-cosmos" and args.graph_file is None: + parser.error("Radeon placement requires graph-file") + + import numpy as np + import torch + import yaml + + from vllm_omni.diffusion.models.internvla_a1_whole_pipeline import INTERNVLA_A1_WHOLE_POLICY_PIPELINE + from vllm_omni.entrypoints.async_omni import AsyncOmni + + model = args.model_dir.resolve(strict=True) + cosmos = args.cosmos_dir.resolve(strict=True) + processor = args.processor_dir.resolve(strict=True) + python = args.python_bin.absolute() + graph = args.graph_file.resolve(strict=True) if args.graph_file else None + files = { + "python": python, "model": model / "model.safetensors", + "model_config": model / "config.json", "train_config": model / "train_config.json", + "stats": model / "stats.json", "cosmos_encoder": cosmos / "encoder.safetensors", + "cosmos_decoder": cosmos / "decoder.safetensors", + "processor_tokenizer": processor / "tokenizer.json", + "processor_config": processor / "preprocessor_config.json", + } + if graph is not None: + files["graph"] = graph + backend = { + "name": "external.internvla.policy.v1", "placement": args.placement, + "python_bin": str(python), "expected_torch": str(torch.__version__), + "model_dir": str(model), "cosmos_dir": str(cosmos), "processor_dir": str(processor), + "graph_file": str(graph) if graph else None, + "artifact_sha256": {name: sha256(path) for name, path in files.items()}, + "log_file": str(args.log_file), "memory_overhead_bytes": 8 << 30, + "max_input_bytes": 8 << 20, "max_action_bytes": 1 << 20, + "start_timeout_s": 180, "request_timeout_s": 60, + } + report = {"entrypoint": "AsyncOmni.generate", "placement": args.placement, + "pipeline": INTERNVLA_A1_WHOLE_POLICY_PIPELINE.model_type} + engine = None + try: + with tempfile.TemporaryDirectory(prefix="omni-internvla-") as directory: + deployment = Path(directory) / "deploy.yaml" + deployment.write_text(yaml.safe_dump({ + "pipeline": INTERNVLA_A1_WHOLE_POLICY_PIPELINE.model_type, + "async_chunk": False, + "stages": [{"stage_id": 0, "backend": backend, + "resource_budget": {"capacities": {"host_ram": 30 << 30}, + "demands": {"host_ram": 16 << 30}}}], + }), encoding="utf-8") + started = time.perf_counter() + engine = AsyncOmni( + model=str(model), deploy_config=str(deployment), + stage_init_timeout=180, init_timeout=240, + ) + report["startup_s"] = time.perf_counter() - started + images = [np.zeros((1, 2, 3, 224, 224), dtype=np.float32) for _ in range(3)] + images[0][:, :, 0, 56:168, 56:168] = 1 + images[1][:, :, 1, 56:168, 56:168] = .5 + prompt = { + **{f"image{i}": images[i] for i in range(3)}, + **{f"mask{i}": np.ones((1,), dtype=np.bool_) for i in range(3)}, + "state": np.zeros((1, 32), dtype=np.float32), + "noise": np.zeros((1, 50, 32), dtype=np.float32), + "task": "Place the marker pen in its holder.", + "observation_timestamp_ns": time.time_ns(), + } + outputs = [] + started = time.perf_counter() + async for output in engine.generate(prompt, request_id="public-internvla-1"): + if output.error: + raise RuntimeError(output.error) + actions = np.asarray(output.custom_output["actions"]) + outputs.append({ + "request_id": output.request_id, + "action_shape": list(actions.shape), + "action_sha256": hashlib.sha256(actions.tobytes()).hexdigest(), + "finite": bool(np.isfinite(actions).all()), + "metadata": output.custom_output.get("action_metadata"), + "stage_event": output.custom_output.get("stage_event"), + }) + report["request_wall_s"] = time.perf_counter() - started + report["outputs"] = outputs + assert len(outputs) == 1 and outputs[0]["request_id"] == "public-internvla-1" + assert outputs[0]["action_shape"] == [1, 50, 32] and outputs[0]["finite"] + assert outputs[0]["metadata"]["control_ready"] is False + report["status"] = "passed" + except BaseException as exc: + report["status"] = "failed" + report["error"] = f"{type(exc).__name__}: {exc}" + raise + finally: + if engine is not None: + engine.shutdown() + args.output_report.parent.mkdir(parents=True, exist_ok=True) + args.output_report.write_text(json.dumps(report, indent=2, default=str) + "\n", encoding="utf-8") + print(json.dumps(report, indent=2, default=str)) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/benchmarks/edge_harness/experiments/probe_omni_internvla_policy.py b/benchmarks/edge_harness/experiments/probe_omni_internvla_policy.py new file mode 100644 index 000000000..c8b47aecd --- /dev/null +++ b/benchmarks/edge_harness/experiments/probe_omni_internvla_policy.py @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +"""Profile an admitted InternVLA action stage under Omni StageRuntime.""" + +from __future__ import annotations + +import argparse +import asyncio +import hashlib +import json +import math +import time +from pathlib import Path +from types import SimpleNamespace + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as source: + for block in iter(lambda: source.read(8 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def rank(values: list[float], fraction: float) -> float: + return sorted(values)[math.ceil(len(values) * fraction) - 1] + + +async def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + for name in ("model-dir", "cosmos-dir", "processor-dir", "python-bin", "log-file", "output-report"): + parser.add_argument(f"--{name}", type=Path, required=True) + parser.add_argument("--graph-file", type=Path) + parser.add_argument("--placement", choices=("cpu", "radeon-cosmos"), required=True) + parser.add_argument("--output-actions", type=Path) + parser.add_argument("--reference-actions", type=Path) + parser.add_argument("--capacity-gib", type=int, default=30) + parser.add_argument("--reserve-gib", type=int, default=16) + parser.add_argument("--warmups", type=int, default=1) + parser.add_argument("--repeats", type=int, default=20) + parser.add_argument("--admission-refusal", action="store_true") + parser.add_argument("--abort-check", action="store_true") + args = parser.parse_args() + if args.warmups < 0 or args.repeats < 1 or args.reserve_gib < 1 or args.capacity_gib < args.reserve_gib: + parser.error("invalid profile counts or explicit memory budget") + if args.placement == "radeon-cosmos" and args.graph_file is None: + parser.error("Radeon placement requires --graph-file") + + import numpy as np + + from vllm_omni.config.stage_config import DeployConfig, StageDeployConfig, merge_pipeline_deploy + from vllm_omni.diffusion.models.internvla_a1_whole_pipeline import INTERNVLA_A1_WHOLE_POLICY_PIPELINE + from vllm_omni.engine.stage_runtime import StageRuntime + + model = args.model_dir.resolve(strict=True) + cosmos = args.cosmos_dir.resolve(strict=True) + processor = args.processor_dir.resolve(strict=True) + python = args.python_bin.absolute() + graph = args.graph_file.resolve(strict=True) if args.graph_file else None + files = { + "python": python, "model": model / "model.safetensors", + "model_config": model / "config.json", "train_config": model / "train_config.json", + "stats": model / "stats.json", "cosmos_encoder": cosmos / "encoder.safetensors", + "cosmos_decoder": cosmos / "decoder.safetensors", + "processor_tokenizer": processor / "tokenizer.json", + "processor_config": processor / "preprocessor_config.json", + } + if graph is not None: + files["graph"] = graph + hashes = {name: sha256(path) for name, path in files.items()} + import torch + + backend = { + "name": "external.internvla.policy.v1", "placement": args.placement, + "python_bin": str(python), "expected_torch": str(torch.__version__), + "model_dir": str(model), "cosmos_dir": str(cosmos), "processor_dir": str(processor), + "graph_file": str(graph) if graph else None, "artifact_sha256": hashes, + "log_file": str(args.log_file), "memory_overhead_bytes": 8 << 30, + "max_input_bytes": 8 << 20, "max_action_bytes": 1 << 20, + "start_timeout_s": 180, "request_timeout_s": 60, + } + budget = {"capacities": {"host_ram": args.capacity_gib << 30}, + "demands": {"host_ram": args.reserve_gib << 30}} + deploy = DeployConfig(async_chunk=False, stages=[StageDeployConfig( + stage_id=0, backend=backend, resource_budget=budget, + )]) + configs = [item.to_omegaconf() for item in merge_pipeline_deploy( + INTERNVLA_A1_WHOLE_POLICY_PIPELINE, deploy, + )] + runtime = StageRuntime(configs, "local-internvla-policy", "", stage_init_timeout=180, async_chunk=False) + report = { + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": args.placement, "artifact_sha256": hashes, "budget": budget, + "warmups": args.warmups, "repeats": args.repeats, + } + try: + started = time.perf_counter() + if args.admission_refusal: + try: + runtime.initialize() + except Exception as exc: + if "exceed reservation" not in str(exc): + raise + report["admission_refusal"] = f"{type(exc).__name__}: {exc}" + report["status"] = "passed" + return + raise AssertionError("InternVLA admitted the insufficient memory reservation") + runtime.initialize() + report["startup_s"] = time.perf_counter() - started + pool = runtime.stage_pools[0] + report["execution_plan_start"] = dict(pool.stage_client.execution_plan) + state = SimpleNamespace(sampling_params_list=[None]) + images = [np.zeros((1, 2, 3, 224, 224), dtype=np.float32) for _ in range(3)] + images[0][:, :, 0, 56:168, 56:168] = 1.0 + images[1][:, :, 1, 56:168, 56:168] = .5 + prompt = { + **{f"image{i}": images[i] for i in range(3)}, + **{f"mask{i}": np.ones((1,), dtype=np.bool_) for i in range(3)}, + "state": np.zeros((1, 32), dtype=np.float32), + "noise": np.zeros((1, 50, 32), dtype=np.float32), + "task": "Place the marker pen in its holder.", + } + + async def request_one(request_id: str): + prompt["observation_timestamp_ns"] = time.time_ns() + started = time.perf_counter() + await pool.submit_initial(request_id, state, prompt) + deadline = time.monotonic() + 75 + while True: + output = pool.poll_graph_output(0) + if output is not None: + break + if time.monotonic() >= deadline: + raise TimeoutError("InternVLA Omni action request timed out") + await asyncio.sleep(.005) + try: + if output.error: + raise RuntimeError(output.error) + values = np.asarray(output.custom_output["actions"]) + event = output.custom_output["stage_event"] + metadata = output.custom_output["action_metadata"] + if values.dtype != np.float32 or values.shape != (1, 50, 32) or not np.isfinite(values).all(): + raise RuntimeError("InternVLA returned invalid actions") + if not event["terminal"] or event["kind"] != "action" or metadata["control_ready"]: + raise RuntimeError("InternVLA action event or metadata differs from contract") + return {"wall_s": time.perf_counter() - started, + "action_sha256": hashlib.sha256(values.tobytes()).hexdigest(), + "stage_event": event, "action_metadata": metadata, + "metrics": output.metrics, "actions": values.copy()} + finally: + output.release_stage_buffers() + await asyncio.sleep(0) + + report["warmup_results"] = [] + for index in range(args.warmups): + row = await request_one(f"internvla-warmup-{index}") + row.pop("actions") + report["warmup_results"].append(row) + measured = [] + report["measured"] = measured + first_actions = None + for index in range(args.repeats): + row = await request_one(f"internvla-measured-{index}") + values = row.pop("actions") + if first_actions is None: + first_actions = values + measured.append(row) + assert first_actions is not None + report["nearest_rank_p50_wall_s"] = rank([r["wall_s"] for r in measured], .5) + report["nearest_rank_p95_wall_s"] = rank([r["wall_s"] for r in measured], .95) + report["unique_action_hashes"] = sorted({r["action_sha256"] for r in measured}) + if args.output_actions: + args.output_actions.parent.mkdir(parents=True, exist_ok=True) + np.save(args.output_actions, first_actions) + report["output_actions"] = str(args.output_actions) + if args.reference_actions: + reference = np.load(args.reference_actions, allow_pickle=False) + if reference.shape != first_actions.shape: + raise RuntimeError("reference action shape differs") + difference = first_actions - reference + report["reference_comparison"] = { + "max_abs": float(np.max(np.abs(difference))), + "relative_l2": float(np.linalg.norm(difference) / np.linalg.norm(reference)), + "cosine": float(np.dot(first_actions.ravel(), reference.ravel()) / ( + np.linalg.norm(first_actions) * np.linalg.norm(reference) + )), + } + report["execution_plan_end"] = dict(pool.stage_client.execution_plan) + if args.abort_check: + prompt["observation_timestamp_ns"] = time.time_ns() + await pool.submit_initial("internvla-abort", state, prompt) + await asyncio.sleep(.05) + await pool.abort_requests(["internvla-abort"]) + await asyncio.sleep(.1) + report["abort_check"] = { + "stale_output": pool.poll_graph_output(0) is not None, + "ledger": runtime.resource_ledger.snapshot(), + } + if report["abort_check"]["stale_output"]: + raise RuntimeError("InternVLA cancellation leaked a stale action") + report["status"] = "passed" + except BaseException as exc: + report["status"] = "failed" + report["error"] = f"{type(exc).__name__}: {exc}" + raise + finally: + runtime.shutdown() + if runtime.resource_ledger is not None: + report["ledger_after_shutdown"] = runtime.resource_ledger.snapshot() + args.output_report.parent.mkdir(parents=True, exist_ok=True) + args.output_report.write_text(json.dumps(report, indent=2, default=str) + "\n", encoding="utf-8") + print(json.dumps({key: value for key, value in report.items() if key != "measured"}, indent=2, default=str)) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md index 1bdbb8463..89d534f51 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md @@ -1,6 +1,8 @@ # 2026-09-23 WSL CPU and native Windows expansion -This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evidence/summary/README.md) with previously unrun WSL CPU and native Windows paths. The September 22 timing tables remain historical. MiniCPM-o now has separate 20-request serial text-to-speech timing runs on WSL CPU and native Windows GPU, plus one synthetic image and one synthetic audio input on each platform. A separate pinned GGUF route ran combined image+audio to text+speech requests on WSL CPU, native Windows CPU and native Windows Radeon 890M+CPU. The two Windows routes answered one spoken red-square question correctly with matching language token IDs; those C++ routes now also pass a bounded complete request through [Omni whole-session stages](evidence/minicpmo_omni_cpp/README.md), with broader input-grounded quality unqualified. Each InternVLA timing remains one observation. Spark has a 20-request Omni output-head component profile on the HX370 AMD NPU and separate 20-request **complete text** profiles through standalone llama.cpp on native Windows CPU and Radeon 890M. The latter now also run as bounded whole-session Omni stages, with public AsyncOmni requests checked separately. Qwen3-TTS has separate 20-request standalone and bounded Omni whole-session text-to-WAV profiles on native Windows CPU; the CPU+Radeon 890M hybrid route likewise has standalone and Omni profiles. None is a sustained or full-modality profile. The [checkpoint manifests](../e2e_recovery_20260923/README.md) pin the earlier real weights; the [Spark NPU component record](evidence/spark_amd_npu_output_head/README.md), [standalone CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/README.md), [Omni CPU/Radeon whole-session record](evidence/spark_omni_llamacpp/README.md), [standalone CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md), [Omni CPU Qwen TTS record](evidence/qwen_tts_omni_cpu/README.md), [standalone joint CPU+Radeon TTS record](evidence/qwen_tts_radeon890m_joint/README.md), and [Omni joint TTS record](evidence/qwen_tts_omni_hybrid/README.md) pin their respective artifacts. No model, precision or context was silently substituted. +This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evidence/summary/README.md) with previously unrun WSL CPU and native Windows paths. The September 22 timing tables remain historical. MiniCPM-o now has separate 20-request serial text-to-speech timing runs on WSL CPU and native Windows GPU, plus one synthetic image and one synthetic audio input on each platform. A separate pinned GGUF route ran combined image+audio to text+speech requests on WSL CPU, native Windows CPU and native Windows Radeon 890M+CPU. The two Windows routes answered one spoken red-square question correctly with matching language token IDs; those C++ routes now also pass a bounded complete request through [Omni whole-session stages](evidence/minicpmo_omni_cpp/README.md), with broader input-grounded quality unqualified. The earlier direct InternVLA timings were single observations. Spark has a 20-request Omni output-head component profile on the HX370 AMD NPU and separate 20-request **complete text** profiles through standalone llama.cpp on native Windows CPU and Radeon 890M. The latter now also run as bounded whole-session Omni stages, with public AsyncOmni requests checked separately. Qwen3-TTS has separate 20-request standalone and bounded Omni whole-session text-to-WAV profiles on native Windows CPU; the CPU+Radeon 890M hybrid route likewise has standalone and Omni profiles. None is a sustained or full-modality profile. The [checkpoint manifests](../e2e_recovery_20260923/README.md) pin the earlier real weights; the [Spark NPU component record](evidence/spark_amd_npu_output_head/README.md), [standalone CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/README.md), [Omni CPU/Radeon whole-session record](evidence/spark_omni_llamacpp/README.md), [standalone CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md), [Omni CPU Qwen TTS record](evidence/qwen_tts_omni_cpu/README.md), [standalone joint CPU+Radeon TTS record](evidence/qwen_tts_radeon890m_joint/README.md), and [Omni joint TTS record](evidence/qwen_tts_omni_hybrid/README.md) pin their respective artifacts. No model, precision or context was silently substituted. + +InternVLA also has a separate [admitted Omni whole-policy synthetic profile](evidence/internvla_omni_policy/README.md) on WSL CPU and WSL CPU+Radeon 890M: one warmup plus 20 serial complete requests per placement, explicit 16 GiB shared-RAM reservation, pre-launch refusal, hybrid in-flight abort, and a public `AsyncOmni.generate` action output. The two complete-request profiles are 3.175/3.219 s CPU and 3.120/3.197 s hybrid p50/p95; they use a patterned fixture distinct from the older direct hybrid run. Action relative L2 difference is 2.305% without a task tolerance. This advances integration depth only; robot-task E2E remains unqualified. | Device / model | Verified depth | Observed output and time | Remaining gate | |---|---|---|---| diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/README.md new file mode 100644 index 000000000..b3faa30ac --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/README.md @@ -0,0 +1,41 @@ +# InternVLA-A1 admitted Omni complete-policy stage: WSL CPU and CPU+Radeon 890M + +**Depth P for the specified synthetic action-policy request only; not robot-task E2E.** The real Place_Markpen checkpoint is strict-loaded by the existing Omni `InternVLAA1Pipeline`. An explicit single graph stage wraps the complete policy. Omni `StageRuntime`/`StagePool` own shared-RAM admission, one outstanding request, terminal action output, acknowledgement, cancellation and worker lifetime. The policy remains on WSL CPU. The optional hybrid route sends only the six-frame Cosmos encoder call through Omni's existing external DirectML worker on Radeon 890M, then returns its latent to the CPU policy. It requires a pinned FP32 graph because the tested DirectML BF16 route aborted; CPU-only Cosmos remains BF16. There is no silent placement or precision fallback. + +The host was Ryzen AI 9 HX 370, Windows 11 build 26200, AMD Radeon 890M driver 32.0.22018.6001, and WSL with 30.91 GiB RAM limit. The policy worker used PyTorch 2.13.0+cpu and installed vLLM 0.28.0 with current Omni 0.29 source (version mismatch warning). The external WSL GPU-PV worker used PyTorch 2.4.1+cu121 with torch-directml. The model revision was `0a557c6a503e6545b369bff2f34c76a410bbd190`; model, Cosmos, processor, interpreter and graph SHA256 values are in both profile JSON files. The external worker selected `AMD Radeon(TM) 890M Graphics`, and its graph output was observed on DirectML before readback. The report's `fraction_on_target=1.0` describes the one output tensor, **not internal operator placement**. No device utilization trace was captured. + +The fixed input has three camera histories, each normalized float32 `[1,2,3,224,224]` with simple colored squares, three valid masks, zero `[1,32]` state, a fixed text task, and zero `[1,50,32]` diffusion noise. The stage rejects other shapes/dtypes, nonfinite inputs and an insufficient reservation before dispatch. Both routes returned finite float32 `[1,50,32]` actions, terminal `action` events with sequence and epoch, and observation/generation timestamps. The checkpoint says `action_mode=delta`; physical units, joint order and per-action step time are unverified and reported as such (`control_ready=false`). The generated timestamp is a software completion time, not a robot actuation deadline. + +| Route | Warmup | Measured serial requests | Complete-request wall p50/p95, nearest rank | Startup | Loaded process-tree RSS | +|---|---:|---:|---:|---:|---:| +| Omni CPU | 1 | 20/20, same action hash | 3.175/3.219 s | 40.03 s | 9.28 GB | +| Omni CPU + Radeon Cosmos | 1 | 20/20, same action hash | 3.120/3.197 s | 43.36 s | 9.94 GB | + +The warm median difference is 55.7 ms in favor of the hybrid and its p95 difference is 22.3 ms. These are separate serial runs on one pinned synthetic fixture, not a paired randomized comparison or a sustained speedup claim. The hybrid took 3.33 s longer to start. Relative to this CPU output, the hybrid action chunk differs by max absolute `0.07546`, relative L2 `2.305%`, cosine `0.999737`. No task-quality tolerance exists. This comparison is **not** the earlier zero-observation direct hybrid experiment, which had different input/runtime and different timings. Neither run measured power, thermal behavior, loading peak, shared GPU allocation or concurrency. The loaded process-tree RSS sample is not a peak-memory bound. + +The declared WSL host-RAM capacity was 30 GiB and each successful stage reserved 16 GiB for weights, policy/KV-like state, activation/workspace, transfers and headroom. [An 8 GiB CPU reservation](refusal_cpu.json) was refused before model-worker launch; the ledger ended at zero. The [CPU profile](cpu_profile20.json) and [hybrid profile](radeon_profile20.json) each ended with zero reserved/quarantined bytes. A [public `AsyncOmni.generate` hybrid request](public_radeon.json) returned one terminal action output. The [in-flight hybrid abort](radeon_abort.json) produced no stale output and released the reservation. The [first hybrid smoke](radeon_smoke.json) produced correct actions but left the ledger quarantined when a DirectML child became a transient zombie at shutdown. The worker-tree retirement fix was verified by [smoke rerun](radeon_smoke2.json), abort and both profiles; the failed record is retained rather than being presented as a pass. Post-cancel restart in one process remains unverified. + +Raw [CPU](cpu_profile20_driver.log), [hybrid](radeon_profile20_driver.log), [abort](radeon_abort_driver.log) and [public entrypoint](public_radeon_driver.log) driver logs and the matching worker logs are retained beside these reports. First measured action arrays are [CPU](cpu_profile20_actions.npy) and [hybrid](radeon_profile20_actions.npy). The graph is 129,872,312 bytes and SHA256 `9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704`; it is stored outside Git at `/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2`. Recreate it with [`export_internvla_cosmos.py`](../../../../experiments/export_internvla_cosmos.py); its export report is in the [earlier Cosmos evidence](../internvla_cosmos_radeon890m/export_batch6.json). + +A public-probe rerun without this checkout on `PYTHONPATH` failed at import before model loading; its [setup failure log](public_missing_pythonpath_driver.log) is retained. With `PYTHONPATH` set explicitly, the [public rerun](public_radeon.json) passed after the final worker-property checks. + +Reproduce from this checkout after supplying the pinned model, processor, Cosmos and graph artifacts. The `cpu` route omits `--graph-file`; change `--placement` to `radeon-cosmos` and add it for the hybrid route. This example records one warmup plus 20 measured requests under the same declared capacity and demand: + +```bash +ROOT=/home/zhout/project/edge_infer +EVIDENCE=benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy +PYTHONPATH="$PWD" "$ROOT/.venvs/omni-cpu/bin/python" benchmarks/edge_harness/experiments/probe_omni_internvla_policy.py \ + --model-dir "$ROOT/models/InternVLA-A1-3B-FT-Place_Markpen" \ + --processor-dir "$ROOT/models/Qwen3-VL-2B-Instruct-processor" \ + --cosmos-dir "$ROOT/models/Cosmos-Tokenizer-CI8x8" \ + --python-bin "$ROOT/.venvs/omni-cpu/bin/python" \ + --placement radeon-cosmos \ + --graph-file "$ROOT/models/InternVLA-cosmos-encoder-batch6.pt2" \ + --capacity-gib 30 --reserve-gib 16 --warmups 1 --repeats 20 \ + --log-file "$EVIDENCE/radeon_profile20_worker.log" \ + --output-report "$EVIDENCE/radeon_profile20.json" \ + --output-actions "$EVIDENCE/radeon_profile20_actions.npy" \ + --reference-actions "$EVIDENCE/cpu_profile20_actions.npy" +``` + +Next gate: real Place_Markpen observation/reference-action pairs and task tolerance, verified physical action units/order/step time and deadlines, then loading peak, concurrent admission, post-cancel restart and sustained tail/power/thermal measurements. The CPU route remains the default until the hybrid route wins that complete gate. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20.json new file mode 100644 index 000000000..37e8385ba --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20.json @@ -0,0 +1,1237 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 1, + "repeats": 20, + "startup_s": 40.02530105697224, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "worker_pid": 3706832, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.482371404010337, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9276219392, + "loaded_process_tree": [ + { + "pid": 3706832, + "rss_bytes": 9276219392, + "private_bytes": 9276219392 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [ + { + "wall_s": 3.1642397710238583, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-warmup-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184528925695457, + "generation_timestamp_ns": 1790184532087801323, + "observation_age_s": 3.162105866, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1623357349890284, + "worker_wall_s": 3.155596544034779 + } + } + ], + "measured": [ + { + "wall_s": 3.2014125639689155, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 2, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184532089986365, + "generation_timestamp_ns": 1790184535288813019, + "observation_age_s": 3.198826654, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.200052751984913, + "worker_wall_s": 3.1928667569882236 + } + }, + { + "wall_s": 3.181015981012024, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-1", + "stage_id": 0, + "epoch": 3, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184535291458312, + "generation_timestamp_ns": 1790184538468361446, + "observation_age_s": 3.176903134, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1772866920218803, + "worker_wall_s": 3.171445701038465 + } + }, + { + "wall_s": 3.162771766015794, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-2", + "stage_id": 0, + "epoch": 4, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184538472566769, + "generation_timestamp_ns": 1790184541633530795, + "observation_age_s": 3.160964026, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1612158410134725, + "worker_wall_s": 3.1551695660455152 + } + }, + { + "wall_s": 3.1713018729933538, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-3", + "stage_id": 0, + "epoch": 5, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184541635395895, + "generation_timestamp_ns": 1790184544801722314, + "observation_age_s": 3.166326419, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.165979632991366, + "worker_wall_s": 3.1598962169955485 + } + }, + { + "wall_s": 3.219286962004844, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-4", + "stage_id": 0, + "epoch": 6, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184544806769964, + "generation_timestamp_ns": 1790184548022961233, + "observation_age_s": 3.216191269, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.2162386709824204, + "worker_wall_s": 3.2102824809844606 + } + }, + { + "wall_s": 3.243423946958501, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-5", + "stage_id": 0, + "epoch": 7, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184548026129053, + "generation_timestamp_ns": 1790184551265620921, + "observation_age_s": 3.239491868, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.239162545010913, + "worker_wall_s": 3.231643998005893 + } + }, + { + "wall_s": 3.1964483599876985, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-6", + "stage_id": 0, + "epoch": 8, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184551269621220, + "generation_timestamp_ns": 1790184554461116693, + "observation_age_s": 3.191495473, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.191144242999144, + "worker_wall_s": 3.185844685009215 + } + }, + { + "wall_s": 3.1388845699839294, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-7", + "stage_id": 0, + "epoch": 9, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184554466158358, + "generation_timestamp_ns": 1790184557598854835, + "observation_age_s": 3.132696477, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.13269694003975, + "worker_wall_s": 3.1270144489826635 + } + }, + { + "wall_s": 3.094706265022978, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-8", + "stage_id": 0, + "epoch": 10, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184557605139703, + "generation_timestamp_ns": 1790184560693878493, + "observation_age_s": 3.08873879, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.088905240991153, + "worker_wall_s": 3.0828000450273976 + } + }, + { + "wall_s": 3.155148897028994, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-9", + "stage_id": 0, + "epoch": 11, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184560699945256, + "generation_timestamp_ns": 1790184563852943877, + "observation_age_s": 3.152998621, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1533340149908327, + "worker_wall_s": 3.147417153988499 + } + }, + { + "wall_s": 3.2017307200003415, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-10", + "stage_id": 0, + "epoch": 12, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184563855146963, + "generation_timestamp_ns": 1790184567053472417, + "observation_age_s": 3.198325454, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1986607059952803, + "worker_wall_s": 3.183166865957901 + } + }, + { + "wall_s": 3.1548411559779197, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-11", + "stage_id": 0, + "epoch": 13, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184567056973394, + "generation_timestamp_ns": 1790184570208926564, + "observation_age_s": 3.15195317, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1516106500057504, + "worker_wall_s": 3.1455616650055163 + } + }, + { + "wall_s": 3.1450225689914078, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-12", + "stage_id": 0, + "epoch": 14, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184570211892648, + "generation_timestamp_ns": 1790184573353772346, + "observation_age_s": 3.141879698, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.141634474042803, + "worker_wall_s": 3.135316147003323 + } + }, + { + "wall_s": 3.179904537042603, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-13", + "stage_id": 0, + "epoch": 15, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184573356977224, + "generation_timestamp_ns": 1790184576534930745, + "observation_age_s": 3.177953521, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.177518696000334, + "worker_wall_s": 3.1712279519997537 + } + }, + { + "wall_s": 3.182836101972498, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-14", + "stage_id": 0, + "epoch": 16, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184576536942807, + "generation_timestamp_ns": 1790184579717598927, + "observation_age_s": 3.18065612, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.180987443018239, + "worker_wall_s": 3.1749550990061834 + } + }, + { + "wall_s": 3.1843059869715944, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-15", + "stage_id": 0, + "epoch": 17, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184579719827161, + "generation_timestamp_ns": 1790184582899566399, + "observation_age_s": 3.179739238, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.180141362012364, + "worker_wall_s": 3.1732923310482875 + } + }, + { + "wall_s": 3.1944327329983935, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-16", + "stage_id": 0, + "epoch": 18, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184582904230353, + "generation_timestamp_ns": 1790184586095339873, + "observation_age_s": 3.19110952, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1909773320076056, + "worker_wall_s": 3.1853213959839195 + } + }, + { + "wall_s": 3.1433967920020223, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-17", + "stage_id": 0, + "epoch": 19, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184586098754239, + "generation_timestamp_ns": 1790184589238352630, + "observation_age_s": 3.139598391, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.139163716987241, + "worker_wall_s": 3.133226072008256 + } + }, + { + "wall_s": 3.1664648780133575, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-18", + "stage_id": 0, + "epoch": 20, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184589242254568, + "generation_timestamp_ns": 1790184592403204715, + "observation_age_s": 3.160950147, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.161186662968248, + "worker_wall_s": 3.155159649963025 + } + }, + { + "wall_s": 3.1754952470073476, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-19", + "stage_id": 0, + "epoch": 21, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184592408806202, + "generation_timestamp_ns": 1790184595579333149, + "observation_age_s": 3.170526947, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1702147100004368, + "worker_wall_s": 3.164761191001162 + } + } + ], + "nearest_rank_p50_wall_s": 3.1754952470073476, + "nearest_rank_p95_wall_s": 3.219286962004844, + "unique_action_hashes": [ + "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_actions.npy", + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "worker_pid": 3706832, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.482371404010337, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9276219392, + "loaded_process_tree": [ + { + "pid": 3706832, + "rss_bytes": 9276219392, + "private_bytes": 9276219392 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_actions.npy b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_actions.npy new file mode 100644 index 0000000000000000000000000000000000000000..9b570ac703144a7e4024a9b13aed791f779e445d GIT binary patch literal 6528 zcmbVO`9GEI*Hz}RSxTajG^fG2uj|HBnn+2dQc6NJ5e+Ko7(0Y0m3ht-p@ehq>%I<> zgiJ|ENj)kL4TjPn_3ix^-u>HNzwFQY?7i07S2k|5u-rL9>ZH_JT?a>x{qDMqjxKgu zsyk0d*U8oWxck1NdtKcf9RCkrv+uBn<6qpvd7qo(-(GL=Je_5W=IIzLnKMu4oX-EJ zlzz!KKbU)5cNXt?2HB_24X<}vSB zqs1yOxyEbEy#ufJUgUKIADc9kj`@o2UF9%$a+L6dN){rqzjY5eYlLdC)7qu z9=f7ywZWW6(P234bO$Upc|gqA#iaJ^d9K%XH8Jx^LEathxLdc9+&U0|X4y(tHn)>F{|Q8s)R2)19M<-g`f4 zJg=567_kK$0?r_x#n+MRp)F{)hc9^kSjTKcAt=~M6BRkeaBXqXU|HV{Y+59|*kVIg z1&xHAZjw-IJKYa2=k?otJ6D9bRxqATlIe8!loAD zI4J_LD{HY-)}<2KXF+!Da>wIC0@)kOS<1ZFgtwNjrv_QtyszP6x*|4@FK_dsR?Tl{ z!ia-nH|b?)wrMUZI(-Fg^NoN68z*MbgL0(vs7|mc-waypPQzsrHDdBLNZhWzos|B1 z#yJO_A|^xi+*tEpxaz}01vhQL!eQ#o5?S<1q zW7x8&Q*`(HIAlZp=#jU(c#EC;X};Sm8l2)siz?pG=J3Vh^@{@0xu)x=t6qTYb2DH% zTf~K(y^Bi6JBT|RXTYB;qhR{LT%zR>%iOxSiWEC2Ku+ITLSiOEUU(m#rO-i|rrkvc z3jXqcHbMY>ULa0V2V}M_B89mXj9$YsGMd{4bw$TX z&QuxjeA|c9gincUmoEx&YsPwSikK_^x{!s6$MBLFY3%B`F|<>EDKspOrEzlpyn}`> z{rUP3b#d~e?ISvULKqu>8pz1IDsGRp3y6OB#q>_!%aP1wm*-HiOxpozViVoZt z`7G3twv&_F5d(ht*P&U{icIJ(WVBx_Ad!;~z@U^1F_r4#^k)CSc76|uV?hC$kWr7N z6n~e5&Du$#+=KA-^qXwNvJyJ%IELKP%Ax;0j^oGJgwjOEYt*&hmsSnDq37HC7~y_3 zZNUlG)L?_bs?I90XxfHssClIc(H^i~ZPhkG^!7PA2WXLu>pq`9^$+PM?uM z3)TJU)=97Fysb*;U8*}O{#Af%Qb(XtYz1cyYk^waex&#QEmvZD6TTH*g~bckk}dte z83UaaB>ay(Ecob6mS^(C7Kte9^}U>fKsM+n4&$yd|x)RH}&CF+&rT?+-!EQbUXx)6J=r7{IS5SCHN3 zcFzB20F;jLgz(eG#J6AudM!1VD1E8q26p-p&)AhP%0`JznD&79-0MZ>J~v@Ynd{8e zJu``{oiCohB8MH3`jR%!x=fH4Pyck^{Bvk32`g);J1 z6XRK5Ig#K1sc@eP3qXmD(5@gaE2Z(jnXj=_U1Z6II&ESVAAt`jB(n!oe^Bx2?2R| zLlAs8427M(hH@%(Al>>9WR~CLT(68HO!q{j^iLi%E6?EMAIv0LY#9vnsj`(dEks2+ z7o~Yhvkj83jA2y(*QR;QQN=myZqUo(wN zIue;@ic`U%KLYitZb15PBOtO+5&yg{hbA+r5LlQAmOTd6kEN#P38qj_XuEO|w#~kb zI)@g*sBc@*K#vye{SXS?FL#4>-vlypNRbssJ|)sSf{>E!2v%4Wz$^iJjMRAB*FU{I{g$e>ayoqboO?*Ps%5M61wq*ZDo>w$_LVecN^1ab6 z^!$`QI+!S;k~Ae_lXacqMa88wUe-2^?Skh2}?lXG zWf7B8xfRCmafb;FW=J&p8n?;&J@Yay5)^{7AgnPRGUq=9!_A7UOyol{F*6eh!em+D zEo;HSyJ4hCEf=pa>tda)=Sw2%n)rp9EmY~Zgm1U9r_UpLDOD2D6`d-^&4-ORTOA6f zg)7nKj8?QXc@A8?p@pSfb_?cNEC*XDPr%NRX!og3?&rzNOumXAL@Ja*>edJ-sCfgr zit=o?LlucBPDXpDNVC1x95*>VfNVIJh3Sv??BM8ylId;@{1m%p8eX2uN6FgJtD61P zX_JU*SE(9%YNrd-AK!*qQ)JQDfuCryZ5ub^y(Z4TJuGktnFs3P9Z(^iicFLhxTPis znDE0u;D!mCErH1 z@O5{asm{a7p=73fm`7Zn8SK%}!3_=dOy?&h z=!(7wX~U7|gI*7#VJt5=;^_-V6*Hm#7YF4^J`El(mig(6PsK9v917{dA)`qxr4uV|O*wT_x zvZpK_z1SejmSzu%lRT3N_RGX`Z@y*6_{^8w9#_L#aE(Gfwc` zH3p*l9z)Z#XE6S}0&BmZm{{v1Ac>43>v=Jr^Y>39Ev6~hclZsP_)=fexn07K5I0cu zWnTQch5#DaJV2*u1ku>bO2!-4RftDy+XEwAFEFQ^YEj7F>@PYv7awm-WJ)jZfO)#* zV42S$y%*z|_zkI?om~X%xI{q^TMS1E+Top(9Gg@lCZ3nJqP@#xSi5PlT*UKKqM(?F zAGfu#!9rb$l3W3wwxo`p7i{6%R$rt?wtS&)e~D=EIwfPAT2OpdKN4KmtE0(f&FI;j z6L8Q;8=Lqg3xw;>fbye!u(}_EOjboO#)s#CZs~L={8$22Mg>sDJ%B0ZBiV(gACR@e zY9v1U*MFZk8m=?QCsqD8aGOCb8{9En;`ud;9~xatFO8hWFIaz>isbw0=xssN?6i`x z_nvb;nn@~-oUJekC zuaPv??K5RIh^TL>qH$qyv%qfiYA|bh!;G^jMDx=z95!Eu7gc-^`+FRM;gxOh{7MMQ z6z=5Ef!AD{bRt9@FM}6w8*Dzk1HD!m_H=k7DO&Rp-7g!$rT#a$V8cw3s+WYj=8IYT zxsxQn){A)O(kf~YmP{J^qiAU4C;Do65Y3yeWSl=%Pq6q=AawbSMCa>@kgjG71TJK7 zQsq5y`RYJ85Sb1wvi`_U`#v|bZzVLGP603de6Vr40*TcCrH{1?fIaf`}9Ru3S6*_p>K)=WvHpiu+=geqV7fj>VD>LXKSb^@YG^(#Eve=z)ESVb`{B;sbtrSsR&K_W zTrMR#9Oix-fJf0u@N@iY`0_)Q-B|jFj9LCKy6xD9O}3rol(IR}zCRhy@kwXzIF6E- z%$DPSeB$Zd^R4)7MJx^d`i{E91ksd-^2S5`Yq@{Iv!T;Ri+kG~iiX=R!eVcItRei$ zIhBRO%LpN`r~oOv9m_rL*~Y1vM}g_7Uhu23hl!bwz|>cn6<)0)D`&Q%WupJElk}=&e+aj zo``}`>Vjxk{e3A8dA1Rf{?mYqYxe>E5RIh5m5P6e2DlXa7I>`k5`Lbe;C8(hW;c&w z-9I!CHKlLJ!mJDH>`CC%f++c|bRBR0kjAFVt4dVnB#;=FBD%|L6Ps&%h3dY0Nkhzn zXhOWa@w>IV80V?Ykn= z^^|pC&yEYG?$s@Hvvv^uhbS16Au;n@rV+l>y%c<(dI71=ih#A%bMcO$kwBhYgQsKf zgTgs)6!rEZXIXhqaPru~B7 zN&D1+TD8C6@)LoOb*P9uKM;=h{-CV*g|cKv83!({x9N&3A9g{j3uS2)-SRnzW+W>b z=YLKS|FQZCYua~lGujxGyT}|4`kG>$gxOGfUmMbPmBYNzk$?Zvo!nlr3>q{jhDna* zFqobIJF=~SM=GpUd@DKV_zAt<_8Px6y#pJsbD$?h~#mW)1gi8<4Dn?9)x zVf8O=qhTJUG$SO4*7qqHhgi;HOq2$pOS4#fyg!>sRt^CB$E$F-{jfOP%mPxh9)pra zGqQAF!bz=1s9gFk++TAPnrIW$t+R#fk@D=dd5?(s;XV|6=_Pi~y$Or|$skEKewfRs zWp^|vOMZ2SqM?&_=~?Y~)<|h3wHK7ol)NAsWTs+V`Fy(}qb5V@kS=IwYM`Ja-f*pL z6}CH7E2tWlhOyQJPQLzy@-;?s6=#p5VX+ip$1DQj(j0J$oB-=jE3(m^^(5Tk3);1@ z8DG2G30q5IN!~*dZah}OUi&-$j$kZKDlepCLsT#NVrf~|@ zQe^HcY51^B7VR5j3#s>Pu;oPsX0&q~_vJ`D*v=e6y=xY8R?6AvgrYiG`DG?t?#hSi zfc3C*i8LFVTtdA6n}9vWwd1+pzC%;M1ybG_h}BnCuyy{*l9ldWSlCuXcep)d9mD6- zhVCrd=N(KRq^lX{^hJm}-pdlncQsh^c@|?gZ~^EvQ*3x6h-p}HlN-0G3}jQgk&adf zCmeYT?GULFS2zKYTL-xI-+DPsZjensDFr*WmOdoN#%5cu5}5=8sjD zT)p$xi#1DVCEw0YYS*LYk{h({L@?c?Im*~!Wjdq(V-P~?Pr!!mqs(D{0hp9pW6!N) zQSGFuu+%yO>~1xnB$XV&dSL<*1!)uejVEDp&3h<$TrjZWYnfOxTb8K&+ zOmaelNcR4d*wem@ool2dnQT^%>o1qkGt)k>+B(ze8lM#EVIEAI->DgYmE2?Yu@50c znSn)dT7vLpv0TW$RX9_73Cfhq=iWEuLhoZS(rI+#4voErqHiuC2^Rn+&v^|Y{^l^O ztHEwd3nsh!%yDp3Gj>Q&A#0K&Nr1IKp4U~yo^Dc<6l=c46SGQaF23Xf)hjG?I)L|OT{B8?@(}Bu3ZG{wKCI+Gy Sjs4_zqXbm!Gzrlg2mb>{W97R5 literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_driver.log new file mode 100644 index 000000000..c5a48613c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_driver.log @@ -0,0 +1,251 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:28:03.102000 3706806 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:28:03.127000 3706806 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:28:04 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:28:04 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:28:04 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:28:05 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:28:05 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:28:05 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:28:05 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:28:08 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:28:08 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 1, + "repeats": 20, + "startup_s": 40.02530105697224, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "worker_pid": 3706832, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.482371404010337, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9276219392, + "loaded_process_tree": [ + { + "pid": 3706832, + "rss_bytes": 9276219392, + "private_bytes": 9276219392 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [ + { + "wall_s": 3.1642397710238583, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-warmup-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "b73a827d55584c0588b88423400ec1fe", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184528925695457, + "generation_timestamp_ns": 1790184532087801323, + "observation_age_s": 3.162105866, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1623357349890284, + "worker_wall_s": 3.155596544034779 + } + } + ], + "nearest_rank_p50_wall_s": 3.1754952470073476, + "nearest_rank_p95_wall_s": 3.219286962004844, + "unique_action_hashes": [ + "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_actions.npy", + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "b73a827d55584c0588b88423400ec1fe", + "worker_pid": 3706832, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.482371404010337, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9276219392, + "loaded_process_tree": [ + { + "pid": 3706832, + "rss_bytes": 9276219392, + "private_bytes": 9276219392 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_worker.log new file mode 100644 index 000000000..b9bcea740 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_profile20_worker.log @@ -0,0 +1,38 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:28:16.559000 3706832 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:28:16.584000 3706832 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:28:17 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:28:17 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:28:18 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:28:18 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:28:18 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:28:18 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:28:19 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=60809 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "cpu", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "bfloat16", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.482371404010337, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": null} +127.0.0.1 - - [24/Sep/2026 01:28:48] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:28:48] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:28:52] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:28:55] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:28:58] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:01] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:04] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:08] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:11] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:14] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:17] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:20] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:23] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:27] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:30] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:33] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:36] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:39] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:42] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:46] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:49] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:52] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:29:55] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke.json new file mode 100644 index 000000000..5f167de92 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke.json @@ -0,0 +1,236 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 39.82847757998388, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "c522f1342658452783cb27c3f11fc502", + "worker_pid": 3706371, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.401872061018366, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9282842624, + "loaded_process_tree": [ + { + "pid": 3706371, + "rss_bytes": 9282842624, + "private_bytes": 9282842624 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "measured": [ + { + "wall_s": 3.316972403030377, + "action_sha256": "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "c522f1342658452783cb27c3f11fc502", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "c522f1342658452783cb27c3f11fc502", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184148581066182, + "generation_timestamp_ns": 1790184151891141015, + "observation_age_s": 3.310074833, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.311594197002705, + "worker_wall_s": 3.302754682023078 + } + } + ], + "nearest_rank_p50_wall_s": 3.316972403030377, + "nearest_rank_p95_wall_s": 3.316972403030377, + "unique_action_hashes": [ + "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_actions.npy", + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "c522f1342658452783cb27c3f11fc502", + "worker_pid": 3706371, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.401872061018366, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9282842624, + "loaded_process_tree": [ + { + "pid": 3706371, + "rss_bytes": 9282842624, + "private_bytes": 9282842624 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke_driver.log new file mode 100644 index 000000000..0e46cd296 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_smoke_driver.log @@ -0,0 +1,200 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:21:43.008000 3706345 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:21:43.032000 3706345 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:21:44 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:21:44 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:21:44 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:21:45 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:21:45 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:21:45 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:21:45 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:21:48 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:21:48 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 39.82847757998388, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "c522f1342658452783cb27c3f11fc502", + "worker_pid": 3706371, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.401872061018366, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9282842624, + "loaded_process_tree": [ + { + "pid": 3706371, + "rss_bytes": 9282842624, + "private_bytes": 9282842624 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "nearest_rank_p50_wall_s": 3.316972403030377, + "nearest_rank_p95_wall_s": 3.316972403030377, + "unique_action_hashes": [ + "007f3087423df63b578193ec3f95e353613219914f145b85ca54c403e9088a25" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_actions.npy", + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "c522f1342658452783cb27c3f11fc502", + "worker_pid": 3706371, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "placement": "cpu", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "cpu", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "bfloat16", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.401872061018366, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": null + }, + "loaded_rss_bytes": 9282842624, + "loaded_process_tree": [ + { + "pid": 3706371, + "rss_bytes": 9282842624, + "private_bytes": 9282842624 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_worker.log new file mode 100644 index 000000000..ea7a36f4a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/cpu_worker.log @@ -0,0 +1,18 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:21:56.391000 3706371 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:21:56.414000 3706371 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:21:57 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:21:57 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:21:58 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:21:58 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:21:58 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:21:58 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:21:59 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=57925 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "cpu", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "bfloat16", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.401872061018366, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": null} +127.0.0.1 - - [24/Sep/2026 01:22:28] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:22:28] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:22:31] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_missing_pythonpath_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_missing_pythonpath_driver.log new file mode 100644 index 000000000..7f64b3c93 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_missing_pythonpath_driver.log @@ -0,0 +1,24 @@ +W0924 01:41:36.991000 3707835 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:41:37.014000 3707835 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:41:38 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:41:38 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:41:38 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:41:39 [patch.py:252] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:41:39 [patch.py:503] inductor factorable-divisibility patch: installed. +INFO 09-24 01:41:39 [patch.py:633] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:41:39 [patch.py:743] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +Traceback (most recent call last): + File "/home/zhout/project/edge_infer/vllm-omni-edge/benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py", line 128, in + asyncio.run(main()) + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 195, in run + return runner.run(main) + ^^^^^^^^^^^^^^^^ + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 118, in run + return self._loop.run_until_complete(task) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete + return future.result() + ^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/benchmarks/edge_harness/experiments/probe_omni_internvla_entrypoint.py", line 37, in main + from vllm_omni.diffusion.models.internvla_a1_whole_pipeline import INTERNVLA_A1_WHOLE_POLICY_PIPELINE +ModuleNotFoundError: No module named 'vllm_omni.diffusion.models.internvla_a1_whole_pipeline' diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon.json new file mode 100644 index 000000000..856d3e5ed --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon.json @@ -0,0 +1,62 @@ +{ + "entrypoint": "AsyncOmni.generate", + "placement": "radeon-cosmos", + "pipeline": "internvla_a1_external_whole", + "startup_s": 44.733305923989974, + "request_wall_s": 3.6735486449906603, + "outputs": [ + { + "request_id": "public-internvla-1", + "action_shape": [ + 1, + 50, + 32 + ], + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "finite": true, + "metadata": { + "observation_timestamp_ns": 1790185259451807823, + "generation_timestamp_ns": 1790185263120673060, + "observation_age_s": 3.668865237, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "stage_event": { + "request_id": "public-internvla-1-a030bccd", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "c7d891edb1274d1882d326b822f00128", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "c7d891edb1274d1882d326b822f00128", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + } + } + ], + "status": "passed" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_driver.log new file mode 100644 index 000000000..729fc185b --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_driver.log @@ -0,0 +1,92 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:40:08.764000 3707616 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:40:08.787000 3707616 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:40:09 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:40:09 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:40:09 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:40:10 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:40:11 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:40:11 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:40:11 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:40:14 [omni_base.py:216] [AsyncOmni] Initializing with model /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +INFO 09-24 01:40:14 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +ERROR 09-24 01:40:14 [repo_utils.py:106] Error parsing config for /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen: Unrecognized model in /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen. Should have a `model_type` key in its config.json., retrying 1 of 2 +ERROR 09-24 01:40:16 [repo_utils.py:104] Error parsing config for /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen: Unrecognized model in /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen. Should have a `model_type` key in its config.json. +INFO 09-24 01:40:16 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 1 stages +INFO 09-24 01:40:16 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-24 01:40:16 [initialization.py:356] Loaded OmniTransferConfig with 0 connector configurations +INFO 09-24 01:40:59 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-24 01:40:59 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 1 stages +INFO 09-24 01:40:59 [omni_base.py:235] [AsyncOmni] AsyncOmniEngine initialized in 44.73 seconds +INFO 09-24 01:40:59 [omni_base.py:255] [AsyncOmni] Initialized with 1 stages for model /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +INFO 09-24 01:41:03 [omni_base.py:781] [AsyncOmni] Shutting down +INFO 09-24 01:41:03 [async_omni_engine.py:1807] [AsyncOmniEngine] Shutting down Orchestrator +INFO 09-24 01:41:03 [orchestrator.py:705] [Orchestrator] Received shutdown signal +INFO 09-24 01:41:03 [orchestrator.py:3092] [Orchestrator] Shutting down all 1 client(s) +INFO 09-24 01:41:03 [stage_pool.py:1354] [StagePool] Stage 0 replica 0 shut down +{ + "entrypoint": "AsyncOmni.generate", + "placement": "radeon-cosmos", + "pipeline": "internvla_a1_external_whole", + "startup_s": 44.733305923989974, + "request_wall_s": 3.6735486449906603, + "outputs": [ + { + "request_id": "public-internvla-1", + "action_shape": [ + 1, + 50, + 32 + ], + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "finite": true, + "metadata": { + "observation_timestamp_ns": 1790185259451807823, + "generation_timestamp_ns": 1790185263120673060, + "observation_age_s": 3.668865237, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "stage_event": { + "request_id": "public-internvla-1-a030bccd", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "c7d891edb1274d1882d326b822f00128", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "c7d891edb1274d1882d326b822f00128", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + } + } + ], + "status": "passed" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_worker.log new file mode 100644 index 000000000..70a7ae76b --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/public_radeon_worker.log @@ -0,0 +1,18 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:40:24.314000 3707692 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:40:24.336000 3707692 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:40:25 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:40:25 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:40:26 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:40:26 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:40:26 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:40:26 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:40:26 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=55457 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "radeon-cosmos", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "float32", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.312552877003327, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": {"ep": "dml", "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", "device_name": "AMD Radeon(TM) 890M Graphics", "placement_granularity": "output_device", "session_providers": ["torch-directml"], "available_providers": ["torch-directml"], "node_counts": {"dml": 1, "cpu": 0}, "total_nodes": 1, "target_nodes": 1, "fraction_on_target": 1.0, "session_create_s": 0.8169198029791005, "warmup_s": 0.4726003560354002, "rss_bytes": 672133120, "inputs": [{"name": "pixels", "shape": [6, 3, 256, 256]}], "outputs": [{"name": "out_0", "shape": [6, 16, 32, 32]}], "profile_path": "", "ep_directory": "", "requested_provider_missing": "", "fallback_note": "", "onnxruntime": "", "note": ""}} +127.0.0.1 - - [24/Sep/2026 01:40:59] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:40:59] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:41:03] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort.json new file mode 100644 index 000000000..18a570450 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort.json @@ -0,0 +1,364 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 43.12801611301256, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "6d99d56dcded4726b807a487ab5afeaf", + "worker_pid": 3706718, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.341352674004156, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9456526709836908, + "warmup_s": 0.5329557959921658, + "rss_bytes": 671866880, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9946566656, + "loaded_process_tree": [ + { + "pid": 3706718, + "rss_bytes": 9274699776, + "private_bytes": 9274699776 + }, + { + "pid": 3706758, + "rss_bytes": 671866880, + "private_bytes": 671866880 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "measured": [ + { + "wall_s": 3.3723121169605292, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "6d99d56dcded4726b807a487ab5afeaf", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "6d99d56dcded4726b807a487ab5afeaf", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184424684527312, + "generation_timestamp_ns": 1790184428042878956, + "observation_age_s": 3.358351644, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.366060871980153, + "worker_wall_s": 3.349996673001442 + } + } + ], + "nearest_rank_p50_wall_s": 3.3723121169605292, + "nearest_rank_p95_wall_s": 3.3723121169605292, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "6d99d56dcded4726b807a487ab5afeaf", + "worker_pid": 3706718, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.341352674004156, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9456526709836908, + "warmup_s": 0.5329557959921658, + "rss_bytes": 671866880, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9946566656, + "loaded_process_tree": [ + { + "pid": 3706718, + "rss_bytes": 9274699776, + "private_bytes": 9274699776 + }, + { + "pid": 3706758, + "rss_bytes": 671866880, + "private_bytes": 671866880 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "abort_check": { + "stale_output": false, + "ledger": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_driver.log new file mode 100644 index 000000000..ff5bdd501 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_driver.log @@ -0,0 +1,328 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:26:15.652000 3706691 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:26:15.678000 3706691 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:26:16 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:26:16 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:26:16 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:26:17 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:26:17 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:26:17 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:26:17 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:26:21 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:26:21 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 43.12801611301256, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "6d99d56dcded4726b807a487ab5afeaf", + "worker_pid": 3706718, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.341352674004156, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9456526709836908, + "warmup_s": 0.5329557959921658, + "rss_bytes": 671866880, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9946566656, + "loaded_process_tree": [ + { + "pid": 3706718, + "rss_bytes": 9274699776, + "private_bytes": 9274699776 + }, + { + "pid": 3706758, + "rss_bytes": 671866880, + "private_bytes": 671866880 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "nearest_rank_p50_wall_s": 3.3723121169605292, + "nearest_rank_p95_wall_s": 3.3723121169605292, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "6d99d56dcded4726b807a487ab5afeaf", + "worker_pid": 3706718, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.341352674004156, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9456526709836908, + "warmup_s": 0.5329557959921658, + "rss_bytes": 671866880, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9946566656, + "loaded_process_tree": [ + { + "pid": 3706718, + "rss_bytes": 9274699776, + "private_bytes": 9274699776 + }, + { + "pid": 3706758, + "rss_bytes": 671866880, + "private_bytes": 671866880 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "abort_check": { + "stale_output": false, + "ledger": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_worker.log new file mode 100644 index 000000000..a400c54d9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_abort_worker.log @@ -0,0 +1,18 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:26:29.341000 3706718 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:26:29.365000 3706718 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:26:30 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:26:30 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:26:31 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:26:31 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:26:31 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:26:31 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:26:32 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=43005 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "radeon-cosmos", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "float32", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.341352674004156, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": {"ep": "dml", "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", "device_name": "AMD Radeon(TM) 890M Graphics", "placement_granularity": "output_device", "session_providers": ["torch-directml"], "available_providers": ["torch-directml"], "node_counts": {"dml": 1, "cpu": 0}, "total_nodes": 1, "target_nodes": 1, "fraction_on_target": 1.0, "session_create_s": 0.9456526709836908, "warmup_s": 0.5329557959921658, "rss_bytes": 671866880, "inputs": [{"name": "pixels", "shape": [6, 3, 256, 256]}], "outputs": [{"name": "out_0", "shape": [6, 16, 32, 32]}], "profile_path": "", "ep_directory": "", "requested_provider_missing": "", "fallback_note": "", "onnxruntime": "", "note": ""}} +127.0.0.1 - - [24/Sep/2026 01:27:04] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:27:04] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:27:08] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20.json new file mode 100644 index 000000000..5bf73455f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20.json @@ -0,0 +1,1353 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 1, + "repeats": 20, + "startup_s": 43.35631740698591, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5466693e06f247f3b783480429ce140d", + "worker_pid": 3706924, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.275995291012805, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9419694360112771, + "warmup_s": 0.5589513860177249, + "rss_bytes": 671727616, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9941762048, + "loaded_process_tree": [ + { + "pid": 3706924, + "rss_bytes": 9270034432, + "private_bytes": 9270034432 + }, + { + "pid": 3706966, + "rss_bytes": 671727616, + "private_bytes": 671727616 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [ + { + "wall_s": 3.839486310025677, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-warmup-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184666027843861, + "generation_timestamp_ns": 1790184669862253975, + "observation_age_s": 3.834410114, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.833047062973492, + "worker_wall_s": 3.824633857992012 + } + } + ], + "measured": [ + { + "wall_s": 3.005773267999757, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 2, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184669867429630, + "generation_timestamp_ns": 1790184672869383468, + "observation_age_s": 3.001953838, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.002327641006559, + "worker_wall_s": 2.9955849639954977 + } + }, + { + "wall_s": 2.9673723710002378, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-1", + "stage_id": 0, + "epoch": 3, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184672873308209, + "generation_timestamp_ns": 1790184675835565449, + "observation_age_s": 2.96225724, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 2.961827708000783, + "worker_wall_s": 2.955951151030604 + } + }, + { + "wall_s": 2.956817605998367, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-2", + "stage_id": 0, + "epoch": 4, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184675840759660, + "generation_timestamp_ns": 1790184678795808064, + "observation_age_s": 2.955048404, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 2.9546044319868088, + "worker_wall_s": 2.9485006800387055 + } + }, + { + "wall_s": 3.196995359961875, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-3", + "stage_id": 0, + "epoch": 5, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184678797648992, + "generation_timestamp_ns": 1790184681989962031, + "observation_age_s": 3.192313039, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1918328379979357, + "worker_wall_s": 3.1859110009972937 + } + }, + { + "wall_s": 3.143269150983542, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-4", + "stage_id": 0, + "epoch": 6, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184681994702672, + "generation_timestamp_ns": 1790184685128086691, + "observation_age_s": 3.133384019, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1376517500029877, + "worker_wall_s": 3.12696245504776 + } + }, + { + "wall_s": 3.0675764530315064, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-5", + "stage_id": 0, + "epoch": 7, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184685138050052, + "generation_timestamp_ns": 1790184688203683285, + "observation_age_s": 3.065633233, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.0661425860016607, + "worker_wall_s": 3.0596764530055225 + } + }, + { + "wall_s": 3.1790819200105034, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-6", + "stage_id": 0, + "epoch": 8, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184688205681900, + "generation_timestamp_ns": 1790184691379767896, + "observation_age_s": 3.174085996, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1738916389876977, + "worker_wall_s": 3.1672675650333986 + } + }, + { + "wall_s": 3.135283196985256, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-7", + "stage_id": 0, + "epoch": 9, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184691384862487, + "generation_timestamp_ns": 1790184694516844965, + "observation_age_s": 3.131982478, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.132087254023645, + "worker_wall_s": 3.125477504974697 + } + }, + { + "wall_s": 3.2579841949627735, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-8", + "stage_id": 0, + "epoch": 10, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184694520237608, + "generation_timestamp_ns": 1790184697775354862, + "observation_age_s": 3.255117254, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.2557495990186, + "worker_wall_s": 3.2484660919872113 + } + }, + { + "wall_s": 3.1866629649885, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-9", + "stage_id": 0, + "epoch": 11, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184697778293990, + "generation_timestamp_ns": 1790184700960659271, + "observation_age_s": 3.182365281, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1824838789761998, + "worker_wall_s": 3.1763646400067955 + } + }, + { + "wall_s": 3.0749643849558197, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-10", + "stage_id": 0, + "epoch": 12, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184700965019293, + "generation_timestamp_ns": 1790184704034524823, + "observation_age_s": 3.06950553, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.0695450640050694, + "worker_wall_s": 3.0634288509609178 + } + }, + { + "wall_s": 3.1572153830202296, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-11", + "stage_id": 0, + "epoch": 13, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184704040057989, + "generation_timestamp_ns": 1790184707193460880, + "observation_age_s": 3.153402891, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1529996439930983, + "worker_wall_s": 3.14769825496478 + } + }, + { + "wall_s": 3.114113188988995, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-12", + "stage_id": 0, + "epoch": 14, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184707197363402, + "generation_timestamp_ns": 1790184710305785259, + "observation_age_s": 3.108421857, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1088828970096074, + "worker_wall_s": 3.1023755010101013 + } + }, + { + "wall_s": 3.117375769012142, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-13", + "stage_id": 0, + "epoch": 15, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184710311546124, + "generation_timestamp_ns": 1790184713424663153, + "observation_age_s": 3.113117029, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1132400470087305, + "worker_wall_s": 3.107394807972014 + } + }, + { + "wall_s": 3.093149824999273, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-14", + "stage_id": 0, + "epoch": 16, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184713429006674, + "generation_timestamp_ns": 1790184716517174218, + "observation_age_s": 3.088167544, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.0879313010373153, + "worker_wall_s": 3.0826911050244235 + } + }, + { + "wall_s": 3.196270088024903, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-15", + "stage_id": 0, + "epoch": 17, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184716522222093, + "generation_timestamp_ns": 1790184719715876531, + "observation_age_s": 3.193654438, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1942661550128832, + "worker_wall_s": 3.187972552026622 + } + }, + { + "wall_s": 3.147534895048011, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-16", + "stage_id": 0, + "epoch": 18, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184719718543729, + "generation_timestamp_ns": 1790184722864123280, + "observation_age_s": 3.145579551, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1456688909674995, + "worker_wall_s": 3.139491661975626 + } + }, + { + "wall_s": 3.1335709159611724, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-17", + "stage_id": 0, + "epoch": 19, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184722866139178, + "generation_timestamp_ns": 1790184725998145223, + "observation_age_s": 3.132006045, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.131654006021563, + "worker_wall_s": 3.1251319580478594 + } + }, + { + "wall_s": 3.119834262004588, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-18", + "stage_id": 0, + "epoch": 20, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184725999758697, + "generation_timestamp_ns": 1790184729113540396, + "observation_age_s": 3.113781699, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.1150668970076367, + "worker_wall_s": 3.1085009099915624 + } + }, + { + "wall_s": 2.9232658139662817, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-19", + "stage_id": 0, + "epoch": 21, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184729119698419, + "generation_timestamp_ns": 1790184732037036719, + "observation_age_s": 2.9173383, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 2.916766730020754, + "worker_wall_s": 2.9115438539884053 + } + } + ], + "nearest_rank_p50_wall_s": 3.119834262004588, + "nearest_rank_p95_wall_s": 3.196995359961875, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_actions.npy", + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5466693e06f247f3b783480429ce140d", + "worker_pid": 3706924, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.275995291012805, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9419694360112771, + "warmup_s": 0.5589513860177249, + "rss_bytes": 671727616, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9941762048, + "loaded_process_tree": [ + { + "pid": 3706924, + "rss_bytes": 9270034432, + "private_bytes": 9270034432 + }, + { + "pid": 3706966, + "rss_bytes": 671727616, + "private_bytes": 671727616 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_actions.npy b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_actions.npy new file mode 100644 index 0000000000000000000000000000000000000000..771eb889f485b76b992a3dfcd9ac2c3ddda88383 GIT binary patch literal 6528 zcmbW5`9GEK^T#D*D=MO*q_S5^$+@rVj9OapZ!p(HXMw4Sj@djz6P*(} z{~uF~I(iqMZ)qUmy$_Hiq7Aoys|2*{G%-^4!1?(ZByCzE-!_cdcf+>)EH``DcX>HK zw&FD8Ukj&cbC!|P;6qS0RulEUeuJ(~eSli(3*c#(0F7=Mk37i*WXdFQL(?ibBj=ki zJ8cTAsMaEBw_U}ZEfdN7>>{*cPb1FLs2~+9BGG}tHXP#C#VtE-NATK{IQjfu>{0rJ ze{7(`ns&tUs)7udTYHvQox^iW{6cB@l0e!s_%Ag1UPf0OYtfj+w@}QBZBSj8!&HWx zMtQSRQ1+w_F0{xOR!w*crW=bOPsf=R{gY;kYNvO=PF?R?YND6+K_{gj+RT@TlS)v73Q;@5oiKJ*|G=~Z!KS0_Po`fqr=$rkKP z_7OF?CeGGsFKO%2MpO56V}Fb1MAtV6C2w!TI<1WyUHcEwJ#!SVw%NoMUmQd0l8f*I zU1hp;L^>Ig8A+EXkK@-1gDKd&qAs^WID?W{R4vIyZ72xoHSd7{ha5(#>=cqYrH6V) ztbtSVEL11T5_8`lTwmU1l4$db3+nYEY5sA7wAlj~M?E4=&(5I}V;iy5?1P+IivwBM z8Hkl^z1er#)9CY^X*l4GAr<`mNj!|E&`@g^e!=Hp`aAVMT6k2BOL`uP_VqQQ0F^Mb z8jiyLyUNVdkUOZg;1v^`xduXX_Q7xaDMV50DOb65BN-k$9way2N!oik&a?X)mhEXE zRVOZ>b*|5G^b}`Kw0=K1DjSBeT`2qCF9E&vJ_NU?uB5*tTKxOz7Sv~5J|El?Oee;) zQJoIklJK}dM7MUJBFzXS9uo%VCZ1;|OfE-OFCql0-3(Z~cY)5L2}Eat78fbEoP_kw z=CU6Ll1A(8+&lXb>|v*7qPL8o!>%>Bb=6v?9sG%%n+ujCpJwkYaiq()m||e})2H?3 z{G7mbR6}iu_m~z;-44E?o;ec6`rj~=Y$8D$PN$&Pwpq}z|EGA*+)8BdD4SV+#2+@i zQiIR?&B(I8Q11KA1!Oph=S+lt7ztF$pgD; zC9onBA8Mli89`1E)xW=)->>aT?>p*KZIxhJ>DW$7U1FF4|3u{5a|sQ&tVCBe;z95^ zk-MMJfI8%2xHm6_;L>>jZuaPrdFp{>)fhuz=X4Rc4B(-W#&~aG=Lt9)Rwg`~`kv;Rwe-^2JIuiP`4iooY zbyy<%6^|IxL;@U6qAi%V$5(mfZ#=cg#ri z&M3yc#+a;B)d!(o0O>e09j1r%W8L8zqWo$Xx*AY}OV?i!R5Y(4An?RWPPuHEPZq5k zyBL;wT%mIEXZhdCr|7ON5tMunqMF;^(4?({%(E&z)W~(9x2+42cO3@Ng%VCKIS!?% z2slTNbD%GG8GH;@66aQB6t-#}QFs0qM3D!HZh;RhUiTCKB?~F3jYIP$*I=oHMDY}< zEks@HjsKY4U}Zdts9I$!m>tWdX6Z@%$>u0J>1_h-JRVGc`M#xA*<(=YXd$Z8tw-^- zrD5AOE`MNh>I_j^{(fW{-NYosPJ~&5Pq>5DxyW8cgWI|^1=bE- zhn8g~gc`^o@5U))y5&>u(rbUBX8nl!k0`M-hU-Y*&R@vz&m&yAPL~_^QiHf_$KWR$ z^4QW*ujrRRpTFz`S~@9<|6U(U)lw+UFbt-XY#V6xjT+|2pa6X^yN4P>M{vryW^mHj z93oz1AcyAh(03&R;?Jc)ZmS_F-(iaerY|7B&dY;YoiC{jdBg4fuEZ(|2sxc|9|dl# z$3hPsrm1!u;p{^3>ar|W!TcjtF^VMBaXeLAca1*_F|->I+4Q_`A-?# zG}V~v8XYJ=RUZvg{svzV6KrdaZ+86 zlq{x_-a>hp8+wdro(+Xr_G8$n{~nVAKk8A|yl$-1yOn7_vVknPn}7rEUSeH0%ShU^ zwRj)6Pa}V4@%6LL($2DW`r0al618RQRr3}`H8)N$^Tv5(Dt1IolPus{(^fQY+8Jau zVFLKX>cKbduUtm(R5Hl@gUUD8{+<2rT;o_15@T2krYlw1567R82a|b}oGr!L|4w4Y zYlRY{J-6_ex-{0-QCV`PXDzS&DZBMz$QQDr0Fpt6PSa!$=R%b=Xgo2OAsIWyoP$&7xB`6_rP(puQYW* zD7B@p7qvLFGY8Ytp|+Mo2fl}(w;du#XZ3Mj#7BYcdJ!n4dqCK&<0$B=E8GZQiB#IW z;ZNE%P|ys5z~__5%X~#PXt;qqu`EW@gd?OTLD|2J4qscHG#i7 z=Ly|9f$|!={HUh<7YZB0sOqQRi*%~TGJeO(p`be*2{dk_d*WEAaG#EKj;#_Xx<$f_ z|3bn1Wei%XG7IjHKZ)$`ZimS55SUPT0MaIoB$@lA+3M_vL`(KIdUHsgZS=`xmaO(C zK5_*(bjLmR%N8Apl-V_2qu~i1bb7##$aSZii$Bv6*KoSXQ_j-rlo@yWx){E(UZ{Um z0g9W6Aw^({ql07^3)!9Ur%xAB&1jY2Nr^ERZp{1C{=rh{67BP*FD~OY6D%^UdYd@*-E{~cT?y7a4IfQwk&D=EI6N72{+Z{kg)GD8t)uoJ-wUZ;`n5w%5GrrwS0lgs8|?hQwSZM zk+5(4GiY~LVAGANNk_yTq$MZAmd?)*mo!I_sM0jtJ))ES!lbTeiB(STg@@DR0+RN87&!^5wPv(vtcwwCu2midkjLShH(_ zoJUSDWO#;|S5b@(YR`e4pUiQiksmWqcN~6;0zulh47D~PLGK|C?)1$Q;MU&?NVg1r zJ?nw`vr6n4o+lAKIq1X_DOQT*#rd+?#IQF9uRhksGJ}Q^uAzj#U{OP7@7%}N*@e*L z6Mgi<$Ovles$>~(cST8W(>WMEexJE&{uKGyZUnhYGqKdP0A^iK9OU$7L8V^~O6xi( zNG*=!o-c3#8>Lgwo*xIFcQpX(CCmQSc|e>CE}(g{6&bBUMFkb?rwc_1#bi+XIyO6_ov)e_MPF)sp#jSysQfhr%b^2e!OSH` zARvcl+R-a?W_Ui-trB37MJ8v%ErX?3O5lz9S)}81h^bqk3h$hvK|J9B_+2T6+-YU- zcC8HieQYf$cX)upC->uoI*!|BQ9v?RUBYr)Ia_X|E%6RN%Ny>kq?JQWWYN)cbO!0B zYiCE$|mAo~Vj#q}GoR9}WfJd|S{r5i}kzA_{^HHbqDMuJe1L2QPS@x^qG)$iAog#7a3 zW91)EHBDbK^d+7OT)L_C!3cUYUfyz#`eDW(DjHO4Oc}+bD~P)m1A}+}^1mX4>z{oQ z%Iz~?s+R*=TK9qr{`Vu7wfZ_#s@(-&w{-Y%~;lpNo&~}-e04F1{f{i&Xgw5#h*XX`dfedpDu6NvFfY1&?p7cqCN@S zbE2c9OJ5?a(+4tW!J*BcXDjF zWi@$QBZJ*GeaEWdxm@AQJTlarii2<8Vzbtbl}u@x!7r67r8*bg@Gr|Gs>Xk$&tHk? zeGPd_nMdcv_Wx!N!@%~}MkK7b&K>?y!O59k z1lib5IDDiWPES!Ja=%Bj!<%c#DRmiKcC8O5TzbSc3rmUPszmI(Ig72DtRm5y+D1a> zb5t&I5Uc!?Nad!!qglHns5UEaSycFn%bt+~8M9p&-G^6@o+AqC`)O(^z>&S90VG)PZpK6T!Cf<37a zK^M+=P7C)&(5>b2mT5=LnHImN5b*l=!qX}CsL=lsIQ?gYmp52}OneMnZ+!@5d(R{L zkb_+0)>v_)@keOYy9#D&bK&U7T(HttWnJDh5g{!>+>-BjXu@<*Ni87jRHAVAmJ+sl zlafTZa|g5r=F=ZGBDQs z?^*bGrht6gc^YRuH=W3=e|n-34$kK!nn+-4rWMoQ*DgD}!Cb-q0^81nb-9 z;d!7UJ1PGesd0RbS`Rd1_l)Zx)09PYK15Wl$*Wi34&yYgBvBuJpR57t52>hBeu-GS zQyOKRsepzIOe1q19ceXGtS&&wunc=c{Ckc_jW3{*Z0bQ)S9Zr5!cT6mij=`%ueiDROtv6>#@O$oe%6od1ksP3~6{k~<1dUfzg1G&^DN zYBITgQiPLeIeUyzlI%FQ6`%iHNEb}yS=}lDJ+UvJ)@+QV7N3+Yeu&iYR6HMuC?j}u{d5YqP zV=TY;7&2#Xe1v%00`B)iF(cH|2M>WGwjyPW>CUMTI_n+Gy`X@l1aG)!nYrj>#{^R9 z9|*=VQeb!WoPcT$wxxKN6n_Y~6~ z?wxE?wlM{t>(p#PB%NifV)@u;G;?C*XXvVXz$s6{E!8KN7=h!393#@mTV$%Qr8 zer64>Y8+3ZW}PRIb5G!ZXa)NvTS4Nr=?m6>T0)Or|H<}x%%uGVS+v#vuMSdHw2YPt z70li89{BJ%aHrInk(;~ vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:30:16.806000 3706898 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:30:16.829000 3706898 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:30:18 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:30:18 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:30:18 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:30:18 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:30:19 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:30:19 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:30:19 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:30:22 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:30:22 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 1, + "repeats": 20, + "startup_s": 43.35631740698591, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5466693e06f247f3b783480429ce140d", + "worker_pid": 3706924, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.275995291012805, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9419694360112771, + "warmup_s": 0.5589513860177249, + "rss_bytes": 671727616, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9941762048, + "loaded_process_tree": [ + { + "pid": 3706924, + "rss_bytes": 9270034432, + "private_bytes": 9270034432 + }, + { + "pid": 3706966, + "rss_bytes": 671727616, + "private_bytes": 671727616 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [ + { + "wall_s": 3.839486310025677, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-warmup-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "5466693e06f247f3b783480429ce140d", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5466693e06f247f3b783480429ce140d", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184666027843861, + "generation_timestamp_ns": 1790184669862253975, + "observation_age_s": 3.834410114, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.833047062973492, + "worker_wall_s": 3.824633857992012 + } + } + ], + "nearest_rank_p50_wall_s": 3.119834262004588, + "nearest_rank_p95_wall_s": 3.196995359961875, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_actions.npy", + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5466693e06f247f3b783480429ce140d", + "worker_pid": 3706924, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.275995291012805, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9419694360112771, + "warmup_s": 0.5589513860177249, + "rss_bytes": 671727616, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9941762048, + "loaded_process_tree": [ + { + "pid": 3706924, + "rss_bytes": 9270034432, + "private_bytes": 9270034432 + }, + { + "pid": 3706966, + "rss_bytes": 671727616, + "private_bytes": 671727616 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_worker.log new file mode 100644 index 000000000..efef5eda7 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_profile20_worker.log @@ -0,0 +1,38 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:30:30.457000 3706924 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:30:30.480000 3706924 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:30:31 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:30:31 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:30:32 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:30:32 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:30:32 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:30:32 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:30:33 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=46549 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "radeon-cosmos", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "float32", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.275995291012805, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": {"ep": "dml", "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", "device_name": "AMD Radeon(TM) 890M Graphics", "placement_granularity": "output_device", "session_providers": ["torch-directml"], "available_providers": ["torch-directml"], "node_counts": {"dml": 1, "cpu": 0}, "total_nodes": 1, "target_nodes": 1, "fraction_on_target": 1.0, "session_create_s": 0.9419694360112771, "warmup_s": 0.5589513860177249, "rss_bytes": 671727616, "inputs": [{"name": "pixels", "shape": [6, 3, 256, 256]}], "outputs": [{"name": "out_0", "shape": [6, 16, 32, 32]}], "profile_path": "", "ep_directory": "", "requested_provider_missing": "", "fallback_note": "", "onnxruntime": "", "note": ""}} +127.0.0.1 - - [24/Sep/2026 01:31:05] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:05] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:09] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:12] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:15] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:18] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:21] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:25] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:28] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:31] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:34] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:37] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:40] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:44] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:47] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:50] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:53] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:56] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:31:59] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:32:02] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:32:05] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:32:09] "POST /v1/actions HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:32:12] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke.json new file mode 100644 index 000000000..153d87490 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke.json @@ -0,0 +1,356 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 42.94034406699939, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5c80cc10af0342898b5848c1a2149794", + "worker_pid": 3706462, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.199622157029808, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9236837800126523, + "warmup_s": 0.6587111140252091, + "rss_bytes": 671911936, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9942433792, + "loaded_process_tree": [ + { + "pid": 3706462, + "rss_bytes": 9270521856, + "private_bytes": 9270521856 + }, + { + "pid": 3706502, + "rss_bytes": 671911936, + "private_bytes": 671911936 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "measured": [ + { + "wall_s": 3.741704376996495, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "5c80cc10af0342898b5848c1a2149794", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "5c80cc10af0342898b5848c1a2149794", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184223754440131, + "generation_timestamp_ns": 1790184227489938088, + "observation_age_s": 3.735497957, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.7342968080192804, + "worker_wall_s": 3.7268677899846807 + } + } + ], + "nearest_rank_p50_wall_s": 3.741704376996495, + "nearest_rank_p95_wall_s": 3.741704376996495, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_actions.npy", + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5c80cc10af0342898b5848c1a2149794", + "worker_pid": 3706462, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.199622157029808, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9236837800126523, + "warmup_s": 0.6587111140252091, + "rss_bytes": 671911936, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9942433792, + "loaded_process_tree": [ + { + "pid": 3706462, + "rss_bytes": 9270521856, + "private_bytes": 9270521856 + }, + { + "pid": 3706502, + "rss_bytes": 671911936, + "private_bytes": 671911936 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 17179869184 + }, + "owners": [ + "(0, 0)" + ], + "quarantined": [ + "(0, 0)" + ] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2.json new file mode 100644 index 000000000..1dc1270af --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2.json @@ -0,0 +1,351 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 43.52174656797433, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "f7d2ce6124054528bd1a3808a8693860", + "worker_pid": 3706602, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.191244728048332, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.8350643999874592, + "warmup_s": 1.4400453140260652, + "rss_bytes": 672096256, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9948491776, + "loaded_process_tree": [ + { + "pid": 3706602, + "rss_bytes": 9276395520, + "private_bytes": 9276395520 + }, + { + "pid": 3706643, + "rss_bytes": 672096256, + "private_bytes": 672096256 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "measured": [ + { + "wall_s": 3.418703102041036, + "action_sha256": "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d", + "stage_event": { + "request_id": "internvla-measured-0", + "stage_id": 0, + "epoch": 1, + "seq": 1, + "kind": "action", + "worker_generation": "f7d2ce6124054528bd1a3808a8693860", + "buffers": [ + { + "object_id": "actions", + "owner": "0", + "generation": "f7d2ce6124054528bd1a3808a8693860", + "dtype": "float32", + "shape": [ + 1, + 50, + 32 + ], + "nbytes": 6400, + "memory_domain": "host-copy", + "layout": "C", + "ready": true + } + ], + "terminal": true, + "error": null + }, + "action_metadata": { + "observation_timestamp_ns": 1790184343909950644, + "generation_timestamp_ns": 1790184347326002352, + "observation_age_s": 3.416051708, + "action_mode": "delta", + "action_shape": [ + 1, + 50, + 32 + ], + "action_units": "unverified", + "joint_order": "unverified", + "action_step_s": null, + "control_ready": false + }, + "metrics": { + "policy_wall_s": 3.4134237469988875, + "worker_wall_s": 3.4039886739919893 + } + } + ], + "nearest_rank_p50_wall_s": 3.418703102041036, + "nearest_rank_p95_wall_s": 3.418703102041036, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "f7d2ce6124054528bd1a3808a8693860", + "worker_pid": 3706602, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.191244728048332, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.8350643999874592, + "warmup_s": 1.4400453140260652, + "rss_bytes": 672096256, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9948491776, + "loaded_process_tree": [ + { + "pid": 3706602, + "rss_bytes": 9276395520, + "private_bytes": 9276395520 + }, + { + "pid": 3706643, + "rss_bytes": 672096256, + "private_bytes": 672096256 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2_driver.log new file mode 100644 index 000000000..6c0c01cd0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke2_driver.log @@ -0,0 +1,315 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:24:54.447000 3706575 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:24:54.471000 3706575 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:24:55 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:24:55 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:24:55 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:24:56 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:24:56 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:24:56 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:24:56 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:25:00 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:25:00 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 43.52174656797433, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "f7d2ce6124054528bd1a3808a8693860", + "worker_pid": 3706602, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.191244728048332, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.8350643999874592, + "warmup_s": 1.4400453140260652, + "rss_bytes": 672096256, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9948491776, + "loaded_process_tree": [ + { + "pid": 3706602, + "rss_bytes": 9276395520, + "private_bytes": 9276395520 + }, + { + "pid": 3706643, + "rss_bytes": 672096256, + "private_bytes": 672096256 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "nearest_rank_p50_wall_s": 3.418703102041036, + "nearest_rank_p95_wall_s": 3.418703102041036, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "f7d2ce6124054528bd1a3808a8693860", + "worker_pid": 3706602, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.191244728048332, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.8350643999874592, + "warmup_s": 1.4400453140260652, + "rss_bytes": 672096256, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9948491776, + "loaded_process_tree": [ + { + "pid": 3706602, + "rss_bytes": 9276395520, + "private_bytes": 9276395520 + }, + { + "pid": 3706643, + "rss_bytes": 672096256, + "private_bytes": 672096256 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke_driver.log new file mode 100644 index 000000000..3fbf69bfb --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_smoke_driver.log @@ -0,0 +1,320 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:22:54.982000 3706436 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:22:55.005000 3706436 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:22:56 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:22:56 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:22:56 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:22:57 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:22:57 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:22:57 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:22:57 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:23:00 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:23:00 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "radeon-cosmos", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 17179869184 + } + }, + "warmups": 0, + "repeats": 1, + "startup_s": 42.94034406699939, + "execution_plan_start": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5c80cc10af0342898b5848c1a2149794", + "worker_pid": 3706462, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.199622157029808, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9236837800126523, + "warmup_s": 0.6587111140252091, + "rss_bytes": 671911936, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9942433792, + "loaded_process_tree": [ + { + "pid": 3706462, + "rss_bytes": 9270521856, + "private_bytes": 9270521856 + }, + { + "pid": 3706502, + "rss_bytes": 671911936, + "private_bytes": 671911936 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "warmup_results": [], + "nearest_rank_p50_wall_s": 3.741704376996495, + "nearest_rank_p95_wall_s": 3.741704376996495, + "unique_action_hashes": [ + "fdeab4bace64e2b58811d9681f10249e26deb998ac55e3144634af68d6bb6b8d" + ], + "output_actions": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_actions.npy", + "reference_comparison": { + "max_abs": 0.07545873522758484, + "relative_l2": 0.023047618567943573, + "cosine": 0.9997373223304749 + }, + "execution_plan_end": { + "backend": "external.internvla.policy.v1", + "stage_id": 0, + "worker_generation": "5c80cc10af0342898b5848c1a2149794", + "worker_pid": 3706462, + "worker_script_sha256": "55ffe4ce194eee7e330a4e5def8a2bfec0bfbb98b182885e094f71ea57e4ac9a", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516", + "graph": "9111b3841893acaaa11cf45715d246da3ac9cdd03c7b33fb3c7c20fe38d74704" + }, + "placement": "radeon-cosmos", + "worker_props": { + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", + "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", + "placement": "radeon-cosmos", + "torch": "2.13.0+cpu", + "policy_dtype": "bfloat16", + "cosmos_dtype": "float32", + "policy_device": "cpu", + "runtime_mode": "real_checkpoint_loaded", + "policy_load_s": 29.199622157029808, + "action_shape": [ + 1, + 50, + 32 + ], + "image_shape": [ + 1, + 2, + 3, + 224, + 224 + ], + "state_shape": [ + 1, + 32 + ], + "action_mode": "delta", + "action_units": "unverified", + "action_joint_order": "unverified", + "action_step_s": null, + "control_ready": false, + "external_load": { + "ep": "dml", + "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", + "device_name": "AMD Radeon(TM) 890M Graphics", + "placement_granularity": "output_device", + "session_providers": [ + "torch-directml" + ], + "available_providers": [ + "torch-directml" + ], + "node_counts": { + "dml": 1, + "cpu": 0 + }, + "total_nodes": 1, + "target_nodes": 1, + "fraction_on_target": 1.0, + "session_create_s": 0.9236837800126523, + "warmup_s": 0.6587111140252091, + "rss_bytes": 671911936, + "inputs": [ + { + "name": "pixels", + "shape": [ + 6, + 3, + 256, + 256 + ] + } + ], + "outputs": [ + { + "name": "out_0", + "shape": [ + 6, + 16, + 32, + 32 + ] + } + ], + "profile_path": "", + "ep_directory": "", + "requested_provider_missing": "", + "fallback_note": "", + "onnxruntime": "", + "note": "" + } + }, + "loaded_rss_bytes": 9942433792, + "loaded_process_tree": [ + { + "pid": 3706462, + "rss_bytes": 9270521856, + "private_bytes": 9270521856 + }, + { + "pid": 3706502, + "rss_bytes": 671911936, + "private_bytes": 671911936 + } + ], + "reserved_bytes": { + "host_ram": 17179869184 + }, + "memory_overhead_bytes": 8589934592, + "max_input_bytes": 8388608, + "max_action_bytes": 1048576, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B" + }, + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 17179869184 + }, + "owners": [ + "(0, 0)" + ], + "quarantined": [ + "(0, 0)" + ] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker.log new file mode 100644 index 000000000..b61d2f799 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker.log @@ -0,0 +1,18 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:23:08.498000 3706462 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:23:08.523000 3706462 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:23:09 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:23:09 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:23:10 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:23:10 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:23:10 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:23:10 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:23:11 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=51261 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "radeon-cosmos", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "float32", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.199622157029808, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": {"ep": "dml", "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", "device_name": "AMD Radeon(TM) 890M Graphics", "placement_granularity": "output_device", "session_providers": ["torch-directml"], "available_providers": ["torch-directml"], "node_counts": {"dml": 1, "cpu": 0}, "total_nodes": 1, "target_nodes": 1, "fraction_on_target": 1.0, "session_create_s": 0.9236837800126523, "warmup_s": 0.6587111140252091, "rss_bytes": 671911936, "inputs": [{"name": "pixels", "shape": [6, 3, 256, 256]}], "outputs": [{"name": "out_0", "shape": [6, 16, 32, 32]}], "profile_path": "", "ep_directory": "", "requested_provider_missing": "", "fallback_note": "", "onnxruntime": "", "note": ""}} +127.0.0.1 - - [24/Sep/2026 01:23:43] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:23:43] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:23:47] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker2.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker2.log new file mode 100644 index 000000000..3b599f776 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/radeon_worker2.log @@ -0,0 +1,18 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:25:08.080000 3706602 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:25:08.104000 3706602 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +WARNING 09-24 01:25:09 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:25:09 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:25:10 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:25:10 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:25:10 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:25:10 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:25:10 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +internvla-worker ready port=47537 props={"model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", "processor_dir": "/home/zhout/project/edge_infer/models/Qwen3-VL-2B-Instruct-processor", "cosmos_dir": "/home/zhout/project/edge_infer/models/Cosmos-Tokenizer-CI8x8", "placement": "radeon-cosmos", "torch": "2.13.0+cpu", "policy_dtype": "bfloat16", "cosmos_dtype": "float32", "policy_device": "cpu", "runtime_mode": "real_checkpoint_loaded", "policy_load_s": 29.191244728048332, "action_shape": [1, 50, 32], "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], "action_mode": "delta", "action_units": "unverified", "action_joint_order": "unverified", "action_step_s": null, "control_ready": false, "external_load": {"ep": "dml", "graph_path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-encoder-batch6.pt2", "device_name": "AMD Radeon(TM) 890M Graphics", "placement_granularity": "output_device", "session_providers": ["torch-directml"], "available_providers": ["torch-directml"], "node_counts": {"dml": 1, "cpu": 0}, "total_nodes": 1, "target_nodes": 1, "fraction_on_target": 1.0, "session_create_s": 0.8350643999874592, "warmup_s": 1.4400453140260652, "rss_bytes": 672096256, "inputs": [{"name": "pixels", "shape": [6, 3, 256, 256]}], "outputs": [{"name": "out_0", "shape": [6, 16, 32, 32]}], "profile_path": "", "ep_directory": "", "requested_provider_missing": "", "fallback_note": "", "onnxruntime": "", "note": ""}} +127.0.0.1 - - [24/Sep/2026 01:25:43] "GET /health HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:25:43] "GET /props HTTP/1.1" 200 - +127.0.0.1 - - [24/Sep/2026 01:25:47] "POST /v1/actions HTTP/1.1" 200 - diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu.json new file mode 100644 index 000000000..67730be75 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu.json @@ -0,0 +1,37 @@ +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 8589934592 + } + }, + "warmups": 0, + "repeats": 1, + "admission_refusal": "ResourceUnavailable: InternVLA weights, graph and state/workspace/headroom exceed reservation", + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu_driver.log new file mode 100644 index 000000000..54868535e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/refusal_cpu_driver.log @@ -0,0 +1,72 @@ +/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions: + --> vLLM-Omni version 0.29.0rc2.dev71+g00510ce38.d20260922 + --> vLLM version 0.28.0 +This will likely cause compatibility issues. + warn_if_misaligned_vllm_version() +W0924 01:21:13.523000 3706294 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +W0924 01:21:13.546000 3706294 torch/utils/_pytree.py:630] is an Enum subclass and is now natively supported by torch.compile as an opaque value type. Calling register_constant() on Enum subclasses is deprecated and will be an error in a future release. +INFO 09-24 01:21:14 [importing.py:53] Triton is installed but 0 active driver(s) found (expected 1). Disabling Triton to prevent runtime errors. +WARNING 09-24 01:21:14 [importing.py:65] Triton is installed, but doesn't include CPU backend. Disabling Triton. +INFO 09-24 01:21:14 [importing.py:88] Triton not installed or not compatible; certain GPU-related functions will not be available. +INFO 09-24 01:21:15 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-24 01:21:15 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-24 01:21:15 [patch.py:646] CPU AOT compile-cache load shim installed: compiled models are reused across engine starts instead of being recompiled. +INFO 09-24 01:21:15 [patch.py:756] CPU weight-load memory release installed (set VLLM_OMNI_CPU_RELEASE_MEMORY=0 to disable). +INFO 09-24 01:21:19 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +WARNING 09-24 01:21:19 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge' +ERROR 09-24 01:21:22 [stage_runtime.py:265] [StageRuntime] Stage initialization failed; shutting down 0 initialized client(s) +ERROR 09-24 01:21:22 [stage_runtime.py:265] Traceback (most recent call last): +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 252, in initialize +ERROR 09-24 01:21:22 [stage_runtime.py:265] initialized_clients = self._initialize_stage_replicas(stage_plans, self._stage_init_timeout) +ERROR 09-24 01:21:22 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 589, in _initialize_stage_replicas +ERROR 09-24 01:21:22 [stage_runtime.py:265] raise primary_exc +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 550, in _init_group +ERROR 09-24 01:21:22 [stage_runtime.py:265] client = self._initialize_replica( +ERROR 09-24 01:21:22 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^ +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 817, in _initialize_replica +ERROR 09-24 01:21:22 [stage_runtime.py:265] return create_graph_client( +ERROR 09-24 01:21:22 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^ +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/backends/__init__.py", line 31, in create_graph_client +ERROR 09-24 01:21:22 [stage_runtime.py:265] return InternVLAStageClient(metadata, backend, ledger, reservation) +ERROR 09-24 01:21:22 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +ERROR 09-24 01:21:22 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/backends/internvla.py", line 111, in __init__ +ERROR 09-24 01:21:22 [stage_runtime.py:265] raise ResourceUnavailable("InternVLA weights, graph and state/workspace/headroom exceed reservation") +ERROR 09-24 01:21:22 [stage_runtime.py:265] vllm_omni.engine.resource_ledger.ResourceUnavailable: InternVLA weights, graph and state/workspace/headroom exceed reservation +{ + "scope": "real InternVLA Place_Markpen checkpoint via bounded Omni whole-policy graph stage; synthetic patterned observations/noise; no robot-task quality claim", + "placement": "cpu", + "artifact_sha256": { + "python": "021044895e95be79dc2f110367607e684119afbc8ce75f6f0eec94844e0acec7", + "model": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313", + "model_config": "1272ca8fb93cb42f48b039bb298688b2bd50a66f4faa0afcd9e538e9762f48aa", + "train_config": "e50ec42e40ba1925983e0e8db36558d3738bea64e1698045ff7cc08a130e1053", + "stats": "354710650bb91fc0e84a461987b3554b30bef9d5de47567480624484cdfbf3a2", + "cosmos_encoder": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5", + "cosmos_decoder": "3b7791e6c8f6f92caacddf48ebb314f044bcb8302d0c7f47501d384a7a80f738", + "processor_tokenizer": "a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7", + "processor_config": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516" + }, + "budget": { + "capacities": { + "host_ram": 32212254720 + }, + "demands": { + "host_ram": 8589934592 + } + }, + "warmups": 0, + "repeats": 1, + "admission_refusal": "ResourceUnavailable: InternVLA weights, graph and state/workspace/headroom exceed reservation", + "status": "passed", + "ledger_after_shutdown": { + "capacities": { + "host_ram": 32212254720 + }, + "reserved": { + "host_ram": 0 + }, + "owners": [], + "quarantined": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md index e3cb51bd4..32b2d20a6 100644 --- a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md +++ b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md @@ -2,7 +2,7 @@ All 60 pairings have a disposition. The timing tables below remain the 2026-09-22 measurements. The configuration matrix and affected per-cell reasons incorporate the [2026-09-23 scoped recovery runs](../../../e2e_recovery_20260923/README.md) and [WSL CPU/native Windows expansion](../../../e2e_expansion_20260923/README.md). The expansion adds separate 20-request serial MiniCPM-o text-to-speech profiles on WSL CPU and native Windows GPU, a Spark output-head component profile on the HX370 AMD NPU, complete Spark text-request profiles through standalone llama.cpp and a bounded Omni whole-session stage on native Windows CPU and Radeon 890M, native Windows CPU Qwen3-TTS text-to-WAV profiles through both standalone PyTorch and a bounded Omni whole-session stage, and a hybrid CPU+Radeon 890M Qwen3-TTS profile likewise repeated through a bounded Omni whole-session stage. A pinned GGUF MiniCPM-o route adds combined image+audio to text+speech runs on WSL CPU, native Windows CPU and native Windows Radeon 890M+CPU. All three now pass a bounded complete request through an Omni graph stage; the WSL CPU path additionally passed one warmup plus 20 serial measured requests. These are scoped synthetic cases, not full release qualification. -The Radeon 890M InternVLA cell now has a [Cosmos image-encoder component profile and a separate CPU+Radeon complete synthetic action-policy profile](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md). It remains short of robot-task E2E qualification because real observations, reference actions, units/timestamps, complete admission and lifecycle are unverified. +The WSL CPU and CPU+Radeon InternVLA cells now also have [bounded Omni complete-policy profiles](../../../e2e_expansion_20260923/evidence/internvla_omni_policy/README.md): one warmup and 20 serial patterned synthetic requests per placement, plus admission refusal, cancellation and a public hybrid `AsyncOmni.generate` request. These advance only the synthetic action-policy path. Real observations/reference actions, physical action units/order/step time, task quality, loading peak and sustained power/thermal behavior remain unverified. The earlier [Cosmos component and direct hybrid results](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md) remain separate experiments. ## Configuration × model @@ -16,11 +16,11 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | Device | Spark-X2.5 | Qwen3-TTS 0.6B CustomVoice | Qwen3.8-27B | MiniCPM-o 4.5 | InternVLA-A1 | |---|---|---|---|---|---| -| PC HX370: CPU / WSL | profile completed | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF combined image+audio → text+speech | synthetic policy pass | +| PC HX370: CPU / WSL | profile completed | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF combined image+audio → text+speech | synthetic policy pass: Omni CPU | | PC HX370: CPU / native Windows | scoped E2E: Omni Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF image+audio → text+speech | synthetic policy pass | | PC HX370 + RTX 5090 Laptop / WSL | profile completed | profile completed | scoped E2E: text + image | scoped E2E: text/image/audio → speech | synthetic policy pass | | PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass | -| PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | scoped E2E: Omni Radeon+CPU image+audio → text+speech | synthetic policy pass: CPU policy + Radeon Cosmos | +| PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | scoped E2E: Omni Radeon+CPU image+audio → text+speech | synthetic policy pass: Omni CPU policy + Radeon Cosmos | | PC HX370 + AMD NPU / Windows worker | NOT E2E (output-head component passed) | NOT E2E | NOT E2E | NOT E2E | NOT E2E | | PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E | | PC Snapdragon X Elite CRD / AI Hub | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E | @@ -37,7 +37,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC HX370: CPU / WSL | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The earlier vLLM 0.28 CPU path passed four short streams but had four simulated playback underruns in one measured request; its wheel remains mismatched with Omni 0.29. Separately, the pinned BF16 0.6B CustomVoice checkpoint ran two named text-to-complete-WAV requests through an Omni 0.29 whole-session stage with an isolated CPU worker on WSL. One warmup plus 20 serial measured requests returned identical 3.44 s audio; nearest-rank complete-request wall p50/p95 was 8.27/8.47 s (RTF 2.40/2.46), excluding 19.82 s startup. Pinned Whisper tiny.en transcribed the first measured WAV exactly (WER 0, one-output intelligibility proxy). Public `AsyncOmni` audio output passed; the stage verified weights, interpreter and CPU placement, reserved 10 GiB host RAM, refused 4 GiB before launch, and drained in-flight cancellation with zero remaining reservation. WSL PCM differs from the same-checkpoint native Windows outputs despite the declared settings; its cause is unqualified. Sampled process-tree RSS reached 3.39 GB, not a loading peak. This worker delivers only a complete WAV, not a playable stream. | Qualify cross-OS numerical/quality difference, playable streaming without underruns, post-cancel restart, loading peak, concurrency and sustained power/thermal behavior; [WSL Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_wsl_cpu/README.md), [earlier stream evidence](../../../e2e_recovery_20260923/README.md). | | PC HX370: CPU / WSL | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No compatible CPU artifact/deployment for this model was found in the checked model roots. Available Qwen 27B FP8/NVFP4 CUDA artifacts do not establish a CPU route. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The BF16/vLLM 0.28 three-stage path previously passed separate text, synthetic red-square image and synthetic 440 Hz audio inputs to text+speech; its 20-request serial **text-only** profile was p50/p95 21.86/22.97 s with swap and shutdown warnings. A separate pinned Q4_K_M/F16 GGUF worker now runs a **combined spoken question+image → text+speech** request through a bounded Omni StageRuntime/StagePool graph stage on WSL CPU, with installed vLLM 0.29 for the controller and CPU-only C++ model execution. All 20 measured requests after one warmup answered “The square in the image is red.”, emitted complete nonzero speech and a terminal audio event; nearest-rank complete-request wall p50/p95 was 22.67/24.83 s, speech duration 1.60–2.92 s, and maximum sampled worker RSS 13.70 GB. The first measured WAV independently transcribed exactly with pinned Whisper tiny.en (WER 0, one-output intelligibility proxy). Ten weight hashes and CPU placement were verified; 24 GiB shared RAM was reserved, 8 GiB was refused before launch, and in-flight cancellation left no stale output or reservation. Host RAM/swap samples covered only part of the profile. One synthetic fixture and variable speech PCM do not establish general quality, playable streaming, loading peak or sustained performance. | Validate real image/audio suites, speech alignment and quality, video input, concurrent admission, post-cancel restart, loading peak and sustained thermal behavior; [GGUF Omni raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/README.md), [BF16/vLLM CPU evidence](../../../e2e_expansion_20260923/README.md), [earlier standalone GGUF run](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md). | -| PC HX370: CPU / WSL | InternVLA-A1 | SYNTHETIC_POLICY_PASS | The Place_Markpen checkpoint strict-loaded in CPU-only PyTorch and produced finite `[1, 50, 32]` actions from zero observations/noise in one 3.25 s forward. Compared with the same CUDA checkpoint/input, relative L2 error was 1.30% and cosine similarity 0.999917; no task-quality tolerance is established. | Validate real observations against reference actions, units/timestamps, repeated latency and memory before robot-task qualification; [CPU evidence](../../../e2e_expansion_20260923/README.md). | +| PC HX370: CPU / WSL | InternVLA-A1 | SYNTHETIC_POLICY_PASS_OMNI; NOT_TASK_E2E | The real Place_Markpen checkpoint ran through an admitted Omni StageRuntime whole-policy stage with a CPU-only isolated worker. One warmup plus 20 serial patterned synthetic camera/state/noise requests returned identical finite `[1,50,32]` action chunks with terminal action events; nearest-rank complete-request wall p50/p95 was 3.175/3.219 s, excluding 40.03 s startup. The stage verified checkpoint/interpreter hashes and CPU placement, reserved 16 GiB of a declared 30 GiB WSL host-RAM pool, refused 8 GiB before launch, and released the reservation on shutdown. The earlier direct zero-input policy/CUDA comparison was a different fixture and remains separate. No real-observation task-quality tolerance exists. | Validate real observations/reference actions, physical units/order/step time, action deadlines, loading peak, concurrency and sustained power/thermal behavior; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_policy/README.md), [earlier direct policy evidence](../../../e2e_expansion_20260923/README.md). | | PC HX370: CPU / native Windows | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned Spark-X2.5-1.7B Q4_K_M GGUF ran in native Windows llama.cpp CPU (`-dev none -ngl 0`) as a whole-session Omni StageRuntime/StagePool backend. `Paris` and the correct `1511` inventory answer passed; one warmup plus 20 serial complete requests were 20/20 correct, nearest-rank wall p50/p95 6.93/7.05 s. The public AsyncOmni short request passed. The stage verifies artifact hashes and CPU placement (0/29 layers offloaded), reserves 4 GiB host RAM, emits a terminal text event and releases reservation after in-flight cancellation. The separate prior standalone profile was 6.65/6.86 s. No vLLM CPU attention repair, incremental stream, restart-after-cancel, loading peak or sustained power/thermal gate is claimed. | Validate broader text/token quality, streaming and cancellation recovery, memory peak and sustained load; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/spark_omni_llamacpp/README.md), [standalone evidence](../../../e2e_expansion_20260923/evidence/spark_radeon890m_llamacpp/README.md). | | PC HX370: CPU / native Windows | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned 0.6B CustomVoice BF16/SDPA checkpoint ran wholly on CPU through an isolated Qwen wrapper worker owned by one bounded Omni StageRuntime stage. Two named 24 kHz WAVs matched the earlier standalone PCM SHA256 values exactly. One warmup + 20 serial complete Omni requests for 4.56 s of audio had 20/20 identical PCM and nearest-rank wall p50/p95 15.32/15.60 s (RTF 3.36/3.42); independent Whisper tiny.en ASR gave WER 0.20 on the first Omni WAV, an intelligibility proxy only. A public AsyncOmni audio request passed. The stage verified pinned weights/interpreter and CPU placement, reserved 10 GiB host RAM, rejected an insufficient 4 GiB demand before worker launch, and after in-flight cancellation emitted no stale output and returned the ledger to zero. Sampled process-tree private memory peaked at 5.39 GB, not a loading peak. Native vLLM CPU attention operators remain absent; playable streaming, post-cancel restart, broader speech quality, loading peak and sustained power/thermal behavior remain unverified. | Validate playable streaming and restart/recovery, broader voice quality, peak memory, concurrency and sustained behavior; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_cpu/README.md), [standalone baseline](../../../e2e_expansion_20260923/evidence/qwen_tts_native_cpu/README.md). | | PC HX370: CPU / native Windows | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The installed native Windows vLLM extension lacks cpu_attn_reshape_and_cache and cpu_attn_get_scheduler_metadata. The separate ORT CPU graph worker is not a whole-model text/TTS adapter; a qualified CPU build/binding is missing. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | @@ -57,7 +57,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC HX370 + Radeon 890M / Windows worker | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST_HYBRID | The pinned Q8_0 CustomVoice talker, F16 codec and punctuation GGUFs completed two named text-to-WAV requests through an Omni whole-session CrispASR stage on native Windows. The runtime log identifies Radeon 890M Vulkan0 for talker/codec and the 432 MB code predictor pinned to CPU FP32; this is not all-Radeon or NPU execution. Both PCM hashes exactly match the earlier standalone outputs. Whisper tiny.en transcribed the first Omni WAV and both standalone WAVs exactly (WER 0 as an intelligibility proxy). One warmup plus 20 serial complete Omni requests for 2.56 s of audio had identical PCM and nearest-rank wall p50/p95 3.298/3.336 s (RTF 1.29/1.30). A public AsyncOmni audio request passed; cancellation drained the worker without stale output or remaining reservation. The earlier standalone profile was 3.310/3.345 s. The default Vulkan configuration previously fell back to CPU, all-Vulkan ran away to a 360-frame cap, and DirectML failed waveform quality. No playable stream, post-cancel restart, loading peak, broad speech quality or sustained power/thermal run is claimed. | Validate playable streaming, restart/recovery, broader voice quality, shared-RAM/GPU peak, concurrency and sustained real-time behavior before wider qualification; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_hybrid/README.md), [standalone evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_joint/README.md), [failed DirectML route](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_directml/README.md). | | PC HX370 + Radeon 890M / Windows worker | Qwen3.8-27B | NOT_E2E_PROFILEABLE | FP32 448x448 vision tower: DirectML 85/113 nodes; normalized max error 9.095e-06 versus torch CPU. Historical component path, not full 27B or current graph-stage image-to-text integration. | Recover the hashed tower bundle and qualify its current Omni graph handoff with the language stage. | | PC HX370 + Radeon 890M / Windows worker | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST_HYBRID | The same pinned GGUF set ran one combined synthetic spoken-question+JPEG → text+speech request through a bounded Omni whole-session graph stage. Logs verify `GGML_VK_VISIBLE_DEVICES=1`, Radeon 890M Vulkan0 language (37/37 layers) and vision, with CPU TTS/Token2Wav/vocoder. It answered “The square in the image is red.” and produced 2.60 s of 24 kHz speech in 18.27 s complete-request wall time (one cold sample, zero warmups); sampled worker RSS peaked at 15.57 GB. The stage verified artifact and binary hashes, reserved 24 GiB shared RAM, emitted a terminal audio event, and in-flight cancellation left no stale output or reservation. The prior standalone prompted run took 18.63 s and its output transcribed with WER 0. This is CPU+iGPU joint execution, not all-Radeon or NPU execution; neither run qualifies general quality or sustained performance. | Validate real multimodal quality, playable streaming, post-cancel restart, loading peak, repeated/concurrent latency and sustained thermal behavior. [Omni raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_cpp/README.md), [standalone prompted evidence](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_radeon890m_prompted/README.md). | -| PC HX370 + Radeon 890M / Windows worker | InternVLA-A1 | SYNTHETIC_POLICY_PASS_HYBRID; NOT_TASK_E2E | The real Place_Markpen checkpoint strict-loaded in WSL CPU Omni diffusion. Its Cosmos encoder ran as a pinned FP32 fixed-six-frame export in Omni's external DirectML worker; the selected device was verified as Radeon 890M, and the remainder of the BF16 policy/action loop stayed on CPU. One warmup plus 20 alternating identical synthetic zero-observation/noise requests produced finite `[1,50,32]` actions. Complete-request wall p50/p95 was 2.952/3.322 s hybrid versus 3.178/3.266 s CPU; 16/20 paired calls were faster, but the hybrid tail regressed. Action relative L2 difference was 0.9007% and cosine 0.999959, without a task tolerance. DirectML BF16 aborted, so FP32 encoder is an explicit precision change. Worker startup+graph load took 3.34 s, excluded from warm timing. This proves a scoped synthetic CPU+iGPU policy path, not real-observation quality, action units/time, complete shared-RAM admission, cancellation or sustained benefit. | Validate real observation/reference-action quality and metadata, integrate an admitted bounded graph-stage plan with cancellation/restart, and resolve latency-tail and startup amortization before deployment. [Raw hybrid and component evidence](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md). | +| PC HX370 + Radeon 890M / Windows worker | InternVLA-A1 | SYNTHETIC_POLICY_PASS_HYBRID_OMNI; NOT_TASK_E2E | The real Place_Markpen checkpoint ran in an admitted Omni whole-policy stage: BF16 Qwen3-VL/flow action policy on WSL CPU and the pinned six-frame FP32 Cosmos encoder in Omni's external DirectML worker, with selected Radeon 890M and output-device placement verified. One warmup plus 20 serial patterned synthetic camera/state/noise requests returned identical finite `[1,50,32]` action chunks; nearest-rank complete-request wall p50/p95 was 3.120/3.197 s versus a separately run Omni CPU baseline of 3.175/3.219 s. The hybrid startup was 43.36 s versus CPU 40.03 s. Hybrid-vs-CPU action relative L2 difference was 2.305%, cosine 0.999737; no task tolerance exists. The FP32 encoder is an explicit precision change after DirectML BF16 aborted. The stage verified hashes, reserved 16 GiB shared host RAM, refused an insufficient reservation on the CPU route, emitted a terminal action event through public `AsyncOmni.generate`, and released its reservation after in-flight cancellation and shutdown. An initial hybrid shutdown quarantined 16 GiB; a lifecycle fix and reruns cleared it. This is output-device evidence, not internal per-op attribution or robot-task quality. The older direct hybrid's zero-input 2.952/3.322 s profile is a distinct fixture/runtime and cannot be compared as the same run. | Validate real observation/reference-action quality, physical units/order/step time, post-cancel restart, loading peak, concurrent admission and sustained tail/power before deployment; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_policy/README.md), [earlier direct hybrid/component evidence](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md). | | PC HX370 + AMD NPU / Windows worker | Spark-X2.5 | COMPONENT_PASS; NOT_E2E_PROFILEABLE | The real 1.7B output head (RMS norm and full 131,072-logit projection) ran through Omni `external.graph.v1` with VitisAI: one fused NPU partition and seven CPU nodes per request. The A16W8 graph matched top-1 on four captured activations (full-logit SNR 55.43–56.81 dB). One warmup plus 20 serial repeated-input component requests gave p50/p95 10.21/12.44 ms, versus 17.97/20.29 ms for the original FP32 output head on the same Omni CPU stage. NPU startup was 18.21 s versus 4.48 s for FP32 CPU, and NPU worker peak RSS was 3.52 GiB versus 2.06 GiB. No full prefill/decode/KV/sampling, real handoff, power, or sustained run was verified. | Measure an actual vLLM-to-output-head handoff and whole-generation cost, state/cancellation, memory admission and quality before considering a split plan; [component evidence](../../../e2e_expansion_20260923/evidence/spark_amd_npu_output_head/README.md). | | PC HX370 + AMD NPU / Windows worker | Qwen3-TTS 0.6B CustomVoice | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC HX370 + AMD NPU / Windows worker | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The tested A16W8 whole-vision-tower export failed NPU placement. This conclusion is specific to that export, not all future Qwen/NPU combinations. | Validate a supported export or smaller useful component, including same-checkpoint numerical quality. | diff --git a/docs/design/omni_edge_e2e_roadmap.md b/docs/design/omni_edge_e2e_roadmap.md index 14bb93646..889068e98 100644 --- a/docs/design/omni_edge_e2e_roadmap.md +++ b/docs/design/omni_edge_e2e_roadmap.md @@ -43,6 +43,20 @@ path, while real observations/reference actions, units/time, shared-RAM admission, cancellation and sustained benefit remain open. It does not turn the joint CPU+iGPU+NPU matrix cell into a pass. +A later [bounded Omni InternVLA whole-policy stage](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_omni_policy/README.md) +closes the admission and basic cancellation gaps for this **synthetic** path. +The strict-loaded CPU policy and optional FP32 Radeon Cosmos worker each ran +one warmup and 20 serial patterned requests with terminal action events. +Omni CPU complete-request p50/p95 was 3.175/3.219 s; CPU+Radeon was +3.120/3.197 s in a separate run. A 16 GiB shared-RAM reservation, 8 GiB +pre-launch refusal, a public hybrid `AsyncOmni.generate` request, and +in-flight hybrid abort with no stale output/remaining reservation passed. +The hybrid action difference from CPU was 2.305% relative L2 on this fixture, +without a task tolerance. A first hybrid shutdown quarantined its reservation; +the corrected process-tree retirement and reruns ended at zero. Real +observation/reference-action quality, physical units/order/step time, +post-cancel restart, loading peak and sustained benefit remain open. + The WSL RTX MiniCPM-o image-to-text+speech path now passes for one 448×448 synthetic red-square image under an explicit 0.61 thinker GPU budget. The previous 0.58 budget failed the 2,048-token KV admission gate; the successful @@ -197,7 +211,7 @@ capability and lifecycle implementation; a state-handle type alone is insufficie | M2 | Qwen3-TTS | Resolve desktop playback and shutdown findings and CPU compatibility; then mobile talker/predictor plus GPU vocoder | Complete PCM and tail, history/chunk correctness, interruption/recovery, quality checks, no post-startup underruns and RTF below 1 in the declared workload | | M3 | AMD stages | Connect compatible real encoders or other useful coarse stages through current Omni workers; start from the existing 890M vision evidence | Actual node/device placement, numerical and task quality, complete downstream output, shared-memory and handoff costs; reject unhelpful splits | | M4a | MiniCPM-o 4.5 | Three-stage desktop text+WAV produced coherent text and nonzero WAV on RTX 5090 Laptop under WSL and native Windows, and WSL CPU, using separate constrained plans. One synthetic red-square image and one synthetic tone each passed through the three-stage WSL RTX, native Windows RTX and WSL CPU paths to text and nonzero WAV. RTX text/token IDs matched across OS environments; CPU wording/token IDs differed while remaining plausible. The WSL RTX image plan needed a thinker GPU budget increase from 0.58 to 0.61 for KV admission. WSL multimodal shutdown cleanup remains open, including forced stage-0 termination on CPU. The CPU plan needed vLLM 0.28/0.29 processor compatibility and used swap; 20 serial **text** CPU requests measured p50 21.86 s/p95 22.97 s. Native Windows needed longer startup limits; 20 serial text requests measured p50 18.38 s/p95 18.73 s with host RAM/pagefile pressure. Add video encoder and persistent-state reference before mobile artifacts | Speech intelligibility/alignment, loading-peak admission, concurrency, broad image/audio-understanding suites, video, shutdown lifecycle, then combined streaming and interruption | -| M4b | InternVLA-A1 | Real weights, observation preprocessing, shared prefix state, iterative action head and versioned action metadata; strict-load synthetic policy forwards now pass on WSL and native Windows, each on CPU and RTX 5090 Laptop | Reference action agreement on real observations, units/order/timestamps, observation age, stale-input handling and application-specific deadline reporting | +| M4b | InternVLA-A1 | Strict-load synthetic policy forwards pass on WSL and native Windows CPU/RTX. A bounded WSL Omni whole-policy stage also passes on CPU and CPU+Radeon Cosmos with explicit shared-RAM admission, terminal action metadata and in-flight cancellation; the public hybrid entrypoint passes. This is not robot-task qualification. | Reference action agreement on real observations, physical units/order/step time, observation age and deadlines; post-cancel restart, loading peak, concurrency, power and thermal behavior. | | Independent | Qwen3.8-27B | Public Omni pipeline binding; text, then image/video and longer contexts; same-model CPU/iGPU artifact and explicit offload evaluation | Modality-specific quality, actual loading/runtime memory and measured performance; each precision/context receives its own qualification | The initial M0 desktop text acceptance remains scoped to its tested checkpoint, diff --git a/tests/edge/local/test_internvla_contract.py b/tests/edge/local/test_internvla_contract.py new file mode 100644 index 000000000..4353a898c --- /dev/null +++ b/tests/edge/local/test_internvla_contract.py @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: Apache-2.0 +"""The complete-policy stage must reject malformed observations before dispatch.""" + +from __future__ import annotations + +import io + +import numpy as np +import pytest + +from vllm_omni.engine.backends.internvla import InternVLAStageClient + + +def _prompt(): + return { + **{f"image{i}": np.zeros((1, 2, 3, 224, 224), np.float32) for i in range(3)}, + **{f"mask{i}": np.ones((1,), np.bool_) for i in range(3)}, + "state": np.zeros((1, 32), np.float32), + "noise": np.zeros((1, 50, 32), np.float32), + "task": "Place the marker pen in its holder.", + "observation_timestamp_ns": 1_000_000_000, + } + + +def test_action_observation_round_trip(): + raw = InternVLAStageClient._encode_prompt("request-1", _prompt()) + assert len(raw) < 8 << 20 + with np.load(io.BytesIO(raw), allow_pickle=False) as data: + assert str(data["request_id"].item()) == "request-1" + assert data["image0"].shape == (1, 2, 3, 224, 224) + assert data["mask0"].dtype == np.bool_ + assert int(data["observation_timestamp_ns"].item()) == 1_000_000_000 + + +@pytest.mark.parametrize("field,value", [ + ("image0", np.full((1, 2, 3, 224, 224), np.nan, np.float32)), + ("image1", np.full((1, 2, 3, 224, 224), 1.1, np.float32)), + ("mask2", np.ones((1,), np.uint8)), + ("state", np.zeros((1, 31), np.float32)), + ("noise", np.full((1, 50, 32), np.inf, np.float32)), + ("task", "x" * 4097), + ("observation_timestamp_ns", -1), +]) +def test_invalid_observation_rejected(field, value): + prompt = _prompt() + prompt[field] = value + with pytest.raises(ValueError): + InternVLAStageClient._encode_prompt("request-1", prompt) + + +def test_extra_observation_field_rejected(): + prompt = _prompt() + prompt["undocumented"] = 1 + with pytest.raises(ValueError): + InternVLAStageClient._encode_prompt("request-1", prompt) diff --git a/vllm_omni/config/pipeline_registry.py b/vllm_omni/config/pipeline_registry.py index e1c5d496c..f23d02d75 100644 --- a/vllm_omni/config/pipeline_registry.py +++ b/vllm_omni/config/pipeline_registry.py @@ -34,6 +34,7 @@ from vllm_omni.config.stage_config import ( ) from vllm_omni.config.vllm_native_pipelines import LLAMA_PIPELINE, QWEN3_5_PIPELINE from vllm_omni.diffusion.models.pi0_pipeline_config import PI0_PIPELINE +from vllm_omni.diffusion.models.internvla_a1_whole_pipeline import INTERNVLA_A1_WHOLE_POLICY_PIPELINE from vllm_omni.model_executor.models.audex.pipeline import ( AUDEX_S2S_PIPELINE, AUDEX_THINKER_ONLY_PIPELINE, @@ -172,6 +173,7 @@ OMNI_PIPELINES: dict[str, PipelineConfig | PipelineResolverFunc] = { "lingbot_world": LINGBOT_WORLD_PIPELINE, "Gr00tN1d7": GR00T_N1D7_PIPELINE, "pi0": PI0_PIPELINE, + "internvla_a1_external_whole": INTERNVLA_A1_WHOLE_POLICY_PIPELINE, "gepard": GEPARD_PIPELINE, "glm_image": GLM_IMAGE_PIPELINE, "hunyuan_image_3_moe": HUNYUAN_IMAGE3_PIPELINE, diff --git a/vllm_omni/diffusion/models/internvla_a1_whole_pipeline.py b/vllm_omni/diffusion/models/internvla_a1_whole_pipeline.py new file mode 100644 index 000000000..db0f88c38 --- /dev/null +++ b/vllm_omni/diffusion/models/internvla_a1_whole_pipeline.py @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Explicit whole-policy InternVLA CPU and CPU+Radeon deployment topology.""" + +from vllm_omni.config.stage_config import PipelineConfig, StageExecutionType, StagePipelineConfig + +INTERNVLA_A1_WHOLE_POLICY_PIPELINE = PipelineConfig( + model_type="internvla_a1_external_whole", + stages=( + StagePipelineConfig( + stage_id=0, + model_stage="action", + execution_type=StageExecutionType.GRAPH, + final_output=True, + final_output_type="action", + ), + ), +) diff --git a/vllm_omni/engine/backends/__init__.py b/vllm_omni/engine/backends/__init__.py index 6b817cbc7..8dc14bb9f 100644 --- a/vllm_omni/engine/backends/__init__.py +++ b/vllm_omni/engine/backends/__init__.py @@ -25,4 +25,8 @@ def create_graph_client(metadata, config, ledger, reservation): from .minicpmo_cpp import MiniCPMOCppStageClient return MiniCPMOCppStageClient(metadata, backend, ledger, reservation) + if name == "external.internvla.policy.v1": + from .internvla import InternVLAStageClient + + return InternVLAStageClient(metadata, backend, ledger, reservation) raise ValueError(f"unsupported complete-request stage backend: {name!r}") diff --git a/vllm_omni/engine/backends/internvla.py b/vllm_omni/engine/backends/internvla.py new file mode 100644 index 000000000..61970ecf0 --- /dev/null +++ b/vllm_omni/engine/backends/internvla.py @@ -0,0 +1,359 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Bounded whole-policy InternVLA stage on CPU or CPU plus Radeon Cosmos. + +The existing Omni diffusion policy owns action semantics. StageRuntime owns +shared-RAM admission, one in-flight request, terminal output and cancellation. +The isolated worker is retired on an in-flight abort; no state is replayed. +""" + +from __future__ import annotations + +import asyncio +import dataclasses +import io +import json +import os +import subprocess +import time +import urllib.error +import urllib.request +import uuid +from pathlib import Path +from typing import Any + +import numpy as np +from omni_stage_contracts import BufferRef, StageEvent, StageRequest + +from vllm_omni.engine.resource_ledger import ResourceUnavailable +from vllm_omni.outputs import OmniRequestOutput + +from .crisp_tts import CrispTTSStageClient, _local_port, _sha256 + + +def _post_actions(url: str, body: bytes, *, timeout: float, max_bytes: int) -> bytes: + request = urllib.request.Request( + url, data=body, headers={"Content-Type": "application/octet-stream"}, method="POST" + ) + with urllib.request.urlopen(request, timeout=timeout) as response: + if response.status != 200: + raise RuntimeError(f"InternVLA worker returned HTTP {response.status}") + payload = response.read(max_bytes + 1) + if len(payload) > max_bytes: + raise ResourceUnavailable("InternVLA action response exceeds admitted bound") + return payload + + +class InternVLAStageClient(CrispTTSStageClient): + """One complete action request under Omni's graph-stage control path.""" + + def __init__(self, metadata, config: dict, ledger, reservation) -> None: + for name, value in vars(metadata).items(): + setattr(self, name, value) + self.stage_type = "graph" + self._ledger, self._reservation = ledger, reservation + self._generation = uuid.uuid4().hex + self._proc: subprocess.Popen | None = None + self._log_stream = None + self._closed = False + self._active: str | None = None + self._task: asyncio.Task | None = None + self._output: OmniRequestOutput | None = None + self._epoch = 0 + self._memory_pool = str(config.get("memory_pool", "host_ram")) + self._max_input_bytes = int(config.get("max_input_bytes", 8 << 20)) + self._max_action_bytes = int(config.get("max_action_bytes", 1 << 20)) + self._request_timeout_s = float(config.get("request_timeout_s", 60)) + self._port = int(config.get("port") or _local_port()) + self._placement = str(config.get("placement", "")) + try: + if ( + self._placement not in {"cpu", "radeon-cosmos"} or self._max_input_bytes <= 0 + or self._max_action_bytes <= 0 or self._request_timeout_s <= 0 + or not 0 < self._port < 65536 + ): + raise ValueError("invalid InternVLA placement, request bounds, timeout or port") + if self._memory_pool not in reservation.demands: + raise ResourceUnavailable("InternVLA shared-RAM pool absent from stage reservation") + demand = reservation.demands[self._memory_pool] + if self._max_input_bytes + self._max_action_bytes > demand: + raise ResourceUnavailable("InternVLA I/O bound exceeds stage reservation") + + self._python = Path(config["python_bin"]).absolute() + if not self._python.is_file(): + raise FileNotFoundError(f"InternVLA interpreter absent: {self._python}") + self._model_dir = Path(config["model_dir"]).resolve(strict=True) + self._processor_dir = Path(config["processor_dir"]).resolve(strict=True) + self._cosmos_dir = Path(config["cosmos_dir"]).resolve(strict=True) + self._graph = Path(config["graph_file"]).resolve(strict=True) if self._placement == "radeon-cosmos" else None + self._worker = Path(__file__).with_name("internvla_worker.py").resolve(strict=True) + artifacts = { + "python": self._python, + "model": self._model_dir / "model.safetensors", + "model_config": self._model_dir / "config.json", + "train_config": self._model_dir / "train_config.json", + "stats": self._model_dir / "stats.json", + "cosmos_encoder": self._cosmos_dir / "encoder.safetensors", + "cosmos_decoder": self._cosmos_dir / "decoder.safetensors", + "processor_tokenizer": self._processor_dir / "tokenizer.json", + "processor_config": self._processor_dir / "preprocessor_config.json", + } + if self._graph is not None: + artifacts["graph"] = self._graph + hashes = dict(config["artifact_sha256"]) + if set(hashes) != set(artifacts): + raise ValueError("InternVLA artifact manifest has missing or unexpected entries") + for name, path in artifacts.items(): + if _sha256(path) != str(hashes[name]).lower(): + raise ValueError(f"InternVLA {name} differs from declared artifact hash") + overhead = int(config["memory_overhead_bytes"]) + artifact_bytes = sum(path.stat().st_size for name, path in artifacts.items() if name != "python") + if overhead <= 0 or artifact_bytes + overhead > demand: + raise ResourceUnavailable("InternVLA weights, graph and state/workspace/headroom exceed reservation") + + self._log_path = Path(config["log_file"]).resolve() + self._log_path.parent.mkdir(parents=True, exist_ok=True) + self._log_stream = self._log_path.open("wb") + env = os.environ.copy() + repo_root = Path(__file__).resolve().parents[3] + env.update({ + "PYTHONPATH": str(repo_root) + os.pathsep + env.get("PYTHONPATH", ""), + "CUDA_VISIBLE_DEVICES": "", "HF_HUB_OFFLINE": "1", "TRANSFORMERS_OFFLINE": "1", + "OMP_NUM_THREADS": "8", "MKL_NUM_THREADS": "8", "PYTHONUTF8": "1", + "TOKENIZERS_PARALLELISM": "false", + }) + command = [ + str(self._python), "-u", str(self._worker), + "--model-dir", str(self._model_dir), + "--processor-dir", str(self._processor_dir), + "--cosmos-dir", str(self._cosmos_dir), + "--placement", self._placement, + "--port", str(self._port), "--threads", "8", + "--max-input-bytes", str(self._max_input_bytes), + ] + if self._graph is not None: + command += ["--graph", str(self._graph), "--graph-sha256", hashes["graph"]] + flags = subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0 + self._proc = subprocess.Popen( + command, stdout=self._log_stream, stderr=subprocess.STDOUT, + env=env, creationflags=flags, + ) + base = f"http://127.0.0.1:{self._port}" + deadline = time.monotonic() + float(config.get("start_timeout_s", 180)) + while True: + if self._proc.poll() is not None: + raise RuntimeError(f"InternVLA worker exited during load; see {self._log_path}") + try: + with urllib.request.urlopen(base + "/health", timeout=1) as response: + if response.status == 200: + break + except (urllib.error.URLError, TimeoutError, OSError): + pass + if time.monotonic() >= deadline: + raise TimeoutError(f"InternVLA worker did not become ready; see {self._log_path}") + time.sleep(.2) + with urllib.request.urlopen(base + "/props", timeout=5) as response: + props = json.load(response) + expected_external = self._placement == "radeon-cosmos" + observed_external = props.get("external_load") + if ( + props.get("placement") != self._placement + or Path(props.get("model_dir", "")).resolve() != self._model_dir + or Path(props.get("processor_dir", "")).resolve() != self._processor_dir + or Path(props.get("cosmos_dir", "")).resolve() != self._cosmos_dir + or props.get("policy_device") != "cpu" + or props.get("runtime_mode") != "real_checkpoint_loaded" + or props.get("policy_dtype") != "bfloat16" + or props.get("cosmos_dtype") != ("float32" if expected_external else "bfloat16") + or props.get("action_shape") != [1, 50, 32] + or props.get("action_mode") != "delta" + or props.get("control_ready") is not False + or props.get("torch") != str(config["expected_torch"]) + or bool(observed_external) != expected_external + or (expected_external and observed_external.get("device_name") != "AMD Radeon(TM) 890M Graphics") + ): + raise RuntimeError("InternVLA worker model, precision or device differs from plan") + import psutil + + root = psutil.Process(self._proc.pid) + descendants = [root, *root.children(recursive=True)] + self._loaded_process_tree = [] + for process in descendants: + try: + memory = process.memory_full_info() + self._loaded_process_tree.append({ + "pid": process.pid, "rss_bytes": int(memory.rss), + "private_bytes": int(getattr(memory, "private", memory.rss)), + }) + except psutil.NoSuchProcess: + pass + self._loaded_rss_bytes = sum(row["rss_bytes"] for row in self._loaded_process_tree) + if self._loaded_rss_bytes > demand: + raise ResourceUnavailable("loaded InternVLA process tree exceeds stage reservation") + self._base_url = base + self.execution_plan = { + "backend": "external.internvla.policy.v1", "stage_id": self.stage_id, + "worker_generation": self._generation, "worker_pid": self._proc.pid, + "worker_script_sha256": _sha256(self._worker), + "artifact_sha256": hashes, "placement": self._placement, + "worker_props": props, "loaded_rss_bytes": self._loaded_rss_bytes, + "loaded_process_tree": self._loaded_process_tree, + "reserved_bytes": dict(reservation.demands), + "memory_overhead_bytes": overhead, + "max_input_bytes": self._max_input_bytes, + "max_action_bytes": self._max_action_bytes, + "request_capacity": 1, + "stateful_session": "InternVLA policy worker-owned; complete action chunk per request", + "evidence": "B", + } + except BaseException: + self.shutdown() + raise + + @staticmethod + def _encode_prompt(request_id: str, prompt: Any) -> bytes: + if not isinstance(prompt, dict): + raise ValueError("InternVLA prompt must contain camera histories and state") + expected = {"image0", "image1", "image2", "mask0", "mask1", "mask2", + "state", "task", "noise", "observation_timestamp_ns"} + if set(prompt) != expected: + raise ValueError("InternVLA observation fields differ from the declared contract") + arrays: dict[str, Any] = {} + for i in range(3): + image = np.asarray(prompt[f"image{i}"]) + mask = np.asarray(prompt[f"mask{i}"]) + if ( + image.dtype != np.float32 or image.shape != (1, 2, 3, 224, 224) + or not np.isfinite(image).all() or image.min() < 0 or image.max() > 1 + ): + raise ValueError("camera history must be finite normalized float32 [1,2,3,224,224]") + if mask.dtype != np.bool_ or mask.shape != (1,): + raise ValueError("camera mask must be bool [1]") + arrays[f"image{i}"] = image + arrays[f"mask{i}"] = mask + for name, shape in (("state", (1, 32)), ("noise", (1, 50, 32))): + value = np.asarray(prompt[name]) + if value.dtype != np.float32 or value.shape != shape or not np.isfinite(value).all(): + raise ValueError(f"{name} must be finite float32 {shape}") + arrays[name] = value + task = prompt["task"] + timestamp = prompt["observation_timestamp_ns"] + if not isinstance(task, str) or len(task.encode("utf-8")) > 4096: + raise ValueError("task must be a bounded string") + if type(timestamp) is not int or timestamp <= 0: + raise ValueError("observation timestamp must be positive Unix nanoseconds") + arrays.update(task=np.array(task), observation_timestamp_ns=np.int64(timestamp), + request_id=np.array(request_id)) + with io.BytesIO() as output: + np.savez(output, **arrays) + return output.getvalue() + + async def add_request_async(self, request_id: str, prompt: Any, params: Any = None) -> None: + self.check_health() + if self._active is not None: + raise ResourceUnavailable("InternVLA stage has an unacknowledged request; capacity is one") + body = self._encode_prompt(request_id, prompt) + if len(body) > self._max_input_bytes: + raise ResourceUnavailable("InternVLA observation exceeds admitted input bound") + self._epoch += 1 + request = StageRequest(request_id, self.stage_id, self._epoch, self._generation) + self._active = request_id + self._task = asyncio.create_task(self._run(request, body), name=f"internvla-{request_id}") + + async def _run(self, request: StageRequest, body: bytes) -> None: + try: + started = time.perf_counter() + data = await asyncio.to_thread( + _post_actions, self._base_url + "/v1/actions", body, + timeout=self._request_timeout_s, max_bytes=self._max_action_bytes, + ) + with np.load(io.BytesIO(data), allow_pickle=False) as response: + if set(response.files) != {"actions", "observation_timestamp_ns", + "generation_timestamp_ns", "request_id", "worker_wall_s"}: + raise ValueError("InternVLA response fields differ from declared action contract") + actions = np.asarray(response["actions"]) + observation_ns = int(response["observation_timestamp_ns"].item()) + generation_ns = int(response["generation_timestamp_ns"].item()) + returned_id = str(response["request_id"].item()) + worker_wall_s = float(response["worker_wall_s"].item()) + if (returned_id != request.request_id or actions.dtype != np.float32 + or actions.shape != (1, 50, 32) or not np.isfinite(actions).all() + or generation_ns < observation_ns): + raise ValueError("InternVLA worker returned invalid, stale or misrouted actions") + ref = BufferRef( + "actions", str(self.stage_id), self._generation, "float32", tuple(actions.shape), int(actions.nbytes) + ) + event = StageEvent( + request.request_id, self.stage_id, request.epoch, 1, "action", self._generation, + (ref,), terminal=True, + ) + output = OmniRequestOutput( + request_id=request.request_id, stage_id=self.stage_id, + final_output_type="action", + _custom_output={ + "actions": actions.copy(), "stage_event": dataclasses.asdict(event), + "action_metadata": { + "observation_timestamp_ns": observation_ns, + "generation_timestamp_ns": generation_ns, + "observation_age_s": (generation_ns - observation_ns) / 1e9, + "action_mode": "delta", "action_shape": [1, 50, 32], + "action_units": "unverified", "joint_order": "unverified", + "action_step_s": None, "control_ready": False, + }, + }, + metrics={"policy_wall_s": time.perf_counter() - started, + "worker_wall_s": worker_wall_s}, + ) + except asyncio.CancelledError: + raise + except Exception as exc: + output = OmniRequestOutput.from_error(request.request_id, str(exc)) + output.stage_id = self.stage_id + if not self._closed and self._epoch == request.epoch: + loop = asyncio.get_running_loop() + output._stage_release = lambda: loop.call_soon_threadsafe( + self.acknowledge, request.request_id, request.epoch, request.worker_generation + ) + self._output = output + + def _terminate(self) -> bool: + """Retire both the policy server and its possible DirectML child.""" + import psutil + + children = [] + try: + if self._proc is not None: + children = psutil.Process(self._proc.pid).children(recursive=True) + except psutil.NoSuchProcess: + pass + except psutil.Error: + return False + for child in reversed(children): + try: + child.terminate() + except psutil.NoSuchProcess: + pass + except psutil.Error: + return False + # The policy process is the worker's parent and may be the one that + # reaps it. Retire the parent before deciding a transient zombie means + # the shared-RAM reservation must remain quarantined. + parent_drained = super()._terminate() + _, alive = psutil.wait_procs(children, timeout=5) + for child in alive: + try: + if child.status() != psutil.STATUS_ZOMBIE: + child.kill() + except psutil.NoSuchProcess: + pass + except psutil.Error: + return False + _, alive = psutil.wait_procs(alive, timeout=5) + for child in alive: + try: + if child.status() != psutil.STATUS_ZOMBIE: + return False + except psutil.NoSuchProcess: + pass + except psutil.Error: + return False + return parent_drained diff --git a/vllm_omni/engine/backends/internvla_worker.py b/vllm_omni/engine/backends/internvla_worker.py new file mode 100644 index 000000000..3c45b9a44 --- /dev/null +++ b/vllm_omni/engine/backends/internvla_worker.py @@ -0,0 +1,246 @@ +# SPDX-License-Identifier: Apache-2.0 +"""CPU InternVLA action worker with an optional Radeon Cosmos encoder. + +The policy remains the existing Omni diffusion implementation. Requests carry +explicit normalized camera histories and state; the worker owns policy state +and, for the hybrid route, Omni's existing external DirectML graph worker. +""" + +from __future__ import annotations + +import argparse +import hashlib +import io +import json +import os +import time +import traceback +import zipfile +from http.server import BaseHTTPRequestHandler, HTTPServer +from pathlib import Path + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as source: + for block in iter(lambda: source.read(8 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--model-dir", type=Path, required=True) + parser.add_argument("--processor-dir", type=Path, required=True) + parser.add_argument("--cosmos-dir", type=Path, required=True) + parser.add_argument("--placement", choices=("cpu", "radeon-cosmos"), required=True) + parser.add_argument("--graph", type=Path) + parser.add_argument("--graph-sha256") + parser.add_argument("--port", type=int, required=True) + parser.add_argument("--threads", type=int, default=8) + parser.add_argument("--max-input-bytes", type=int, default=8 << 20) + args = parser.parse_args() + if not 0 < args.port < 65536 or not 0 < args.threads <= 24 or args.max_input_bytes <= 0: + parser.error("invalid port, threads or input bound") + if args.placement == "radeon-cosmos" and (args.graph is None or not args.graph_sha256): + parser.error("Radeon route requires a graph and hash") + if os.environ.get("CUDA_VISIBLE_DEVICES") != "": + raise RuntimeError("InternVLA CPU worker requires CUDA_VISIBLE_DEVICES empty") + if os.environ.get("HF_HUB_OFFLINE") != "1": + raise RuntimeError("InternVLA worker requires offline checkpoint loading") + + model_dir = args.model_dir.resolve(strict=True) + processor_dir = args.processor_dir.resolve(strict=True) + cosmos_dir = args.cosmos_dir.resolve(strict=True) + os.environ["INTERNVLA_A1_COSMOS_DIR"] = str(cosmos_dir) + os.environ["INTERNVLA_A1_PROCESSOR_DIR"] = str(processor_dir) + + import numpy as np + import torch + + from vllm_omni.diffusion.data import OmniDiffusionConfig + from vllm_omni.diffusion.registry import initialize_model + from vllm_omni.diffusion.request import OmniDiffusionRequest + from vllm_omni.diffusion.worker.request_batch import DiffusionRequestBatch + from vllm_omni.inputs.data import OmniDiffusionSamplingParams + + torch.set_num_threads(args.threads) + config = OmniDiffusionConfig( + model=str(model_dir), model_class_name="InternVLAA1Pipeline", dtype=torch.bfloat16, + custom_pipeline_args={ + "device": "cpu", "dtype": "bfloat16", "compile_model": False, + "enable_regional_compile": False, "enable_warmup": False, + "strict_load": True, "processor_model_name": str(processor_dir), + }, + ) + started = time.perf_counter() + pipeline = initialize_model(config) + policy_load_s = time.perf_counter() - started + if pipeline.runtime_mode() != "real_checkpoint_loaded": + raise RuntimeError("InternVLA real checkpoint did not load") + if {parameter.device.type for parameter in pipeline.policy.parameters()} != {"cpu"}: + raise RuntimeError("InternVLA policy parameters did not remain on CPU") + + external = None + external_report = None + if args.placement == "radeon-cosmos": + from vllm_omni.edge.local.external.client import ExternalWorker + from vllm_omni.edge.local.external.launch import ROUTE_TORCH_DML, resolve + + graph = args.graph.resolve(strict=True) + if _sha256(graph) != args.graph_sha256.lower(): + raise RuntimeError("Radeon Cosmos graph hash differs from plan") + route = resolve(ROUTE_TORCH_DML) + if not route.available: + raise RuntimeError(f"DirectML worker route unavailable: {route.reason}") + external = ExternalWorker(route, max_payload_bytes=args.max_input_bytes) + try: + external.start() + external_report = external.load( + graph, example_inputs={"pixels": np.zeros((6, 3, 256, 256), dtype=np.float32)} + ) + if ( + external_report.device_name != "AMD Radeon(TM) 890M Graphics" + or external_report.placement_granularity != "output_device" + or external_report.fraction_on_target != 1.0 + or tuple(external_report.outputs[0]["shape"]) != (6, 16, 32, 32) + ): + raise RuntimeError("Radeon Cosmos output placement/shape differs from plan") + + class RemoteEncoder(torch.nn.Module): + def forward(self, pixels: torch.Tensor) -> torch.Tensor: + if pixels.device.type != "cpu" or tuple(pixels.shape) != (6, 3, 256, 256): + raise ValueError("Cosmos input differs from fixed six-frame CPU contract") + output, _ = external.run({"pixels": pixels.detach().float().contiguous().numpy()}) + latent = output["out_0"] + if latent.shape != (6, 16, 32, 32) or not np.isfinite(latent).all(): + raise RuntimeError("Radeon Cosmos returned invalid latent") + return torch.from_numpy(latent).to(pixels.dtype) + + pipeline.policy.model.cosmos._enc_model = RemoteEncoder() + except BaseException: + external.close() + raise + + props = { + "model_dir": str(model_dir), "processor_dir": str(processor_dir), + "cosmos_dir": str(cosmos_dir), "placement": args.placement, + "torch": torch.__version__, "policy_dtype": "bfloat16", + "cosmos_dtype": "float32" if external is not None else "bfloat16", + "policy_device": "cpu", "runtime_mode": pipeline.runtime_mode(), + "policy_load_s": policy_load_s, "action_shape": [1, 50, 32], + "image_shape": [1, 2, 3, 224, 224], "state_shape": [1, 32], + "action_mode": "delta", "action_units": "unverified", + "action_joint_order": "unverified", "action_step_s": None, + "control_ready": False, + "external_load": external_report.to_dict() if external_report else None, + } + + class Handler(BaseHTTPRequestHandler): + def _json(self, code: int, value: dict) -> None: + body = json.dumps(value).encode("utf-8") + self.send_response(code) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def do_GET(self) -> None: + if self.path == "/health": + self._json(200, {"status": "ok"}) + elif self.path == "/props": + self._json(200, props) + else: + self._json(404, {"error": "unknown endpoint"}) + + def do_POST(self) -> None: + if self.path != "/v1/actions": + self._json(404, {"error": "unknown endpoint"}) + return + size = int(self.headers.get("Content-Length", "0")) + if not 0 < size <= args.max_input_bytes: + self._json(413, {"error": "observation exceeds admitted input bound"}) + return + try: + raw = self.rfile.read(size) + with zipfile.ZipFile(io.BytesIO(raw)) as archive: + if (len(archive.infolist()) != 11 or + any(info.compress_type != zipfile.ZIP_STORED for info in archive.infolist()) or + sum(info.file_size for info in archive.infolist()) > args.max_input_bytes): + raise ValueError("observation archive exceeds uncompressed bound") + with np.load(io.BytesIO(raw), allow_pickle=False) as data: + expected = { + "image0", "image1", "image2", "mask0", "mask1", "mask2", + "state", "task", "noise", "observation_timestamp_ns", "request_id", + } + if set(data.files) != expected: + raise ValueError("observation fields differ from the declared contract") + images = [np.asarray(data[f"image{i}"]) for i in range(3)] + masks = [np.asarray(data[f"mask{i}"]) for i in range(3)] + state = np.asarray(data["state"]) + noise = np.asarray(data["noise"]) + task = str(data["task"].item()) + request_id = str(data["request_id"].item()) + observation_ns = int(data["observation_timestamp_ns"].item()) + if len(task.encode("utf-8")) > 4096 or not request_id or observation_ns <= 0: + raise ValueError("invalid task, request identity or observation time") + for image in images: + if (image.dtype != np.float32 or image.shape != (1, 2, 3, 224, 224) + or not np.isfinite(image).all() or image.min() < 0 or image.max() > 1): + raise ValueError("camera history must be finite normalized float32 [1,2,3,224,224]") + for mask in masks: + if mask.dtype != np.bool_ or mask.shape != (1,): + raise ValueError("camera mask must be bool [1]") + if state.dtype != np.float32 or state.shape != (1, 32) or not np.isfinite(state).all(): + raise ValueError("state must be finite float32 [1,32]") + if noise.dtype != np.float32 or noise.shape != (1, 50, 32) or not np.isfinite(noise).all(): + raise ValueError("noise must be finite float32 [1,50,32]") + batch = {"observation.state": torch.from_numpy(state.copy()).to(torch.bfloat16), + "observation.task": [task]} + for i in range(3): + batch[f"observation.images.image{i}"] = torch.from_numpy(images[i].copy()).to(torch.bfloat16) + batch[f"observation.images.image{i}_mask"] = torch.from_numpy(masks[i].copy()) + started = time.perf_counter() + result = pipeline.forward(DiffusionRequestBatch(requests=[ + OmniDiffusionRequest( + prompt="", + sampling_params=OmniDiffusionSamplingParams(extra_args={ + "batch_inputs": batch, "noise": torch.from_numpy(noise.copy()), + "decode_image": False, + }), + request_id=request_id, + ) + ])) + if result.error: + raise RuntimeError(result.error) + actions = result.output["payload"]["actions"] + if actions.device.type != "cpu" or tuple(actions.shape) != (1, 50, 32): + raise RuntimeError("policy action device or shape differs from plan") + values = actions.detach().float().cpu().contiguous().numpy() + if not np.isfinite(values).all(): + raise RuntimeError("policy returned nonfinite actions") + with io.BytesIO() as out: + np.savez(out, actions=values, observation_timestamp_ns=np.int64(observation_ns), + generation_timestamp_ns=np.int64(time.time_ns()), request_id=np.array(request_id), + worker_wall_s=np.float64(time.perf_counter() - started)) + body = out.getvalue() + self.send_response(200) + self.send_header("Content-Type", "application/octet-stream") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + except Exception as exc: + traceback.print_exc() + self._json(500, {"error": f"{type(exc).__name__}: {exc}"}) + + try: + with HTTPServer(("127.0.0.1", args.port), Handler) as server: + print(f"internvla-worker ready port={args.port} props={json.dumps(props)}", flush=True) + server.serve_forever(poll_interval=0.1) + finally: + if external is not None: + external.close() + + +if __name__ == "__main__": + main()