{
  "status": "complete",
  "updated": "2026-09-17T18:59:55+08:00",
  "scope": "Thor AGX supplemental measurement: CUDA only; 3/6/15 seconds; bulk/realtime; RAM, not disk.",
  "source": {
    "branch": "feat/orin-tensorrt",
    "head_after_timestamp_amend": "bd4db3ec6aaf66b60e84d4eaa2aa6a0474b12ad3",
    "tree": "e452c6f497860e28b6770bbf379d6e200640f607",
    "image": "registry.devops.foxconn.com/srdc/agent/stt/kitt-stt:v6.0.0-1-gdc02dde-thor@sha256:094168690d918efb07af59b12f097315e938021923f2833c1dd11c14b7296e5e",
    "model": "sherpa-onnx-sense-voice-kitt-wake-exit-vocab-lora-v3b",
    "model_sha256": "f088d0f02dda9abf882aadc76f793610b6483e80d8ac0546f509b006fb26a5ea",
    "ort": "1.24.0",
    "sherpa_onnx": "1.13.0+cuda"
  },
  "method": {
    "deploy": "./deploy.sh on the thor-agx-1 context, without -t",
    "service_script": "tests/batch_decode/hardware_profile.py",
    "direct_script": "tests/batch_decode/provider_recheck.py",
    "service_rounds": 3,
    "warmup": 0,
    "connection": "one WebSocket per round, 3/6/15 seconds in order; bulk and realtime each once",
    "audio_sha256": {
      "3s": "11034b66e2ae87bdec98dfe7401642387b85262b2e9c222b9e201030dc397a1c",
      "6s": "9566be6ccf6c7307830514e0fe5be86250c493efaef2800f27bfccc1ca1850b0",
      "15s": "4950a411664da365f4b8cfe13838f881430f01f2fed8b2c3335719f6b791ff9f"
    }
  },
  "service_final_asr": {
    "bulk": [
      {"seconds": 3, "samples_ms": [75.76, 84.61, 78.46], "median_ms": 78.46, "range_ms": [75.76, 84.61]},
      {"seconds": 6, "samples_ms": [136.35, 122.45, 118.16], "median_ms": 122.45, "range_ms": [118.16, 136.35]},
      {"seconds": 15, "samples_ms": [192.25, 210.71, 211.0], "median_ms": 210.71, "range_ms": [192.25, 211.0]}
    ],
    "realtime": [
      {"seconds": 3, "samples_ms": [83.68, 78.36, 79.65], "median_ms": 79.65, "range_ms": [78.36, 83.68]},
      {"seconds": 6, "samples_ms": [91.35, 89.87, 80.21], "median_ms": 89.87, "range_ms": [80.21, 91.35]},
      {"seconds": 15, "samples_ms": [145.97, 147.93, 127.9], "median_ms": 145.97, "range_ms": [127.9, 147.93]}
    ]
  },
  "direct_cuda": {
    "graph": [
      {"frames": 50, "p50_ms": 35.10, "p95_ms": 37.37},
      {"frames": 100, "p50_ms": 35.74, "p95_ms": 38.20},
      {"frames": 250, "p50_ms": 41.07, "p95_ms": 41.79}
    ],
    "recognizer": [
      {"seconds": 3, "p50_ms": 23.91, "p95_ms": 24.26, "load_s": 1.667},
      {"seconds": 6, "p50_ms": 30.97, "p95_ms": 31.40, "load_s": 1.539},
      {"seconds": 15, "p50_ms": 53.84, "p95_ms": 55.10, "load_s": 1.507}
    ]
  },
  "memory_mib": {
    "ready": {"cgroup_current": 1368.30, "pss": 1438.17, "rss": 1460.63, "vmhwm": 1497.40, "cgroup_peak": 1410.16},
    "after_inference": {"cgroup_current": 2216.83, "pss": 1887.51, "rss": 1909.70, "vmhwm": 1945.24, "cgroup_peak": 6495.59},
    "note": "cgroup_peak includes temporary direct graph/recognizer processes. Use after_inference.cgroup_current for the steady service footprint after those processes exited. Thor uses shared LPDDR; no separate per-process VRAM metric exists."
  },
  "tensorrt": {
    "status": "not-supported",
    "reason": "libonnxruntime_providers_tensorrt.so resolves libnvinfer.so.10 and libnvonnxparser.so.10 as not found. A TensorRT EP session falls back to CPU, so no Online/Offline TRT latency is reported."
  },
  "local_evidence": "tests/batch_decode/results/thor_cycle_20260917/"
}
