4 poin oleh GN⁺ 2024-05-06 | 1 komentar | Bagikan ke WhatsApp
  • drlzh.ai adalah kursus deep reinforcement learning berbasis praktik yang mengajak peserta mengimplementasikan algoritme secara langsung, bukan sekadar membacanya, dan mencakup MDP serta RL tabular hingga RLHF, Decision Transformers, Dreamer, dan meta-learning
  • Notebook utama adalah jalur latihan tempat sebagian kode diganti dengan TODO berpandu, sedangkan notebook di solution/ berisi versi lengkap yang dapat dijalankan untuk dicek saat menemui kebuntuan
  • Kurikulum terdiri dari notebook 00-18; jalur dasar dirancang untuk diikuti secara berurutan, sementara notebook lanjutan bersifat mandiri tetapi penomorannya tetap memberi jalur belajar utama
  • Workspace Docker menyediakan code-server, notebook, Python >=3.13,<3.14, kernel Jupyter, dependensi, dan ekstensi VS Code DRL-ZH AI Companion sekaligus
  • Peserta diharapkan sudah familier dengan Python, dasar PyTorch, serta matematika ML seperti probabilitas, statistik, aljabar linear, dan kalkulus; notebook juga mengasumsikan pengguna bisa membaca dan memodifikasi kode pelatihan nyata

Gambaran proyek

  • drlzh.ai adalah kursus deep reinforcement learning yang berfokus pada praktik, disusun agar peserta membangun algoritmenya sendiri
  • Cakupan pembelajaran dimulai dari MDP dan RL tabular lalu meluas ke topik berikut
    • algoritme berbasis agen Atari
    • robot kendali kontinu
    • perencanaan bergaya AlphaZero
    • RLHF untuk language model
    • Decision Transformers
    • kebijakan bergaya VLA
    • world model
    • Dreamer
    • meta-learning
  • Notebook utama adalah jalur latihan, dengan kode yang sengaja diganti oleh bagian TODO berpandu
  • Notebook solution/ menyediakan versi lengkap dan dapat dijalankan, sehingga peserta bisa mengurai bagian yang macet tanpa keluar dari alur kursus

Struktur kurikulum

  • Kursus ini terdiri dari notebook 00 hingga 18
  • 00-07 Foundations
    • Mengimplementasikan MDPs, RL tabular, DQN, REINFORCE, actor-critic methods, DDPG, TD3, SAC, dan PPO
  • 08-10 Breaking assumptions
    • Membahas curiosity dengan RND, multi-agent RL, dan offline RL menggunakan BC serta IQL
  • 11 Planning
    • Membahas Monte Carlo Tree Search, self-play, dan pembelajaran policy/value bergaya AlphaZero
  • 12-13 Modern AI stack
    • Membahas RLHF berbasis PPO, DPO, GRPO, Decision Transformers, dan NanoVLA(DTVLA)
  • 14 Production
    • Membahas TensorBoard, checkpoint, debugging, multiple seeds, Ray, dan Optuna
  • 15-16 World models
    • Membahas MBPO berbasis SAC dan DR3AM/Dreamer yang menggunakan latent imagination RSSM
  • 17-18 Meta + wrap-up
    • Terdiri dari MAML, FOMAML, fast adaptation, dan penutupan kursus
  • Notebook dasar diasumsikan untuk diikuti secara berurutan
  • Notebook lanjutan bersifat mandiri, tetapi penomorannya menyediakan jalur utama dari eksplorasi hingga capstone kursus

DRL-ZH AI Companion

  • Workspace Docker menyertakan DRL-ZH AI Companion, ekstensi VS Code untuk kursus ini
  • Ekstensi tersebut mengenali notebook dan TODO yang sedang dikerjakan pengguna
  • Alih-alih langsung memberikan jawaban, ekstensi ini memberi petunjuk bergaya Socratic
  • Mendukung mode teks dan mode suara
  • Kunci LLM harus dibawa sendiri oleh pengguna
    • Gemini adalah default
    • OpenAI, Anthropic, dan Groq juga didukung

Lingkungan eksekusi dan cara memulai

  • Konfigurasi yang direkomendasikan adalah Docker
  • Docker menyediakan komponen berikut sebagai satu workspace yang reproducible
    • code-server
    • notebook
    • Python >=3.13,<3.14
    • kernel Jupyter
    • dependensi
    • AI Companion
  • Prosedur awal dasar
    • Instal Docker dan Git, clone repositori, lalu pindah ke direktori terkait
    • Di Linux/macOS, jalankan printf "UID=$(id -u)\nGID=$(id -g)\n" > .env agar kepemilikan file sesuai dengan pengguna
    • Jalankan environment default
docker compose up --build -d
  • Buka http://localhost:8080 di browser berbasis Chromium dan pilih kernel Python (drl-zh)
  • Buka 00_Intro.ipynb dan mulai isi TODO
  • Jika memerlukan akses GPU NVIDIA, gunakan perintah berikut
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build -d
  • Untuk image yang lebih kecil dan khusus CPU, gunakan perintah berikut
docker compose -f docker-compose.yml -f docker-compose.cpu.yml up --build -d
  • Jika lebih memilih konfigurasi native, petunjuk Python, Poetry, VS Code, dan Companion tersedia di MANUAL.md

Pengetahuan yang dibutuhkan dan lisensi

  • Peserta diharapkan familier dengan hal berikut
    • Python
    • dasar PyTorch
    • probabilitas, statistik, aljabar linear, dan kalkulus yang dibutuhkan untuk ML
  • Notebook mengajarkan RL itu sendiri, tetapi tetap mengasumsikan pengguna bisa membaca dan memodifikasi kode pelatihan nyata
  • Lisensinya adalah MIT; detailnya tersedia di LICENSE

1 komentar

 
GN⁺ 2024-05-06
Opini Hacker News
  • Saat mempelajari deep reinforcement learning terbaru, saya menemukan banyak materi bagus, tetapi tidak ada yang keseimbangan teori dan praktiknya benar-benar cocok dengan pengalaman saya, jadi saya membuatnya sendiri dan merilisnya sebagai open source
    Dalam seri notebook Python ini, saya mengimplementasikan ulang dari nol algoritme seperti QLearning, DQN, SAC, dan PPO, serta menyusunnya agar orang bisa mengikuti teori dan latihan coding secara bertahap hingga teknik-teknik mutakhir sekitar 2018/2019
    Judulnya diambil dari "Neural Network: Zero To Hero" karya Andrej Karpathy, dan saya juga berniat membuat video YouTube, tetapi belum sempat
    Referensi: https://github.com/alessiodm/drl-zh/blob/main/00_Intro.ipynb, https://karpathy.ai/zero-to-hero.html

    • Penasaran apakah materi ini sangat bergantung pada Python, atau bisa diikuti juga dengan bahasa lain
    • Hari ini saya mencoba mengikuti tiga notebook pertama, dan cukup bagus; ini pertama kalinya saya memakai Atari Gymnasium, dan saya puas serta menikmatinya
    • Akan bagus kalau ada halaman SoTA tersendiri yang merangkum teknik dan hasil terbaru
  • Kalau nanti bab-babnya diperluas, akan bagus bila membahas apa yang harus dilakukan ketika semuanya rusak, bukan hanya hal-hal sederhana yang sudah berjalan baik
    Misalnya masalah seperti aksi terus stuck di nilai maksimum, atau eksplorasi tidak juga dimulai meski sudah memberi noise sebanyak apa pun pada pembelajaran off-policy
    Dasarnya biasanya berjalan, tetapi saya berharap ada lebih banyak materi praktis yang bisa dipakai ketika tiba-tiba muncul masalah yang jarang dibicarakan orang

    • Memang benar saran yang umum adalah “atur hyperparameter sampai menemukan kombinasi yang tepat”, dan itu kadang membantu, tetapi masalahnya biasanya tersembunyi di banyak sudut: ruang masalah dan formulasi, algoritme itu sendiri, variasi performa yang besar akibat random seed, dan sebagainya
      Dalam penerapan deep reinforcement learning nyata, kasus yang tidak berjalan baik lebih banyak daripada yang berjalan baik, dan tutorial ini juga masih kurang di sisi pemecahan masalah, tuning, dan produksi
      Kalau ada waktu untuk memperluasnya, bagian ini akan saya jadikan prioritas: https://www.alexirpan.com/2018/02/14/rl-hard.html
  • Saya belajar reinforcement learning selama tiga semester di universitas, tetapi sangat kecewa saat mengetahui bahwa teknik reinforcement learning terbaru pun tidak bisa mengalahkan heuristic sederhana di Tetris

    • Saya memodelkan sebagian masalah bisnis perusahaan sebagai masalah multi-armed bandit, memangkas biaya terbesar sebesar 10%, dan juga menunjukkan sinyal kebenaran otomatis yang membantu memahami mana yang berhasil dan mana yang tidak di berbagai fitur
      Seperti alat lain, konsep reinforcement learning juga penting untuk ditempatkan pada kegunaan yang tepat
      Di kelas, sering kali kurang ditunjukkan di mana ide-ide kuat ini bisa dipakai di dunia nyata
      Membahas kebijakan optimal memang bagus, tetapi kalau tidak membuat orang memahami di mana penerapannya, ia mudah berhenti sebagai kumpulan matematika yang menarik
    • Saya setuju bahwa reinforcement learning bisa sangat mengecewakan, dan setuju juga bahwa membuatnya benar-benar bekerja itu sulit
      Namun saya tetap merasa dasar-dasarnya layak dipelajari
      Berbeda dari supervised learning, unsupervised learning, dan semi-supervised learning yang belakangan sangat mendapat sorotan, reinforcement learning memodelkan masalah pembelajaran dengan sangat elegan melalui agen yang berinteraksi dengan lingkungan dan menerima umpan balik
      Bahkan sekarang pun ada contoh keberhasilan praktis seperti fine-tuning LLM dengan RLHF, perusahaan robotika seperti Covariant, dan riset yang menggabungkan LLM dengan reinforcement learning seperti Nvidia Eureka: https://www.alexirpan.com/2018/02/14/rl-hard.html, https://blogs.nvidia.com/blog/eureka-robotics-research/
    • Reinforcement learning tampaknya sedang berada di wilayah tengah yang aneh. Tidak ada yang benar-benar tahu pasti cara membuatnya bekerja dengan baik, tetapi sebagian besar peneliti machine learning papan atas tampaknya menganggapnya komponen penting untuk kemajuan AI berikutnya
  • Saya membuat framework deep reinforcement learning untuk pembuatan musik, mirip OpenAI Gym
    Silakan dipakai kalau ingin menguji algoritme dari tulisan asli, dan issue maupun PR juga diterima
    https://github.com/chaosprint/RaveForce

  • Dulu saya pernah mencoba melihat sendiri deep reinforcement learning, tetapi agennya tidak menghasilkan kemajuan berarti, dan karena hampir tidak punya latar belakang statistik atau machine learning, sulit untuk men-debug apa yang salah
    Saya berencana mengikuti materi ini dan melihat hasilnya

    • Saya penasaran apakah agennya akhirnya menunjukkan kemajuan, dan apakah notebook ini membantu meski sedikit
      Kalau hanya ingin melihat apakah algoritmenya benar-benar berjalan, Anda bisa memilih algoritme yang seharusnya berfungsi dari folder solution dan langsung menjalankannya
      Kalau berjalan baik, setelah itu Anda bisa menikmati proses mengimplementasikannya kembali dari nol
    • Materi seperti ini bagus, tetapi reinforcement learning sendiri adalah topik yang cukup padat dan berat, jadi saya tidak yakin apakah ada cara untuk menurunkan tingkat kesulitan intrinsiknya
      Menurut saya hal itu perlu disampaikan jelas kepada pemula
      Ini bagian yang paling saya sayangkan dalam topik machine learning, terutama yang terkait reinforcement learning
  • Beberapa tahun lalu saya membuat sesuatu yang mirip. Tidak sampai PPO dan gayanya juga berbeda
    https://learndrl.com/
    Bukan bermaksud mengatakan lebih baik atau lebih buruk, tetapi bagi orang yang sedang belajar, selalu baik untuk melihat informasi yang sama dalam berbagai bentuk

  • Setelah melihat contoh MDP, saya ingin memberi saran tentang cara memperkenalkan fungsi transisi nondeterministik
    Dalam contoh saat ini, nondeterminisme muncul ketika agen mencoba bergerak ke atas atau bawah tetapi tanpa sengaja bergerak ke kiri atau kanan; namun teksnya tidak cukup menjelaskan bahwa agen melakukan kesalahan, sehingga komentar pada fungsi transition() awalnya membingungkan
    Selain itu, secara pedagogis mungkin lebih baik memperkenalkan nondeterminisme sebagai sesuatu yang berasal dari lingkungan, bukan dari agen. Misalnya bergerak di atas permukaan kasar sehingga meski menggerakkan track atau anggota tubuh, hasil yang diinginkan tidak selalu terjadi
    Dengan ungkapan sekarang, ini terlihat seperti fungsi dari aksi ke aksi acak lalu ke status acak, padahal definisinya adalah fungsi dari aksi ke status acak

    • Di notebook memang bisa membingungkan, jadi saya mengunggah commit kecil agar sedikit lebih jelas bahwa nondeterminisme berasal dari sifat stokastik dinamika lingkungan, bukan karena agen keliru memilih aksi lain
      Awalnya saya berencana menutup kekosongan teks dengan narasi suara di video, tetapi karena belum sempat membuat video, saya memperbaiki celah seperti itu terlebih dahulu
  • Baru setelah cukup jauh membaca notebook ketiga, saya menyadari bahwa bagian kode yang ditandai TODO sebenarnya adalah latihan coding yang harus diimplementasikan pembaca, dan pengujian berikutnya dipakai untuk memeriksa jawaban sendiri
    Ini pendekatan yang cerdas, tetapi tidak langsung jelas sejak awal
    Awalnya saya mengira detail-detail kecil dibiarkan sebagai TODO agar tidak mengganggu gambaran besar, padahal bagian-bagian itu justru inti latihan

    • Saya tidak terpikir bahwa TODO bisa membingungkan, jadi saya memperbarui instruksi di README.md agar menyatakan dengan jelas bahwa itu adalah bagian coding yang perlu diselesaikan
  • Saya sudah mempelajari teorinya, tetapi masih menggantung karena kurang pengetahuan praktis yang dibutuhkan untuk benar-benar memakai reinforcement learning; ini tampak seperti jenis kuliah yang saya cari

    • Saya penasaran bagaimana notebook ini membantu, seperti apa pengalaman Anda saat mengikutinya, dan masukan apa pun sangat diterima
  • Terlihat bagus; akan lebih baik jika menambahkan tautan video YouTube di README

    • Itu kesalahan di README, dan saya belum sempat membuat video YouTube
      Namun karena komunitas tampaknya tertarik, saya akan mencoba membuatnya, dan sementara itu saya akan memperbaiki README