Mencari Alternatif Google Colab

Setelah lebih dari dua tahun tulisan pertama tentang Google Colab, pada artikel ini kami mau sharing pengalaman mencari alternatif google colab beberapa pekan terakhir. Apakah ada yang sebanding?

Setelah browsing artikel sejenis dan juga lihat-lihat akun twitter aktivis machine learning, akhirnya menemukan ada dua platform yang menarik untuk dicoba, Gradient dan Jarvis Labs. Perlu dicatat, kedua platform itu berbayar. Alhamdulillah karena dibantu dana penelitian, proses eksplorasi ini tidak jadi pikiran tambahan tagihan hehe.

Artikel ini akan berfokus pada alternatif berbayar Gradient dan Jarvis Labs, insyaAllah akan ada artikel lain yang akan bercerita alternatif yang juga bisa dibandingkan dalam hal sama-sama gratis.

Kenapa Tidak Google Colab?

Sebenernya, secara fitur, Google Colab sudah memiliki banyak keunggulan: terintegrasi dengan github dan drive, mudah dipakai, dan termasuk yang tadi saya sebut di awal, gratis. Fitur-fitur itu sudah sangat cukup untuk hampir kebanyakan pengguna. Tapi, beberapa pengguna yang cukup intens akan merasakan beberapa kekurangan yang membuat mereka harus mencari alternatif google colab.

Beberapa kekurangan yang mungkin dirasakan:

1. Google Colab tidak bisa menjamin jenis hardware yang kita peroleh. Bahkan ketika kita menggunakan Google Colab Pro+ yang berbayar (sementara ini belum tersedia di Indonesia), kita tidak bisa tahu tepatnya GPU apa yang akan kita peroleh atau berapa kapasitas Memory yang bisa kita gunakan maksimal.

2. Google Colab “tidak menyediakan” persistent storage, atau tempat penyimpanan permanen . Sebenarnya Colab sudah memberi fitur untuk menghubungkan google drive dengan colab, tetapi bagi pengguna yang intens codingnya dan membangun sistem yang terdiri dari banyak source code file dan data, penghubungan ini terasa tidak alami dan bisa jadi mengganggu kinerja. Apalagi kalau sampai lupa/gagal menyimpan model karena masalah ini.

3. Terbatas hanya format notebook. Meskipun ada beberapa trik yang bisa digunakan, google colab secara alami hanya menyediakan format notebook (.ipynb). Bagi yang biasa coding dengan bentuk script file (.py), atau perlu menggunakan terminal, sementara ini belum bisa dilakukan.

4. Waktu runtime yang terbatas. Jika colab kita tidak aktif dalam beberapa menit koneksi bisa diputus. Dan untuk running program dibatasi maksimal 12 jam, setelah itu akan ada jeda (kayak sesi cooling down) beberapa waktu untk kita bisa gunakan Google Colab lagi.

Alternatif Google Colab Berbayar

1. Gradient by Paperspace

Pertama kali dengar Gradient ketika mengikuti course dari Fast.ai. Saat itu mereka merekomendasikan Gradient yang menyediakan GPU dan fitur-fitur yang lebih baik dibanding Colabsecara gratis. Tapi sayangnya, di versi yang sekarang kita perlu membayar (menjadi member) untuk menggunakan Gradient. Gradient menyediakan beragam jenis pilihan CPU/GPU yang bisa digunakan, dari yang standard seperti RTX4000 sampai yang sangat bagus seperti A100.

Continue reading
question answer chatbot

Question Answer (QA) Chatbot dengan DistillBERT Transformer

Tutorial kali ini kita akan membuat model Question Answer (QA), dengan menggunakan library transformer untuk NLP yakni Hugging Face. QA yang kita buat dapat menerima pertanyaan dalam format layaknya pertanyaan yang diajukan manusia, dan memberikan jawaban yang sesuai dengan konteks yang kita harapkan. QA adalah task yang menarik dan berbeda dengan retrieval, karena kita bukan searching keyword jawaban di database, meskipun perkembangan search engine bisa dikombinasi dengan task ini (bisa dibaca artikel menarik di sini https://blog.google/search-language-understanding-bert).

Ada 4 tahapan yang akan dieksplor di tutorial ini:

  1. Membuat Question Answer dengan DistillBERT
  2. Pre-trained Model Transformer Khusus
  3. Membuat Chatbot Telegram
  4. Integrasi Model Transformer QA ke Chatbot Telegram

1. Membuat Question Answer dengan DistillBERT

DistillBERT adalah varian BERT dengan kecepatan inferensi yang baik sehingga cocok digunakan untuk Question Answer system. Perbedaan DistillBERT, BERT, dan varian lain bisa juga dibaca di sini: https://towardsdatascience.com/bert-roberta-distilbert

Workflow
  1. Buat file Colab
  2. Install library transformers Hugging Face.
  3. Import class pipeline dari library transformer. Class ini memuat pre-trained model untuk berbagai task NLP dalam bahasa Inggris. Ada beberapa pilihan task NLP yang bisa kita gunakan misalnya sentiment analysis, translation, question-answering dll. Task yang akan kita gunakan adalah question-answering.
  4. Inisiasi pembuatan obect dengan class pipeline, isikan parameter pertama dengan "question-answering". Step ini akan mendownload model untuk task question-answering sehingga hanya perlu di-run sekali. Inisiasi ini akan otomatis menggunakan model transformer DistillBERT, yang kecepatan inferensinya baik.
  5. Object bisa digunakan dengan mengisikan pertanyaan pada parameter question dan konteks pertanyaan pada parameter context.

Sebagai contoh akan diberikan pertanyaan “Where was Pink Floyd established?” dengan konteks “Pink Floyd was an English rock band formed in London in 1965.“. Implementasinya dituliskan pada code di bawah ini.

# Install library transformer dan Import class pipeline
!pip install transformers 
from transformers import pipeline

# Inisiasi object dan Penggunaan pre-trained model QA
qa_model = pipeline('question-answering')
qa_model(question='Where is Pink Floyd established?',
         context='Pink Floyd was an English rock band formed in London in 1965.')
Continue reading

Membuat Model Tensorflow Object Detection untuk Android

Artikel ini adalah kelanjutan dari artikel setahun yang lalu sebelumnya tentang Tensorflow Object Detection. Di artikel sebelumnya kita fokus pada penyiapan data, kali ini kita akan membahas cara melatih dan membuat model deep learning Tensorflow Object Detection menggunakan Google Colab, hingga akhirnya siap digunakan di Android.

Pada tutorial ini kita menggunakan Tensorflow versi 2, yang sedikit berbeda dengan Tensorflow versi 1. Ini salah satu alasan artikel ini tertunda cukup lama, tahun lalu ketika artikel pertama ditulis, Tensorflow versi 2 masih belum cukup stabil untuk object detection maupun untuk diconvert ke TFLite.

Overview

Secara umum ada 3 tahapan untuk membuat model tensorflow untuk mendeteksi objek dan menjadikan model tersebut siap digunakan di Android:

  1. Menyiapkan dataset. Jika objek yang ingin kita bukan objek yang umum dideteksi, maka kita perlu menyiapkan dataset terlebih dahulu. Tahap ini sudah dibahas di artikel sebelumnya.
  2. Melatih pre-trained model. Kita akan menggunakan pre-trained model, karena untuk merangkai dan melatih model dari awal akan memakan waktu dan membutuhkan resource yang besar. Kita cukup melakukan fine-tuning model agar model memiliki performa yang baik, untuk dataset baru, dengan waktu pelatihan yang lebih singkat.
  3. Mengconvert model menjadi TFLite. Proses mengubah model yang sudah dilatih ke format yang dapat dipahami oleh mobile Android.

Source Code

Tutorial Tensorflow Object Detection ini tersedia di Google Colab berikut: https://colab.research.google.com/drive/1dNIIcDBMaKieGzSl1BVE5H6wu17n6cO7?usp=sharing. Untuk dataset dan script-script lain yang akan digunakan dapat diakses di repository github berikut: https://github.com/rianrajagede/object-detection.git. Tutorial ini merujuk pada link Google Colab dan repo github di atas.

1. Instalasi Tensorflow Object Detection

Ketika kita menginstall Tensorflow, kita belum menginstall Tensorflow Object Detection API. Hal ini juga berlaku di Google Colab, kita tetap perlu menginstall Tensorflow Object Detection API terlebih dahulu. Langkah instalasi resminya bisa diakses di sini. Saat artikel ini ditulis instalasi bisa dilakukan dengan:

1. Clone github Tensorflow Object Detection API di Google Colab. Penanda tanda seru (!) di awal baris menunjukkan baris tersebut sedang menjalankan perintah Command Prompt, bukan Python. Perintah ini akan membuat folder models yang berisi file-file dari repository tensorflow object detection.

!git clone https://github.com/tensorflow/models.git

2. Lalu install API menggunakan perintah di bawah. Penanda %%bash fungsinya mirip dengan tanda !, jika perintah %%bash ditulis di awal baris menunjukkan cell Google Colab tersebut sedang menjalankan perintah Command Prompt, bukan Python.

%%bash
cd models/research/
protoc object_detection/protos/*.proto --python_out=.
cp object_detection/packages/tf2/setup.py .
python -m pip install .

3. Jalankan test untuk memastikan instalasi berhasil dengan menjalankan perintah berikut. Jika semua tertulis “OK” berarti instalasi berhasil.

!python models/research/object_detection/builders/model_builder_tf2_test.py
Continue reading

Pengalaman Menghadapi IELTS dalam 2-3 Minggu

Kita tahu tes IELTS beda dengan TOEFL ITP, dari sisi harga dan juga tingkat kesulitannya. Karenanya persiapan yang dilakukan “seharusnya” lebih matang, apalagi jika kita menarget nilai tertentu. Tapi, dalam beberapa kondisi kita bisa jadi terpaksa harus ambil IELTS dalam waktu yang singkat. Contoh yang saya alami, saya sudah 2x kepaksa harus ambil IELTS dengan waktu persiapan kurang dari 3 minggu, di awal tahun 2019 dan satu lagi di awal Juni lalu. Artikel ini akan sedikit cerita apa-apa yang saya siapkan dalam waktu sesingkat itu.

Langkah Pertama: Browsing

Langkah pertama yang sebaiknya dilakukan untuk memulai persiapan IELTS adalah luangkan waktu untuk browsing; cari-cari info tentang IELTS. Jika kalian menemukan artikel ini karena sedang browsing, maka teruskan browsing, cari banyak pengalaman orang, tutorial di youtube (link-link ada di bawah), atau tips-tips baik dari personal atau lembaga di internet. Penting untuk bisa memahami IELTS dari banyak sisi.

IELTS Simulation

IELTS Simulation Test memang akan menambah biaya persiapan, sekitar 150-250rb, tetapi ini penting untuk memetakan sejauh apa kemampuan kita. Ingat, dua dari empat yang diujikan tidak bisa dinilai mandiri (Writing dan Speaking). Ada banyak lembaga penyedia IELTS simulation test, di Jogja ada Elti dan IONs, kalau di Klaten saya sempat ambil simulation test di Real English Klaten. Beberapa hal yang perlu diperhatikan sebelum simulation test:

  1. Pastikan ambil simulation di minggu awal persiapan. Sehingga ada cukup waktu untuk memetakan dan memperbaiki kemampuan kita.
  2. Perhatikan detail-detail yang dirasakan selama simulation sebagai catatan untuk persiapan di hari H. Misalnya, ingat pada soal jenis apa kita lemah, apa strategi pengerjaan yang paling nyaman/baik bagi kita, atau sekadar perlukah kita pakai Jaket atau tidak.

Sebagai contoh, di simulation terakhir saya, saya mencatat beberapa poin:

  • Saya lemah di writing, khususnya untuk membuat paragraf pembuka/pertama
  • Saya lemah di writing dalam memanajemen waktu dan tulisan saya akan memburuk ketika semakin panik
  • Saya tidak bisa tenang di awal speaking yang bikin tidak terkontrol ucapannya (bisa out of topic)
  • Saya bisa kehabisan vocab untuk topik yang sulit
  • Saya sering ngantuk dan tidak fokus di tengah tes reading
  • Saya beberapa kali gagal mengeja kata di tes listening

Memetakan apa kekurangan dan kelebihan kita membuat waktu belajar kita lebih efisien.

Continue reading
batch epoch step

Batch, Epoch, Step. Istilah-istilah pada Gradient Descent

Ketiga istilah di atas sering muncul ketika kita sedang belajar atau implementasi model neural network, khususnya ketika membahas Gradient Descent. Batch, epoch, dan step, adalah sebagian istilah yang digunakan menjelaskan proses iterasi di Gradient Descent. Istilah-istilah itu tidak hanya ditemukan di buku teori, tetapi juga di dokumentasi-dokumentasi framework yang akan kita gunakan. Karenanya, sangat penting untuk bisa membedakannya dengan baik.

Gradient Descent

Gradient descent adalah algoritma optimasi yang digunakan untuk menemukan parameter yang menghasilkan nilai minimum pada suatu fungsi. Dalam kasus neural network, Gradient Descent digunakan untuk menemukan bobot model terbaik yang menghasilkan error minimum. Detail perhitungan gradient descent contohnya ada pada partikel sebelumnya, sedangkan implementasinya dapat di baca di artikel berikut ini.

Secara umum, langkah yang dilakukan untuk mencerdaskan model neural network menggunakan gradient descent adalah sebagai berikut:

  1. Sebuah input-xi masuk ke model neural network, lalu menghasilkan output / error Ei (forward propagation)
  2. Gradient descent terhadap output / error E untuk mengupdate nilai bobot model W (backward propagation)
  3. Lakukan kedua langkah di atas terhadap semua data berkali-kali hingga diperolah model terbaik.

Untuk kemudahan penjelasan, poin no. 1 di atas akan kami sebut sebagai Langkah 1 (bold dengan warna orange) dan poin no. 2 akan kami sebut sebagai Langkah 2 (bold dengan warna ungu)

Langkah-langkah di atas masih cukup umum, Jika ada lebih dari satu data langkahnya seperti apa? Dari sinilah akan muncul istilah-istilah di awal tadi. Misalkan kita memiliki 100 data latih, maka urutan yang dilakukan pada Gradient Descent adalah:

  1. Lakukan Langkah 1 untuk setiap data (dari data latih ke 1 hingga 100), sehingga diperoleh 100 nilai eror Ei
  2. Dari 100 nilai error itu, kita hitung rata-ratanya untuk memperoleh sebuah nilai error E
  3. Lakukan Langkah 2 menggunakan E untuk mengupdate W (hanya 1x)

Langkah diatas terjadi dalam satu epoch. Untuk mendapatkan model yang baik kita perlu mengulangi langkah di atas lebih dari satu kali (beberapa epoch).

Definisi sebuah Epoch, adalah ketika kita telah menggunakan semua data latih pada proses pelatihan. Pada contoh di atas, kita sudah melalui sebuah epoch karena kita telah menggunakan 100 data latih yang kita miliki.

Pada contoh tersebut sebuah epoch terdiri dari 100 kali Langkah 1 dan 1 kali Langkah 2.

Continue reading