
Tinh chỉnh Pi0.5, VLA khớp dòng chảy từ Physical Intelligence, trên dữ liệu robot của riêng bạn. Các lệnh thực tế cho openpi và lerobot pi05, những cạm bẫy định dạng tập dữ liệu, giới hạn VRAM và độ trễ.
Pi0.5 là mô hình bạn tìm đến khi một chính sách cần hoạt động trong một căn phòng mà nó chưa từng thấy. Nó cũng là mô hình khó sử dụng nhất trong số năm chính sách có thể huấn luyện ở đây để tinh chỉnh thủ công: kho lưu trữ gốc ưu tiên JAX, cổng LeRobot đã di chuyển triển khai ra khỏi lerobot-record trong phiên bản 0.6.0 và làm cho bản cài đặt cơ bản quá nhỏ để huấn luyện, và một quá trình tinh chỉnh đầy đủ không thể chạy trên card 4090. Dưới đây: chi phí của khớp dòng khi suy luận, hai lộ trình lệnh, và con số 485 ms quyết định liệu kết quả có thể sử dụng được hay không.
Những điều bạn cần biết
- •Một VLA khớp dòng: một VLM PaliGemma 3B cộng với một chuyên gia hành động 300M giải mã các đoạn hành động liên tục. Hai lộ trình để tinh chỉnh nó, openpi và LeRobot pi05, cách nhau 0.65 điểm trên mức trung bình của LIBERO.
- •Tinh chỉnh đầy đủ cần hơn 70 GB VRAM. openpi liệt kê LoRA ở mức 22.5 GB, chỉ trên đường dẫn JAX của nó.
- •Tập dữ liệu phải là LeRobotDataset v3.0 với các phân vị q01 và q99 trong meta/stats.json, nếu không thì batch đầu tiên sẽ lỗi.
- •Kiểm tra phiên bản lerobot của bạn trước: 0.6.0 đã làm cho gói cơ bản nhẹ hơn và di chuyển triển khai ra khỏi lerobot-record.
- •Ở đây nó chạy ở 485 ms mỗi bước hành động, cần 50 tập, và tốn khoảng 4 đến 12 USD mỗi lần chạy.
Pi0.5 thực sự là gì
Physical Intelligence đã công bố pi0 vào tháng 10 năm 2024: một mô hình khớp dòng mô hình hành động ngôn ngữ thị giác trên một VLM đã được huấn luyện trước: PaliGemma với 3 tỷ tham số cộng với một chuyên gia hành động 300M được khởi tạo từ đầu, tổng cộng 3.3 tỷ. Bài báo cáo huấn luyện trước trên hơn 10,000 giờ dữ liệu robot trên 7 cấu hình robot và 68 tác vụ. Xem thêm trong bài viết về pi0.
Pi0.5 (arXiv 2504.16054, 22 tháng 4 năm 2025) giữ nguyên cấu trúc đó và thay đổi chế độ huấn luyện: dữ liệu web, phát hiện đối tượng, hướng dẫn bằng lời nói từ con người huấn luyện robot, nhãn nhiệm vụ phụ, dữ liệu đa thể hiện từ robot trong nhiều gia đình. Kết quả là một robot dọn dẹp nhà bếp trong những ngôi nhà không có trong tập huấn luyện. README của openpi bổ sung một chi tiết mà tiêu đề không đề cập: pi0.5 được phát hành đã được huấn luyện với cách ly kiến thức (arXiv 2505.23705).
| Thuộc tính | pi0 | pi0.5 |
|---|---|---|
| Biến thể xương sống VLM | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Biến thể chuyên gia hành động | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon mặc định | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, trạng thái được rời rạc hóa thành các nhóm trong lời nhắc |
| Điểm kiểm tra cơ sở | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
README của openpi nêu rõ: kho lưu trữ chỉ hỗ trợ đầu khớp dòng (flow matching head), cho cả huấn luyện và suy luận pi0.5. Bài báo mô tả hai giai đoạn và mã chỉ thực hiện giai đoạn thứ hai: tiền huấn luyện biểu diễn mọi hành động dưới dạng các token rời rạc thông qua bộ mã hóa FAST, và khi triển khai, mô hình suy luận một nhiệm vụ phụ cấp cao trước mỗi khối hành động. Không có giai đoạn nào trong số đó có trong kho lưu trữ. Thẻ lerobot/pi05_base đưa ra danh sách tương tự và bổ sung RL, mặc dù bài báo pi0.5 không mô tả bất kỳ giai đoạn học tăng cường nào. Cổng LeRobot kế thừa phạm vi đó, và mọi trình huấn luyện được lưu trữ trên đó cũng vậy, bao gồm cái ở đây. Cấp phép cũng được chia tách: trang tài liệu pi05 nói Apache 2.0, thẻ lerobot/pi05_base được gắn thẻ license: gemma.
Những gì khớp dòng thay đổi về huấn luyện và suy luận
Một chính sách bạn có thể huấn luyện trên SO-100 hoặc hồi quy trực tiếp các hành động (ACT) hoặc mã hóa chúng thành token và giải mã tự hồi quy (pi0-FAST). Khớp dòng không làm cả hai điều này: nó học một trường vector vận chuyển nhiễu đến một khối hành động sạch, sau đó tích hợp nó. Bài báo pi0 sử dụng 10 bước tích hợp với kích thước bước 0.1; cấu hình pi05 của LeRobot cũng có cùng `num_inference_steps: int = 10`.
- Huấn luyện: hàm mất mát hồi quy một khối hành động bị nhiễu. Không có bộ mã hóa để tinh chỉnh, không có sự rời rạc hóa các góc khớp của bạn.
- Suy luận: một khối tốn mười lần truyền xuôi qua chuyên gia hành động. Điều đó mang tính cấu trúc, không phải là vấn đề tinh chỉnh.
- Đầu ra: các hành động liên tục có chiều 32, được đệm bên trong, hàm mất mát được tính trên các chiều mà robot của bạn có. Một cánh tay 6-DoF cộng với bộ kẹp sử dụng 7.
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
dtype: str = "bfloat16"
paligemma_variant: _gemma.Variant = "gemma_2b"
action_expert_variant: _gemma.Variant = "gemma_300m"
action_dim: int = 32
action_horizon: int = 50
max_token_len: int = None # 200 if pi05 else 48
pi05: bool = False # flips discrete_state_input to TrueXương sống PaliGemma, và cổng phía trước nó
PaliGemma (arXiv 2407.07726) là một bộ mã hóa thị giác SigLIP-So400m trên mô hình ngôn ngữ Gemma-2B, với khoảng 3 tỷ tham số. Pi0.5 kế thừa bộ mã hóa của nó, và bộ mã hóa đó nằm trong một kho lưu trữ có kiểm soát truy cập. Đây là cách phổ biến nhất khiến lần chạy đầu tiên thất bại, trước khi đến bước huấn luyện.
Tài liệu LeRobot pi05 nêu rõ: pi0.5 sử dụng bộ mã hóa google/paligemma-3b-pt-224 có kiểm soát truy cập, vì vậy hãy chấp nhận giấy phép của nó trên Hub và chạy hf auth login trước. Quyền truy cập được cấp thủ công, không phải ngay lập tức. Bỏ qua bước này, bắt đầu một lần chạy đám mây trả phí, và bạn sẽ phải trả tiền cho một pod không thể tải xuống bộ mã hóa.
Trước khi bắt đầu: định dạng tập dữ liệu, các tập, phần cứng
Pi0.5 trong LeRobot đọc một tập dữ liệu LeRobot theo bố cục v3.0, được giới thiệu cùng với lerobot 0.4.0 vào tháng 10 năm 2025: nhiều tập trên mỗi tệp Parquet và MP4 thay vì một tệp cho mỗi tập, với các ranh giới trong meta/episodes/ thay vì tên tệp. Ghi lại bằng ứng dụng máy tính để bàn hoặc làm theo ghi lại tập dữ liệu đầu tiên của bạn và bạn sẽ có nó.
| Chế độ | Bộ nhớ GPU yêu cầu | GPU ví dụ |
|---|---|---|
| Suy luận | hơn 8 GB | RTX 4090 |
| Tinh chỉnh, LoRA | hơn 22.5 GB | RTX 4090 |
| Tinh chỉnh, đầy đủ | hơn 70 GB | A100 80 GB hoặc H100 |
Pi0.5 và SmolVLA yêu cầu LeRobot v3.0. GR00T N1.7 và GR00T N1.5 yêu cầu v2.0 hoặc v2.1 và sẽ gặp lỗi với tập dữ liệu v3.0. Một phiên ghi hình không thể cung cấp dữ liệu cho cả hai mà không cần chuyển đổi, và lỗi không hiển thị "sai phiên bản tập dữ liệu". Xem tập dữ liệu bị từ chối: yêu cầu v3.
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>
# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ... -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsetsNền tảng yêu cầu ít nhất 50 tập cho Pi0.5, cùng mức tối thiểu với GR00T và ACT. Huấn luyện trước đảm nhiệm phần lớn công việc, vì vậy 50 tập sạch sẽ tốt hơn 200 tập cẩu thả. Mới bắt đầu? Hãy bắt đầu với hướng dẫn thu thập dữ liệu.

Lộ trình A: tinh chỉnh với kho lưu trữ openpi
Triển khai tham chiếu: ưu tiên JAX, chỉ được kiểm tra trên Ubuntu 22.04, được điều khiển bởi các đối tượng cấu hình thay vì cờ. Một lộ trình PyTorch đã ra mắt vào tháng 9 năm 2025, được xác thực trên LIBERO. Ba bước: chuyển đổi dữ liệu của bạn, định nghĩa cấu hình, huấn luyện và phục vụ.
- 1Sao chép và cài đặt
openpi sử dụng uv. GIT_LFS_SKIP_SMUDGE là thứ cho phép LeRobot trở thành một phụ thuộc mà không cần các blob LFS.
bashgit clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git cd openpi GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . - 2Chuyển đổi dữ liệu của bạn sang tập dữ liệu LeRobot
Upstream cung cấp các bộ chuyển đổi cho LIBERO và DROID và mong bạn điều chỉnh một trong số đó. Công việc chính là ánh xạ khóa.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Thêm cấu hình huấn luyện
Các cấu hình là các mục TrainConfig trong src/openpi/training/config.py. Cấu hình này điều chỉnh pi05_droid_finetune, với bộ tải trọng lượng trỏ đến pi05_base.
pythonTrainConfig( name="pi05_so100", model=pi0_config.Pi0Config( pi05=True, action_dim=32, # pi05 is trained with 32-dim actions action_horizon=16, ), # Copy LeRobotLiberoDataConfig in the same file and rewrite the key # mapping for your camera names, then reference your copy here. data=LeRobotLiberoDataConfig( repo_id="your_hf_username/my_so100_dataset", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader( "gs://openpi-assets/checkpoints/pi05_base/params" ), batch_size=32, num_train_steps=20_000, ) - 4Tính toán thống kê chuẩn hóa
Chạy dựa trên tên cấu hình, không phải tập dữ liệu. Bỏ qua bước này là lỗi đầu tiên kinh điển ở đây.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Huấn luyện
Biến này cho phép JAX sử dụng 90 phần trăm bộ nhớ GPU thay vì 75 phần trăm mặc định. Trên một card 80 GB, điều này quyết định liệu quá trình chạy có thành công hay không.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Phục vụ
Máy chủ lắng nghe trên cổng 8000 và trả lời các truy vấn quan sát; thời gian chạy robot của bạn là máy khách.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Việc triển khai PyTorch của openpi không hỗ trợ pi0-FAST, mixed precision, FSDP, LoRA hoặc EMA weights, vì vậy LoRA đạt 22.5 GB chỉ có trên JAX, thông qua các biến thể gemma_2b_lora và gemma_300m_lora. Tệ hơn: quá trình cài đặt sao chép các tệp đã vá lỗi lên phiên bản transformers 4.53.2 đã cài đặt của bạn, và README cảnh báo rằng với chế độ hardlink mặc định của uv, điều này sẽ sửa đổi vĩnh viễn transformers trong bộ nhớ cache của uv và có thể rò rỉ sang các dự án khác. Hoàn tác bằng lệnh uv cache clean transformers.
Lộ trình B: tinh chỉnh với lerobot pi05
Cổng LeRobot gói các trọng số tương tự trong CLI mà bạn đã sử dụng cho ACT và SmolVLA. Mọi thứ dưới đây đã được kiểm tra với lerobot 0.6.1, bản phát hành kể từ ngày 3 tháng 8 năm 2026, và tài liệu pi05 vào ngày 23 tháng 8 năm 2026. Các phiên bản rất quan trọng ở đây: bộ dữ liệu v3.0 đã xuất hiện với 0.4.0 vào tháng 10 năm 2025, blog 0.5.0 ngày 9 tháng 3 năm 2026 giới thiệu pi0-FAST và Real-Time Chunking, và 0.6.0 vào ngày 6 tháng 7 năm 2026 đã làm cho gói cơ sở nhẹ hơn và chuyển việc triển khai sang lerobot-rollout.
Một điều không thay đổi: lerobot-train và lerobot-record đã là các điểm truy cập trong 0.3.2, tháng 8 năm 2025. Một hướng dẫn vẫn gọi python -m lerobot.scripts.train đã có từ trước một năm thay đổi và cũng đáng để không tin tưởng vào phần còn lại.
- 1Cài đặt với các phần bổ sung phù hợp
Kể từ phiên bản 0.6.0, bản cài đặt cơ bản chỉ bao gồm các phụ thuộc ML cốt lõi, và phần bổ sung pi không thêm mã tập dữ liệu hoặc huấn luyện, vì vậy việc tinh chỉnh cũng cần phần bổ sung training. Các lệnh cài đặt một dòng cũ hơn sẽ thất bại ở đây khi nhập.
bash# policy dependencies plus the training stack pip install 'lerobot[pi,training]' # from a source checkout pip install -e ".[pi,training]" # driving an SO-100 afterwards needs the robot extras too pip install 'lerobot[core_scripts,feetech]' - 2Xác thực
Chấp nhận giấy phép paligemma-3b-pt-224 trong trình duyệt, sau đó đăng nhập trên máy dùng để huấn luyện.
bashhf auth login - 3Thêm thống kê phân vị
Pi0.5 chuẩn hóa STATE và ACTION bằng phân vị, vì vậy meta/stats.json cần q01 và q99. Các tập dữ liệu cũ hơn chỉ chứa min, max, mean, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Tinh chỉnh từ lerobot/pi05_base
Đặt kích thước batch phù hợp với khả năng của card đồ họa của bạn; tài liệu sử dụng 64 trên LIBERO với 80 GB. Truyền bfloat16 một cách rõ ràng, mặc định của cấu hình là float32.
bashlerobot-train \ --dataset.repo_id=${HF_USER}/my_so100_dataset \ --policy.type=pi05 \ --policy.pretrained_path=lerobot/pi05_base \ --policy.gradient_checkpointing=true \ --policy.dtype=bfloat16 \ --policy.device=cuda \ --policy.push_to_hub=false \ --output_dir=./outputs/pi05_so100 \ --job_name=pi05_so100 \ --batch_size=4 \ --num_workers=8 \ --steps=30000 \ --save_freq=5000 \ --seed=1000 - 5Chạy trên cánh tay robot
Trong 0.6.x, đây là lerobot-rollout: lerobot-record từ chối một policy và không chấp nhận tên tập dữ liệu eval_. Base điều khiển cánh tay robot, sentry ghi lại quá trình rollout.
bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60 # same run, recorded into an eval_ dataset lerobot-rollout \ --strategy.type=sentry \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --dataset.repo_id=${HF_USER}/eval_so100 \ --dataset.single_task="Put lego brick into the transparent box" \ --duration=600
| Flag | What it does | Note |
|---|---|---|
| --policy.type=pi05 | chọn Pi0.5 | bắt buộc với pretrained_path, bỏ qua với --policy.path |
| --policy.pretrained_path | chỉ tải trọng số | tên đặc trưng từ tập dữ liệu của bạn, cài đặt đã lưu bị đặt lại |
| --policy.path | trọng số cộng với config.json của checkpoint | các cài đặt đã lưu như n_action_steps được kế thừa |
| --policy.n_action_steps | số bước được tiêu thụ mỗi chunk | mặc định là 50, không bao giờ vượt quá chunk_size (mặc định 50) |
| --policy.train_expert_only | đóng băng VLM, huấn luyện chuyên gia | mặc định là false, ít bộ nhớ hơn, có thể ảnh hưởng đến tỷ lệ thành công |
| --policy.gradient_checkpointing | tính toán lại thay vì lưu trữ các kích hoạt | mặc định là false, đòn bẩy đầu tiên khi một lần chạy không vừa |
| --peft.method_type=LORA | bộ điều hợp LoRA thay vì trọng số đầy đủ | cần phần bổ sung peft, ví dụ được ghi lại là SmolVLA |
| --policy.rtc_training_max_delay | điều kiện tiền tố hành động cho RTC | chỉ nhánh chính, không có trong 0.6.1, phải nhỏ hơn chunk_size |
| --rename_map | ánh xạ các cột tập dữ liệu vào các đặc trưng của policy | cần thiết khi các khóa camera của bạn khác nhau |
Nếu không có phân vị, bạn sẽ gặp ValueError: QUANTILES normalization mode requires q01 and q99 stats ở batch đầu tiên. Hãy tính toán lại các thống kê, nhưng kết quả sẽ nằm trong $HF_LEROBOT_HOME/your_dataset, chứ không phải bộ nhớ cache mà --dataset.repo_id đọc, vì vậy hãy huấn luyện với --dataset.root trỏ đến đó hoặc đẩy lên Hub. Hoặc bỏ qua phân vị với --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', như lệnh tham chiếu của LIBERO đã làm.
Ba bộ giá trị mặc định, và những giá trị nào đến được trình huấn luyện
TrainConfig của openpi là tham chiếu, PI05Config của LeRobot là thứ mà lerobot-train sử dụng khi bạn không chỉ định gì, và biểu mẫu ở đây gửi một bộ thứ ba. Điều bất ngờ là tốc độ học: cả hai mặc định upstream đều đạt đỉnh 2.5e-5, trong khi cấu hình pi05_libero của openpi và nền tảng này nâng nó lên 5e-5.
| Cài đặt | openpi TrainConfig | lerobot pi05 và lerobot-train | AY-Robots gửi |
|---|---|---|---|
| Kích thước lô | 32 | 8 | 1 |
| Tốc độ học đỉnh | 2.5e-5, suy giảm cosine | optimizer_lr 2.5e-5 | 5e-5 |
| Số bước huấn luyện | 30,000 | 100,000 | 30,000 |
| Khoảng thời gian checkpoint | 1,000 steps | 20,000 steps | không có trong biểu mẫu |
| Seed | 42 | 1,000 | có trong biểu mẫu |
| Khối hành động | action_horizon 50 | chunk_size 50, n_action_steps 50 | không có trong biểu mẫu |
| Kiểu dữ liệu trọng số | bfloat16 | float32 until you pass --policy.dtype | không có trong biểu mẫu |
| Tích lũy gradient | không có tùy chọn này, thay vào đó là fsdp_devices | absent from every release so far | 16, và nó bị loại bỏ |
Bản port có đáng tin cậy không? Nhóm LeRobot đã tinh chỉnh mô hình cơ sở LIBERO thêm 6k bước và so sánh với các số liệu tham chiếu của openpi trên bốn bộ: trung bình 97.5 phần trăm so với 96.85, dẫn trước trên Libero 10, và tụt lại trên Spatial. Lộ trình này là một lựa chọn về công cụ, không phải về chất lượng.
- Hơn 10,000 giờ tiền huấn luyện robot đằng sau nó, vì vậy 50 tập nhiệm vụ của bạn có thể là đủ.
- Hành động liên tục: không có bộ mã hóa để tinh chỉnh, không có giới hạn rời rạc hóa trên các góc khớp của bạn.
- Bản port LeRobot đạt 97.5 phần trăm trên mức trung bình LIBERO so với 96.85 của openpi, vì vậy CLI thân thiện hơn không tốn chi phí đáng kể nào.
- Các đường dẫn hiệu quả về tham số ở cả hai phía: các biến thể JAX LoRA của openpi, tích hợp PEFT của LeRobot.
- Tinh chỉnh hoàn toàn cần hơn 70 GB. Con số LoRA 22.5 GB là số liệu JAX của openpi; không có số liệu nào được công bố cho pi05 dưới PEFT.
- 485 ms mỗi bước hành động, chậm nhất trong năm ở đây: gấp đôi SmolVLA, gấp hai mươi bốn lần ACT.
- Yêu cầu LeRobot v3.0, vì vậy một tập dữ liệu được ghi lại cho một lần chạy GR00T cần được chuyển đổi, và ngược lại.
- Các tùy chọn mới được đưa lên main trước: bộ nhớ RTC và MEM trong thời gian huấn luyện không có trong 0.6.1, vì vậy tài liệu mới nhất có thể yêu cầu cài đặt từ git.
Thực tế 485 ms, và điểm mà nó không còn khả dụng
Điều này quyết định dự án của bạn, vì vậy nó được đặt trước bảng chi phí. trên mỗi bước hành động được đo ở đây cho Pi0.5 là 485 ms. So với bốn loại khác:
| Chính sách | Suy luận trên mỗi bước hành động | Tham số | Cấp GPU | Số tập tối thiểu |
|---|---|---|---|---|
| ACT | 20 ms | ~80 M | RTX 4090 or any 24 GB card | 50 |
| GR00T N1.7 | 152 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| GR00T N1.5 | 165 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| SmolVLA | 245 ms | ~450 M | RTX 4090 or any 24 GB card | 30 |
| Pi0.5 | 485 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |

Vòng điều khiển trên năm mô hình này chạy từ 20 đến 485 ms cho mỗi bước hành động. Các chuyến đi khứ hồi qua internet công cộng cộng thêm 485 ms sẽ biến một chính sách hoạt động tốt thành một chính sách do dự. Suy luận từ xa khả thi cho các tác vụ chọn và đặt chậm, chứ không phải cho chuyển động phản ứng nhanh. Chúng tôi thà nói điều đó hơn là bán một bản demo chỉ hoạt động trên mạng LAN. Nếu cánh tay robot của bạn tạm dừng giữa các khối, hãy bắt đầu tại chính sách bị đóng băng giữa chuyển động.
Phía thượng nguồn có một câu trả lời, và một nửa trong số đó đã có trong bản phát hành bạn có thể cài đặt. Phân đoạn thời gian thực (Real-Time Chunking) tạo ra phân đoạn tiếp theo trong khi cánh tay robot vẫn đang thực hiện phân đoạn hiện tại, sau đó hướng dẫn các bước chồng chéo của phân đoạn mới để giữ gần với phần đã thực hiện, nhờ đó cánh tay robot không bị kẹt hoặc giật ở điểm nối. Dạng suy luận thời gian thực được phát hành trong nhật ký thay đổi 0.4.2 cho Pi0, Pi0.5 và SmolVLA và là một cờ triển khai, không yêu cầu huấn luyện lại:
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/my_policy \
--inference.type=rtc \
--inference.rtc.execution_horizon=10 \
--inference.rtc.max_guidance_weight=10.0 \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM1 \
--robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
--task="Put lego brick into the transparent box" \
--duration=60Nó không làm cho mô hình nhanh hơn. Nó che giấu khoảng trống: 485 ms vẫn được tiêu tốn, nhưng nằm ngoài đường dẫn quan trọng, vì vậy hàng đợi không bị cạn giữa các phân đoạn. Biến thể thời gian huấn luyện từ arXiv 2512.05964 còn tiến xa hơn: mô hình học cách điều kiện hóa trên một tiền tố hành động sạch, vì vậy tại thời điểm suy luận, sự chồng chéo được điền cứng bằng các bước thời gian luồng trên mỗi hành động thay vì được hướng dẫn, và quá trình truyền ngược hướng dẫn biến mất. Trong quá trình huấn luyện, nó lấy mẫu độ dài tiền tố cho mỗi ví dụ và tính toán tổn thất luồng trên phần hậu tố còn lại. Cờ đó chỉ có trên nhánh chính, không có trong 0.6.1, và độ trễ bạn huấn luyện phải nằm dưới chunk_size.
Hai cách để có được checkpoint Pi0.5
Bạn thuê hoặc sở hữu một card 80 GB, cài đặt một trong các stack ở trên, chuyển đổi tập dữ liệu của mình và theo dõi quá trình chạy. Bạn giữ mọi quyền kiểm soát: JAX LoRA của openpi, bộ điều hợp PEFT của LeRobot, các hành động tương đối, ánh xạ khóa tùy chỉnh. Bạn cũng phải chịu mọi thất bại.
- Phần cứng: A100 80 GB hoặc H100, hoặc card 24 GB trên đường dẫn JAX LoRA của openpi.
- Thiết lập: một buổi chiều cho lần chạy đầu tiên, chủ yếu là ánh xạ khóa và tokenizer có cổng.
- Không có trên biểu mẫu được lưu trữ: bộ điều hợp PEFT, các hành động tương đối, RTC trong thời gian huấn luyện, bộ nhớ MEM.
lerobot-train \
--dataset.repo_id=${HF_USER}/my_so100_dataset \
--policy.type=pi05 \
--policy.pretrained_path=lerobot/pi05_base \
--policy.rtc_training_max_delay=10 \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--batch_size=4 --steps=30000 --seed=1000Bạn chọn mô hình và tập dữ liệu trong biểu mẫu huấn luyện, backend thuê GPU trên thị trường giao ngay theo VRAM yêu cầu, chạy trình huấn luyện và ghi các checkpoint vào bộ lưu trữ đối tượng. Pi0.5 chỉ có trên đám mây ở đây. Các hướng dẫn có sẵn cho SO-100, SO-101, Koch v1.1 và LeKiwi.
| Cài đặt | Những gì nền tảng gửi cho Pi0.5 |
|---|---|
| Checkpoint cơ sở | lerobot/pi05_base |
| Loại chính sách | pi05 |
| Kích thước lô | 1 |
| Tốc độ học | 5e-5 |
| Số bước tối đa | 30000 |
| Tích lũy gradient | 16, nhưng xem cảnh báo bên dưới |
| Các tùy chỉnh bổ sung trong biểu mẫu | seed, logFreq |
| Định dạng tập dữ liệu | LeRobot v3.0 |
| Cấp GPU | A100 80 GB hoặc H100 80 GB |
Trình huấn luyện gửi giá trị tích lũy gradient là 16 và lerobot 0.5.1 không có cờ để nhận nó, vì vậy nó bị bỏ qua. Không có phiên bản lerobot nào được phát hành có cờ này: tùy chỉnh này chỉ tồn tại trên nhánh chính, dưới dạng --accelerator.gradient_accumulation.steps. Kích thước lô hiệu quả ở đây là 1, so với 256 mà cấu hình pi05_libero của openpi sử dụng. Điều này đáng biết trước khi bạn đọc đường cong mất mát. Tùy chỉnh này áp dụng cho các lần chạy GR00T N1.7 và GR00T N1.5.
Suy luận hoạt động theo cùng một cách: một pod được cấp phát để phục vụ chính sách và client cục bộ của bạn giao tiếp với nó. Pod có một watchdog không hoạt động và tự hủy, vì vậy một tab bị quên sẽ không âm thầm tính phí. Lưu ý về độ trễ vẫn áp dụng, đó là lý do tại sao ACT ở 20 ms thường thắng các tác vụ nhanh.
Khi nó không hoạt động
| Triệu chứng | Nguyên nhân có khả năng nhất |
|---|---|
| Chạy bị từ chối trước khi bắt đầu | Tập dữ liệu v2.1 nhưng Pi0.5 yêu cầu v3.0, hoặc ngược lại đối với GR00T |
| ImportError, thiếu gói datasets | lerobot 0.6.x không có phần bổ sung huấn luyện |
| ValueError về q01 và q99 trên lô đầu tiên | Không có phân vị trong meta/stats.json; tính toán lại hoặc sử dụng MEAN_STD |
| CUDA hết bộ nhớ ở bước 0 | Tinh chỉnh toàn bộ dưới 70 GB; thử checkpointing hoặc train_expert_only |
| Lỗi 401 hoặc lỗi repo có cổng | Giấy phép tokenizer PaliGemma không được chấp nhận |
| Mất mát giảm, robot không làm gì | Không khớp chuẩn hóa, hoặc chính sách sao chép trạng thái |
| Cánh tay tạm dừng giữa các khối | Độ trễ mỗi bước cộng với thời gian khứ hồi; hàng đợi khối bị cạn |
| Hoạt động trong một thiết lập, thất bại trong thiết lập khác | Quá ít tập, hoặc tất cả trong một cấu hình |
- Tập dữ liệu bị từ chối: yêu cầu v3
- Hết bộ nhớ trong quá trình huấn luyện
- Loss giảm nhưng chính sách không làm gì cả
- Chính sách bị đóng băng giữa chuyển động
- Chính sách chỉ hoạt động trong một thiết lập
- Công việc huấn luyện bị kẹt trong hàng đợi
Chi phí của một lần chạy
Pi0.5 nằm trong phân khúc đắt tiền vì nó cần một card 80 GB, và giá giao ngay thay đổi, vì vậy con số này là một khoảng giá chứ không phải một mức giá cố định. Đối với nhiều tác vụ SO-100, hãy huấn luyện SmolVLA hoặc ACT trên phân khúc 24 GB trước, xác nhận rằng tác vụ có thể học được, sau đó dành hàng giờ A100 cho nó. Huấn luyện chính sách đầu tiên của bạn hướng dẫn vòng lặp rẻ hơn đó, và giá cả chứa các phân khúc hiện tại.
| Phân khúc | Chính sách | Lần chạy điển hình | Giá mỗi giờ | Chi phí mỗi lần chạy |
|---|---|---|---|---|
| A100 80 GB or H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 to 6 hours | 1.20 to 2.00 USD | khoảng 4 to 12 USD |
| RTX 4090 hoặc bất kỳ card 24 GB nào | SmolVLA, ACT | 2 to 5 hours | 0.30 to 0.60 USD | khoảng 1 to 3 USD |

Trước khi dành cả buổi tối: GR00T N1.7 against Pi0.5 và Pi0.5 against SmolVLA trình bày các số liệu tương tự một cách trực tiếp. Đấu trường chứa 85 mô hình VLA với 332 kết quả benchmark, mỗi kết quả được liên kết với nguồn của nó, và thông tin cơ bản về dòng này có trong tổng quan về VLA của chúng tôi.
Huấn luyện Pi0.5 mà không cần xây dựng ngăn xếp
Chọn tập dữ liệu và các siêu tham số trong một biểu mẫu. Hệ thống phụ trợ thuê một thẻ 80 GB trên thị trường giao ngay, chạy trình huấn luyện và ghi các điểm kiểm tra vào bộ lưu trữ đối tượng. Hướng dẫn cho SO-100, SO-101, Koch v1.1 và LeKiwi.
Mở các hướng dẫn huấn luyệnTôi có thể tinh chỉnh Pi0.5 trên RTX 4090 không?▾
Không phải là tinh chỉnh hoàn chỉnh: openpi liệt kê hơn 70 GB cho việc đó, vì vậy cần một A100 80 GB hoặc H100. Con số LoRA 22.5 GB của nó thuộc về đường dẫn JAX; triển khai PyTorch không có LoRA. Tích hợp PEFT của LeRobot tồn tại, nhưng ví dụ được ghi lại của nó là SmolVLA và không có con số VRAM nào được công bố cho pi05.
Tôi cần bao nhiêu tập?▾
Năm mươi, cùng mức sàn với GR00T và ACT; chỉ SmolVLA thấp hơn, ở mức 30. Điểm kiểm tra cơ sở mang hơn 10.000 giờ tiền huấn luyện, vì vậy việc tinh chỉnh là thích nghi hơn là học từ đầu: 50 tập sạch, đa dạng tốt hơn hai trăm tập từ một cấu hình.
Sự khác biệt giữa --policy.path và --policy.pretrained_path là gì?▾
--policy.path tải trọng số và config.json của điểm kiểm tra, vì vậy các cài đặt đã lưu như n_action_steps được kế thừa và --policy.type phải được bỏ qua. --policy.pretrained_path chỉ tải trọng số: tên tính năng đến từ tập dữ liệu của bạn, cài đặt đã lưu được đặt lại, --policy.type là bắt buộc. Đó là lý do tại sao lệnh LIBERO truyền n_action_steps=10 và empty_cameras=1 một cách rõ ràng; nếu không chúng sẽ trở về 50 và 0.
Phiên bản mở có cung cấp cho tôi Pi0.5 đầy đủ từ bài báo không?▾
Không. Cả hai chỉ hỗ trợ đầu hành động khớp dòng chảy. Giai đoạn tiền huấn luyện mã thông báo rời rạc với bộ mã hóa hành động FAST và dự đoán tác vụ phụ cấp cao không được phát hành, và thẻ lerobot/pi05_base thêm RL vào danh sách đó mặc dù bài báo pi0.5 không mô tả giai đoạn học tăng cường nào. Bạn huấn luyện một chính sách cấp thấp được điều kiện hóa bởi một chuỗi ngôn ngữ bạn cung cấp, chứ không phải một mô hình tự phân tách một tác vụ dài.
Hướng dẫn này được viết dựa trên các phiên bản nào?▾
openpi trên main và lerobot 0.6.1, bản phát hành từ ngày 3 tháng 8 năm 2026, cả hai đều được đọc vào ngày 23 tháng 8 năm 2026. Các tập dữ liệu v3.0 đã đến cùng với 0.4.0 vào tháng 10 năm 2025. 0.6.0 đã làm cho gói cơ sở nhẹ hơn, vì vậy lerobot[pi] một mình không còn cài đặt ngăn xếp huấn luyện, và chuyển triển khai sang lerobot-rollout. RTC thời gian huấn luyện chỉ có trên main; trình huấn luyện được lưu trữ ở đây chạy 0.5.1.
Sources
- Physical-Intelligence/openpi: open-source models and packages for robotics
- openpi training configs, including pi05_libero and pi05_droid_finetune
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- pi0.5: a Vision-Language-Action Model with Open-World Generalization
- Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
- PaliGemma: A versatile 3B VLM for transfer
- Training-Time Action Conditioning for Efficient Real-Time Chunking
- LeRobot pi05 documentation on the main branch, including training-time RTC
- LeRobot documentation: parameter efficient fine-tuning with PEFT
- LeRobotDataset v3.0 format documentation
- LeRobot release notes: v0.3.2 through v0.6.1, with the v0.6.0 breaking changes
- LeRobot v0.5.0: Scaling Every Dimension
- lerobot/pi05_base model card
- LeRobot documentation: Real-Time Chunking (RTC)
- openpi Pi0Config: the model defaults pi0 and pi05 inherit
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started