Cara bangun pipeline robotik streaming pakai NVIDIA Cosmos3-DROID tanpa unduh 707 GB. Byte-range Parquet, seek-based video, behavior cloning ACT-style.
Kamu pernah nggak sih pengen oprek robotik tapi mundur pas lihat ukuran dataset? NVIDIA Cosmos3-DROID itu gede banget — 707 GB. Kalau mau download dulu baru latihan, hard disk kamu bakal nangis. Untungnya, tim NVIDIA bikin dataset ini bisa diakses streaming lewat Hugging Face. Artinya, kamu cuma tarik data yang dibutuhkan saja, kapan butuh. Gak perlu nunggu download berhari-hari, gak perlu beli SSD baru. Cukup pakai byte-range read pada file Parquet dan seek-based decoding untuk video AV1-nya.
Intinya, pipeline ini dibangun di atas LeRobotDataset v3.0. Pertama, kita introspeksi struktur repo lewat info.json — tau total episode, frame, task, dan FPS. Trus baca metadata tasks.parquet buat mapping indeks task ke deskripsi teks (ada 53 ribu lebih string task!). Episode boundaries ditentukan dari file Parquet di folder meta/episodes. Nah, trik kuncinya: pakai PyArrow buat baca row group dan kolom tertentu aja lewat HTTP range request. Jadi kalau kamu cuma butuh joint_positions, gripper_position, dan cartesian_position, kolom lain diabaikan total. Bandwidth dan RAM tetep minimal.
Dari Parquet ke Trajectory Siap Latih
Setelah episode boundaries jelas, kita load episode jadi trajectory NumPy. State digabungin: 7 joint positions + 1 gripper + 3 cartesian = 11 dimensi. Action: 7 joint velocity + 1 gripper = 8 dimensi. Timestamp dipakai buat sinkronisasi video nanti. Visualisasi awal — joint positions over time, gripper events (buka/tutup), path Cartesian end-effector dalam 3D, heatmap action velocity, hingga spektrum frekuensi FFT — bantu kita paham karakteristik data sebelum training. Rata-rata episode panjangnya sekitar 6-7 detik di 15 FPS, jadi sekitar 100 frame per episode.
Advertisement
Slot in-article yang tampil setelah paragraf ketiga.
Video gak di-download full. Kita pakai metadata video (chunk_index, file_index, from_timestamp, to_timestamp) buat hitung window temporal yang dibutuhkan. Trus decode cuma window itu aja pakai PyAV atau FFmpeg dengan seek ke timestamp awal. Hasilnya: array frame RGB ukuran 96x96 (atau 160x160 buat preview) yang sinkron dengan state-action. Ini hemat bandwidth drastis — bayangin video 707 GB cuma di-decode beberapa detik per episode.
Behavior Cloning ACT-Style dengan Temporal Ensembling
Training pakai arsitektur ACT (Action Chunking with Transformers) tapi disederhanain: MLP untuk state history (2 frame lookback) + optional CNN untuk vision (3 layer Conv + pooling) → trunk MLP 2 layer → head memprediksi 8 action steps ke depan (horizon=8). Loss pakai Smooth L1 (beta=0.1) biar robust terhadap noise teleoperasi. Optimizer AdamW lr 3e-4, OneCycle scheduler, mixed precision, gradient clipping 1.0. Training 12 epoch, batch 256, sekitar 48 episode (beberapa dengan vision cache). Validasi pakai 2 episode terpisah.
Evaluasi gak cuma loss. Kita lakukan open-loop rollout: model prediksi action chunk, trus overlapping predictions digabungin pakai temporal ensembling eksponensial (weight m=0.1). Artinya, prediksi terbaru bobotnya lebih besar, yang lama pelan-pelan fade out. Hasilnya: per-joint MSE dan R² dibanding baseline mean-action. Visualisasi predicted vs ground truth per dimensi + loss curve log-scale di inset. Model checkpoint disimpan lengkap dengan normalisasi stats (mean/std state & action) dan config — siap dipakai inference atau fine-tune.
Bisa Dikembangkan Kemana Saja
Pipeline ini fondasi yang ekstensibel. Mau scale up? Tambah N_EPISODES atau pakai data_shards[1:] (rebuild EP_BOUNDS per shard). Mau belajar dari kegagalan? Ganti ROOT="failure" — ada 14.268 episode negatif buat classifier sukses/gagal. Mau multi-view? Ganti VIDEO_KEY ke exterior_image_1_left atau exterior_image_2_left (ada 3 kamera sinkron). Mau VLA (Vision-Language-Action)? Tambah text encoder untuk 53 ribu task strings. Mau kontrol end-effector? Swap ACTION_USE ke action.cartesian_velocity. Atau pakai LeRobot native loader kalau udah punya disk lokal. Semua itu tanpa ubah arsitektur inti.
- Byte-range Parquet read via PyArrow: hanya tarik kolom & row group yang dibutuhkan
- Seek-based AV1 decode (PyAV/FFmpeg): video tidak di-download penuh
- ACT-style chunked BC: prediksi horizon=8 action steps dari 2 frame history
- Temporal ensembling eksponensial: smoothing prediksi overlapping saat rollout
- Checkpoint lengkap: model + normalisasi stats + config untuk reuse instan
Praktisnya, kalau kamu mau bangun pipeline robotik sendiri tapi terbatas storage/bandwidth, pola ini bisa diadaptasi ke dataset besar lain yang pakai format Parquet + video shard di Hugging Face. Kunci: metadata-driven discovery, column projection, row-group filtering, dan temporal video seek. Kombinasi empat itu bikin "streaming-first" jadi default, bukan afterthought. Coba deh implementasikan di project kamu — disk kamu bakal berterima kasih.
Catatan redaksi
Kalau lo cuma ambil satu hal dari artikel ini
AI Updates update dari MarkTechPost.
Sumber asli
Artikel ini merupakan rewrite editorial dari laporan MarkTechPost.
Baca artikel asli di MarkTechPost→