Add admitted InternVLA policy stages and update device matrix

This commit is contained in:
tzhouam committed 2026-09-24 01:42:41 +08:00
1 parent 9df5ac8836
commit 48646da78e
38 files changed
+7221 -7

No files matched your search

@@ -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())
@@ -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())
@@ -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 |
|---|---|---|---|
@@ -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.
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -0,0 +1,24 @@
W0924 01:41:36.991000 3707835 torch/utils/_pytree.py:630] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 <module>
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'
@@ -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"
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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"
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -0,0 +1,367 @@
/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:16.806000 3706898 torch/utils/_pytree.py:630] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -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)"
]
}
}
@@ -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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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)"
]
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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 -
@@ -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": []
}
}
@@ -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] <enum 'KernelPreference'> 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] <enum 'ScaleCalculationMode'> 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": []
}
}
@@ -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. |
+15 -1
View File
@@ -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,
@@ -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)
+2
View File
@@ -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,
@@ -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",
),
),
)
+4
View File
@@ -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}")
+359
View File
@@ -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
@@ -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()