เข้าควบคุมทันทีที่ policy ทำพลาด แล้วนำการแก้ไขนั้นไปเทรนต่อ
policy ที่เทรนด้วย behavior cloning รู้จักเฉพาะสถานะที่ปรากฏในข้อมูลสาธิตของคุณเท่านั้น DAgger ปิดช่องว่างนี้ด้วยข้อมูลจากสถานะที่ policy เองไปถึง AY-Robots รันลูปทั้งหมดบนแขนกล SO-100 คือขับ checkpoint เข้าควบคุมกลางรัน เก็บ episode ที่แก้ไขไว้ ประกอบชุดข้อมูลผสม แล้วเทรนต่อจาก checkpoint ที่เพิ่งขับไป
- HG-DAgger แบบ human-gated
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- Intervention rate ต่อรอบ
ทำไม policy ที่เทรนแล้วจึงทำสิ่งที่ไม่เคยถูกสาธิตไว้
Behavior cloning มองการควบคุมเป็นการเรียนรู้แบบมีผู้สอน (supervised learning) ธรรมดา คือรับ observation เข้ามาแล้วให้ joint target ออกไป ปรับให้เข้ากับเฟรมที่มนุษย์บันทึกไว้ วิธีนี้ใช้ได้จริงก็ต่อเมื่อหุ่นยนต์อยู่ในสถานะที่มนุษย์เคยไปถึงเท่านั้น ซึ่งในความเป็นจริงไม่เป็นเช่นนั้น ตัวจับ (gripper) ที่ปิดเร็วไปสี่สิบมิลลิวินาทีจะดันลูกบาศก์ให้เบี่ยงจากท่าที่สาธิตไว้ไปสองมิลลิเมตร observation ถัดไปจึงเป็นสิ่งที่ไม่มีอยู่ในชุดข้อมูลฝึก การกระทำ ณ จุดนั้นจึงเป็นการประมาณค่านอกช่วง (extrapolation) และสถานะถัดจากนั้นก็ยิ่งเบี่ยงออกไปไกลกว่าเดิม การกระจายตัวของข้อมูลฝึกกับการกระจายตัวที่ policy ที่เรียนรู้แล้วสร้างขึ้นจริงเป็นคนละเรื่องกัน และการกระจายตัวแบบหลังจะยิ่งห่างจากแบบแรกมากขึ้นเรื่อยๆ ตลอด episode
Ross, Gordon และ Bagnell อธิบายความล้มเหลวของการลดทอนปัญหานี้ไว้ในปี 2011 และวัดความเสียหายออกมาเป็นตัวเลข ตัวจำแนก (classifier) ที่ผิดพลาดด้วยความน่าจะเป็น e ภายใต้การกระจายตัวของผู้เชี่ยวชาญ อาจทำผิดพลาดในระดับ T ยกกำลังสองคูณ e ครั้ง ตลอดขอบเขต (horizon) T ขั้นตอน ภายใต้การกระจายตัวที่มันสร้างขึ้นเอง เพราะความผิดพลาดครั้งหนึ่งทำให้เกิด observation ที่ผู้เชี่ยวชาญไม่เคยสร้างขึ้น และความผิดพลาดก็สะสมพอกพูนต่อกัน ทางแก้ของพวกเขาคืออัลกอริทึมที่หน้านี้พูดถึง คือรัน policy ปัจจุบัน เก็บ label จากผู้เชี่ยวชาญสำหรับสถานะที่มันไปถึง รวมเข้ากับทุกอย่างที่เก็บมาก่อนหน้านี้ เทรนใหม่ แล้วทำซ้ำ การสาธิตเพิ่มเติมแบบเดิมไม่ช่วยอะไร เพราะเป็นการสุ่มตัวอย่างซ้ำจากการกระจายตัวเดิม แต่ label จากสถานะที่ policy ไปถึงช่วยได้ ตัวแปรที่ใช้งานที่นี่เป็นแบบ human-gated (HG-DAgger, Kelly et al.) คือ policy ยังคุมอยู่จนกว่าคนจะตัดสินใจว่ามันกำลังพลาดแล้วเข้าควบคุม การแก้ไขจึงเกิดขึ้นเฉพาะจุดที่จำเป็นเท่านั้น และแขนกลจะไม่ถูกปล่อยให้เข้าไปในสถานะที่ผู้ควบคุมจะไม่ยอมให้เกิดขึ้น
- Behavior cloning ใช้ได้ผลเฉพาะบนการกระจายตัวของสถานะที่มันถูกเทรนมาเท่านั้น
- ความผิดพลาดขยายตัวเอง: การเบี่ยงเบนเล็กน้อยสร้างสถานะที่ไม่คุ้นเคย ซึ่งสร้างการเบี่ยงเบนที่ใหญ่ขึ้นไปอีก
- ทางแก้ไม่ใช่การสาธิตเพิ่ม แต่คือ label บนสถานะที่ policy เองไปถึง
- Human-gated หมายถึงผู้ควบคุมเป็นผู้ตัดสินใจว่าจะเข้าแทรกแซงเมื่อใด ไม่ใช่คะแนนความเป็นอิสระของระบบ
ทำไมความผิดพลาดถึงสะสมพอกพูน
ลากตัวเลื่อน horizon ภายใต้ behavior cloning ต้นทุนส่วนเกินที่คาดหวังไว้จะเพิ่มขึ้นในอัตราประมาณกำลังสองของจำนวนขั้นตอน เพราะความผิดพลาดแต่ละครั้งสร้างสถานะที่การสาธิตไม่เคยครอบคลุมถึง ส่วนลูปแบบ aggregation จะรักษาการเติบโตให้ใกล้เคียงเชิงเส้น (Ross et al., 2011)
กราฟตัวอย่างจากขอบเขตในงานของ Ross et al. (2011) ไม่ใช่ค่าที่วัดจากหุ่นยนต์ของคุณ ประเด็นอยู่ที่รูปทรงของกราฟ ไม่ใช่ตัวเลข
หนึ่งรอบของ DAgger ในหกขั้นตอน
นี่คือลูปตามที่แพลตฟอร์มรันจริง ไม่ใช่แผนผังคร่าวๆ แต่ละขั้นตอนด้านล่างตรงกับปุ่มควบคุมหนึ่งจุดใน cockpit
ไล่ดูลูปทีละขั้นตอน
หกขั้นตอนเดิม ทีละขั้น พร้อมสิ่งที่เกิดขึ้นกับแขนกลและกับ dataset ในแต่ละขั้นตอน
รัน policy และบันทึกไว้
เริ่มรัน inference กับ checkpoint ที่คุณเทรนไว้ ระบบจะบันทึกระหว่างที่รันอยู่ พร้อมข้อความงาน (task text) ของรันนั้นเอง เพื่อให้เฟรมที่ได้นำไปใช้เป็นข้อมูลฝึกต่อได้จริง แทนที่จะเป็นแค่วิดีโอไว้ดูอย่างเดียว
เข้าควบคุมและแก้ไข
ทันทีที่แขนกลทำผิด ให้กด Take over runner จะหยุดชั่วคราวและแขนกลจะอยู่ในมือคุณ ถ้าใช้ leader arm มันจะขับไปยังท่าของ follower ก่อนแล้วจึงส่งมอบการควบคุม ถ้าเลือกป้อนข้อมูลด้วยคีย์บอร์ดหรือ slider ตั้งแต่ตอนเริ่มรัน การเข้าควบคุมจะเป็นแบบ manual ทันที แก้ไขการเคลื่อนไหว แล้วส่งการควบคุมกลับให้ policy เฟรมที่บันทึกระหว่างการเข้าควบคุมจะถูกทำเครื่องหมายเป็น intervention โดยอัตโนมัติ
คัดกรองรัน
ตัดสินใจทีละรันว่ามันคืออะไร: เก็บเป็นการแก้ไข (correction) เก็บไว้เป็นรันประเมินผล (evaluation) หรือทิ้งไป เฟรมนิ่งรอบๆ จุดส่งมอบการควบคุมจะยังอยู่ใน raw directory และไม่เข้าสู่ dataset เด็ดขาด
ซิงก์ dataset การแก้ไข
การแก้ไขจะถูกรวบรวมไว้ใน correction dataset เฉพาะของแต่ละ policy แล้วส่งขึ้น bucket ของคุณผ่านการซิงก์คลาวด์อัตโนมัติ ณ จุดนี้ยังไม่มีการรวมอะไรเข้าด้วยกันทั้งสิ้น การแก้ไขยังคงเป็นแค่ dataset ของตัวเองเท่านั้น
ประกอบชุดผสมด้วยตัวเอง
ใช้ Compose dataset เพื่อสร้างชุดฝึกของรอบถัดไป: dataset ต้นฉบับบวกกับการแก้ไข โดยเลือก episode อย่างชัดเจนตามแหล่งที่มาแต่ละแหล่ง ผลลัพธ์ที่ได้คือ dataset ธรรมดาที่ซิงก์และเทรนได้เหมือน dataset อื่นๆ ไม่มีการผสมอะไรลับหลังคุณ และไม่มีข้อมูลจำลอง (simulation) ถูกเพิ่มเข้ามาเองโดยอัตโนมัติ
เทรนต่อจาก checkpoint
เทรน dataset ที่ประกอบขึ้นด้วย Continue from checkpoint แทนที่จะเริ่มจาก base model เพื่อให้รอบใหม่เริ่มต้นจาก policy ที่คุณเพิ่งขับไป พูดให้ชัดเจนว่ามันคืออะไร: มันคือการกำหนดค่าเริ่มต้น (initialize) ของ weight จาก checkpoint นั้น ไม่ใช่การ resume ของ optimizer
สิ่งที่แพลตฟอร์มทำแทนคุณ
ทุกหัวข้อในนี้คือขั้นตอนของลูปที่ไม่เช่นนั้นแล้วคุณต้องสร้างและดูแลเอง
เข้าควบคุมโดยไม่ต้องมี leader arm
เลือกป้อนข้อมูลด้วยคีย์บอร์ดหรือ slider ตอนเริ่มรัน แล้วแก้ไขได้ด้วยแล็ปท็อปเครื่องเดียว การขยับด้วยคีย์บอร์ดถูกจำกัดไว้ที่ฝั่งเซิร์ฟเวอร์ไม่เกินสององศาต่อข้อต่อ และสี่องศาที่ตัวจับ (gripper) ส่วนเป้าหมายของ slider เป็นค่าสัมบูรณ์ และเซิร์ฟเวอร์จะขยับเข้าหาค่านั้นไม่เกินหกองศาต่อการเรียกหนึ่งครั้ง การจำกัดนี้บังคับใช้ที่เซิร์ฟเวอร์ ไม่ใช่ที่ UI ปุ่มที่ค้างจึงเหวี่ยงแขนกลไม่ได้
เอกสาร Teleoperationทำเครื่องหมาย intervention ทีละเฟรม
ทุกเฟรมที่บันทึกระหว่างที่คุณถือครองแขนกลจะมี intervention flag ติดอยู่ และคอลัมน์ action จะมีท่าที่สั่งไว้เต็มรูปแบบ คุณไม่ต้องดูแลคอลัมน์ flag ด้วยมือ หรือมาจัดให้ตรงกับ frame index ทีหลัง
รูปแบบ LeRobot datasetคัดกรอง: Correction, Evaluation หรือทิ้ง
แต่ละรันได้รับการตัดสินใจหนึ่งอย่างบน save card รันที่เป็น correction จะป้อนเข้ารอบเทรนถัดไป รันที่เป็น evaluation จะอยู่นอกการเทรนเพื่อให้ยังเป็นการวัดผลที่สะอาด ส่วนรันที่แย่จะถูกกำจัดไป แทนที่จะแอบปนเปื้อนชุดข้อมูลผสมอย่างเงียบๆ
Sessions และ episodesประกอบชุดผสมอย่างชัดเจน
ชุดฝึกสำหรับรอบที่ n ประกอบขึ้นโดยคุณเอง: dataset ต้นฉบับบวกกับการแก้ไข เลือก episode ตามแหล่งที่มาแต่ละแหล่ง ไม่มีการผสมอัตโนมัติ ไม่มีข้อมูลจำลองที่ซ่อนอยู่ และผลลัพธ์ที่ประกอบขึ้นก็ทำงานเหมือน dataset อื่นๆ ทุกประการ
ชุดข้อมูลเทรนต่อจาก checkpoint
ชี้รันการเทรนไปที่ checkpoint ที่คุณเพิ่งขับ แทนที่จะเป็น base model เพื่อให้แต่ละรอบเริ่มจากจุดที่รอบก่อนจบไว้ มันกำหนดค่าเริ่มต้นเฉพาะ weight เท่านั้น สถานะของ optimizer จะไม่ถูกกู้คืน ด้วยเหตุนี้รอบแรกจึงควรมองเป็นการทดสอบความเป็นไปได้ (feasibility test)
Trainingเช่า GPU เป็นรายรอบ
ACT และ SmolVLA รันบน 4090 ส่วน Pi0 และ GR00T N1.5 หรือ N1.7 รันบน A100 ขนาด 80 GB คุณเริ่มรอบ pod ก็จะขึ้นมา checkpoint จะไปลงที่ bucket ของคุณ และคุณจ่ายตามจำนวนชั่วโมงที่รอบนั้นใช้ไป
ราคา GPUวางแผนรอบของคุณ
Intervention rate คือตัวชี้วัดความคืบหน้าของลูป: เฟรมที่แก้ไขหารด้วยเฟรมทั้งหมดของรัน ตั้งค่าจุดเริ่มต้นและผลที่แต่ละรอบให้ได้ แล้วดูว่าต้องใช้กี่รอบถึงจะถึงเป้าหมายที่ต้องการ
| รอบ | Intervention rate | เฟรมที่แก้ไขแล้ว |
|---|---|---|
| 1 | 30.0 % | 900 |
| 2 | 22.5 % | 675 |
| 3 | 16.9 % | 506 |
| 4 | 12.7 % | 380 |
| 5 | 9.5 % | 285 |
| 6 | 7.1 % | 214 |
| Σ | 2 960 | |
นี่คือแบบจำลอง ไม่ใช่การพยากรณ์ รอบจริงมักไม่สม่ำเสมอ และรอบที่ไม่ทำให้ rate ขยับเลยก็ไม่ได้อะไรเลย นั่นคือสัญญาณที่ควรจับตาดูจริงๆ
สร้างลูปเองเทียบกับรันที่นี่
ไม่มีข้อไหนที่ทำเองไม่ได้ทั้งหมด คำถามอยู่ที่ว่าจะเสียเวลากี่ค่ำคืนไปกับงานโครงสร้างพื้นฐานแทนที่จะเป็นรอบจริง และมีอยู่หนึ่งแถวที่การทำเองชัดเจนว่าดีกว่า
| ขั้นตอนของลูป | ตั้งค่าเอง | บน AY-Robots |
|---|---|---|
| เข้าควบคุมกลางรัน | ต้องมี leader arm หรือเขียนโค้ดของตัวเองบน servo bus การเข้าควบคุมด้วยคีย์บอร์ดและ slider รวมถึงขีดจำกัดความปลอดภัย เป็นสิ่งที่คุณต้องเขียนแล้วดีบักบนฮาร์ดแวร์จริงเอง | Leader arm, คีย์บอร์ด หรือ slider เลือกได้ตอนเริ่มรัน การจำกัดมุมอยู่ที่เซิร์ฟเวอร์ |
| ทำเครื่องหมาย intervention | คุณต้องเพิ่มคอลัมน์ flag เอง จัดให้ตรงกับ frame index และตรวจสอบใหม่ทุกครั้งที่รูปแบบการบันทึกเปลี่ยน | ทุกเฟรมที่บันทึกระหว่างการเข้าควบคุมจะถูกทำเครื่องหมายอัตโนมัติ พร้อมท่าที่สั่งไว้ในคอลัมน์ action |
| จัดเรียงรัน | ใช้กฎการตั้งชื่อไดเรกทอรีและ shell script เฟรมนิ่งรอบๆ จุดส่งมอบต้องหาและกรองออกเอง | ตัดสินใจหนึ่งครั้งต่อรันบน save card เฟรมช่วงส่งมอบจะอยู่ใน raw directory |
| สร้าง dataset ผสม | เขียน merge script ตามแต่ละเวอร์ชันของฟอร์แมต ส่วนที่น่าเบื่อคือทำให้ episode index, metadata และการอ้างอิงวิดีโอสอดคล้องกัน | ประกอบจากต้นฉบับบวกการแก้ไข พร้อมเลือก episode ตามแหล่งที่มา ผลลัพธ์คือ dataset ปกติ |
| เริ่มรอบถัดไปจาก policy ล่าสุด | คุณต่อ checkpoint เข้ากับ trainer เอง และยังกู้คืนสถานะ optimizer ได้ด้วยถ้าต้องการ resume แบบแท้จริง | มีช่องเดียวสำหรับ base checkpoint เฉพาะ weight เท่านั้น: กำหนดค่าเริ่มต้นจาก checkpoint ไม่ใช่ optimizer resume |
| ควบคุมลูปการเทรน | ควบคุมได้เต็มที่ ทั้ง loss ตารางเวลา ablation และเครื่องมือวัดผลของคุณเอง ไม่มีแพลตฟอร์มมาขวางกลาง ถ้าคำถามวิจัยคือตัวลูปการเทรนเอง ให้ทำมันด้วยมือ | เส้นทางที่ตายตัว มีรายชื่อ policy ที่กำหนดไว้และ hyperparameter ที่ฟอร์มเปิดให้ปรับ ไม่ใช่โค้ดที่เขียนเองได้ตามใจ |
งานวิจัยที่เป็นพื้นฐานของหน้านี้
อ่านงานเหล่านี้ก่อนจะโต้แย้งกับลูป แต่ละลิงก์เชื่อมไปยังหน้า abstract ไม่ใช่หน้าที่ต้องจ่ายเงิน
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)
งานต้นฉบับของ DAgger: ระบุปัญหาความผิดพลาดสะสม ให้ขอบเขต T-squared สำหรับแนวทาง supervised ธรรมดา และเสนอให้รวบรวมข้อมูลจากสถานะที่ผู้เรียนรู้เองไปถึง
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
ตัวแปรแบบ human-gated: ผู้เชี่ยวชาญเป็นผู้ตัดสินใจว่าจะเข้าควบคุมเมื่อใด แทนที่จะถูกถามเกี่ยวกับสถานะที่ policy เลือกไว้ ซึ่งเป็นโหมดที่แพลตฟอร์มนี้นำมาใช้จริง
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
อีกวิธีหนึ่งในการควบคุมการเข้าแทรกแซง: ใช้ความไม่ลงรอยกันของ ensemble เป็นสัญญาณความเชื่อมั่นว่าเมื่อใดผู้เรียนรู้จึงทำงานคนเดียวได้ เป็นแนวเปรียบเทียบที่มีประโยชน์กับการให้คนเป็นผู้ตัดสิน
- ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021
มองความสนใจของมนุษย์เป็นทรัพยากรที่จำกัด และขอความช่วยเหลือเฉพาะในสถานะที่แปลกใหม่หรือมีความเสี่ยงเท่านั้น ซึ่งเป็นกรอบคิดที่เหมาะเมื่อมีคนคนเดียวคอยดูแลแขนกลตลอดทั้งบ่าย
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
ทางเลือกที่ตรงไปตรงมา: แทนที่จะแก้ไข policy แบบออนไลน์ ให้รบกวน (perturb) การสาธิตเพื่อให้ผู้เชี่ยวชาญแสดงวิธีกู้คืนสถานะ ควรรู้ไว้ก่อนตัดสินใจใช้การเข้าแทรกแซง
- Interactive Imitation Learning in Robotics: A Survey
Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600
แผนที่ของสาขานี้: feedback จากมนุษย์มีรูปแบบใดบ้าง อินเทอร์เฟซใดที่รองรับ และการเข้าแทรกแซงแบบ DAgger อยู่ตรงไหนในภาพรวมนั้น
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
งานวิจัยของ ACT action chunking คือเหตุผลที่แขนกลราคาถูกสามารถถูกขับด้วย imitation policy ได้เลย และ ACT ก็เป็น policy ที่ทำรอบ DAgger ได้เร็วที่สุด
- π0: A Vision-Language-Action Flow Model for General Robot Control
Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164
VLA แบบ flow-matching ที่สร้างบนโมเดล vision-language ที่เทรนไว้ล่วงหน้า และเป็นหนึ่งใน checkpoint ที่คุณสามารถ fine-tune ได้ที่นี่ งานวิจัยระบุชัดเจนว่าทักษะใหม่มาจากการ fine-tuning ไม่ใช่จาก base model เพียงอย่างเดียว
คำถามที่คนถามจริงๆ
ต้องมี leader arm สำหรับ DAgger ไหม
ไม่จำเป็น เลือกป้อนข้อมูลด้วยคีย์บอร์ดหรือ slider ตอนเริ่มรัน แล้วการเข้าควบคุมจะเป็น manual ตั้งแต่เฟรมแรก ขับผ่านเบราว์เซอร์ leader arm จะสบายกว่าสำหรับการเคลื่อนไหวละเอียด และเป็นโหมดเดียวที่แขนกลจัดท่าตัวเองก่อนส่งมอบการควบคุม แต่ลูปก็รันได้โดยไม่ต้องมีมัน
ต้องใช้ DAgger กี่รอบ
ไม่มีตัวเลขตายตัวที่บอกได้ตรงๆ ให้จับตาดู intervention rate: ถ้ามันไม่ลดลงจากรอบหนึ่งไปอีกรอบ แสดงว่ารอบนั้นไม่ได้อะไรเลย และปัญหามักอยู่ที่การตั้งค่างาน กล้อง หรือ dataset ต้นฉบับ มากกว่าจำนวนรอบ
นี่คือ DAgger จริงๆ หรือแค่คล้ายๆ
นี่คือ HG-DAgger ตัวแปรแบบ human-gated DAgger แบบดั้งเดิมจะถามผู้เชี่ยวชาญเกี่ยวกับสถานะที่ policy เลือกไว้ รวมถึงสถานะที่ไม่มีผู้ควบคุมคนไหนยอมให้แขนกลจริงไปถึง ที่นี่คนเป็นผู้ตัดสินใจว่าจะเข้าแทรกแซงเมื่อใด และมีเฉพาะช่วงเหล่านั้นเท่านั้นที่กลายเป็น label
เทรนเฉพาะบนการแก้ไขเท่านั้นหรือไม่
ไม่ และไม่ควรทำแบบนั้นด้วย การเทรนบนการแก้ไขเพียงอย่างเดียวจะได้ policy ที่รู้แต่วิธีกู้คืนสถานะเท่านั้น dataset ที่ประกอบขึ้นคือข้อมูลต้นฉบับบวกกับการแก้ไข โดยเลือก episode จากแต่ละแหล่งอย่างชัดเจน
การเทรนต่อจาก checkpoint คือการ resume รันการเทรนหรือไม่
มันกำหนดค่าเริ่มต้นของ weight จาก checkpoint นั้น สถานะของ optimizer จะไม่ถูกกู้คืน ดังนั้นในความหมายที่เคร่งครัดจึงไม่ใช่การ resume ในทางปฏิบัติ weight คือสิ่งที่พาพฤติกรรมที่เรียนรู้ไว้ข้ามรอบไป แต่ก็ควรรู้ไว้ว่ากำลังได้อะไรจากสองอย่างนี้
คำนวณ intervention rate อย่างไร
เฟรมที่ทำเครื่องหมายเป็น intervention หารด้วยจำนวนเฟรมทั้งหมดของรัน ค่านี้แสดงอยู่ใน takeover status และเป็นตัวเลขเดียวที่ควรจดไว้ในแต่ละรอบ คู่กับ checkpoint ที่ขับและชุดผสมที่เทรน
ใช้ policy ไหนกับลูปนี้ได้บ้าง
ACT, SmolVLA, Pi0 และ GR00T N1.5 หรือ N1.7 ตัวลูปเองไม่ขึ้นกับ policy ใดโดยเฉพาะ เพราะมันแค่สร้าง dataset และ checkpoint ออกมาเท่านั้น ความต่างในทางปฏิบัติอยู่ที่แต่ละรอบใช้เวลานานแค่ไหนและต้องใช้ GPU แบบไหน
ทำแบบนี้ได้ไหมถ้าไม่มีหุ่นยนต์เป็นของตัวเอง
บันทึกและเทรนได้โดยไม่ต้องมีหุ่นยนต์เอง ด้วยการซื้อ dataset จากตลาดหรือจ้างผู้ควบคุม และคุณสามารถขับ SO-100 จริงผ่านเบราว์เซอร์ได้ที่หน้า live แต่รอบ DAgger นั้นต่างออกไป มันต้องการแขนกลที่คุณเข้าควบคุมกลางรันได้ ดังนั้นสำหรับตัวลูปเองแล้วคุณต้องการฮาร์ดแวร์อยู่บนโต๊ะของคุณเอง
A real SO-100, live in the browser. No signup, no hardware needed.
รันรอบแรกของคุณในสัปดาห์นี้
ติดตั้ง client ขับ checkpoint ที่มีอยู่แล้ว แล้วเข้าควบคุมทันทีที่แขนกลเอื้อมเลยลูกบาศก์ไปครั้งแรก รันเดียวนั้นก็คือ DAgger round แบบย่อส่วนอยู่แล้ว ที่เหลือหลังจากนั้นคือการประกอบชุดผสมและจ่ายค่าชั่วโมง GPU