
Penjelasan langkah demi langkah tentang satu ronde DAgger yang dikendalikan manusia pada lengan SO-100: jalankan kebijakan dan rekam, ambil alih saat mulai salah, catat run tersebut sebagai koreksi, susun dataset campuran, dan lanjutkan pelatihan dari sebuah checkpoint. Mencakup jalur pengambilalihan lewat keyboard dan slider bagi yang tidak memiliki leader arm, serta empat kesalahan yang membuat sebuah ronde jadi sia-sia.
Kebijakan Anda berjalan. Ia meraih kubus, menutup gripper satu sentimeter terlalu cepat, dan terus melanjutkan seolah-olah berhasil menggenggamnya. Tidak ada error, dan betapapun lama Anda menatap training loss, itu tidak menjelaskan apa-apa. Perbaikannya bukan 20.000 langkah gradien lagi pada demonstrasi yang sama. Perbaikannya adalah meletakkan kembali tangan Anda pada lengan tepat di titik ia salah, merekam apa yang Anda lakukan sebagai gantinya, dan melatih checkpoint berikutnya pada data lama ditambah koreksi tersebut. Itulah satu ronde DAgger, dan begini cara menjalankannya pada SO-100 dengan kebijakan vision-language-action.
Teorinya ada di tempat lain: mengapa agregasi dataset bisa bekerja sama sekali dan apa yang berubah karena adanya kendali manusia di dalamnya. Ini adalah manual operasionalnya, dan mengasumsikan Anda sudah punya checkpoint yang terlatih, satu set kamera yang berfungsi, dan lengan yang bisa bergerak. Enam langkah di bawah ini adalah loop tersebut sebagaimana diimplementasikan pada halaman DAgger platform ini, tetapi urutannya sama saja jika Anda menjalankannya dari skrip Anda sendiri.
Satu ronde secara singkat
- •Jalankan kebijakan yang sudah dilatih dan rekam, dengan teks tugas dari run tersebut, bukan label teleoperasi generik.
- •Ambil alih tepat saat perilakunya mulai salah: serah terima cermin (mirror) dengan leader arm, atau langsung dan manual lewat keyboard atau slider jika tidak ada leader arm.
- •Triase setiap run: catat sebagai koreksi, simpan sebagai episode evaluasi, atau buang.
- •Susun campurannya secara manual - demonstrasi asli ditambah koreksi, dengan episode dipilih per sumber. Jangan pernah melatih hanya dengan koreksi saja.
- •Lanjutkan pelatihan dari checkpoint terakhir, dan catat checkpoint mana yang menghasilkan campuran yang mana.
- •Angka yang menentukan apakah ronde ini bermanfaat adalah tingkat intervensi, bukan training loss.
Mengapa ronde kedua bukan sekadar data tambahan
Behavior cloning dilatih pada state-state yang pernah dikunjungi manusia. Pada saat pengujian, kebijakan mengunjungi state-state yang ia timbulkan sendiri, dan kesalahan aksi kecil terakumulasi menjadi state yang tidak pernah tercakup oleh demonstrasi mana pun. Ross, Gordon, dan Bagnell memformalkan kegagalan ini untuk AISTATS 2011 dan menjawabnya dengan algoritma iteratif yang melatih satu kebijakan deterministik stasioner dan, di bawah reduksi yang mereka ajukan, harus berkinerja baik pada distribusi state yang ditimbulkannya sendiri: jalankan kebijakan saat ini, minta pakar memberi label pada state yang benar-benar dicapainya, tambahkan itu ke dataset, latih ulang, ulangi. Kelly dkk. membuat proses ini praktis lewat HG-DAgger, di mana manusia yang memutuskan kapan mengambil alih kendali alih-alih memberi label pada state tanpa memegang kendali; mereka melaporkan performa yang lebih baik dibandingkan baik DAgger maupun behavior cloning pada tugas mengemudi otonom, baik simulasi maupun nyata. Gerbang manusia (human gating) inilah yang membuat loop ini bisa ditoleransi pada lengan meja - Anda hanya menggerakkan tangan saat ada sesuatu yang mulai salah.
Dua konsekuensi berikut lebih penting dalam praktik dibandingkan teorinya. Koreksi bukan demonstrasi biasa: koreksi terkonsentrasi pada wilayah bottleneck yang dijelaskan oleh Mandlekar dkk., yaitu tempat penyimpangan kecil menjatuhkan kebijakan ke dalam state yang tidak pernah tercakup oleh demonstrasi. Dan dataset yang hanya terdiri dari bagian-bagian sulit itu adalah dataset yang bentuknya buruk - Belkhale, Cui, dan Sadigh berargumen dari sisi data bahwa keragaman state tidak selalu menguntungkan, dan bahwa divergensi aksi serta keragaman transisi bersama-samalah yang menentukan kualitas dataset. Dataset campuran bukan sebuah kompromi, itu justru intinya.
Bekukan hal-hal berikut sebelum ronde pertama
Satu ronde DAgger membandingkan sebuah kebijakan dengan dirinya sendiri dari waktu ke waktu. Apa pun yang Anda ubah di antara ronde-ronde yang bukan dataset akan membuat perbandingan itu tidak bermakna.
- Posisi dan dudukan kamera, termasuk kamera pergelangan. Mengendurkan satu klem saja berarti Anda mengubah distribusi observasi, bukan kebijakannya.
- Eksposur dan white balance, jika stack perekaman Anda memungkinkan untuk menguncinya. Auto-exposure yang bergeser antar ronde adalah domain shift yang lambat dan tidak terlihat.
- Kalibrasi lengan dan posisi nol servo. Jika Anda harus mengkalibrasi ulang, perlakukan semua yang direkam sebelumnya sebagai dataset yang terpisah.
- Teks tugas (task text). Setiap VLA di sini mensyaratkan itu sebagai kondisi; mengubah kata-katanya di tengah loop berarti itu menjadi tugas yang berbeda.
- Pencahayaan, permukaan meja, kumpulan objek. Objek baru adalah eksperimen baru, bukan ronde berikutnya.
- Frame rate perekaman. Membandingkan tingkat intervensi antar dua raster sampling yang berbeda akan menghasilkan perbedaan yang berasal dari raster tersebut.
Hsu dkk. membandingkan sudut pandang yang berpusat pada tangan (hand-centric) dengan sudut pandang orang ketiga yang biasa digunakan, dan menemukan bahwa perspektif eye-in-hand secara konsisten meningkatkan efisiensi pelatihan dan generalisasi out-of-distribution, meskipun hanya melihat sebagian kecil dari scene. Pada lengan dengan lima sendi, timing gripper biasanya adalah hal yang diperbaiki oleh koreksi Anda, dan timing gripper itulah yang dibawa oleh sudut pandang kamera pergelangan.
Ronde ini, dari awal sampai akhir
- 1Jalankan inferensi dan rekam
Mulai run terhadap checkpoint yang ingin Anda tingkatkan, lalu mulai perekaman ke dalam inference root. Dengan direkam seperti itu, run tersebut mewarisi teks tugasnya sendiri, yaitu teks yang menjadi dasar pelatihan kebijakan, bukan label teleoperasi default. Tanpa rekaman ini, Anda bisa menyaksikan kegagalannya tetapi tidak bisa melatihnya.
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 - 2Ambil alih saat mulai salah
Tekan Take over dan pilih mode input: leader arm, keyboard, atau slider. Runner akan berhenti sejenak, Anda mengoreksi, lalu menyerahkannya kembali. Frame yang direkam saat Anda mengendalikan akan otomatis ditandai sebagai intervensi.
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 - 3Triase episode-episode
Putuskan per episode: catat sebagai koreksi, simpan sebagai evaluasi, atau buang. Run yang diselesaikan kebijakan tanpa bantuan adalah data evaluasi.
- 4Sinkronkan dataset koreksi
Koreksi terkumpul dalam dataset lokal per kebijakan dan masuk ke penyimpanan cloud melalui sinkronisasi otomatis. Tidak ada apa pun yang tercampur masuk kecuali yang memang Anda masukkan sendiri.
- 5Susun dataset campuran
Gabungkan dataset asli dengan koreksi, dengan memilih episode secara eksplisit per sumber. Hasilnya, sejak titik itu, adalah dataset biasa.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Lanjutkan pelatihan dari checkpoint
Latih campuran tersebut dari checkpoint sebelumnya, bukan dari model dasar (base model). Catat checkpoint mana dan campuran yang mana; tanpa pasangan itu, ronde ini tidak bisa direproduksi.
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
Langkah 2 secara rinci: dua cara mengambil alih
Dengan leader arm
Pada mode leader-follower, pengambilalihan adalah serah terima antara dua lengan yang posenya tidak sama. Menekan Take over akan menghentikan sementara runner dan menggerakkan leader ke pose follower saat ini, sehingga tidak ada lonjakan ketika torsi berpindah. Jika penggerakan penyelarasan tersebut timeout, Anda menyelaraskan leader secara manual dan baru melepaskannya setelah keduanya berada dalam rentang lima derajat. Sejak saat itu, Anda melakukan teleoperasi seperti biasa dan kolom aksi mencatat apa yang Anda perintahkan.
Jujur saja soal jalur ini: penggerakan penyelarasan dan serah terima torsi adalah bagian dari loop yang paling sedikit diuji pada hardware nyata. Uji dulu serah terima ini pada pose yang lambat dan tidak berbahaya sebelum Anda mengandalkannya pada run yang penting bagi Anda. Leader arm menghasilkan koreksi paling halus di antara ketiga mode, tetapi juga punya kemungkinan kegagalan mekanis paling banyak.
Tanpa leader arm: keyboard dan slider
Kebanyakan orang yang membaca ini hanya punya satu lengan. Itu sudah cukup. Pilih input keyboard atau slider pada saat Anda menekan Take over, dan pengambilalihan berlangsung langsung dan manual - tidak ada lengan kedua yang perlu diselaraskan, jadi tidak ada langkah penyelarasan. Follower menahan posenya dan menunggu input.
| Mode input | Bagaimana lengan bergerak | Batas per panggilan yang diberlakukan oleh server | Terkunci ketika |
|---|---|---|---|
| Leader arm | Mirror menggerakkan follower berdasarkan sudut sendi leader | Tidak ada panggilan nudge atau set pada mode ini; mirror menulis target (goal) follower secara terus-menerus | Tidak pernah terkunci, dan menjadi default jika tidak ada mode input yang diberikan - tetapi memerlukan lengan kedua; tanpa leader id, pengambilalihan akan ditolak |
| Keyboard | Nudge relatif per tekanan tombol, dikirim ke endpoint nudge takeover | Batas keras (hard clamp) 2 derajat per sendi, 4 derajat untuk gripper | Ditolak dengan kode 409 jika takeover dimulai dalam mode leader |
| Slider | Pose target absolut, dikirim ke endpoint set takeover | Maksimal pergerakan 6 derajat menuju target per panggilan; antarmuka terus mengirim sekitar sepuluh kali per detik | Ditolak dengan kode 409 jika takeover dimulai dalam mode leader |
Batasan-batasan ini diberlakukan di sisi server, bukan di antarmuka, karena delta yang salah ketik pada lengan bus-servo bisa berarti tabrakan. Koreksi lewat keyboard keluar secara bertahap (stepwise) dan agak kasar; koreksi lewat slider lebih halus, karena server bergerak menuju target sementara antarmuka terus melakukan streaming. Bagaimanapun caranya, kolom aksi menerima vektor pose lengkap yang diperintahkan dan penandaan intervensi identik dengan jalur leader, sehingga koreksi via keyboard masuk ke dataset yang sama tanpa perbedaan format.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
Kapan harus menekan tombol
Lebih baik lebih awal daripada terlambat. Koreksi yang baru dimulai setelah gripper menutup tanpa menggenggam apa pun hanya mengajarkan recovery dari kegagalan yang seharusnya tidak pernah dimasuki kebijakan, dan data recovery jauh lebih kurang berharga dibandingkan data avoidance (pencegahan). Interupsi pada momen pertama Anda yakin lintasannya salah, koreksi sepanjang bagian yang sulit, lalu serahkan kembali segera setelah state-nya adalah state yang sudah pernah ditangani kebijakan sebelumnya. ThriftyDAgger mengotomatiskan keputusan ini dengan menggerbangi intervensi berdasarkan novelty dan estimasi risiko di bawah anggaran manusia yang tetap, tetapi pada satu lengan dengan seorang manusia yang sudah mengawasi, gerbang manusia lebih murah dan lebih terkalibrasi dengan baik dibandingkan apa pun yang bisa Anda tuning.
Bisa dilakukan dengan stack open-source dan beberapa skrip. Yang menjadi biayanya adalah pencatatan (bookkeeping), dan di situlah ronde-ronde DAgger biasanya mati.
- Tulis frame dari skrip inferensi Anda sendiri ke dalam dataset LeRobot, dengan string tugas yang menjadi dasar pelatihan kebijakan.
- Hentikan sementara loop kebijakan, alihkan sumber perintah, dan tandai setiap frame yang Anda kendalikan sebagai intervensi. Tanpa penandaan ini, koreksi akan terlihat seperti demonstrasi biasa.
- Putuskan dengan sengaja apa yang terjadi pada frame transisi antara saat kebijakan melepaskan kendali dan input pertama Anda.
- Simpan koreksi dalam dataset tersendiri per kebijakan, dan lacak indeks episode secara manual agar campurannya bisa direkonstruksi.
- Arahkan entry point fine-tuning ke checkpoint sebelumnya, dan periksa di log apakah bobot (weights) tersebut benar-benar dimuat.
Keenam langkah yang sama tersedia sebagai tombol. Yang diotomatiskan adalah hal-hal yang mudah salah bila dilakukan manual: penandaan intervensi per frame, pemisahan antara koreksi dan evaluasi, serta catatan checkpoint mana yang menghasilkan campuran yang mana. Tidak ada apa pun yang masuk ke dataset campuran yang tidak Anda pilih sendiri.
Platform ini tidak memutuskan untuk Anda. Run mana yang dihitung sebagai koreksi, episode mana yang masuk ke dalam campuran, dan kapan harus berhenti tetap merupakan keputusan yang harus Anda ambil sendiri. Kolom-kolomnya didokumentasikan di bawah pelatihan, dan mode input di bawah teleoperasi.
Langkah 3 secara rinci: triase menentukan kualitas
Setelah run selesai, Anda memiliki rekaman dengan beberapa frame yang ditandai sebagai intervensi. Ada tiga tujuan yang mungkin, dan pilihan yang salah akan diam-diam meracuni ronde berikutnya.
- Catat sebagai koreksi ketika intervensi tersebut memang benar-benar perbaikan: kebijakan sedang menuju ke arah yang salah dan input Anda menunjukkan hal yang benar dari state yang dihasilkan oleh kebijakan itu sendiri.
- Simpan sebagai evaluasi untuk run otonom yang bersih dan untuk run yang Anda ambil alih hanya karena berjaga-jaga. Episode evaluasi adalah cara Anda mengukur checkpoint berikutnya, dan episode ini tidak boleh pernah dipakai untuk melatih.
- Buang run yang rusak karena sesuatu yang tidak berhubungan - frame kamera yang hilang, servo yang macet, objek yang tersenggol jatuh. Koreksi yang berantakan lebih buruk daripada tidak ada koreksi sama sekali.
Antara saat kebijakan melepaskan kendali dan input pertama Anda, lengan diam sementara perekam terus menulis - serangkaian pose yang identik dipasangkan dengan gambar yang sedikit berbeda. Di sini, frame-frame serah terima itu tetap berada di rekaman mentah dan tidak masuk ke dataset koreksi. Jika Anda membangun loop ini sendiri, potong frame-frame itu dengan sengaja: kebijakan yang dilatih dengannya akan belajar untuk berhenti sejenak di tempat yang seharusnya ia bertindak.
Langkah 5 secara rinci: menyusun campuran
Penyusunan (composition) mengambil dataset asli ditambah dataset koreksi dan menghasilkan dataset LeRobot baru yang biasa, yang bisa dilatih seperti dataset lain mana pun. Properti pentingnya adalah bahwa pemilihan episode dilakukan secara eksplisit per sumber - tidak ada apa pun yang tercampur secara otomatis. Kedengarannya sepele sampai suatu saat kebijakan berperilaku aneh dan Anda harus merekonstruksi apa yang menjadi dasar pelatihannya.
Pertanyaan yang masih terbuka adalah soal rasio, dan tidak ada seorang pun yang punya angka yang bisa digeneralisasi ke situasi lain. Yang disepakati literatur adalah bahwa koreksi harus dihitung lebih berat daripada sekadar porsi frame-nya. Mandlekar dkk. melatih ulang secara iteratif pada data yang dikumpulkan oleh sistem intervensi mereka, sehingga kebijakan belajar untuk melewati bottleneck, dan melaporkan bahwa agen yang dilatih dengan cara itu mengungguli agen yang dilatih dengan jumlah sampel setara dari demonstrator non-intervensi. Sirius melangkah lebih jauh dengan memberi bobot ulang pada sampel pelatihan berdasarkan estimasi tingkat kepercayaan manusia (human trust), melaporkan peningkatan 8 persen dalam simulasi dan 27 persen pada hardware nyata dalam tingkat keberhasilan kebijakan dibandingkan metode-metode pembandingnya, dengan kecepatan konvergensi dua kali lipat. Tidak satu pun entry point pelatihan di sini yang menyediakan kontrol pembobotan sampel, sehingga penggantinya yang kasar adalah mempertahankan setiap episode koreksi sambil melakukan subsampling pada demonstrasi asli - dan mencatat apa yang Anda lakukan.

Langkah 6 secara rinci: apa artinya sebenarnya melanjutkan dari sebuah checkpoint
Melatih campuran dari model dasar (base model) memang bisa berhasil, tetapi membuang ronde sebelumnya dan memakan biaya satu run penuh. Melanjutkan dari checkpoint sebelumnya lebih cepat dan biasanya lebih baik. Tapi ini juga lebih terbatas daripada yang tersirat dari istilahnya.
Checkpoint yang hanya berisi bobot (weights-only) hanya memuat parameter dan tidak ada yang lain. Memuatnya memberi run berikutnya titik awal yang lebih baik dibandingkan model dasar, tetapi momen optimizer, posisi learning-rate schedule, dan urutan data semuanya dimulai dari nol. Perkirakan akan ada lonjakan (spike) loss di awal run lanjutan ini, jangan membacanya sebagai kegagalan, dan jangan menyebut ronde ini sebagai resume. Ini adalah warm start.
| Kebijakan | Ukuran | Tier GPU | Inferensi per langkah aksi | Format dataset | Jumlah episode sebelum layak dicoba |
|---|---|---|---|---|---|
| GR00T N1.7 | sekitar 3 B, kira-kira 40 M dilatih selama fine-tuning | A100 80 GB atau H100 80 GB | sekitar 152 ms | LeRobot v2.0 atau v2.1 | 50 |
| GR00T N1.5 | sekitar 3 B | A100 80 GB atau H100 80 GB | sekitar 165 ms | LeRobot v2.0 atau v2.1 | 50 |
| Pi0.5 | sekitar 3 B dengan backbone PaliGemma | A100 80 GB atau H100 80 GB | sekitar 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | sekitar 450 M | RTX 4090 atau kartu 24 GB lainnya | sekitar 245 ms | LeRobot v3.0 | 30 |
| ACT | sekitar 80 M, dilatih dari awal (from scratch) | RTX 4090 atau kartu 24 GB lainnya | sekitar 20 ms | LeRobot v3.0 | 50 |
Latensi terakumulasi di dalam loop DAgger dengan cara yang tidak terjadi saat demonstrasi: pada sekitar 485 ms per langkah aksi, Anda mengambil alih karena lengan ragu-ragu (hesitate), bukan karena salah, dan koreksi akibat keraguan semacam ini bukan data pelatihan yang berguna. Jika Anda sedang mengiterasi pada data dan bukan mengejar success rate akhir, iterasikan pada model yang cepat. Shukor dkk. menggambarkan SmolVLA sebagai model yang dirancang untuk dilatih pada satu GPU dan di-deploy pada GPU atau CPU konsumen, dengan stack inferensi asinkron yang memisahkan prediksi aksi dari eksekusi untuk memungkinkan control rate yang lebih tinggi - properti yang membuat loop takeover tetap responsif.
Format dataset juga tidak bisa saling dipertukarkan. GR00T memakai LeRobot v2.0 atau v2.1, dan repository Isaac-GR00T mendeskripsikan inputnya sebagai varian dari format LeRobot v2 dengan tambahan file deskripsi modalitas; trainer-trainer yang lebih baru di sini mengharapkan v3.0. Campuran yang disusun dalam versi yang salah akan gagal saat load, bukannya menghasilkan kebijakan yang buruk - mode kegagalan yang lebih baik, tetap saja membuang satu slot antrean. dokumentasi dataset mencantumkan format yang dipakai oleh masing-masing trainer.
Loop ini, dengan pencatatan yang sudah selesai dilakukan
Pengambilalihan dengan leader arm, keyboard, atau slider; penandaan intervensi per frame; pencatatan run sebagai koreksi atau evaluasi; penyusunan dataset campuran dengan pemilihan episode eksplisit per sumber; dan melanjutkan pelatihan dari checkpoint alih-alih dari model dasar. Yang tetap menjadi keputusan Anda adalah run mana yang dihitung sebagai koreksi, apa yang masuk ke dalam campuran, dan kapan tingkat intervensi sudah berhenti menurun.
Lihat bagaimana loop DAgger ini dirangkaiEmpat cara menyia-nyiakan sebuah ronde
1. Melatih hanya dengan koreksi saja
Kegagalan paling umum dan jalan pintas yang paling menggoda. Dataset yang hanya berisi koreksi hampir seluruhnya adalah bagian tengah tugas yang sulit, dengan bagian pendekatan (approach) dan penarikan (retreat) yang hilang; kebijakan menjadi lebih baik di bagian sulit tapi lupa bagaimana caranya sampai ke sana. Agregasi bukan detail implementasi dari metode ini, itu adalah mekanismenya sendiri: data lama itulah yang menjaga sisa perilaku tetap di tempatnya, sementara koreksi hanya menggerakkan satu bagian darinya.
2. Memindahkan kamera di antara ronde
Kamera yang bergeser dua sentimeter saja di antara ronde akan menghasilkan kebijakan yang lebih buruk daripada kebijakan awal Anda, dan diagnosisnya bisa memakan waktu satu hari penuh. Setiap VLA di sini mensyaratkan gambar sebagai kondisi; state sendi (joint state) saja tidak cukup untuk memastikan di mana posisi objek. Foto setup Anda sebelum ronde pertama dan periksa foto itu sebelum setiap ronde berikutnya.
3. Membiarkan artefak serah terima masuk ke pelatihan
Sudah dibahas di atas, dan masuk daftar ini karena sifatnya yang tidak terlihat. Gejalanya adalah kebijakan yang macet sepersekian detik tepat di tempat operator pada ronde sebelumnya mengambil alih. Kelihatannya seperti keraguan (hesitation); padahal itu adalah imitasi.
4. Menyebut warm start sebagai resume
Jika Anda mengira state optimizer terbawa dari sesi sebelumnya, lonjakan loss di awal akan terbaca sebagai bug dan Anda akan sibuk mencari data yang rusak. Jika Anda tahu optimizer memulai dari nol, lonjakan itu memang sudah diperkirakan dan Anda akan melihat apa yang terjadi setelahnya. Angka yang sama, kesimpulan yang berlawanan.
Mengukur ronde
Metrik untuk loop yang dikendalikan manusia adalah tingkat intervensi: frame yang direkam saat Anda memegang kendali, dibagi dengan total frame dari run tersebut. Angka ini ada di takeover status, dan itulah satu-satunya angka yang menjawab pertanyaan yang diajukan oleh ronde ini. Training loss bisa turun terlepas dari apakah kebijakan benar-benar membaik atau tidak; success rate bersifat biner dan berisik (noisy) pada ukuran sampel yang dihasilkan oleh lengan meja. Tingkat intervensi bersifat kontinu, diukur pada state yang ditimbulkan oleh kebijakan itu sendiri, dan turun seiring kebijakan semakin sedikit membutuhkan Anda.
Bandingkan angka ini hanya antar run yang direkam dalam kondisi yang identik. Argumen lengkapnya, dan cara membangun evaluation set yang tetap relevan lebih dari dua ronde, ada di artikel tentang mengukur loop DAgger. Ronde pertama secara realistis adalah uji kelayakan (feasibility test): Anda memeriksa apakah takeover berfungsi pada hardware Anda, apakah koreksi masuk dengan penandaannya, dan apakah run lanjutan benar-benar memuat checkpoint yang Anda tentukan. Ronde kedua dan ketiga adalah saat di mana tingkat intervensi seharusnya mulai bergerak. Jika sampai ronde keempat belum juga bergerak, masalahnya ada di hulu, bukan pada DAgger itu sendiri.
| Catat per ronde | Mengapa ini penting nanti |
|---|---|
| Checkpoint yang digunakan | Tanpa ini, Anda tidak bisa mengaitkan sebuah peningkatan dengan campuran tertentu |
| Mode input yang digunakan untuk takeover | Koreksi via keyboard lebih kasar dibandingkan koreksi via leader, dan itu terlihat dalam data |
| Jumlah run dan bagaimana masing-masing ditriase | Apakah ronde ini punya cukup koreksi untuk berpengaruh |
| Tingkat intervensi per run, dan rata-ratanya | Metrik kemajuan dari loop ini |
| Pemilihan episode yang tepat per sumber | Satu-satunya cara untuk mereproduksi atau membatalkan sebuah ronde |
| Warm start atau pelatihan dari awal | Menjelaskan kurva loss yang akan Anda lihat seminggu kemudian |
Jika Anda belum punya checkpoint
Loop ini tidak punya titik masuk tanpa itu. Rekam dataset pertama, latih kebijakan pertama, jalankan - perekaman, pelatihan dan menjalankan kebijakan mencakup jalur tersebut. Klien perekaman ada di halaman unduhan, tier GPU dan tarif per jam ada di halaman harga, dan seperti apa episode yang layak dipakai bisa dilihat di panduan pengumpulan data SO-100. Pastikan demonstrasinya benar dulu sebelum koreksi: DAgger adalah mekanisme perbaikan, dan ia bekerja jauh lebih baik pada sesuatu yang sudah hampir benar sejak awal.
Apakah saya bisa menjalankan loop DAgger tanpa leader arm?▾
Bisa. Pilih input keyboard atau slider saat Anda menekan Take over: pengambilalihan berlangsung langsung dan manual, tanpa lengan kedua yang perlu diselaraskan. Keyboard mengirim nudge relatif yang dibatasi ketat oleh server pada 2 derajat per sendi dan 4 derajat untuk gripper; slider mengirim target absolut dan server bergerak maksimal 6 derajat menuju target tersebut per panggilan, sementara antarmuka terus melakukan streaming. Kolom aksi dan penandaan intervensi sama seperti pada mode leader, sehingga koreksinya tidak bisa dibedakan di dalam dataset.
Berapa banyak koreksi yang dibutuhkan satu ronde?▾
Tidak ada angka universal yang bisa dipertanggungjawabkan, dan jumlah frame lebih penting daripada jumlah episode. Aturan praktisnya adalah koreksi tidak boleh tenggelam di dalam campuran: dengan 200 episode asli dan tiga episode koreksi, tidak akan ada yang bergerak. Usahakan koreksi yang mencakup perilaku yang gagal dari beberapa konfigurasi awal yang berbeda, bukan tiga pengulangan dari penyelamatan yang sama.
Mengapa melatih hanya dengan koreksi saja adalah ide yang buruk?▾
Karena koreksi hampir seluruhnya adalah bagian tengah tugas yang sulit. Bagian pendekatan (approach), penyelarasan (alignment), dan penarikan (retreat) hilang, sehingga kebijakan kehilangan apa yang sudah dikuasainya dengan baik sementara membaik di bagian yang Anda perbaiki. Mempertahankan data lama dan menambahkannya adalah mekanisme itu sendiri, bukan tambahan opsional.
Apakah melanjutkan dari sebuah checkpoint berarti me-resume run pelatihan sebelumnya?▾
Tidak. Checkpoint yang hanya berisi bobot (weights-only) hanya memulihkan parameter dan tidak ada yang lain: momen optimizer, posisi learning-rate schedule, dan urutan data semuanya dimulai dari awal. Ini adalah warm start, dan lonjakan loss di awal memang sudah diperkirakan, bukan gejala masalah. Catat mana dari keduanya yang sebenarnya Anda lakukan, agar Anda bisa membaca kurva dengan benar seminggu kemudian.
Bagaimana jika tingkat intervensi tidak turun?▾
Hentikan penambahan ronde. Tingkat yang datar berarti koreksi tidak mengajarkan apa yang Anda kira. Penyebab yang biasa terjadi ada di hulu: kamera bergeser, koreksi dimulai terlalu terlambat sehingga bukan lagi data avoidance, frame serah terima ikut masuk ke dalam training set, atau tugasnya kurang terdefinisi (underdetermined) dari observasi yang sebenarnya diterima kebijakan.
Tidak satu pun dari ini adalah masalah yang sudah terpecahkan, dan tidak satu pun bisa selesai dengan satu klik. Interactive imitation learning adalah bidang riset yang aktif justru karena pertanyaan-pertanyaannya - kapan harus melakukan intervensi, bagaimana memberi bobot pada apa yang dilakukan manusia, seberapa banyak data lama yang harus dipertahankan - belum punya jawaban yang mapan; survei oleh Celemin dkk. memetakan apa saja yang masih terbuka. Yang dimiliki loop ini adalah konvergensi yang terukur ketika dijalankan dengan hati-hati, pada hardware yang harganya hanya beberapa ratus euro. Bekukan setup, lakukan intervensi lebih awal, triase dengan jujur, campur dengan sengaja, dan catat tingkat intervensi setiap saat.
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