{
  "version": 1,
  "language": "en",
  "title": "Update labels, train again, deploy again",
  "description": "This RECAP round occurs after pretraining and task SFT. It collects experience, updates advantage labels, trains the policy again and deploys it again. Performance evaluation is necessary to show an improvement.",
  "caption": "RECAP deployment expands data with robot rollouts and corrections. Updated value estimates give new advantage labels for the data. RECAP trains the advantage-conditioned policy again and deploys it again. Offline pretraining and task-specific SFT occur before this loop. The author made this explanatory diagram. The playback is an example, and animation time is not measured runtime.",
  "alt": "RECAP loop: collect robot rollouts and corrections, update advantage labels, retrain the policy and redeploy it after pretraining and task SFT.",
  "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/blog/pistar06"
  ],
  "limitations": [
    "The playback is an example. Playback time is not measured runtime.",
    "Advantage labels depend on the quality of value estimation and relabeling.",
    "This illustrative round is not proof of a measured performance improvement."
  ],
  "targets": {
    "policy": {
      "id": "mechanism-policy",
      "kind": "node",
      "label": "Current policy"
    },
    "rollout": {
      "id": "mechanism-rollout",
      "kind": "node",
      "label": "Robot rollout"
    },
    "data": {
      "id": "mechanism-data",
      "kind": "node",
      "label": "Expanded data"
    },
    "labels": {
      "id": "mechanism-labels",
      "kind": "node",
      "label": "Update advantage labels"
    },
    "retrain": {
      "id": "mechanism-retrain",
      "kind": "node",
      "label": "Train policy again"
    },
    "policyRollout": {
      "id": "mechanism-policyRollout",
      "kind": "edge",
      "label": "Run policy"
    },
    "rolloutData": {
      "id": "mechanism-rolloutData",
      "kind": "edge",
      "label": "Add experience"
    },
    "dataLabels": {
      "id": "mechanism-dataLabels",
      "kind": "edge",
      "label": "Update labels"
    },
    "labelsRetrain": {
      "id": "mechanism-labelsRetrain",
      "kind": "edge",
      "label": "Train policy again"
    },
    "redeploy": {
      "id": "mechanism-redeploy",
      "kind": "edge",
      "label": "Deploy again"
    }
  },
  "stateLabels": {
    "stage": "Stage",
    "artifact": "Artifact"
  },
  "scenarios": [
    {
      "id": "process",
      "title": "One iterative improvement round",
      "description": "This round shows RECAP after offline pretraining and task SFT. It does not show a measured performance improvement.",
      "initial": {
        "stage": "Prepared",
        "artifact": "Inputs available"
      },
      "unselected": [],
      "steps": [
        {
          "title": "Deploy the current conditioned policy",
          "description": "RECAP deploys the current advantage-conditioned policy.",
          "duration": 3000,
          "active": [
            "policy"
          ],
          "paths": [],
          "state": {
            "stage": "Deploy the current conditioned policy",
            "artifact": "Policy after previous offline and task training"
          }
        },
        {
          "title": "Collect rollouts and corrections",
          "description": "RECAP collects autonomous rollouts and corrections.",
          "duration": 3000,
          "active": [
            "rollout"
          ],
          "paths": [
            "policyRollout"
          ],
          "state": {
            "stage": "Collect rollouts and corrections",
            "artifact": "Rollouts, outcomes and corrections"
          }
        },
        {
          "title": "Expand the experience data",
          "description": "RECAP adds the rollouts and corrections to its experience data.",
          "duration": 3000,
          "active": [
            "data"
          ],
          "paths": [
            "rolloutData"
          ],
          "state": {
            "stage": "Expand the experience data",
            "artifact": "Previous data plus new experience"
          }
        },
        {
          "title": "Update values and advantage labels",
          "description": "RECAP updates value estimates and gives new advantage labels for the expanded data.",
          "duration": 3000,
          "active": [
            "labels"
          ],
          "paths": [
            "dataLabels"
          ],
          "state": {
            "stage": "Update values and advantage labels",
            "artifact": "Expanded data with updated labels"
          }
        },
        {
          "title": "Train the policy again with advantage conditioning",
          "description": "RECAP trains the policy again with advantage conditioning.",
          "duration": 3000,
          "active": [
            "retrain"
          ],
          "paths": [
            "labelsRetrain"
          ],
          "state": {
            "stage": "Train the policy again with advantage conditioning",
            "artifact": "Updated conditioned policy"
          }
        },
        {
          "title": "Deploy the retrained policy again",
          "description": "RECAP deploys the trained policy again.",
          "duration": 3000,
          "active": [
            "policy"
          ],
          "paths": [
            "redeploy"
          ],
          "state": {
            "stage": "Deploy the retrained policy again",
            "artifact": "The policy is deployed again. Evaluation of its performance is necessary."
          }
        }
      ]
    }
  ]
}
