Skip to content

feat(evaluation): add pi0 replay evaluation and VLA schema v1 - #1564

Open
Alexandre Gattiker (algattik) wants to merge 1 commit into
mainfrom
algattik-issue-930-pi0-vla-dispatch
Open

Alexandre Gattiker (algattik) wants to merge 1 commit into
mainfrom
algattik-issue-930-pi0-vla-dispatch

Conversation

@algattik

@algattik Alexandre Gattiker (algattik) commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Pull Request

Description

Added shared replay evaluation for ACT, diffusion, pi0, and pi0_fast policies. The evaluator now loads policy-specific processors, propagates required VLA task metadata, handles shared LeRobot v3 data and video files within episode bounds, and emits strict schema-v1 metrics, results, and failure-case artifacts.

Added dedicated Azure ML pi0-family submission assets backed by the frozen VLA runtime. Hub inputs require immutable revisions, and gated pi0 evaluation forwards the configured Hugging Face token without exposing it in configuration previews.

Closes #930

Type of Change

  • 🐛 Bug fix (non-breaking change fixing an issue)
  • ✨ New feature (non-breaking change adding functionality)
  • 💥 Breaking change (fix or feature causing existing functionality to change)
  • 📚 Documentation update
  • 🏗️ Infrastructure change (Terraform/IaC)
  • ♻️ Refactoring (no functional changes)

Component(s) Affected

  • infrastructure/terraform/prerequisites/ - Azure subscription setup
  • infrastructure/terraform/ - Terraform infrastructure
  • infrastructure/setup/ - OSMO control plane / Helm
  • workflows/ - Training and evaluation workflows
  • training/ - Training pipelines and scripts
  • docs/ - Documentation
  • evaluation/ - Replay evaluation, policy dispatch, and schema contracts

Testing Performed

  • Terraform plan reviewed (no unexpected changes)
  • Terraform apply tested in dev environment
  • Training scripts tested locally with Isaac Sim
  • OSMO workflow submitted successfully
  • Smoke tests passed (smoke_test_azure.py)
  • Evaluation suite passed: 265 tests with 4 dependency-based skips
  • ACT Azure ML train-to-evaluate lifecycle passed in dev
  • pi0 Azure ML train-to-evaluate lifecycle passed in dev
  • Strict schema-v1 artifacts and MLflow tracking passed for ACT and pi0

Live Azure ML E2E validation

The affected lifecycle tests ran against an Azure ML deployment:

Test Coverage Result
tests/e2e/test_e2e_aml_il_lifecycle.py::test_aml_il_lifecycle_e2e ACT training, four registered checkpoint versions, replay evaluation, code snapshot, checkpoint, MLflow, and strict schema-v1 artifact assertions Passed
tests/e2e/test_e2e_aml_vla_pi0_training.py::test_aml_vla_pi0_lifecycle_e2e pi0 training, four registered checkpoint versions, gated PaliGemma reload, replay evaluation, code snapshot, checkpoint, MLflow, and strict schema-v1 artifact assertions Passed

The pi0 lifecycle exposed missing HF_TOKEN propagation in the first evaluation attempt. After forwarding the token to pi0/pi0_fast evaluation jobs, the complete lifecycle and artifact contract passed.

Documentation Impact

  • No documentation changes needed
  • Documentation updated in this PR
  • Documentation issue filed

Bug Fix Checklist

The Hugging Face credential propagation fix is covered by the live pi0 lifecycle validation.

  • Linked to issue being fixed
  • Regression test included, OR
  • Justification for no regression test:

Checklist

@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA d26cd3f.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

OpenSSF Scorecard

PackageVersionScoreDetails
pip/contourpy 1.3.3 UnknownUnknown
pip/cycler 0.12.1 UnknownUnknown
pip/fonttools 4.64.0 🟢 5.9
Details
CheckScoreReason
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Maintained🟢 1030 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Code-Review🟢 5Found 7/13 approved changesets -- score normalized to 5
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
Packaging🟢 10packaging workflow detected
pip/kiwisolver 1.5.1 UnknownUnknown
pip/matplotlib 3.11.1 UnknownUnknown
pip/pyparsing 3.3.2 UnknownUnknown

Scanned Files

  • training/vla/lerobot/uv.lock

@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Sep 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 65.77540% with 64 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.79%. Comparing base (48da998) to head (d26cd3f).

Files with missing lines Patch % Lines
evaluation/sil/scripts/run_evaluation.py 54.28% 43 Missing and 21 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1564      +/-   ##
==========================================
- Coverage   88.10%   86.79%   -1.32%     
==========================================
  Files         279      280       +1     
  Lines       23203    23721     +518     
  Branches     3199     3272      +73     
==========================================
+ Hits        20444    20589     +145     
- Misses       2071     2421     +350     
- Partials      688      711      +23     
Flag Coverage Δ *Carryforward flag
go 100.00% <ø> (ø)
pester 86.64% <ø> (ø) Carriedforward from 48da998
pytest-data-pipeline 100.00% <ø> (ø) Carriedforward from 48da998
pytest-dataviewer 89.66% <ø> (ø) Carriedforward from 48da998
pytest-dm-tools 100.00% <ø> (ø) Carriedforward from 48da998
pytest-evaluation 78.30% <65.77%> (-17.11%) ⬇️
pytest-fuzz 3.99% <ø> (ø)
pytest-inference 100.00% <ø> (ø) Carriedforward from 48da998
pytest-shared-ci 100.00% <ø> (ø) Carriedforward from 48da998
pytest-training 92.60% <ø> (ø)
vitest 85.66% <ø> (ø) Carriedforward from 48da998
vitest-app 85.66% <ø> (ø) Carriedforward from 48da998
vitest-components 85.66% <ø> (ø) Carriedforward from 48da998
vitest-features 85.66% <ø> (ø) Carriedforward from 48da998
vitest-lib 85.66% <ø> (ø) Carriedforward from 48da998
vitest-state 85.66% <ø> (ø) Carriedforward from 48da998

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
evaluation/sil/policy_runner.py 100.00% <100.00%> (ø)
evaluation/sil/robot_types.py 100.00% <100.00%> (ø)
evaluation/sil/scripts/run_evaluation.py 22.93% <54.28%> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

- dispatch ACT, diffusion, pi0, and pi0_fast through shared policy handling
- emit strict schema-v1 metrics and failure artifacts
- cover replay behavior and Azure ML train-to-evaluate lifecycles
- forward Hugging Face credentials for gated pi0 evaluation assets

🤖 - Generated by Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@algattik
Alexandre Gattiker (algattik) force-pushed the algattik-issue-930-pi0-vla-dispatch branch from 02c7661 to d26cd3f Compare September 21, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(evaluation): add pi0 dispatch and VLA schema v1 reconciliation to policy_runner

2 participants