Mengenal Google Colab

Apa itu Google Colab?

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)
  • Mudah berintegrasi! Google Colab terbilang sangat fleksibel dalam hal integrasi. Kita dapat dengan mudah menghubungkan Google Colab dengan jupyter notebook di komputer kita (local runtime), menghubungkan dengan Google Drive, atau dengan Github
  • 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.

Baca juga: Mencari Alternatif Google Colab

Bagimana cara menggunakannya?

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:

tampilan google colab

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.

tampilan google colab 2

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.

mengatur gpu google colab

Hal-hal lain seputar 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, kita arahkan 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 dengan perintah 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”

dark google colab

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:

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

Selamat mencoba! dan semoga bermanfaat!

Baca juga: Mencari Alternatif Google Colab

Word Embedding Bahasa Indonesia menggunakan Fasttext (dengan Gensim)

Mengenal Word Embedding

Word embedding mudahnya adalah istilah yang digunakan untuk teknik mengubah sebuah kata menjadi sebuah vektor atau array yang terdiri dari kumpulan angka.

Ketika kita akan membuat model machine learning yang menerima input sebuah teks, tentu machine learning tidak bisa langsung menerima mentah-mentah teks yang kita miliki. Cara “tradisional” untuk membaca teks tersebut adalah sebagai berikut:

  1. Buat kamus kata dengan cara mendaftar semua kata yang ada di dataset
  2. Setiap menerima sebuah string kata, string tersebut diubah menjadi sebuah integer dengan memberinya nomor. Penomoran ini bisa ditentukan berdasarkan urutan di kamus kata yang kita miliki. Misalnya pada ilustrasi di bawah, string “Makan” menjadi angka 3, string “Lari” menjadi angka 5, dst.
  3. Angka-angka tersebut kita ubah lagi menjadi sebuah vektor (array 1 dimensi) yang memiliki panjang sepanjang banyak kata yang kita miliki di kamus. Array tersebut hanya akan bernilai 1 atau 0 (disebut one hot encoding). Nilai 1 diposisikan pada indeks yang merupakan nomor kata tersebut sedangkan elemen lainnya bernilai 0. Contohnya untuk kata “makan”, dengan banyak kosakata yang kita miliki adalah 100 kata, maka dari kata tersebut kita akan memperoleh sebuah vektor dengan panjang 100 yang berisi 0 semua kecuali pada posisi ke 3 yang bernilai 1.
Ilustrasi mengubah string menjadi one-hot encoding
Continue reading

Template Curriculum Vitae untuk LaTeX

Beberapa waktu lalu saya penasaran dengan tampilan Curriculum Vitae / CV/ Resume yang baik. Di internet ada banyak tampilan dengan beragam format, tapi kali ini saya tertarik untuk membuat CV dengan LaTeX.

Pilihan pertama saya jatuh pada CV buatan Thomas Jansson. Templatenya (file `resume.cls`) bisa didownload langsung di halaman aslinya atau di daftar template Sharelatex.

Tampilan akhir CV dengan template oleh Thomas Jansson

Jika kalian perhatikan, desainnya sudah sangat baik, elegan, dan terkesan profesional. Cocok untuk CV para profesional yang panjang ataupun para freshgraduate yang belum banyak pengalaman. Hanya saja ada yang kurang menurut saya, yakni warna. Template aslinya hanya menghasilkan CV berwarna hitam putih. Artikel ini mendokumentasikan bagaimana saya memberi warna pada template tersebut.

Download Template

Bagian selanjutnya dari artikel ini akan menjelaskan pengalaman saya mengedit warna template LaTeX tersebut. Jika ingin langsung menggunakan template yang telah saya edit sehingga dapat custom warna, silakan download file resume.cls di repository berikut.

Note: Jika ingin mengganti warna template CV, ubah MidnightBlue pada bagian \colorlet menjadi warna lain sesuai selera

Mengedit LaTeX template

Berdasarkan tips-tips di internet dalam mendesain CV yang baik, saya berusaha untuk tidak terlalu banyak mewarnai area CV. Saya hanya akan meng-highlight bagian-bagian yang saya rasa penting untuk diberi warna, yakni teks judul dan teks subjudul pada sisi samping.

1. Kita akan mengedit file resume.cls yang tadi telah kita download di web aslinya.

2. Langkah selanjutnya tambahkan package yang menyediakan pewarnaan teks pada bagian akhir:

\usepackage[dvipsnames]{xcolor}

Saya berikan parameter tambahan dvipsnames sehingga kita memperoleh lebih banyak pilihan warna yang memiliki “nama” (jadi tidak perlu menginputkan kode heksadesimal).

3. Untuk mempermudah penggunaan warna, saya membuat variabel yang menyimpan warna menggunakan perintah \colorlet:

\colorlet{themecolor}{MidnightBlue}

Variabel themecolor adalah variabel yang akan kita gunakan untuk menyimpan warna template yang akan kita gunakan. Sedangkan MidnightBlue adalah warna tema yang saya gunakan untuk CV tersebut.

Note: Jika ingin mengganti warna template CV, ubah MidnightBlue pada bagian \colorlet menjadi warna lain sesuai selera

4. Selanjutnya saya sisipkan variable warna template ke bagian yang ingin kita beri warna, yakni judul dan subjudul di sisi samping. Di template, untuk mengedit kedua bagian tersebut kita dapat mengedit style yang digunakan, yakni mysidestyle dan mytitle.

\newcommand{\mysidestyle}[1]{\small\sc\textcolor{themecolor}{#1}}
\newcommand{\mytitle}[1]{{\sc\Large\textcolor{themecolor}{#1}}}

Jika diperhatikan, di sini untuk mewarnai text saya menggunakan perintah textcolor{}. Sebenarnya ada dua cara yang dapat digunakan yakni dengan color{} atau textcolor{}, tetapi cara pertama akan membuat eror pada template (text tidak lagi teralinea dengan rapi)

Setelah selesai, template resume.cls sudah akan dapat memberikan warna pada bagian-bagian yang kita tentukan. Jika sebelumnya sudah pernah menggunakan template dari Thomas Janssen, perubahan ini seharusnya tidak akan mengubah apapun kecuali pemberian warna.

Hasil template CV dengan warna tema MidnightBlue

featured image credit: https://www.philippewiget.com


simple neural net

Neural Net in 4 lines! using Scikit-Learn MLPClassifier

See the code below:

from sklearn.neural_network import MLPClassifier

mlp = MLPClassifier(hidden_layer_sizes=(10),solver='sgd',
                      learning_rate_init=0.01,max_iter=500)

mlp.fit(X_train, y_train)

print mlp.score(X_test,y_test)

That’s right, those 4 lines code can create a Neural Net with one hidden layer! ๐Ÿ˜

Scikit-learn just released stable version 0.18. One of the new features is `MLPClassifer` and you can see in the code above, it’s powerful enough to create a simple neural net program.

That code just a snippet of my Iris Classifier Program that you can see on Github. Of course, in practice, you still need to create loader, pre-process, pre-training, or other modules. But, if you see other python libraries like Keras, Lasagne, or Theano, I think this is the easiest way to create a simple neural net. I said “simple” because when you need to create more complex model that need more complex algorithm or many addons, I think it’ll become difficult to use `MLPClassifier`. But, for some simple project, I think I’ll choose this scikit tool ๐Ÿ™‚

Program Explanation

Line 1: you need to load `MLPClassifier`

Line 2: we create an object called ‘mlp’ which is a `MLPClassifier`. We set hidden_layer_size to (10) which means we add one hidden layer with 10 neurons. Then we set solver as ‘sgd’ because we will use Stochastic Gradient Descent as optimizer. Then we set learning_rate_init to 0.01, this is a learning rate value (be careful, don’t confuse with alpha parameter in MLPClassifer). Then the last, we set 500 as the maximum number of training iteration.

Line 3: Train the model

Line 4: Test the model

That’s it! and my first run I got more than 90% accuration in Iris Dataset ๐Ÿ™‚ try it!

And actually, you can create “Deeper” neural net with add more layers easily, just change `hidden_layer_sizes`. For example, `hidden_layer_sizes=(10,10,10)` will create 3 hidden layer with 10 neuron each.

source image: Flickr

Meng-custom Perintah/Command di Terminal Ubuntu

Beberapa waktu lalu saya mendapat kesempatan untuk ikut Grand Final Kode Indonesia di Jakarta. Kode Indonesia adalah sebuah kontes pemrograman yang diadakan oleh Kalibrr.

Berbeda dengan kontes pemrograman pada umumnya, pada kontes ini panitia tidak menyediakan komputer atau laptop untuk para finalis. Jadi para finalis dipersilakan untuk menggunakan komputernya masing-masing di Grand Final. Sebenarnya ini peraturan yang aneh karena ini membuat setiap peserta bisa jadi punya “starting-point” yang berbeda kan? misal kualitas komputer, file-file yang tersedia, dsb.

Tapi ya sudah, karena ini aturan panitia sendiri maka saya juga mencoba menyiapkan laptop saya. Hal sederhana yang saya pikirkan adalah:

Meng-custom perintah atau command di terminal Ubuntu: Coba buat perintah sederhana untuk meng-compile sekaligus menjalankan program C++!

Tujuan command tersebut tentu untuk mempersingkat proses compile. Karena saya sendiri biasa tidak menggunakan IDE yang bisa meng-compile program, maka cara saya biasanya untuk meng-compile file C++ adalah dengan menjalankan perintah (command) berikut:

$ g++ mycppfile.cpp -o outfile

Lalu setelah di-compile, dijalankan dengan perintah:

./outfile

Nah, misi sederhana saya saat itu adalah menyederhanakan kedua perintah di atas menjadi sebuah perintah sederhana. Setelah browsing-browsing, berikut ini rangkuman langkah-langkahnya:

  1. Buat sebuah script file, misalnya kita beri nama `customcpp.sh`
  2. Pada baris pertama, tuliskan `#!/bin/bash` lalu tuliskan perintah yang ingin dijalankan di bawahnya seperti di bawah. Pada perintah di bawah `CPPFILE` adalah variabel yang menyimpan argumen yang akan diinputkan saat pemanggilan. Nantinya akan menerima nama file yang akan di-compile.
    #!/bin/bash
    CPPFILE="$1"
    g++ ${CPPFILE}.cpp -o outfile
    ./outfile
  3. Simpan file tersebut, lalu pindahkan ke `/usr/local/bin`, pemindahannya bisa menggunakan command di bawah. SCRIPTNAME adalah nama perintah yang akan dipanggil ketika script di atas di jalankan.
    sudo mv ~/customcpp.sh /usr/local/bin/SCRIPTNAME
  4. Atur permission agar program bisa diakses
    sudo chown root: /usr/local/bin/SCRIPTNAME
    sudo chmod 755 /usr/local/bin/SCRIPTNAME

Dan… selesai!

Setelah selesai, sekarang untuk mengcompile sekaligus menjalankan program C++, saya cukup mengetikkan di terminal command berikut ini:

SCRIPTNAME mycppfile

ya.. setidaknya sedikit lebih cepat dari sebelumnya kan ๐Ÿ˜‰

Sumber: