Một cánh tay robot giá rẻ SO-100 đặt trên bàn, được thiết lập để điều khiển từ xa (teleoperation) và huấn luyện chính sách
DAggerSO-100Học bắt chướcVLAĐiều khiển từ xa

Chạy vòng lặp DAgger trên SO-100 với chính sách VLA

AY-Robots ResearchAugust 27, 202615 phút đọc

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ả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 đó.
Camera cổ tay không phải là đồ trang trí tùy chọn

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

  1. 1
    Chạ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
  2. 2
    Tiế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.

    bash
    POST /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
  3. 3
    Phâ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. 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 đó.

  5. 5
    Kế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.

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    Tiế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ệuCánh tay di chuyển như thế nàoGiới hạn mỗi lệnh gọi do server áp đặtBị khóa khi nào
Cánh tay leaderCơ chế mirror điều khiển cánh tay follower theo góc khớp của cánh tay leaderKhông có lệnh nudge hay set trong chế độ này; mirror liên tục ghi mục tiêu cho followerKhô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ímNudge tương đối cho mỗi lần nhấn phím, gửi tới endpoint nudge của takeoverGiới hạn cứng ở 2 độ cho mỗi khớp, 4 độ cho kẹpBị từ chối với mã 409 nếu việc tiếp quản được bắt đầu ở chế độ leader
Thanh trượtTư thế mục tiêu tuyệt đối, gửi tới endpoint set của takeoverTố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âyBị 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.

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
Cùng một cách bố trí phím như ở mọi nơi khác trong hệ thống, nên trí nhớ cơ bắp (muscle memory) từ lúc ghi dữ liệu vẫn được giữ nguyên.
Hướng dẫn huấn luyện thể hiện các bước theo thứ tự của một lượt tinh chỉnh GR00T trên tập dữ liệu SO-100
Phần huấn luyện của một vòng lặp là cùng một trình tự có hướng dẫn như lượt chạy đầu tiên; chỉ khác ở trường checkpoint.

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.

  1. 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 đó.
  2. 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.
  3. 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.
  4. 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.
  5. 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ố đó.

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.
Các khung hình đóng băng thuộc về bản ghi thô, không thuộc về dữ liệu huấn luyện

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.

Giao diện xem bản ghi tập dữ liệu hiển thị các episode của một tập dữ liệu SO-100 cùng các luồng camera
Các episode hiệu chỉnh là những episode bình thường có kèm cờ can thiệp theo từng khung hình, nên chúng kết hợp được với tập dữ liệu gốc mà không cần chuyển đổi.

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 ý.

Khởi tạo trọng số không phải là tiếp tục trạng thái optimizer

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áchKích thướcBậc GPUSuy luận mỗi bước hành độngĐịnh dạng tập dữ liệuSố episode cần trước khi đáng thử
GR00T N1.7khoảng 3 tỷ, xấp xỉ 40 triệu được huấn luyện trong quá trình tinh chỉnhA100 80 GB hoặc H100 80 GBkhoảng 152 msLeRobot v2.0 hoặc v2.150
GR00T N1.5khoảng 3 tỷA100 80 GB hoặc H100 80 GBkhoảng 165 msLeRobot v2.0 hoặc v2.150
Pi0.5khoảng 3 tỷ trên nền tảng PaliGemmaA100 80 GB hoặc H100 80 GBkhoảng 485 msLeRobot v3.050
SmolVLAkhoảng 450 triệuRTX 4090 hoặc bất kỳ card 24 GB nàokhoảng 245 msLeRobot v3.030
ACTkhoảng 80 triệu, huấn luyện từ đầuRTX 4090 hoặc bất kỳ card 24 GB nàokhoảng 20 msLeRobot v3.050

Độ 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ối

Bố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òngVì sao nó quan trọng về sau
Checkpoint đã được điều khiểnThiế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ảnCá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ạiLiệ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ìnhChỉ số tiến độ của vòng lặp
Lựa chọn episode chính xác theo từng nguồnCá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ànGiả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ệnchạ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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started