{
  "version": 1,
  "language": "en",
  "title": "FAST encoding and continuous generation",
  "description": "The two lanes show FAST demonstration encoding and continuous flow generation as independent interfaces. Knowledge Insulation can use the token objective to train the backbone. Its continuous expert controls execution.",
  "caption": "FAST encodes demonstrated action chunks as compact frequency-structured tokens. Flow matching jointly generates a continuous chunk from noise. Knowledge Insulation can use the token objective to train the backbone. Its continuous expert supplies inference-time actions. The author made this explanatory diagram. The playback is an example, and animation time is not measured runtime.",
  "alt": "Two-lane comparison: FAST encodes demonstrated chunks into tokens. Flow matching generates continuous chunks from noise.",
  "sources": [
    {
      "path": "content/blog/2026-05-25_from-pi0-to-pi07-open-pi-series/post.md",
      "description": "Article mechanism and retained citations"
    },
    "https://www.pi.website/research/fast",
    "https://www.pi.website/research/knowledge_insulation",
    "https://arxiv.org/abs/2410.24164"
  ],
  "limitations": [
    "The playback is an example. Playback time is not measured runtime.",
    "The two lanes show different interfaces. They are not two necessary consecutive runtime stages.",
    "The diagram does not give the detailed token codebook or numerical integration schedule."
  ],
  "targets": {
    "demonstration": {
      "id": "mechanism-demonstration",
      "kind": "node",
      "label": "Action chunk"
    },
    "dct": {
      "id": "mechanism-dct",
      "kind": "node",
      "label": "Temporal DCT"
    },
    "bpe": {
      "id": "mechanism-bpe",
      "kind": "node",
      "label": "Sequence + BPE"
    },
    "noise": {
      "id": "mechanism-noise",
      "kind": "node",
      "label": "Noise + context"
    },
    "velocity": {
      "id": "mechanism-velocity",
      "kind": "node",
      "label": "Velocity field"
    },
    "continuous": {
      "id": "mechanism-continuous",
      "kind": "node",
      "label": "Continuous chunk"
    },
    "normalizeDCT": {
      "id": "mechanism-normalizeDCT",
      "kind": "edge",
      "label": "Normalize and transform"
    },
    "dctBPE": {
      "id": "mechanism-dctBPE",
      "kind": "edge",
      "label": "Coefficient sequence and encoding"
    },
    "noiseVelocity": {
      "id": "mechanism-noiseVelocity",
      "kind": "edge",
      "label": "Initialize from noise and context"
    },
    "velocityContinuous": {
      "id": "mechanism-velocityContinuous",
      "kind": "edge",
      "label": "Integrate all chunk positions"
    }
  },
  "stateLabels": {
    "stage": "Stage",
    "artifact": "Artifact"
  },
  "scenarios": [
    {
      "id": "fast",
      "title": "FAST encoding",
      "description": "This lane encodes demonstrated motion with FAST.",
      "initial": {
        "stage": "Prepared",
        "artifact": "Inputs available"
      },
      "unselected": [
        "noise",
        "velocity",
        "continuous",
        "noiseVelocity",
        "velocityContinuous"
      ],
      "steps": [
        {
          "title": "Normalize demonstrated motion",
          "description": "FAST normalizes each dimension of the demonstrated action chunk.",
          "duration": 3000,
          "active": [
            "demonstration"
          ],
          "paths": [],
          "state": {
            "stage": "Normalize demonstrated motion",
            "artifact": "Normalized action dimensions"
          }
        },
        {
          "title": "Temporal transform and quantization",
          "description": "FAST uses temporal DCT and then quantizes the coefficients.",
          "duration": 3000,
          "active": [
            "dct"
          ],
          "paths": [
            "normalizeDCT"
          ],
          "state": {
            "stage": "Temporal transform and quantization",
            "artifact": "Temporal frequency coefficients"
          }
        },
        {
          "title": "Coefficient sequence and BPE",
          "description": "FAST puts coefficients in sequence and uses BPE to encode them.",
          "duration": 3000,
          "active": [
            "bpe"
          ],
          "paths": [
            "dctBPE"
          ],
          "state": {
            "stage": "Coefficient sequence and BPE",
            "artifact": "Compact token targets"
          }
        }
      ]
    },
    {
      "id": "flow",
      "title": "Continuous flow generation",
      "description": "This lane generates a continuous action chunk from noise.",
      "initial": {
        "stage": "Prepared",
        "artifact": "Inputs available"
      },
      "unselected": [
        "demonstration",
        "dct",
        "bpe",
        "normalizeDCT",
        "dctBPE"
      ],
      "steps": [
        {
          "title": "Initialize a continuous candidate",
          "description": "Flow generation initializes a continuous candidate from noise and current conditions.",
          "duration": 3000,
          "active": [
            "noise"
          ],
          "paths": [],
          "state": {
            "stage": "Initialize a continuous candidate",
            "artifact": "Noise and current conditions"
          }
        },
        {
          "title": "Integrate the learned velocity field",
          "description": "Flow generation integrates the learned velocity field to update all candidate positions jointly.",
          "duration": 3000,
          "active": [
            "velocity"
          ],
          "paths": [
            "noiseVelocity"
          ],
          "state": {
            "stage": "Integrate the learned velocity field",
            "artifact": "All candidate positions updated jointly"
          }
        },
        {
          "title": "Give a continuous chunk",
          "description": "Flow generation gives a continuous chunk of motor commands.",
          "duration": 3000,
          "active": [
            "continuous"
          ],
          "paths": [
            "velocityContinuous"
          ],
          "state": {
            "stage": "Give a continuous chunk",
            "artifact": "Continuous motor commands"
          }
        }
      ]
    }
  ]
}
