
Mô tả từng bước một vòng DAgger có con người giám sát (human-gated) trên cánh tay SO-100: chạy chính sách và ghi lại, tiếp quản khi nó đi sai hướng, phân loại lượt chạy thành một hiệu chỉnh, kết hợp thành một tập dữ liệu hỗn hợp, và tiếp tục huấn luyện từ một checkpoint. Bao gồm cả cách tiếp quản bằng bàn phím và thanh trượt dành cho những ai không có cánh tay leader, cùng bốn sai lầm khiến cả vòng lặp trở nên vô giá trị.
Chính sách của bạn chạy. Nó vươn tới khối lập phương, đóng kẹp sớm hơn một xăng-ti-mét, và vẫn tiếp tục như thể đã cầm được nó. Không có lỗi nào hiện ra, và dù có nhìn chằm chằm vào training loss đến đâu cũng không giải thích được điều đó. Cách khắc phục không phải là thêm 20.000 bước gradient nữa trên cùng những minh họa (demonstrations) cũ. Mà là đặt tay bạn trở lại đúng vị trí trên cánh tay nơi nó đi sai, ghi lại những gì bạn đã làm thay vào đó, và huấn luyện checkpoint tiếp theo trên dữ liệu cũ cộng với hiệu chỉnh đó. Đó chính là một vòng DAgger, và đây là cách nó vận hành trên một SO-100 với một chính sách vision-language-action (VLA).
Phần lý thuyết nằm ở nơi khác: tại sao việc tổng hợp tập dữ liệu (dataset aggregation) lại hiệu quả và việc con người giám sát thay đổi điều gì ở đó. Đây là cẩm nang vận hành, và nó giả định rằng bạn đã có một checkpoint đã huấn luyện, một bộ camera hoạt động tốt, và một cánh tay có thể chuyển động. Sáu bước dưới đây là vòng lặp như được triển khai trên trang DAgger của nền tảng này, nhưng trình tự vẫn giống hệt nếu bạn tự viết script.
Tóm tắt một vòng lặp
- •Chạy chính sách đã huấn luyện và ghi lại nó, với văn bản tác vụ (task text) của lượt chạy đó thay vì một nhãn điều khiển từ xa chung chung.
- •Tiếp quản ngay khoảnh khắc hành vi đi sai hướng: bàn giao kiểu gương (mirror handover) với cánh tay leader, hoặc tiếp quản ngay lập tức và thủ công bằng bàn phím hay thanh trượt nếu không có cánh tay leader.
- •Phân loại mọi lượt chạy: xếp thành một hiệu chỉnh, giữ lại như một episode đánh giá, hoặc loại bỏ.
- •Kết hợp tập dữ liệu hỗn hợp bằng tay - minh họa gốc cộng với các hiệu chỉnh, các episode được chọn theo từng nguồn. Không bao giờ huấn luyện chỉ trên các hiệu chỉnh.
- •Tiếp tục huấn luyện từ checkpoint gần nhất, và ghi chú checkpoint nào tạo ra tập hỗn hợp nào.
- •Con số cho biết vòng lặp có đáng giá hay không là tỷ lệ can thiệp, không phải training loss.
Vì sao vòng thứ hai không chỉ đơn thuần là thêm dữ liệu
Behavior cloning huấn luyện trên những trạng thái mà con người từng đi qua. Ở thời điểm kiểm thử, chính sách lại đi vào những trạng thái do chính nó gây ra, và các sai số hành động nhỏ cộng dồn thành những trạng thái mà không minh họa nào từng bao phủ. Ross, Gordon và Bagnell đã hình thức hóa thất bại đó cho AISTATS 2011 và giải quyết bằng một thuật toán lặp huấn luyện một chính sách tất định, dừng theo thời gian (stationary deterministic policy), và theo phép quy giản của họ, chính sách này phải hoạt động tốt dưới phân phối trạng thái mà chính nó tạo ra: chạy chính sách hiện tại, để chuyên gia gán nhãn cho các trạng thái mà nó thực sự đã đến, thêm chúng vào tập dữ liệu, huấn luyện lại, rồi lặp lại. Kelly và cộng sự đã biến việc truy vấn này thành khả thi trong thực tế với HG-DAgger, nơi con người quyết định khi nào giành quyền điều khiển thay vì gán nhãn cho các trạng thái mà không cầm bộ điều khiển; họ báo cáo hiệu năng được cải thiện so với cả DAgger lẫn behavior cloning trên một tác vụ lái xe tự hành mô phỏng và một tác vụ thực tế. Việc con người giám sát chính là điều khiến vòng lặp này khả thi trên một cánh tay để bàn - bạn chỉ đặt tay vào khi có điều gì đó đang đi sai.
Hai hệ quả quan trọng hơn trong thực tế so với lý thuyết. Các hiệu chỉnh không phải là những minh họa thông thường: chúng tập trung tại các vùng nút thắt (bottleneck regions) mà Mandlekar và cộng sự mô tả, nơi một độ lệch nhỏ đẩy chính sách vào những trạng thái mà minh họa chưa bao giờ bao phủ. Và một tập dữ liệu chỉ gồm toàn những phần khó đó là một tập dữ liệu có hình dạng tồi - Belkhale, Cui và Sadigh lập luận từ góc độ dữ liệu rằng sự đa dạng trạng thái không phải lúc nào cũng có lợi, và rằng độ phân kỳ hành động (action divergence) cùng sự đa dạng chuyển tiếp (transition diversity) mới cùng nhau quyết định chất lượng tập dữ liệu. Tập dữ liệu hỗn hợp không phải là một sự thỏa hiệp, đó chính là mục đích.
Cố định những thứ này trước vòng đầu tiên
Một vòng DAgger so sánh một chính sách với chính nó theo thời gian. Bất cứ điều gì bạn thay đổi giữa các vòng mà không phải là tập dữ liệu đều khiến phép so sánh đó trở nên vô nghĩa.
- Vị trí và giá đỡ camera, kể cả camera cổ tay. Chỉ cần lỏng một cái kẹp là bạn đã thay đổi phân phối quan sát, chứ không phải chính sách.
- Phơi sáng và cân bằng trắng, nếu hệ thống thu hình của bạn cho phép cố định chúng. Auto-exposure trôi dạt giữa các vòng là một sự dịch chuyển miền (domain shift) chậm và vô hình.
- Hiệu chuẩn cánh tay và vị trí zero của servo. Nếu buộc phải hiệu chuẩn lại, hãy coi mọi thứ ghi trước đó là một tập dữ liệu riêng biệt.
- Văn bản tác vụ (task text). Mọi VLA ở đây đều điều kiện hóa theo nó; đổi cách diễn đạt giữa chừng vòng lặp là tạo ra một tác vụ khác.
- Ánh sáng, mặt bàn, bộ vật thể. Một vật thể mới là một thí nghiệm mới, không phải vòng lặp tiếp theo.
- Tần số khung hình ghi. So sánh tỷ lệ can thiệp giữa hai khung lấy mẫu (sampling raster) khác nhau tạo ra chênh lệch đến từ chính khung lấy mẫu đó.
Hsu và cộng sự đã so sánh góc nhìn lấy tay làm trung tâm với góc nhìn ngôi thứ ba thông thường, và nhận thấy góc nhìn eye-in-hand liên tục cải thiện hiệu quả huấn luyện và khả năng khái quát hóa ngoài phân phối (out-of-distribution), dù nhìn thấy ít cảnh hơn. Trên một cánh tay năm khớp, thời điểm đóng/mở kẹp (gripper timing) thường là thứ mà các hiệu chỉnh của bạn đang sửa, và đó chính là thứ mà góc nhìn cổ tay mang lại.
Vòng lặp, từ đầu đến cuối
- 1Chạy suy luận và ghi lại
Bắt đầu lượt chạy với checkpoint bạn muốn cải thiện, sau đó bắt đầu ghi vào gốc suy luận (inference root). Ghi theo cách đó, dữ liệu sẽ kế thừa chính văn bản tác vụ của lượt chạy - vốn là thứ mà chính sách đã được huấn luyện trên đó - thay vì nhãn điều khiển từ xa mặc định. Không ghi lại thì bạn chỉ có thể xem thất bại chứ không thể huấn luyện trên nó.
bash# two calls, not one: the run, then its recording POST /inference/start # model_id, and hf_repo_id = the checkpoint to drive POST /recording/start # root=inference # root=inference also makes the recording inherit the run's task text - 2Tiếp quản khi nó đi sai hướng
Nhấn Take over và chọn chế độ nhập liệu: cánh tay leader, bàn phím hoặc thanh trượt. Bộ chạy tạm dừng, bạn hiệu chỉnh, rồi bạn trả lại quyền điều khiển. Các khung hình được ghi trong lúc bạn đang điều khiển sẽ tự động được đánh dấu là can thiệp.
bashPOST /inference/takeover/start # input = leader | keyboard | sliders POST /inference/takeover/nudge # keyboard, relative delta per call POST /inference/takeover/set # sliders, absolute target POST /inference/takeover/stop # back to the policy - 3Phân loại các episode
Quyết định cho từng episode: xếp thành hiệu chỉnh, giữ làm đánh giá, hoặc loại bỏ. Một lượt chạy mà chính sách hoàn thành không cần trợ giúp là dữ liệu đánh giá.
- 4Đồng bộ tập dữ liệu hiệu chỉnh
Các hiệu chỉnh được thu thập vào một tập dữ liệu cục bộ theo từng chính sách và chuyển lên lưu trữ đám mây qua cơ chế đồng bộ tự động. Không có gì bị trộn lẫn vào mà bạn không tự đưa vào đó.
- 5Kết hợp tập dữ liệu hỗn hợp
Kết hợp tập dữ liệu gốc với các hiệu chỉnh, chọn episode một cách tường minh theo từng nguồn. Kết quả từ thời điểm đó trở đi là một tập dữ liệu bình thường.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Tiếp tục huấn luyện từ checkpoint
Huấn luyện tập hỗn hợp từ checkpoint trước đó thay vì từ mô hình gốc (base model). Ghi chú checkpoint nào và tập hỗn hợp nào; thiếu cặp thông tin đó thì vòng lặp không thể tái lập được.
bash# field on the training job base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint> # the platform passes it to the training pod as BASE_CKPT_S3
Chi tiết bước 2: hai cách để tiếp quản
Với cánh tay leader
Trong leader-follower chế độ, việc tiếp quản là một sự bàn giao giữa hai cánh tay không cùng tư thế. Nhấn Take over sẽ tạm dừng bộ chạy và đưa cánh tay leader về đúng tư thế hiện tại của cánh tay follower, để không có gì bị giật khi mô-men xoắn được chuyển giao. Nếu quá trình căn chỉnh đó hết thời gian chờ, bạn tự căn chỉnh cánh tay leader bằng tay và chỉ nhả ra khi hai bên lệch nhau không quá năm độ. Từ đó trở đi, bạn điều khiển từ xa như bình thường và cột action ghi lại những gì bạn đã ra lệnh.
Hãy thành thật về hướng đi này: quá trình căn chỉnh tự động và việc bàn giao mô-men xoắn là phần được kiểm thử ít nhất của vòng lặp trên phần cứng thật. Hãy thử bàn giao ở một tư thế chậm, vô hại trước khi bạn dựa vào nó trong một lượt chạy quan trọng. Cánh tay leader tạo ra các hiệu chỉnh mượt nhất trong ba chế độ, nhưng cũng là chế độ có nhiều thứ nhất có thể hỏng về mặt cơ khí.
Không có cánh tay leader: bàn phím và thanh trượt
Hầu hết những người đọc bài này chỉ sở hữu một cánh tay. Như vậy là đủ. Chọn chế độ nhập liệu bàn phím hoặc thanh trượt ngay khi bạn nhấn Take over, và việc tiếp quản diễn ra ngay lập tức và thủ công - không có cánh tay thứ hai để căn chỉnh, nên không có bước căn chỉnh nào cả. Cánh tay follower giữ nguyên tư thế và chờ nhận lệnh.
| Chế độ nhập liệu | Cánh tay di chuyển như thế nào | Giới hạn mỗi lệnh gọi do server áp đặt | Bị khóa khi nào |
|---|---|---|---|
| Cánh tay leader | Cơ chế mirror điều khiển cánh tay follower theo góc khớp của cánh tay leader | Không có lệnh nudge hay set trong chế độ này; mirror liên tục ghi mục tiêu cho follower | Không bao giờ bị khóa, và là mặc định nếu không có chế độ nhập liệu nào được chỉ định - nhưng cần một cánh tay thứ hai; không có leader id thì việc tiếp quản sẽ bị từ chối |
| Bàn phím | Nudge tương đối cho mỗi lần nhấn phím, gửi tới endpoint nudge của takeover | Giới hạn cứng ở 2 độ cho mỗi khớp, 4 độ cho kẹp | Bị từ chối với mã 409 nếu việc tiếp quản được bắt đầu ở chế độ leader |
| Thanh trượt | Tư thế mục tiêu tuyệt đối, gửi tới endpoint set của takeover | Tối đa 6 độ dịch chuyển về phía mục tiêu cho mỗi lần gọi; giao diện tiếp tục gửi khoảng mười lần mỗi giây | Bị từ chối với mã 409 nếu việc tiếp quản được bắt đầu ở chế độ leader |
Các giới hạn này được áp đặt phía server, không phải ở giao diện, vì một giá trị delta gõ nhầm trên một cánh tay dùng bus-servo có thể gây va chạm. Các hiệu chỉnh bằng bàn phím ra theo từng bước và hơi thô; các hiệu chỉnh bằng thanh trượt mượt hơn, vì server di chuyển dần về phía mục tiêu trong khi giao diện vẫn tiếp tục gửi liên tục. Dù theo cách nào, cột action cũng nhận được đầy đủ vector tư thế đã ra lệnh, và việc đánh dấu can thiệp giống hệt như ở đường dẫn leader, nên các hiệu chỉnh bằng bàn phím vẫn nằm trong cùng một tập dữ liệu mà không có khác biệt về định dạng.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
Khi nào nên nhấn nút
Nên sớm hơn là muộn. Một hiệu chỉnh bắt đầu sau khi kẹp đã đóng lại trên khoảng không sẽ dạy chính sách cách phục hồi từ một thất bại mà đáng lẽ nó không nên rơi vào, và dữ liệu phục hồi có giá trị thấp hơn nhiều so với dữ liệu phòng tránh. Hãy ngắt ngay khoảnh khắc đầu tiên bạn tin chắc quỹ đạo đang sai, hiệu chỉnh qua phần khó, rồi trả lại quyền điều khiển ngay khi trạng thái là một trạng thái mà chính sách từng xử lý được trước đó. ThriftyDAgger tự động hóa quyết định này bằng cách chỉ cho can thiệp dựa trên độ mới lạ và rủi ro ước tính trong một ngân sách can thiệp của con người cố định, nhưng trên một cánh tay đơn với một con người đã theo dõi sẵn, việc con người tự quyết định vẫn rẻ hơn và được hiệu chỉnh tốt hơn bất cứ thứ gì bạn có thể tinh chỉnh.
Có thể làm được với bộ công cụ mã nguồn mở và vài script. Cái giá phải trả là công việc sổ sách (bookkeeping), và đó chính là nơi các vòng DAgger thường chết yểu.
- Ghi các khung hình từ script suy luận của riêng bạn vào một tập dữ liệu LeRobot, với chuỗi tác vụ (task string) mà chính sách đã được huấn luyện trên đó.
- Tạm dừng vòng lặp chính sách, chuyển nguồn lệnh, và đánh dấu mọi khung hình bạn điều khiển là một can thiệp. Không có cờ đánh dấu đó, các hiệu chỉnh sẽ trông giống như các minh họa thông thường.
- Quyết định một cách có chủ ý điều gì xảy ra với các khung hình chuyển tiếp giữa lúc chính sách nhả quyền điều khiển và lần nhập liệu đầu tiên của bạn.
- Giữ các hiệu chỉnh trong tập dữ liệu riêng theo từng chính sách, và theo dõi chỉ số episode bằng tay để có thể tái tạo lại tập hỗn hợp.
- Trỏ điểm vào (entry point) của quá trình tinh chỉnh tới checkpoint trước đó, và kiểm tra trong log rằng nó đã nạp đúng những trọng số đó.
Cùng sáu bước đó tồn tại dưới dạng các nút bấm. Thứ được tự động hóa là những gì dễ làm sai nhất khi làm bằng tay: cờ can thiệp theo từng khung hình, việc tách biệt giữa hiệu chỉnh và đánh giá, và bản ghi checkpoint nào tạo ra tập hỗn hợp nào. Không có gì đi vào một tập dữ liệu đã kết hợp mà bạn không tự chọn.
Nó không quyết định thay bạn. Lượt chạy nào được tính là hiệu chỉnh, episode nào đưa vào tập hỗn hợp, và khi nào nên dừng lại vẫn là những quyết định thuộc về đánh giá của bạn. Các trường được tài liệu hóa dưới mục training, các chế độ nhập liệu dưới mục teleoperation.
Chi tiết bước 3: phân loại quyết định chất lượng
Sau lượt chạy, bạn có một bản ghi với một số khung hình được đánh dấu là can thiệp. Có ba đích đến, và chọn sai một trong số đó sẽ âm thầm đầu độc vòng tiếp theo.
- Xếp thành hiệu chỉnh khi can thiệp đó là một sự sửa chữa thực sự: chính sách đang đi sai hướng và thao tác của bạn cho thấy điều đúng đắn từ một trạng thái mà chính chính sách đó đã tạo ra.
- Giữ làm đánh giá đối với các lượt chạy tự động sạch sẽ và các lượt bạn tiếp quản chỉ vì thận trọng. Các episode đánh giá là cách bạn đo lường checkpoint tiếp theo, và chúng không bao giờ được dùng để huấn luyện.
- Loại bỏ các lượt chạy bị hỏng bởi thứ gì đó không liên quan - một khung hình camera bị rớt, một servo bị kẹt, một vật thể bạn vô tình làm đổ. Một hiệu chỉnh lộn xộn còn tệ hơn là không có hiệu chỉnh nào.
Giữa lúc chính sách nhả quyền điều khiển và lần nhập liệu đầu tiên của bạn, cánh tay đứng yên trong khi bộ ghi vẫn tiếp tục ghi - một chuỗi các tư thế giống hệt nhau đi kèm những hình ảnh hơi khác nhau. Ở đây, những khung hình bàn giao đó được giữ lại trong bản ghi thô nhưng bị loại khỏi tập dữ liệu hiệu chỉnh. Nếu bạn tự xây dựng vòng lặp này, hãy chủ động cắt bỏ chúng: một chính sách được huấn luyện trên chúng sẽ học cách dừng lại đúng ở nơi đáng lẽ nó phải hành động.
Chi tiết bước 5: kết hợp tập hỗn hợp
Việc kết hợp lấy tập dữ liệu gốc cộng với tập dữ liệu hiệu chỉnh và tạo ra một tập dữ liệu LeRobot mới, bình thường, huấn luyện được như bất kỳ tập dữ liệu nào khác. Đặc tính quan trọng là việc chọn episode được thực hiện tường minh theo từng nguồn - không có gì được trộn vào một cách tự động. Điều đó nghe có vẻ nhỏ nhặt cho đến lần đầu tiên một chính sách hành xử kỳ lạ và bạn phải tái dựng lại xem nó đã được huấn luyện trên những gì.
Câu hỏi còn bỏ ngỏ là tỷ lệ pha trộn, và chưa ai có một con số áp dụng được cho mọi trường hợp. Điều mà các tài liệu đồng thuận là các hiệu chỉnh nên được tính trọng số cao hơn tỷ lệ khung hình của chúng. Mandlekar và cộng sự huấn luyện lại lặp đi lặp lại trên dữ liệu mà hệ thống can thiệp của họ thu thập được, để chính sách học cách vượt qua các nút thắt, và báo cáo rằng các agent được huấn luyện theo cách đó vượt trội hơn các agent được huấn luyện trên cùng một số lượng mẫu lấy từ các bên trình diễn không can thiệp. Sirius đi xa hơn và gán lại trọng số cho các mẫu huấn luyện dựa trên mức độ tin cậy ước lượng của con người, báo cáo mức tăng 8 phần trăm trong mô phỏng và 27 phần trăm trên phần cứng thật về tỷ lệ thành công của chính sách so với các phương pháp mà nó so sánh, với tốc độ hội tụ nhanh gấp đôi. Không có điểm vào huấn luyện nào ở đây cung cấp một nút chỉnh trọng số mẫu, nên giải pháp thô sơ thay thế là giữ lại mọi episode hiệu chỉnh trong khi lấy mẫu con (subsample) từ các minh họa gốc - và ghi lại những gì bạn đã làm.

Chi tiết bước 6: tiếp tục từ một checkpoint thực sự có nghĩa là gì
Huấn luyện tập hỗn hợp từ mô hình gốc vẫn hoạt động được, nhưng bỏ phí vòng trước đó và tốn một lượt huấn luyện đầy đủ. Tiếp tục từ checkpoint trước đó nhanh hơn và thường tốt hơn. Nhưng nó cũng hạn chế hơn nhiều so với những gì cụm từ đó gợi ý.
Một checkpoint chỉ chứa trọng số (weights-only) chỉ gồm các tham số và không gì khác. Nạp nó cho lượt chạy tiếp theo một điểm khởi đầu tốt hơn so với mô hình gốc, nhưng các moment của optimizer, vị trí trên lịch trình learning rate và thứ tự dữ liệu đều bắt đầu lại từ đầu. Hãy dự đoán trước một cú tăng vọt (spike) của loss ở đầu lượt huấn luyện tiếp theo, đừng đọc nó như một thất bại, và đừng gọi vòng này là một sự tiếp tục (resume). Đây là một warm start.
| Chính sách | Kích thước | Bậc GPU | Suy luận mỗi bước hành động | Định dạng tập dữ liệu | Số episode cần trước khi đáng thử |
|---|---|---|---|---|---|
| GR00T N1.7 | khoảng 3 tỷ, xấp xỉ 40 triệu được huấn luyện trong quá trình tinh chỉnh | A100 80 GB hoặc H100 80 GB | khoảng 152 ms | LeRobot v2.0 hoặc v2.1 | 50 |
| GR00T N1.5 | khoảng 3 tỷ | A100 80 GB hoặc H100 80 GB | khoảng 165 ms | LeRobot v2.0 hoặc v2.1 | 50 |
| Pi0.5 | khoảng 3 tỷ trên nền tảng PaliGemma | A100 80 GB hoặc H100 80 GB | khoảng 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | khoảng 450 triệu | RTX 4090 hoặc bất kỳ card 24 GB nào | khoảng 245 ms | LeRobot v3.0 | 30 |
| ACT | khoảng 80 triệu, huấn luyện từ đầu | RTX 4090 hoặc bất kỳ card 24 GB nào | khoảng 20 ms | LeRobot v3.0 | 50 |
Độ trễ cộng dồn bên trong một vòng lặp DAgger theo cách mà nó không xảy ra trong một bản demo: ở mức khoảng 485 ms cho mỗi bước hành động, bạn tiếp quản vì cánh tay khựng lại, chứ không phải vì nó sai, và những hiệu chỉnh do khựng lại không phải là dữ liệu huấn luyện hữu ích. Nếu bạn đang lặp lại để cải thiện dữ liệu thay vì chạy theo một tỷ lệ thành công cuối cùng, hãy lặp trên một mô hình nhanh. Shukor và cộng sự mô tả SmolVLA được thiết kế để huấn luyện trên một GPU duy nhất và triển khai trên các GPU hoặc CPU tiêu dùng, với một hệ thống suy luận bất đồng bộ tách rời việc dự đoán hành động khỏi việc thực thi để cho phép tốc độ điều khiển cao hơn - chính đặc tính giữ cho một vòng lặp tiếp quản luôn phản hồi nhanh.
Các định dạng tập dữ liệu cũng không thể hoán đổi cho nhau. GR00T dùng LeRobot v2.0 hoặc v2.1, và kho mã Isaac-GR00T mô tả đầu vào của nó là một biến thể của định dạng LeRobot v2 kèm thêm một tệp mô tả modality; các bộ huấn luyện mới hơn ở đây lại yêu cầu v3.0. Một tập hỗn hợp được kết hợp sai phiên bản sẽ lỗi ngay lúc nạp dữ liệu thay vì tạo ra một chính sách tồi - đó là kiểu thất bại tốt hơn, nhưng vẫn lãng phí một lượt xếp hàng. Tài liệu về tập dữ liệu liệt kê định dạng nào mỗi bộ huấn luyện sử dụng.
Vòng lặp, với phần sổ sách đã được lo sẵn
Tiếp quản bằng cánh tay leader, bàn phím hoặc thanh trượt; đánh dấu can thiệp theo từng khung hình; phân loại các lượt chạy thành hiệu chỉnh hoặc đánh giá; kết hợp một tập dữ liệu hỗn hợp với việc chọn episode tường minh theo từng nguồn; và tiếp tục huấn luyện từ một checkpoint thay vì từ mô hình gốc. Điều vẫn thuộc về quyết định của bạn là lượt chạy nào được tính là hiệu chỉnh, cái gì đi vào tập hỗn hợp, và khi nào tỷ lệ can thiệp đã ngừng giảm.
Xem cách vòng lặp DAgger được kết nốiBốn cách khiến một vòng lặp trở nên vô ích
1. Chỉ huấn luyện trên các hiệu chỉnh
Thất bại phổ biến nhất và cũng là lối tắt hấp dẫn nhất. Một tập dữ liệu chỉ gồm hiệu chỉnh gần như hoàn toàn là phần giữa khó khăn của tác vụ, thiếu mất phần tiếp cận và phần rút lui; chính sách trở nên giỏi hơn ở phần khó nhưng lại quên mất cách đi đến đó. Việc tổng hợp (aggregation) không phải là một chi tiết triển khai của phương pháp, đó chính là cơ chế cốt lõi: dữ liệu cũ chính là thứ giữ phần còn lại của hành vi ở đúng chỗ trong khi các hiệu chỉnh chỉ dịch chuyển một phần của nó.
2. Di chuyển camera giữa các vòng
Một camera bị dịch chuyển hai xăng-ti-mét giữa các vòng sẽ tạo ra một chính sách tệ hơn cả chính sách bạn bắt đầu, và một quá trình chẩn đoán tốn cả một ngày. Mọi VLA ở đây đều điều kiện hóa theo hình ảnh; chỉ riêng trạng thái khớp không đủ để phân biệt vật thể đang ở đâu. Hãy chụp ảnh thiết lập trước vòng đầu tiên và đối chiếu với bức ảnh đó trước mỗi vòng sau.
3. Để lọt các khung hình bàn giao vào dữ liệu huấn luyện
Đã được đề cập ở trên, và nằm trong danh sách này vì nó vô hình. Triệu chứng là một chính sách khựng lại trong một phần nhỏ của giây, đúng ngay tại vị trí mà người vận hành ở vòng trước đã tiếp quản. Nó trông giống như sự do dự; nhưng thực ra đó là sự bắt chước.
4. Gọi một warm start là một resume
Nếu bạn tin rằng trạng thái optimizer đã được giữ lại, cú tăng vọt loss ban đầu sẽ trông như một lỗi và bạn sẽ đi tìm dữ liệu bị hỏng. Nếu bạn biết rằng optimizer đã khởi động lại từ đầu, cú tăng vọt đó là điều được dự đoán trước và bạn sẽ nhìn vào những gì xảy ra sau nó. Cùng một con số, nhưng hai kết luận trái ngược nhau.
Đo lường vòng lặp
Chỉ số cho một vòng lặp có con người giám sát là tỷ lệ can thiệp: số khung hình được ghi trong lúc bạn đang điều khiển, chia cho tổng số khung hình của lượt chạy. Nó nằm trong trạng thái takeover, và đó là con số duy nhất trả lời được câu hỏi mà vòng lặp đặt ra. Training loss giảm bất kể chính sách có thực sự cải thiện hay không; tỷ lệ thành công lại nhị phân và nhiễu ở những cỡ mẫu mà một cánh tay để bàn tạo ra. Tỷ lệ can thiệp thì liên tục, được đo trên chính những trạng thái mà chính sách gây ra, và nó giảm dần khi chính sách càng ít cần đến bạn.
Chỉ nên so sánh nó giữa các lượt chạy được ghi trong cùng điều kiện. Toàn bộ lập luận, và cách xây dựng một tập đánh giá sống sót qua nhiều hơn hai vòng, nằm trong bài viết về cách đo lường một vòng lặp DAgger. Vòng đầu tiên trên thực tế là một phép thử tính khả thi: bạn đang kiểm tra xem việc tiếp quản có hoạt động trên phần cứng của mình không, các hiệu chỉnh có được ghi kèm cờ đánh dấu không, và lượt huấn luyện tiếp theo có nạp đúng checkpoint bạn đã chỉ định không. Vòng hai và ba mới là nơi tỷ lệ nên bắt đầu chuyển động. Nếu đến vòng bốn mà nó vẫn chưa nhúc nhích, thì vấn đề nằm ở phía trước DAgger, không phải ở chính DAgger.
| Ghi lại cho mỗi vòng | Vì sao nó quan trọng về sau |
|---|---|
| Checkpoint đã được điều khiển | Thiếu nó, bạn không thể quy công cải thiện cho một tập hỗn hợp cụ thể |
| Chế độ nhập liệu dùng để tiếp quản | Các hiệu chỉnh bằng bàn phím thô hơn các hiệu chỉnh bằng cánh tay leader, và điều đó thể hiện rõ trong dữ liệu |
| Số lượt chạy và cách mỗi lượt được phân loại | Liệu vòng lặp có đủ hiệu chỉnh để tạo ra khác biệt hay không |
| Tỷ lệ can thiệp của từng lượt chạy, và giá trị trung bình | Chỉ số tiến độ của vòng lặp |
| Lựa chọn episode chính xác theo từng nguồn | Cách duy nhất để tái lập hoặc hoàn tác một vòng lặp |
| Warm start hay huấn luyện mới hoàn toàn | Giải thích đường cong loss mà bạn sẽ nhìn vào một tuần sau |
Nếu bạn chưa có checkpoint nào
Vòng lặp không có điểm khởi đầu nếu thiếu nó. Hãy ghi một tập dữ liệu đầu tiên, huấn luyện một chính sách đầu tiên, chạy nó - ghi dữ liệu, huấn luyện và chạy chính sách bao quát con đường đó. Client dùng để ghi có trên trang tải xuống, các bậc GPU và mức giá theo giờ có trên trang bảng giá, và một episode dùng được trông như thế nào thì có trong hướng dẫn thu thập dữ liệu SO-100. Hãy làm đúng phần minh họa trước khi tính đến các hiệu chỉnh: DAgger là một cơ chế sửa chữa, và nó hoạt động tốt hơn nhiều trên một thứ vốn đã gần đúng từ đầu.
Tôi có thể chạy một vòng lặp DAgger mà không cần cánh tay leader không?▾
Có. Hãy chọn chế độ nhập liệu bàn phím hoặc thanh trượt khi bạn nhấn Take over: việc tiếp quản diễn ra ngay lập tức và thủ công, không cần cánh tay thứ hai để căn chỉnh. Bàn phím gửi các nudge tương đối mà server giới hạn cứng ở 2 độ mỗi khớp và 4 độ cho kẹp; thanh trượt gửi một mục tiêu tuyệt đối và server di chuyển tối đa 6 độ về phía đó cho mỗi lần gọi, trong khi giao diện vẫn tiếp tục gửi liên tục. Cột action và cách đánh dấu can thiệp giống hệt như ở chế độ leader, nên các hiệu chỉnh không thể phân biệt được trong tập dữ liệu.
Một vòng lặp cần bao nhiêu hiệu chỉnh?▾
Không có một con số phổ quát nào có thể biện minh được, và số lượng khung hình quan trọng hơn số lượng episode. Quy tắc thực dụng là các hiệu chỉnh không được bị chìm nghỉm trong tập hỗn hợp: với 200 episode gốc và ba episode hiệu chỉnh, sẽ chẳng có gì thay đổi cả. Hãy nhắm tới các hiệu chỉnh bao phủ hành vi lỗi từ nhiều cấu hình khởi đầu khác nhau, thay vì lặp lại ba lần cùng một lần cứu nguy.
Vì sao chỉ huấn luyện trên các hiệu chỉnh lại là một ý tưởng tồi?▾
Vì các hiệu chỉnh gần như hoàn toàn là phần giữa khó khăn của tác vụ. Phần tiếp cận, căn chỉnh và rút lui đều bị thiếu, nên chính sách đánh mất những gì nó đã làm tốt trong khi chỉ cải thiện ở phần bạn vừa sửa. Việc giữ lại dữ liệu cũ và bổ sung thêm vào chính là bản thân cơ chế, chứ không phải một phần tùy chọn thêm vào.
Việc tiếp tục từ một checkpoint có tiếp tục lại lượt huấn luyện trước đó không?▾
Không. Một checkpoint chỉ chứa trọng số khôi phục lại các tham số và không gì khác: các moment của optimizer, vị trí trên lịch trình learning rate và thứ tự dữ liệu đều bắt đầu lại từ đầu. Đó là một warm start, và một cú tăng vọt loss ban đầu là điều được dự đoán trước chứ không phải một triệu chứng bất thường. Hãy ghi lại bạn thực sự đã làm cái nào trong hai trường hợp đó, để một tuần sau bạn còn đọc đúng đường cong.
Nếu tỷ lệ can thiệp không giảm thì sao?▾
Hãy ngừng thêm vòng lặp. Một tỷ lệ đi ngang có nghĩa là các hiệu chỉnh không dạy được điều bạn nghĩ. Nguyên nhân thường gặp nằm ở phía trước: một camera bị xê dịch, các hiệu chỉnh bắt đầu quá muộn để còn là dữ liệu phòng tránh, các khung hình bàn giao lẫn vào tập huấn luyện, hoặc tác vụ chưa được xác định đủ rõ từ những quan sát mà chính sách thực sự nhận được.
Không điều gì trong số này là một bài toán đã có lời giải trọn vẹn, và không điều gì trong số đó chỉ cần một cú nhấp chuột. Học bắt chước tương tác (interactive imitation learning) là một lĩnh vực nghiên cứu đang hoạt động tích cực chính vì những câu hỏi của nó - khi nào nên can thiệp, cách gán trọng số cho những gì con người đã làm, cần giữ lại bao nhiêu dữ liệu cũ - vẫn chưa có câu trả lời dứt khoát; bài khảo sát của Celemin và cộng sự vẽ ra bức tranh về những gì vẫn còn bỏ ngỏ. Điều mà vòng lặp này thực sự mang lại là sự hội tụ có thể đo lường được khi nó được thực hiện cẩn thận, trên phần cứng chỉ tốn vài trăm euro. Hãy cố định thiết lập, can thiệp sớm, phân loại trung thực, kết hợp có chủ đích, và ghi lại tỷ lệ can thiệp mỗi lần.
Sources
- Ross, Gordon, Bagnell (AISTATS 2011): A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
- Kelly, Sidrane, Driggs-Campbell, Kochenderfer (2019): HG-DAgger - Interactive Imitation Learning with Human Experts
- Mandlekar et al. (2020): Human-in-the-Loop Imitation Learning using Remote Teleoperation
- Liu, Nasiriany, Zhang, Bao, Zhu (2022): Robot Learning on the Job - Human-in-the-Loop Autonomy and Learning During Deployment (Sirius)
- Hoque et al. (2021): ThriftyDAgger - Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
- Celemin et al. (2022): Interactive Imitation Learning in Robotics - A Survey
- Belkhale, Cui, Sadigh (2023): Data Quality in Imitation Learning
- Hsu et al. (2022): Vision-Based Manipulators Need to Also See from Their Hands
- Zhao et al. (2023): Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT / ALOHA)
- Black et al. (2024): Pi0 - A Vision-Language-Action Flow Model for General Robot Control
- Bjorck et al. (2025): GR00T N1 - An Open Foundation Model for Generalist Humanoid Robots
- Shukor et al. (2025): SmolVLA - A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot documentation (Hugging Face)
- NVIDIA Isaac-GR00T repository
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started