Tahun 2018-2021 ini Alhamdulillah saya dapat kesempatan untuk mengikuti beberapa course online premium yang berbayar dengan topik AI, machine learning, atau deep learning. Saya akan coba review singkat ketiga course tersebut, semoga bisa jadi pertimbangan jika ada yang tertarik mengikutinya.
Datacamp
Course online pertama yang saya dapat adalah Datacamp, saya dapat premium student plan-nya berkat bantuan kerja sama Pak Widiawan, dosen UGM, sekitar pertengahan tahun 2018. Course tersebut berlangsung sekitar 4 bulan.
Di Datacamp, tersedia beberapa jalur belajar dengan fokus tujuan tertentu yang disebut “track”, misalnya Track “Machine Learning with Python” atau “Python Programmer”. Sebuah track akan terdiri dari beberapa course yang harus diselesaikan, dan sebuah course terdiri dari beberapa chapter. Dengan akun premium kita bisa mengambil course manapun dengan urutan manapun, “track” hanyalah fasilitas tidak wajib. Sedangkan dengan akun gratis kita hanya bisa mengakses chapter pertama setiap course.
Setiap course materi selalu disampaikan dengan dua metode: video penjelasan teori terlebih dahulu lalu dilanjut praktik dengan menggunakan interaktif window. Kita juga akan mendapatkan slide yang digunakan di video dan “catatan” saat menggunakan interaktif window.
Seperti Google Drive, Google Doc, dan sebagainya, Google Colab adalah salah satu produk Google berbasis cloud yang bisa kita gunakan secara gratis. Perbedaannya adalah Google Colab dibuat khusus untuk para programmer atau researcher yang mungkin kesulitan untuk mendapatkan akses komputer dengan spek tinggi. Google Colab adalah coding environment bahasa pemrograman Python dengan format “notebook” (mirip dengan Jupyter notebook), atau dengan kata lain Google seakan meminjami kita komputer secara gratis! untuk membuat program oleh Google.
Saya sendiri beberapa kali telah menggunakan Google Colab untuk beragam keperluan dan merasakan banyak manfaatnya, beberapa manfaat yang saya rasakan:
Free GPU! Google Colab memudahkan kita untuk menjalankan program pada komputer dengan spek tinggi (GPU Tesla, RAM ~12GB, Disk ~300GB yang masih bisa sambung dengan Google Drive, akses internet cepat untuk download file besar) dan running dalam waktu yang lama (Google Colab mengizinkan kita untuk merunning program hingga 12 jam). Karenanya, bagi teman-teman yang ingin belajar Deep Learning tidak perlu khawatir lagi akan terhalang sulitnya mendapatkan akses komputer dengan spek tinggi.
Colaborate! Google Colab juga memudahkan kita berkolaborasi dengan orang lain dengan cara membagi kodingan secara online (mirip Google Doc). Kita bisa lebih mudah bereksperimen secara bersamaan, atau sekadar menggunakan fitur ini untuk mempelajari codingan orang lain yang telah rapi (karena format notebook)
Fleksibel! Salah satu yang saya favoritkan adalah kita bisa dengan mudah merunning deep learning program via HP! ya karena pada esensinya Google Colab hanya perlu running di browser, kita bisa mengawasi proses training (atau bahkan coding) via browser smartphone kita selama smartphone kita terhubung dengan Google Drive yang sama.
Seperti Aplikasi Google pada umumnya, yang kita butuhkan adalah akun Google dan silakan ke https://colab.research.google.com/. Setelah itu kita akan disuguhkan tampilan sebagai berikut:
Untuk membuat notebook baru, cukup klik New Python 3 Notebook (atau Python 2 tergantung apa yang akan digunakan) lalu kita akan dibawa ke halaman yang mirip dengan Jupyter Notebook. Nantinya, setiap notebook yang kita buat akan disimpan di Google Drive kita.
Pengaturan GPU
Jika kita ingin menjalankan program Python kita menggunakan GPU (atau bahkan TPU), kita cukup perlu klik “Edit > Notebook Settings”, lalu pada bagian “Hardware Accelerator” pilih GPU.
Hal-hallainseputar Google Colab
Di bagian ini saya akan menjelaskan catatan-catatan tambahan penggunaan Colab yang tidak wajib kalian tahu, tapi siapa tahu akan bermanfaat nantinya.
Pip Package Installation
Ketika kita butuh instal python package di Colab, kita bisa melakukan instalasi menggunakan pip.
!pip install seaborn
Jika diperhatikan perintahnya sama seperti perintah instalasi pip pada umumnya, hanya saja bedanya di awali dengan tanda !. Tanda tersebut digunakan sebagai penanda bahwa perintah yang akan kita jalankan adalah command line. Kita juga bisa menggunakan tanda ! untuk perintah terminal lain seperti !wget untuk mendownload dataset, !gzip untuk mengextract file zip, !cp untuk mengcopy file, dan sebagainya.
Menghubungkan dengan Google Drive
Google Colab akan mereset notebook beserta semua temporary filenya maksimal 12 jam sekali. Karenanya akan lebih baik jika file yang akan kita gunakan atau kita hasilkan tersimpan dengan rapi di Google Drive. Kita bisa melakukan hal tersebut dengan menjalankan program di bawah
from google.colab import drive
drive.mount('/content/drive')
Jika perintah di atas dijalankan, maka kita akan diberikan URL yang akan mengantarkan kita ke halaman permohonan akses Google Drive. Jika ktia sudah mengizinkan, kita akan diberikan kode yang dapat dituliskan di kolom kecil di akhir output tersebut.
Setelah terhubung, maka akan tampak daftar file di bagian kiri Notebook
Untuk mengakses file-file tersebut, kitaarahkan proses load / save ke path drive/My Drive/FOLDERTUJUAN
Mengupload file ke Colab
Alternatif lain jika tidak ingin menghubungkan Google Colab ke Google Drive adalah dengan mengupload langsung file yang diperlukan ke Colab. Colab menyediakan tempat penyimpanan file sementara yang akan direstart (dihapus) dalam rentangan waktu tertentu.
Upload file ke Google Colab denganperintah berikut:
from google.colab import files
upload = files.upload()
Jika perintah di atas di-run akan memunculkan kotak dialog untuk mengupload file. Perintah di atas cukup praktis untuk mengupload file-file kecil (bukan dataset besar, lebih mudah diletakkan di drive)
Pengaturan tema
Bagi yang suka coding dengan “night mode”, Colab juga menyediakan pilihan untuk mengubah tema notebooknya menjadi gelap. Pengubahan tema dilakukan di “tools” > “preferences” > “site”
Selain itu Colab juga menyediakan beberapa “hiburan” lain untuk diatur semisal memunculkan kucing (“kitty mode”) atau anjing (“corgy mode”) di atas layar atau juga percikan api (“power level”) jika mengetik panjang. Ini semua bisa ditemukan di “tools” > “preferences” > “miscellaneous”
Catatan seputar versi sistem
Perlu dicatat, tipe GPU dan versi Cuda (software “penghubung” komputasi menggunakan GPU) bisa jadi berbeda setiap kita buka Colab. Google Colab juga tidak menjamin akan selalu menginstall package Python termutakhir. Karenanya ada beberapa hal yang perlu diingat:
Ketika melatih model machine learning pastikan semua-nya disimpan. “Semua” di sini mulai dari bobot neural network, parameter, modelnya, versi package, apapun! karena bisa jadi besok pas mau di-run lagi hasilnya berubah karena ada perubahan versi sistem. Ini khususnya ketika ada unsur “random” di kode kita.
Ketika install package, pastikan dilengkapi dengan nomor versinya. agar tidak terpengaruh perubahan sistem:
!pip install torch==1.5 numpy==1.17
Penutup
Saya pribadi sangat merasa terbantu hingga saat ini dengan adanya Google Colab. Saya jadi tidak perlu repot izin pinjam komputer lab atau mengusulkan pembelian komputer spek tinggi di kantor. Saya sudah menggunakan Colab untuk beberapa projek Deep Learning yang tidak terlalu besar, dan sampai saat ini kesannya positif, lumayan untuk belajar atau bahkan untuk menghasilkan model yang baik di kasus-kasus sederhana. Batasan 12 jam running juga tidak terlalu menghalangi karena dengan spek komputer yang sudah baik, proses running jadi tidak perlu selama itu kok.
Kalau kalian sedang ingin belajar Deep Learning dan ingin mencoba utak-atik tensorflow, maka kalian pasti sadar kalau tensorflow tidak mau berjalan di Windows. Karenanya kali ini, mau sedikit lagi berbagi pengalaman langkah yang saya pakai untuk instalasi NVIDIA Cuda di Ubuntu.
Kalau mau langsung cepat, silakan baca bagian Referensi
Proses dan pengalaman
1. Awalnya saya ngiranya driver NVIDIA akan otomatis terinstall di Ubuntu 16.04 *kayaknya dikabarin sama siapa gitu, dan percaya-percaya saja* Karena kepercayaan itu langkah pertama yang saya lakukan adalah langsung download Cuda.
2. Setelah terdownload (cuda_7.5.18_linux.run) langsung run dengan perintah:
sudo sh cuda_7.5.18_linux.run --override
3. Nah, karena pas lagi install saya masih PeDe sudah ada nvidia drivernya akhirnya ketika ditawarin di menu installnya untuk instal nvidia driver saya ya jawab NO dan setelah itu proses instalasi tetap berjalan lancar dan berhasil.
4. Setelah berhasil terinstal, saya pingin coba cek apakah Cuda sudah berjalan dengan memainkan file sampel Cuda nya. Caranya tinggal tuju folder `home/user/NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery` Setelah itu, open terminal di lokasi tersebut dan run perintah `make` di terminal. Lalu jalankan program device query dengan perintah `./deviceQuery`.
5. Dan munculah tulisan seperti ini 🙁
-> CUDA driver version is insufficient for CUDA runtime versionResult= FAIL
6. Error tersebut menyadarkan ada yang salah dengan NVIDIA drivernya. Setelah coba cek dengan beberapa cara untuk mengecek apakah NVIDIA driver sudah terinstall, dengan perintah dpkg -l | grep nvidia, ternyata driver NVIDIA nya memang belum terinstall dengan baik 😐 karenanya saya langsung memulai proses instalasi NVIDIA Drivernya
First, I am nobody in this topic, please don’t hesitate to give better suggestion. This is actually just a “documentation” about my experience when I work on my undergraduate thesis in 2015. Once again, please don’t hesitate to discuss and give better suggestion about this topic, or.. correct my English if I made some mistakes 🙂
Background
Okay, before I tell you my story, I’ll tell you about my background when I started to learn neural network. I wrote this section only have one intention, to make you easy measure what you need, nothing else.
I have familiarity with some of mathematical symbols, like how to read sigma symbol, derivative symbol and many others (but not every symbols).
I have familiarity with basic math operation like derivative function, algebra, matrix and vector operation (but only “the basic”).
I’ve never coded in python, but I’ve been using C++ around 2-3 years and I used to code Matlab style programming language in some project before (and thanks, this knowledge is very helpful)
I studied the Introduction of Artificial Intelligence at the fourth semester in college, but I won’t said I did it well 🙁
After a month googling randomly, I started to make a list what should I learn, the order of the list below it’s just the best order in my opinion. In my experience I jumped many times over the topic because at that time, I didn’t know what I didn’t know 🙁
If you want to learn about Deep Learning, lets begin with: What is Machine Learning?
After I knew the big picture of neural net I also read the simple history of neural net, and the “basic” of neural net, I think this gave me a few intuition. I read a book “Fundamentals of Neural Network” by Fausset, only the first two chapters
But, I think you can get the “alternative version” what I got from Fausset’s book in the first chapter from http://neuralnetworksanddeeplearning.com/ (try to read the first three chapters)
I suggest you to fully-understand this algorithm in order to give some intuitions to help you in model tuning or error handling when you start implement the neural network
Easy start : I watched again the neural network demistifyed, and slowly got the intuition how backpropagation work, I followed and tried the math step-by-step
Watch the 4th week on Coursera Introduction to Machine Learning
And if you start thinking they have different formula / calculation / interpretation, start to prove that you are wrong. I started to compare all the calculations to understand more
Python for machine learning?
Learn the basic of python. I forgot how I learn my first python syntax, I remember I use some interactive platforms like https://www.codecademy.com/learn/python then I practice and read some python code in http://codeforces.com‘s problemset
I don’t know it is necessary or not, but I learned it. I think if you understand the basic of backpropagation it’s enough. But if you are curious how backpropgation through max pooling or convolution layer, it does not hurt to learn it.
And…great, It’s done, That’s all my references that I used when I did my undergraduate thesis, I hope it will be useful for someone :/ or at least for me in the future 🙂