Lengan robot SO-100 berbiaya rendah di atas meja, disiapkan untuk teleoperasi dan pelatihan kebijakan
DAggerSO-100Pembelajaran ImitasiVLATeleoperasi

Menjalankan Loop DAgger pada SO-100 dengan Kebijakan VLA

AY-Robots ResearchAugust 27, 202615 menit membaca

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.
Kamera pergelangan bukan perlengkapan opsional

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

  1. 1
    Jalankan 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
  2. 2
    Ambil 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.

    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
    Triase episode-episode

    Putuskan per episode: catat sebagai koreksi, simpan sebagai evaluasi, atau buang. Run yang diselesaikan kebijakan tanpa bantuan adalah data evaluasi.

  4. 4
    Sinkronkan 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.

  5. 5
    Susun dataset campuran

    Gabungkan dataset asli dengan koreksi, dengan memilih episode secara eksplisit per sumber. Hasilnya, sejak titik itu, adalah dataset biasa.

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    Lanjutkan 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 inputBagaimana lengan bergerakBatas per panggilan yang diberlakukan oleh serverTerkunci ketika
Leader armMirror menggerakkan follower berdasarkan sudut sendi leaderTidak ada panggilan nudge atau set pada mode ini; mirror menulis target (goal) follower secara terus-menerusTidak pernah terkunci, dan menjadi default jika tidak ada mode input yang diberikan - tetapi memerlukan lengan kedua; tanpa leader id, pengambilalihan akan ditolak
KeyboardNudge relatif per tekanan tombol, dikirim ke endpoint nudge takeoverBatas keras (hard clamp) 2 derajat per sendi, 4 derajat untuk gripperDitolak dengan kode 409 jika takeover dimulai dalam mode leader
SliderPose target absolut, dikirim ke endpoint set takeoverMaksimal pergerakan 6 derajat menuju target per panggilan; antarmuka terus mengirim sekitar sepuluh kali per detikDitolak 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.

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
Tata letak tombol yang sama seperti di bagian lain pada stack ini, sehingga muscle memory dari perekaman tetap terbawa.
Panduan pelatihan yang menunjukkan langkah-langkah berurutan dari sebuah run fine-tuning GR00T pada dataset SO-100
Sisi pelatihan dari sebuah ronde adalah urutan langkah terpandu yang sama seperti run pertama; hanya kolom checkpoint yang berbeda.

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.

  1. Tulis frame dari skrip inferensi Anda sendiri ke dalam dataset LeRobot, dengan string tugas yang menjadi dasar pelatihan kebijakan.
  2. 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.
  3. Putuskan dengan sengaja apa yang terjadi pada frame transisi antara saat kebijakan melepaskan kendali dan input pertama Anda.
  4. Simpan koreksi dalam dataset tersendiri per kebijakan, dan lacak indeks episode secara manual agar campurannya bisa direkonstruksi.
  5. Arahkan entry point fine-tuning ke checkpoint sebelumnya, dan periksa di log apakah bobot (weights) tersebut benar-benar dimuat.

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.
Freeze frame tempatnya di rekaman mentah, bukan di data pelatihan

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.

Tampilan perekaman dataset yang menunjukkan episode-episode dari sebuah dataset SO-100 beserta stream kamera
Episode koreksi adalah episode biasa dengan penanda intervensi per frame, sehingga bisa digabungkan dengan dataset asli tanpa perlu konversi.

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.

Inisialisasi bobot bukan resume optimizer

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.

KebijakanUkuranTier GPUInferensi per langkah aksiFormat datasetJumlah episode sebelum layak dicoba
GR00T N1.7sekitar 3 B, kira-kira 40 M dilatih selama fine-tuningA100 80 GB atau H100 80 GBsekitar 152 msLeRobot v2.0 atau v2.150
GR00T N1.5sekitar 3 BA100 80 GB atau H100 80 GBsekitar 165 msLeRobot v2.0 atau v2.150
Pi0.5sekitar 3 B dengan backbone PaliGemmaA100 80 GB atau H100 80 GBsekitar 485 msLeRobot v3.050
SmolVLAsekitar 450 MRTX 4090 atau kartu 24 GB lainnyasekitar 245 msLeRobot v3.030
ACTsekitar 80 M, dilatih dari awal (from scratch)RTX 4090 atau kartu 24 GB lainnyasekitar 20 msLeRobot v3.050

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 dirangkai

Empat 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 rondeMengapa ini penting nanti
Checkpoint yang digunakanTanpa ini, Anda tidak bisa mengaitkan sebuah peningkatan dengan campuran tertentu
Mode input yang digunakan untuk takeoverKoreksi via keyboard lebih kasar dibandingkan koreksi via leader, dan itu terlihat dalam data
Jumlah run dan bagaimana masing-masing ditriaseApakah ronde ini punya cukup koreksi untuk berpengaruh
Tingkat intervensi per run, dan rata-ratanyaMetrik kemajuan dari loop ini
Pemilihan episode yang tepat per sumberSatu-satunya cara untuk mereproduksi atau membatalkan sebuah ronde
Warm start atau pelatihan dari awalMenjelaskan 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started