{
  "schemaVersion": 1,
  "lessonId": "deployment-06",
  "contentHash": "c543e431adadcd9167421861846fa832f48eb681f9d3d667ca20bec9ea696264",
  "rendererHash": "a1bd5b648f4731ae5d5f0a24811c2540d1a0a132149ce589d17c4113509cbedf",
  "kind": "executed",
  "generatedAt": "2026-10-20T10:46:54.179503+00:00",
  "provenance": "recorded_cpu_computation",
  "environment": {
    "backend": "cpu",
    "deviceCount": 1,
    "jax": "0.9.2",
    "numpy": "2.4.4",
    "matplotlib": "3.10.8"
  },
  "stdout": "{\n  \"runtime\": \"JAX CPU instructional proxy\",\n  \"jax\": \"0.9.2\",\n  \"first_request_ms\": 15.080499928444624,\n  \"warm_samples_ms\": [\n    0.18925033509731293,\n    0.07470883429050446,\n    0.05670776590704918,\n    0.05149981006979942,\n    0.0467090867459774,\n    0.0421660952270031,\n    0.04008319228887558,\n    0.040125101804733276,\n    0.03950018435716629,\n    0.03862474113702774,\n    0.03816606476902962,\n    0.037624966353178024,\n    0.035999808460474014,\n    0.03587501123547554,\n    0.035624951124191284,\n    0.035624951124191284,\n    0.035082921385765076,\n    0.035999808460474014,\n    0.03620889037847519,\n    0.0360831618309021,\n    0.035167206078767776,\n    0.0349581241607666,\n    0.034875236451625824,\n    0.03550015389919281,\n    0.03441609442234039,\n    0.0355839729309082,\n    0.03474997356534004,\n    0.03412459045648575,\n    0.03416603431105614,\n    0.03424985334277153\n  ],\n  \"p50_ms\": 0.035999808460474014,\n  \"p95_ms\": 0.06660835351794953,\n  \"boundary\": \"JSON decode + normalize + transfer + infer + wait + encode\",\n  \"edge_device_validated\": false\n}\n",
  "data": {
    "kind": "line",
    "x": [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20,
      21,
      22,
      23,
      24,
      25,
      26,
      27,
      28,
      29,
      30
    ],
    "xlabel": "warm request number",
    "ylabel": "end-to-end milliseconds",
    "series": [
      {
        "label": "local CPU request",
        "y": [
          0.18925033509731293,
          0.07470883429050446,
          0.05670776590704918,
          0.05149981006979942,
          0.0467090867459774,
          0.0421660952270031,
          0.04008319228887558,
          0.040125101804733276,
          0.03950018435716629,
          0.03862474113702774,
          0.03816606476902962,
          0.037624966353178024,
          0.035999808460474014,
          0.03587501123547554,
          0.035624951124191284,
          0.035624951124191284,
          0.035082921385765076,
          0.035999808460474014,
          0.03620889037847519,
          0.0360831618309021,
          0.035167206078767776,
          0.0349581241607666,
          0.034875236451625824,
          0.03550015389919281,
          0.03441609442234039,
          0.0355839729309082,
          0.03474997356534004,
          0.03412459045648575,
          0.03416603431105614,
          0.03424985334277153
        ]
      },
      {
        "label": "recorded p95",
        "y": [
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953,
          0.06660835351794953
        ]
      }
    ]
  },
  "diagram": {
    "title": "Model speed is one part of request speed",
    "prediction": "If inference becomes twice as fast, does the whole request become twice as fast?",
    "reading": "Read the two columns as a hypothetical serial request before and after halving only inference. Preprocessing and transfer/response work remain unchanged. Add down each column: the total moves from \\(24\\) to \\(20\\) milliseconds, a \\(1.2\\)-fold improvement. These times are analytic teaching values; the separate plot contains actual local CPU request measurements.",
    "alt": "Read the two columns as a hypothetical serial request before and after halving only inference. Preprocessing and transfer/response work remain unchanged. Add down each column: the total moves from \\(24\\) to \\(20\\) milliseconds, a \\(1.2\\)-fold improvement. These times are analytic teaching values; the separate plot contains actual local CPU request measurements.",
    "scope": "Architecture and dataflow mechanism diagram.",
    "height": 4.2,
    "panel": {
      "kind": "table",
      "headers": [
        "Stage",
        "Before (ms)",
        "After (ms)"
      ],
      "rows": [
        [
          "Decode + preprocess",
          "12",
          "12"
        ],
        [
          "Transfer + response",
          "4",
          "4"
        ],
        [
          "Inference",
          "8",
          "4"
        ],
        [
          "Serial total",
          "24",
          "20"
        ]
      ],
      "widths": [
        0.5,
        0.25,
        0.25
      ]
    }
  }
}
