Setelah banyak eksperimen di bidang machine learning, saya masih merasa mencatat keluaran eksperimen itu bagian yang tidak mudah. Rasanya hampir semua eksperimen machine learning yang saya lakukan, saya catat dengan cara dan gaya yang berubah-ubah. Ada yang saya input manual ke excel, atau log ke csv, atau sekadar di notepad. Belum lagi ketika prosesnya, eksperimen kadang harus berubah, gagal, tidak sesuai harpaan… (>,<) dan akhirnya bikin mood mencatat rapi itu makin hilang di tengah-tengah.
Alhamdulillah akhir 2021 lalu nemu tools menarik untuk mencatat hasil eksperimen dengan rapi dan lengkap dan mudah, yakni dengan Weights and Biases.

Weights and Biases (atau kadang ditulis W&B atau kadang juga wandb) adalah suatu tools yang memudahkan pencatatan eksperimen machine learning. Yang menarik dari weights and biases, sesuai dengan taglinenya “Log (Almost) Anything”, dia mampu mencatat hampir semua hal yang terjadi pada saat eksperimen dengan mudah. Beberapa data yang saya ingat bisa dicatat saat setiap run adalah:
- Nilai loss atau akurasi atau nilai-nilai lain yang berubah-ubah saat training
- Pemakaian CPU/GPU
- Media-media yang dihasilkan selama eksperimen (audio/citra/video)
- Perubahan bobot dan bias pada model
- Spesifikasi hardware, software, serta versi package python yang terinstall
- Parameter-parameter model, seperti learning rate, batch size, dsb.
Semua data itu dicatat secara rapi di server saat setiap kali melakukan “run” eksperimen. Jadi ketika kita melakukan beberapa run kita juga bisa membandingkan grafik-grafik data-data tersebut, dan hal ini akan sangat bermanfaat untuk mengukur performa model atau debugging seiring berjalannya waktu.

Weights and Biases Tutorial
Weights and Biases sendiri sebenarnya bisa berjalan hampir di semua framework machine learning seperi Tensorflow, Pytorch, Scikit-learn, dll. Pada tutorial ini kita akan menggunakan kode yang kita gunakan untuk klasifikasi citra menggunakan CNN dan Pytorch.
Secara umum, ada lima langkah utama untuk melakukan pencatatan menggunakan weights and biases:
: Untuk menghubungkan projek kita dengan akun W&B yang kita miliki. Secara default W&B membutuhkan koneksi internet untuk menyimpan hasil eksperimen ke server.wandb.login(): Digunakan untuk mendefinisikan projek apa yang sedang kita jalankan. Pada bagian ini kita juga mendefinisikan parameter apa yang akan dicatat dalam sebuah config.wandb.init(): Digunakan untuk memperhatikan (mencatat) kondisi model dari waktu ke waktuwandb.watch()wandb.log(): Digunakan untuk mencatat variabel-variabel lain yang dibutuhkan untuk di catat.: Menandai akhir proses pencatatan, jika kita ingin memulai proses pencatatan yang lain.wandb.finish()
Kode lengkap berupa Notebook disertai penjelasan (Bahasa Inggris) bisa diakses di sini: Pytorch Image Classification + Weights and Biases.
Pada kode tersebut tampak lima poin di atas bisa dilakukan hanya dalam 5 baris saja (masing-masing perintah satu baris). Menggunakan notebook di atas, saya coba bereksperimen dengan mengubah-ubah nilai learning rate dan banyaknya batch saat training. Hasilnya, tampilan ringkasan pencatatan di dashboard Weights and Biases untuk tutorial di atas seperti berikut:

Nama-nama seperti “autumn-cloud-5” dan sebagainya, adalah nama yang secara otomatis diberikan W&B untuk membedakan setiap run eksperimen yang kita lakukan. Kita bisa mengubah-ubahnya semau kita jika itu dirasa memudahkan. Untuk detail setiap run bisa dilihat dengan klik setiap namanya, atau mengubah tampilan dalam bentuk tabel seperti di bawah ini:

W&B Sweeps
W&B juga menyediakan fitur untuk melakukan hyperparameter optimization. Dengan fitur ini, secara otomatis weights and biases akan mencari nilai-nilai untuk setiap parameter yang memberikan hasil terbaik untuk kasus kita. Hasil akhirnya, kita bisa melihat hubungan nilai parameter dengan loss yang diperoleh.

Komunitas Weights and Biases
Yang menarik lagi tentang W&B ini bukan hanya tools yang disediakan namun juga komunitasnya. Saya bahkan lebih dulu mengikuti kegiatan-kegiatan di komunitas W&B sebelum saya mencoba toolsnya. W&B secara aktif mengadakan mini workshop, paper dan book reading group, seminar, Q&A session, dan masih banyak lagi, di mana kita bisa belajar banyak hal seputar machine learning secara umum tidak hanya seputar W&B.

Kalian bisa cek youtube channelnya untuk melihat beberapa rekaman yang tersedia, atau follow akun twitternya untuk bisa update kegiatan-kegiatan terbarunya.
Sekian, Semoga bermanfaat!
