feat(perception): add occupied-only low-step shadow
This commit is contained in:
@@ -383,6 +383,7 @@ def main() -> int:
|
||||
):
|
||||
parser.add_argument(f"--{name}", type=Path, required=True)
|
||||
parser.add_argument("--triton-origin", default="http://127.0.0.1:8000")
|
||||
parser.add_argument("--additive-low-step-profile", type=Path)
|
||||
parser.add_argument("--loops", type=int, default=1)
|
||||
parser.add_argument("--maximum-frames", type=int)
|
||||
parser.add_argument("--source-rate-hz", type=float)
|
||||
@@ -477,6 +478,7 @@ def main() -> int:
|
||||
decode_timing_observer=timing_store.observe_decode,
|
||||
source_pacing_observer=timing_store.observe_pacing,
|
||||
detector_timing_observer=timing_store.observe_detector,
|
||||
additive_low_step_profile=arguments.additive_low_step_profile,
|
||||
maximum_frames=arguments.maximum_frames,
|
||||
source_rate_hz=arguments.source_rate_hz,
|
||||
) as runtime:
|
||||
@@ -685,7 +687,11 @@ def main() -> int:
|
||||
"worker_id": "worker-006",
|
||||
"graph_id": "reference-perception-graph/v2",
|
||||
"detector_provider_id": detector_provider_id,
|
||||
"inputs": _input_digests(paths, arguments.detector_profile),
|
||||
"inputs": _input_digests(
|
||||
paths,
|
||||
arguments.detector_profile,
|
||||
arguments.additive_low_step_profile,
|
||||
),
|
||||
"runtime_artifact_sha256": arguments.runtime_artifact_sha256,
|
||||
"runner_sha256": arguments.runner_sha256,
|
||||
},
|
||||
@@ -1105,12 +1111,15 @@ def _gc_telemetry_summary(events: list[dict[str, object]]) -> dict[str, object]:
|
||||
def _input_digests(
|
||||
paths: ReferenceGraphRuntimePaths,
|
||||
detector_profile: Path,
|
||||
additive_low_step_profile: Path | None = None,
|
||||
) -> dict[str, str]:
|
||||
values = {
|
||||
field.name: _sha256(getattr(paths, field.name))
|
||||
for field in fields(ReferenceGraphRuntimePaths)
|
||||
}
|
||||
values["detector_profile"] = _sha256(detector_profile)
|
||||
if additive_low_step_profile is not None:
|
||||
values["additive_low_step_profile"] = _sha256(additive_low_step_profile)
|
||||
return dict(sorted(values.items()))
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ param(
|
||||
[double]$MinimumEffectiveWorldStateFps = 9.5,
|
||||
[ValidateRange(1.0, 10000.0)]
|
||||
[double]$MaximumWorldStateCompletionP95Ms = 125.0,
|
||||
[switch]$AdditiveLowStep,
|
||||
[string]$OutputRoot = (
|
||||
"D:\NDC_MISSIONCORE\runtime\results\m48n-native-reference-graph-shadow"
|
||||
)
|
||||
@@ -109,6 +110,15 @@ $expectedConfigs = [ordered]@{
|
||||
"8c3a5aa837da1f028f5998fb504a1381f9b2b68de6420a32160410b6dc0887c7"
|
||||
)
|
||||
}
|
||||
if ($AdditiveLowStep) {
|
||||
$expectedConfigs.Remove("m48n-rf-detr-native-reference-graph-shadow-v0.json")
|
||||
$expectedConfigs["m48r3-native-low-step-reference-graph-shadow-v1.json"] = (
|
||||
"d5434825c3a73a9a070aea37927755771e07d38a017111d2014a8e8c88969227"
|
||||
)
|
||||
$expectedConfigs["m48r3-additive-low-step-occupancy-v1.json"] = (
|
||||
"62dd41400169080e1a38f713b283b67cdf201078c4c7fd807783fe6c1838082c"
|
||||
)
|
||||
}
|
||||
foreach ($entry in $expectedConfigs.GetEnumerator()) {
|
||||
$null = Assert-File (Join-Path $release $entry.Key) $entry.Value (
|
||||
"M48N config {0}" -f $entry.Key
|
||||
@@ -203,8 +213,16 @@ if (-not $canonicalTriton.State.Running -or $canonicalTriton.State.Health.Status
|
||||
throw "Canonical Triton must remain healthy during M48N shadow"
|
||||
}
|
||||
$canonicalTritonId = [string]$canonicalTriton.Id
|
||||
$tritonName = "ndc-mission-core-m48n-native-reference-graph-triton"
|
||||
$graphName = "ndc-mission-core-m48n-native-reference-graph"
|
||||
$tritonName = if ($AdditiveLowStep) {
|
||||
"ndc-mission-core-m48r3-low-step-triton"
|
||||
} else {
|
||||
"ndc-mission-core-m48n-native-reference-graph-triton"
|
||||
}
|
||||
$graphName = if ($AdditiveLowStep) {
|
||||
"ndc-mission-core-m48r3-low-step-reference-graph"
|
||||
} else {
|
||||
"ndc-mission-core-m48n-native-reference-graph"
|
||||
}
|
||||
foreach ($name in @($tritonName, $graphName)) {
|
||||
if (& docker ps -a --format "{{.Names}}" --filter "name=^/$name$") {
|
||||
throw "M48N candidate container $name already exists"
|
||||
@@ -263,6 +281,19 @@ try {
|
||||
throw "M48N Triton published a host port"
|
||||
}
|
||||
|
||||
$graphConfigName = if ($AdditiveLowStep) {
|
||||
"m48r3-native-low-step-reference-graph-shadow-v1.json"
|
||||
} else {
|
||||
"m48n-rf-detr-native-reference-graph-shadow-v0.json"
|
||||
}
|
||||
$additiveArguments = if ($AdditiveLowStep) {
|
||||
@(
|
||||
"--additive-low-step-profile",
|
||||
"/release/m48r3-additive-low-step-occupancy-v1.json"
|
||||
)
|
||||
} else {
|
||||
@()
|
||||
}
|
||||
$arguments = @(
|
||||
"run", "--name", $graphName,
|
||||
"--label", "com.nodedc.product=mission-core",
|
||||
@@ -294,7 +325,7 @@ try {
|
||||
"--entrypoint", "python3",
|
||||
$image,
|
||||
"/release/run_m48s_reference_graph_shadow_worker.py",
|
||||
"--graph-config", "/release/m48n-rf-detr-native-reference-graph-shadow-v0.json",
|
||||
"--graph-config", ("/release/{0}" -f $graphConfigName),
|
||||
"--baseline-profile", "/release/m4-recorded-realtime-baseline-v1.json",
|
||||
"--detector-profile", "/release/rf-detr-large-native-kb4-risk-shadow-v0.json",
|
||||
"--geometry-profile", "/release/m4-geometry-association-v1.json",
|
||||
@@ -331,7 +362,7 @@ try {
|
||||
"--output", "/output/result.json",
|
||||
"--progress", "/output/progress.jsonl",
|
||||
"--frame-ledger", "/output/frames.jsonl"
|
||||
)
|
||||
) + $additiveArguments
|
||||
& docker @arguments
|
||||
Assert-LastExitCode "M48N native complete reference graph shadow"
|
||||
foreach ($name in @("result.json", "frames.jsonl", "progress.jsonl")) {
|
||||
|
||||
Reference in New Issue
Block a user