LeRobot documentation
π₀ (Pi0)
π₀ (Pi0)
π₀ là một mô hình Vision-Language-Action để điều khiển robot tổng quát, từ Physical Intelligence. Bản triển khai LeRobot được điều chỉnh từ kho mã nguồn mở OpenPI của họ.
Tổng quan về Mô hình
π₀ đánh dấu một bước đột phá trong lĩnh vực robot khi trở thành mô hình nền tảng robot đa dụng đầu tiên do Physical Intelligence phát triển. Khác với các chương trình robot truyền thống vốn là những chuyên gia hẹp được lập trình cho các chuyển động lặp đi lặp lại, π₀ được thiết kế như một chính sách đa dụng, có khả năng hiểu các đầu vào thị giác, diễn giải các chỉ dẫn bằng ngôn ngữ tự nhiên và điều khiển nhiều loại robot khác nhau trong đa dạng các tác vụ.
Tầm nhìn về Trí tuệ Vật lý
Như Physical Intelligence đã mô tả, trong khi AI đã đạt được những thành công đáng kể trong các lĩnh vực kỹ thuật số, từ chơi cờ đến khám phá thuốc, trí tuệ của con người vẫn vượt trội hơn AI một cách đáng kể trong thế giới vật lý. Nếu diễn đạt lại nghịch lý Moravec, việc thắng một ván cờ là một bài toán “dễ” đối với AI, nhưng gấp một chiếc áo sơ mi hoặc dọn dẹp một chiếc bàn lại đòi hỏi phải giải quyết một số vấn đề kỹ thuật khó khăn nhất từng được nghĩ ra. π₀ đại diện cho bước đầu tiên hướng tới việc phát triển trí tuệ vật lý nhân tạo, cho phép người dùng đơn giản là yêu cầu robot thực hiện bất kỳ tác vụ nào họ muốn, giống như cách họ có thể làm với các mô hình ngôn ngữ lớn.
Kiến trúc và Phương pháp tiếp cận
π₀ kết hợp một số đổi mới quan trọng:
- Flow Matching: Sử dụng một phương pháp mới để bổ sung cho các VLM đã được huấn luyện trước khả năng tạo ra các đầu ra hành động liên tục thông qua flow matching (một biến thể của mô hình khuếch tán)
- Đào tạo đa nền tảng (Cross-Embodiment Training): Được đào tạo trên dữ liệu từ 8 nền tảng robot khác nhau bao gồm UR5e, Bimanual UR5e, Franka, Bimanual Trossen, Bimanual ARX, Mobile Trossen và Mobile Fibocom
- Pre-training quy mô Internet: Kế thừa kiến thức ngữ nghĩa từ Mô hình Ngôn ngữ - Thị giác (Vision-Language Model) đã được huấn luyện trước với 3 tỷ tham số
- Điều khiển tần số cao: Xuất lệnh động cơ với tần số lên đến 50 Hz để thao tác khéo léo theo thời gian thực
Yêu cầu cài đặt
Cài đặt LeRobot bằng cách làm theo Hướng dẫn cài đặt của chúng tôi.
Cài đặt các phụ thuộc của Pi0 bằng cách chạy:
pip install -e ".[pi]"
Dữ liệu huấn luyện và khả năng
π₀ được huấn luyện trên bộ dữ liệu tương tác robot lớn nhất cho đến nay, kết hợp ba nguồn dữ liệu chính:
- Pre-training quy mô Internet: Dữ liệu thị giác-ngôn ngữ từ web để hiểu ngữ nghĩa
- Bộ dữ liệu X-Embodiment mở: Các bộ dữ liệu thao tác robot mã nguồn mở
- Physical Intelligence Dataset: Bộ dữ liệu lớn và đa dạng về các tác vụ khéo léo trên 8 robot khác nhau
Cách sử dụng
Để sử dụng π₀ trong LeRobot, hãy chỉ định loại policy là:
policy.type=pi0Huấn luyện
Để huấn luyện π₀, bạn có thể sử dụng script huấn luyện LeRobot tiêu chuẩn với cấu hình phù hợp:
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--output_dir=./outputs/pi0_training \
--job_name=pi0_training \
--policy.pretrained_path=lerobot/pi0_base \
--policy.repo_id=your_repo_id \
--policy.compile_model=true \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--steps=3000 \
--policy.device=cuda \
--batch_size=32Các tham số huấn luyện chính
--policy.compile_model=true: Bật biên dịch mô hình để huấn luyện nhanh hơn--policy.gradient_checkpointing=true: Giảm đáng kể lượng bộ nhớ sử dụng trong quá trình huấn luyện--policy.dtype=bfloat16: Sử dụng huấn luyện độ chính xác hỗn hợp để tăng hiệu quả--batch_size=32: Kích thước batch cho huấn luyện, điều chỉnh giá trị này dựa trên bộ nhớ GPU của bạn--policy.pretrained_path=lerobot/pi0_base: Mô hình π₀ cơ bản mà bạn muốn tinh chỉnh, các tùy chọn bao gồm:- lerobot/pi0_base
- lerobot/pi0_libero (được huấn luyện cụ thể trên bộ dữ liệu Libero)
--policy.optimizer_fused=true: Sử dụng AdamW đã hợp nhất (fused) để thực hiện các bước tối ưu hóa nhanh hơn; cờ này sẽ bị bỏ qua khi tiếp tục một lần chạy
Giải thích các tham số huấn luyện
| Tham số | Mặc định | Mô tả |
|---|---|---|
freeze_vision_encoder | false | Không đóng băng bộ mã hóa thị giác |
train_expert_only | false | Không đóng băng VLM, huấn luyện tất cả các tham số |
💡 Mẹo: Đặt train_expert_only=true sẽ đóng băng VLM và chỉ huấn luyện action expert cùng các lớp projection, cho phép finetuning với mức sử dụng bộ nhớ thấp hơn.
Hành động tương đối
Mặc định, π₀ dự đoán các hành động tuyệt đối. Bạn có thể bật hành động tương đối để mô hình dự đoán các độ lệch so với trạng thái hiện tại của robot. Điều này có thể cải thiện độ ổn định của quá trình huấn luyện cho một số cấu hình nhất định.
Để sử dụng hành động tương đối, trước tiên hãy tính lại thống kê tập dữ liệu của bạn trong không gian tương đối thông qua CLI:
lerobot-edit-dataset \
--repo_id your_dataset \
--new_repo_id your_dataset \
--operation.type recompute_stats \
--operation.overwrite true \
--operation.relative_action true \
--operation.chunk_size 50 \
--operation.relative_exclude_joints "['gripper']" \
--push_to_hub trueHoặc tương đương trong Python:
from lerobot.datasets import LeRobotDataset, recompute_stats
dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()chunk_size phải khớp với chunk_size của policy của bạn (mặc định là 50 cho π₀). relative_exclude_joints liệt kê tên các khớp cần giữ trong không gian tuyệt đối (ví dụ: lệnh gắp). Sử dụng --push_to_hub true để tải thống kê đã cập nhật lên Hub.
Sau đó, huấn luyện với hành động tương đối được bật:
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
...Giấy phép
Mô hình này tuân theo Giấy phép Apache 2.0, nhất quán với kho OpenPI gốc.
Update on GitHub