{
  "schema_version": 1,
  "captured_at": "2026-09-16T16:43:09.625545+00:00",
  "model": {
    "id": "lerobot/diffusion_pusht",
    "revision": "84a7c23178445c6bbf7e1a884ff497017910f653",
    "sha256": "995d14d35db57d95c35ad9704c3d79c8612b7bc45f3877e5c46c2cdc516856a8",
    "converted_sha256": "3367c7236d7a0d6da74e28cde1514ecc7b31470ec028e244cf28c93f93e0b5d6"
  },
  "processor": {
    "id": "lerobot/diffusion_pusht",
    "revision": "84a7c23178445c6bbf7e1a884ff497017910f653",
    "stats": {
      "observation.image": {
        "mean": [
          [
            [
              0.48500001430511475
            ]
          ],
          [
            [
              0.4560000002384186
            ]
          ],
          [
            [
              0.4059999883174896
            ]
          ]
        ],
        "std": [
          [
            [
              0.2290000021457672
            ]
          ],
          [
            [
              0.2240000069141388
            ]
          ],
          [
            [
              0.22499999403953552
            ]
          ]
        ]
      },
      "observation.state": {
        "max": [
          496.14617919921875,
          510.9578857421875
        ],
        "min": [
          13.45642375946045,
          32.93829345703125
        ]
      }
    },
    "config_sha256": "d391a7bf488accd1c26b2043482f0060b0855b1ec236f3d7358486918472c0a5"
  },
  "contract": {
    "observation_schema_hash": "2dde368a238be30a27b8a7c243b724c51d7c744946f28e439c2afc625e2904fe",
    "observation_steps": 2,
    "action_steps": 8,
    "action_dim": 2,
    "batch_size": 1,
    "inference_steps": 10,
    "action_units": "dataset",
    "normalization": "minmax",
    "solver": "ddim"
  },
  "hardware": {
    "host": "Jankowski",
    "os": "Windows-10-10.0.26200-SP0",
    "cpu": "Intel64 Family 6 Model 158 Stepping 13, GenuineIntel",
    "threads": 1,
    "compiler": "Clang 23.1.0 (https://github.com/llvm/llvm-project ea7d852a70e8bdfaf601d6626a760f9771b2c4b4)",
    "build_type": "Release"
  },
  "commands": {
    "flowedge": "C:\\Users\\igorj\\Desktop\\FlowEdge\\venv\\Scripts\\python.exe -m flowedge_lerobot.benchmark models\\diffusion_pusht.flowedge.safetensors --source models\\diffusion_pusht --revision 84a7c23178445c6bbf7e1a884ff497017910f653 --model-id lerobot/diffusion_pusht --steps 10 --iterations 20 --warmup 2 --threads 1 --seed 7 --output bench\\artifacts\\policy\\diffusion-pusht-cpu-replay.json",
    "lerobot": "C:\\Users\\igorj\\Desktop\\FlowEdge\\venv\\Scripts\\python.exe -m flowedge_lerobot.benchmark models\\diffusion_pusht.flowedge.safetensors --source models\\diffusion_pusht --revision 84a7c23178445c6bbf7e1a884ff497017910f653 --model-id lerobot/diffusion_pusht --steps 10 --iterations 20 --warmup 2 --threads 1 --seed 7 --output bench\\artifacts\\policy\\diffusion-pusht-cpu-replay.json"
  },
  "comparison": {
    "candidate": "FlowEdge native runtime",
    "reference": "LeRobot policy executed with PyTorch",
    "reference_framework": "PyTorch",
    "scope": "matched observation encoder, history, noise, and DDIM schedule"
  },
  "measurements": {
    "flowedge": {
      "status": "measured",
      "startup_ms": 962.549,
      "encoder_ms": {
        "p50": 38.59585,
        "p95": 40.18542,
        "p99": 40.997404
      },
      "policy_ms": {
        "p50": 851.22795,
        "p95": 865.9710399999999,
        "p99": 867.269728
      },
      "end_to_end_ms": {
        "p50": 889.24315,
        "p95": 906.59618,
        "p99": 906.988036
      },
      "throughput_hz": 1.1224362055806112,
      "rss_mb": 3357.39453125,
      "rss_reason": "",
      "allocations": {
        "setup": null,
        "hot_path": null,
        "reason": "Python/PyTorch/native process allocations are not instrumented by this runner"
      }
    },
    "lerobot": {
      "status": "measured",
      "startup_ms": 1011.8278,
      "encoder_ms": {
        "p50": 38.536950000000004,
        "p95": 39.63016,
        "p99": 40.012592
      },
      "policy_ms": {
        "p50": 1409.15605,
        "p95": 1429.392005,
        "p99": 1446.317281
      },
      "end_to_end_ms": {
        "p50": 1447.99385,
        "p95": 1469.4750450000001,
        "p99": 1486.017889
      },
      "throughput_hz": 0.689055007877983,
      "rss_mb": 3357.39453125,
      "rss_reason": "",
      "allocations": {
        "setup": null,
        "hot_path": null,
        "reason": "Python/PyTorch/native process allocations are not instrumented by this runner"
      }
    }
  },
  "raw_samples": {
    "flowedge": {
      "encoder_ms": [
        38.6394,
        39.5694,
        39.2053,
        37.7824,
        38.6675,
        38.5523,
        41.2004,
        38.976,
        39.0716,
        38.0535,
        40.132,
        38.248,
        38.6548,
        38.4747,
        39.2594,
        38.3046,
        38.3577,
        38.3907,
        38.4437,
        37.7576
      ],
      "policy_ms": [
        851.981,
        851.7681,
        846.6591,
        851.5651,
        849.741,
        842.0986,
        865.8856,
        867.5944,
        859.2294,
        842.1705,
        859.2393,
        850.8908,
        848.219,
        848.4198,
        856.5344,
        853.009,
        850.2429,
        848.1378,
        856.2446,
        843.0132
      ],
      "end_to_end_ms": [
        890.6204,
        891.3375,
        885.8644,
        889.3475,
        888.4085,
        880.6509,
        907.086,
        906.5704,
        898.301,
        880.224,
        899.3713,
        889.1388,
        886.8738,
        886.8945,
        895.7938,
        891.3136,
        888.6006,
        886.5285,
        894.6883,
        880.7708
      ]
    },
    "lerobot": {
      "encoder_ms": [
        38.7996,
        37.808,
        38.913,
        39.2456,
        39.3367,
        38.4636,
        39.0845,
        39.4512,
        38.4619,
        38.5201,
        38.126,
        40.1082,
        39.2972,
        38.43,
        38.3742,
        37.7926,
        38.4015,
        38.5538,
        37.9905,
        39.605
      ],
      "policy_ms": [
        1410.7204,
        1414.0655,
        1402.6044,
        1409.5728,
        1401.5103,
        1421.513,
        1424.8193,
        1425.3303,
        1397.2728,
        1401.2764,
        1427.5525,
        1428.2785,
        1405.0782,
        1408.7393,
        1411.739,
        1402.2721,
        1401.8947,
        1403.1302,
        1402.5774,
        1450.5486
      ],
      "end_to_end_ms": [
        1449.52,
        1451.8735,
        1441.5174,
        1448.8184,
        1440.847,
        1459.9766,
        1463.9038,
        1464.7815,
        1435.7347,
        1439.7965,
        1465.6785,
        1468.3867,
        1444.3754,
        1447.1693,
        1450.1132,
        1440.0647,
        1440.2962,
        1441.684,
        1440.5679,
        1490.1536
      ]
    }
  },
  "parity": {
    "max_abs_error": 3.0517578125e-05,
    "atol": 0.001,
    "rtol": 0.0001
  },
  "fixture": {
    "file": "diffusion-pusht-cpu-replay.observations.npz",
    "sha256": "0e2616b6312a6f0682a7307682e4701011499a473f80ee734f570d438cccd60f",
    "seed": 7
  },
  "versions": {
    "torch": "2.10.0",
    "lerobot": "0.4.4",
    "gym-pusht": "0.1.5",
    "numpy": "2.2.6"
  },
  "iterations": 20,
  "warmup": 2,
  "limitations": [
    "CPU full-policy replay of one fixed PushT observation history; not closed-loop task success.",
    "End-to-end includes preprocessing, encoder, history and sampling; excludes camera capture, IPC and robot delivery.",
    "RSS is shared process high-water memory with both implementations resident, not per-backend memory.",
    "Allocations are unmeasured; no zero-allocation claim applies to this Python visual pipeline.",
    "Startup excludes interpreter/import time and uses the existing filesystem cache.",
    "Small iteration counts do not establish stable p99 estimates."
  ]
}
