Mencoba Google Cloud Machine Learning

Baru-baru ini, kita sering mendengar kata-kata machine learning dan deep learning. Kita tahu machine learning, tetapi beberapa orang mungkin tidak benar-benar menggunakannya. Tahun lalu, Google mengumumkan layanan cloud untuk machine learning yaitu Google Cloud Machine Learning.

Google Cloud Machine Learning adalah platform yang dikelola (disediakan oleh Google Cloud Platform) yang memungkinkan Anda membuat model machine learning dengan mudah dalam berbagai ukuran. Di balik Google Cloud Machine Learning (Cloud ML), ada TensorFlow, sesuatu yang bekerja seperti perpustakaan machine learning yang dikembangkan oleh Google. Namun, sebenarnya tanpa perlu mengetahui TensorFlow atau machine learning, Cloud ML dapat diuji coba dengan mudah.

Kali ini, kami ingin menggunakan Cloud ML untuk menganalisis gambar menggunakan MNIST, yang sering digunakan dalam tutorial machine learning. MNIST adalah kumpulan data yang berisi data gambar numerik berupa tulisan tangan dan label yang benar. Kita bisa mengatur model machine learning menggunakan kumpulan data ini. Model machine learning bisa memprediksi digit mana yang mewakili gambar digit tulisan tangan. Training script dan data set sudah tersedia, jadi kita tinggal mengikuti perintah saja.

Perlu diingat bahwa Cloud ML saat ini dalam versi beta, dan spesifikasinya dapat berubah.

MNIST terdiri dari gambar digital berupa tulisan tangan seperti yang di atas, masing-masing dengan label jawaban yang benar. (Dikutip dari MNIST For ML Beginners)

Apakah Google Cloud Machine Learning itu?

Cloud ML merupakan layanan yang memungkinkan pengguna umum untuk menggunakan fungsi machine learning cloud yang digunakan Google di perusahaan mereka. (Per Februari 2017, ini disediakan sebagai versi beta.)

Untuk membangun model, kami menggunakan kerangka kerja TensorFlow kuat yang mendukung banyak produk Google, mulai dari foto sampai Google Cloud Speech. Karena terintegrasi dengan layanan global load balancing, aplikasi machine learning dapat ditingkatkan secara otomatis dan tersedia bagi pengguna di seluruh dunia.

Biaya Cloud Machine Learning

Supaya bisa mendapat akses ke Cloud ML dikenakan biaya untuk training model dan prediksi. Namun, sebenarnya Anda bisa mengelola resources dari machine learning di cloud secara gratis. Rincian biaya setiap tindakan akan dijelaskan di bagian berikutnya.


Selain biaya yang tercantum di atas, model dan resources perlu disimpan dalam suatu bucket Google Cloud Storage di seluruh proses Cloud ML. Misalnya, memposting paket latihan saat melakukan training model, atau menyimpan file model saat Anda siap untuk men-deploy versi. Selain itu, hasil training dan batch prediction juga disimpan di bucket Cloud Storage. Setelah operasi selesai, Anda bisa segera menghapus file, kecuali jika digunakan dalam skala yang sangat besar, ia tidak akan menjadi pada biaya pengeluaran.

Biaya Training Cloud ML

Unit ML Training

Pengguna bisa menyesuaikan jenis cluster pemrosesan yang mereka gunakan saat melatih pekerjaan mereka. Sebagai cara mudahnya, Anda juga dapat memilih salah satu dari konfigurasi yang telah ditentukan yang disebut "skala hierarki". Setiap skala memiliki jumlah unit ML Training yang berbeda untuk menentukan harga.

Biaya training dapat dihitung dari rumus berikut:

(Jumlah unit ML Training) × (biaya per unit) × (waktu pelaksanaan job [dalam menit]) ÷ 60

Contohnya:

Misalnya, seorang ilmuwan data mengambil skala STANDARD_1, durasinya adalah 15 menit. Maka biayanya dihitung seperti berikut:

10 x $0.49 x 15 ÷ 60 = 1.23

Jadi biaya keseluruhan untuk ML training ini adalah $1.23.

Biaya Perkiraan Cloud ML

Batch Prediction

Dalam batch prediction, biaya akan muncul untuk jumlah prediksi*) dan waktu pemrosesan**)

*) Prediksi diakumulasikan setiap satu bulan dan tarif dibulatkan ke nominal sen terdekat.

**) Setelah diproses, Anda akan dikenai biaya per menit untuk setiap training. Minimal setiap 10 menit akan selalu dikenakan biaya.

***) Diskon berlaku setelah 100 juta request tercapai untuk bulan tersebut.

Prediksi Online

Fitur lain dari Cloud ML tersedia dalam versi beta, namun sayangnya layanan prediksi online tersedia dalam versi alfa. Selama fitur tersebut tersedia dalam versi alpha, maka penggunaan fitur ini masih gratis. (Per Februari 2017)

Menggerakkan Cloud ML

Sekarang, mari kita coba menggerakkan Cloud ML dengan benar. Pengoperasian Cloud ML yang utamanya dilakukan pada shell. Anda dapat menjalankannya secara lokal, tetapi untuk itu, Anda harus menginstal perangkat lunak secara lokal juga. Kami merekomendasikan Cloud Shell yang dapat dijalankan di lingkungan cloud. Mari kita pindahkan Cloud ML menggunakan Cloud Shell kali ini. Prosedurnya sebagai berikut.

  1. Menyamakan environment yang diperlukan untuk proses pengeksekusian Cloud ML
  2. Mengadakan training
  3. Membuat model
  4. Memprediksi gambar tulisan tangan


Menyamakan environment yang diperlukan untuk proses pengeksekusian Cloud ML

Untuk menyamakan environment, hal pertama yang dilakukan adalah mengonfigurasi project dan meng-install file.

Mengaktifkan API yang diperlukan

Dari menu bar, pilih “API Manager”, kemudian aktifkan API di bawah ini. Jika sudah aktif, maka tidak perlu diubah.

  • Cloud Machine Learning API
  • Compute Engine API
  • Cloud Logging API
  • Cloud Storage API
  • Cloud Storage JSON API
  • BigQuery API

Mengonfigurasi Environment

Setelah selesai mengonfigurasi project, kemudian aturlah environment di Cloud Shell.

Kode

# Menginstall tools yang diperlukan untuk mengeksekusi Cloud ML

curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/tools/setup_cloud_shell.sh | bash

# Tambahkan tools yang sudah terinstall di path yang baru

export PATH=${HOME}/.local/bin:${PATH}

Mengonfirmasi environment terpakai

Setelah installment selesai, lakukan perintah seperti di bawah ini, konfirmasi kembali environment yang telah dikonfigurasi apakah sudah tepat atau belum.

Kode

curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/tools/check_environment.py | python

Apabila muncul pop-up yang bertuliskan “Success! Your environment is configured correctly.” maka sudah terinstall dengan benar.

Menginisialisasi Project Cloud ML

Proses ini adalah untuk mengizinkan Cloud ML untuk mengakses resources di dalam Google Cloud Project.

gcloud beta ml init-project


Menambahkan bucket di Cloud Storage

Cloud ML memerlukan akses ke lokasi Cloud Storage untuk membaca dan menulis data selama training model dan batch prediction. Mari tambahkan bucket untuk Cloud ML ke Cloud Storage. Anda bisa menggunakan nama apapun, tetapi kali ini, beri nama bucket dengan "-ml".

Kode

# Mendapatkan nama project

PROJECT_ID=$(gcloud config list project --format "value(core.project)")


# Membuat nama bucket ( nama bucket + 「-ml」)

BUCKET_NAME=${PROJECT_ID}-ml


# Membuat bucket baru

gsutil mb -l [Nama region] gs://$BUCKET_NAME

Harap diperhatikan untuk region bucket, pilihlah region yang sama dengan region dimana Cloud ML dijalankan. Lalu, pilih single region dan bukan multiregion, misalnya (us-central1).

Jika langkah di atas sudah selesai dilaksanakan, maka persiapan Anda untuk Cloud ML sudah selesai.


Training

Jika persiapan untuk Cloud ML sudah selesai, selanjutnya adalah mengadakan training untuk membuat model machine learning. Langkah-langkah untuk menjalankan training adalah sebagai berikut:

  1. Mengonfirmasi apakah training secara lokal bisa dilakukan atau tidak.
  2. Mengirim script training di Cloud.

Training secara lokal

Sebelum melakukan training di cloud, penting untuk memastikan apakah training secara lokal bisa dilakukan. Umumnya, training dilakukan dengan menyiapkan seperangkat data set yang berukuran kecil. Namun, kali ini yang dipakai adalah sekitar 70.000 data set. Jadi, tetap gunakan 70.000 data set tersebut untuk training.

Langkah di bawah ini tidak begitu diperlukan, jadi boleh dilewati.

Kode

# Mengubah direktori pengoperasian.

cd ~/google-cloud-ml/samples/mnist/deployable/


# Menghapus file keluaran training sebelumnya.

rm -f data/{checkpoint,events,export}*


# Menjalankan training secara lokal

gcloud beta ml local train \

--package-path=trainer \

--module-name=trainer.task

Melakukan training di Cloud

Jika training secara lokal sudah selesai, selanjutnya adalah mengirim training job.

Kode

# Mengonfigurasi nama job. (Di bawah ini adalah contoh nama job).

JOB_NAME=mnist_deployable_${USER}_$(date +%Y%m%d_%H%M%S)


# Memperoleh nama project.

PROJECT_ID=`gcloud config list project --format "value(core.project)"`


# Mengonfigurasi alamat bucket Cloud Storage (Nama project+「-ml」)

TRAIN_BUCKET=gs://${PROJECT_ID}-ml


# Mengonfigurasi path keluaran training data sebelumnya.

TRAIN_PATH=${TRAIN_BUCKET}/${JOB_NAME}


# Menghapus file keluaran training sebelumnya.

gsutil rm -rf ${TRAIN_PATH}


# Mengirim script training ke Cloud

gcloud beta ml jobs submit training ${JOB_NAME} \

--package-path=trainer \

--module-name=trainer.task \

--staging-bucket="${TRAIN_BUCKET}" \

--region= [nama region] \

-- \

--train_dir="${TRAIN_PATH}/train" \

--model_dir="${TRAIN_PATH}/model"

Setelah itu, lakukan konfirmasi terhadap status perkembangan dari training job, kemudian tunggu sampai selesai. Jika sudah selesai, maka akan muncul status: SUCCEEDED, dan job baru akan ditambahkan ke dalam daftar job.

Kalau kita melihat Cloud Storage, direktori yang mempunyai nama sama dengan nama bucket yang sudah dibuat akan otomatis ditambahkan.

Membuat model

Ada 2 cara untuk membuat model, yaitu:

Membuat di Cloud Shell

Kode

# Mengonfigurasi nama model (Di bawah ini adalah contoh nama model)

MODEL_NAME=mnist_${USER}_$(date +%Y%m%d_%H%M%S)


# Membuat model Cloud ML

gcloud beta ml models create ${MODEL_NAME}


# Membuat versi yang digunakan untuk memprediksi (Versi yang telah dibuat pertama kali akan menjadi versi default).

gcloud beta ml models versions create \

--origin=${TRAIN_PATH}/model/ \

--model=${MODEL_NAME} \

v1


Membuat dengan GCP Console

Sangat mungkin untuk membuat versi dan model di GCP Console. Langkah-langkahnya adalah sebagai berikut:

  1. Dari menu, pilihlah [Machine Learning] > [Model]
  2. Klik [Create Model]
  3. Ketik nama model
  4. Klik [Create]
  5. Kembali ke layar daftar model, kemudian klik nama model yang baru.
  6. Klik [+Create Version]. Ketikkan nama dan source (Source-nya adalah ${TRAIN_PATH}/model/を入力)
  7. Klik [Create] dan kembali ke layar daftar model.

Memprediksi Gambar Numerik Tulisan Tangan

Nah, sekarang model yang mampu melatih pola identifikasi angka tulisan tangan telah selesai dibuat. Persiapan Anda untuk memiliki model yang memprediksi angka yang diwakili oleh gambar angka tulisan tangan pun telah selesai. Untuk memprediksi Anda bisa menggunakan model yang sudah ada dan data gambar terprediksi. Data untuk prediksi disiapkan sebagai file JSON. Mari kita lihat sedikit isinya.

Kode

head -n1 data/predict_sample.tensor.json

Gambar tersebut berisi data gambar numerik tulisan tangan (model yang Anda kehendaki untuk diprediksi) sebagai float value. Atribut kunci berisi indeks gambar dalam file JSON.

Di bawah ini adalah konversi data di atas menjadi gambar. Mari kita lihat bagaimana model mengidentifikasinya.

Menggunakan layanan prediksi online

Jalankan perintah berikut untuk mengirim permintaan prediksi ke layanan perkiraan online Cloud ML. Tentukan nama model dan nama file JSON.

Kode

gcloud beta ml predict --model=${MODEL_NAME} \

--json-instances=data/predict_sample.tensor.json

Seperti inilah tampak layar setelah prediksi selesai dilakukan. Mari kita bandingkan dengan gambar numerik tulisan tangan di atas.

Semuanya benar kecuali untuk prediksi pertama. Karena 9 dari 10 benar, apakah tingkat akurasi bisa identifikasi menjadi 90%?

Kali ini, saya berlatih dengan sekitar 70.000 data set kecil. Di kesempatan berikutnya, training dengan kumpulan data yang lebih besar akan dapat meningkatkan akurasi.

Kata Penutup

Machine learning adalah pembahasan yang sangat dalam dan kami pikir juga sulit untuk memulainya, tapi saya harap artikel ini akan membuat Anda berminat dalam machine learning.

Artikel dalam blog ini tidak terbatas hanya pada machine learning saja, tetapi juga tentang GCP. Mohon untuk melanjutkan ke apps-gcp. Selain itu, di Cloud Ace kami bisa membantu pengembangan kontrak GAE, konsultasi mengenai cloud dan machine learning, jadi jangan ragu untuk menghubungi kami.