Model pembuatan prototipe di AI Platform Notebooks

1. Ringkasan

Lab ini akan memandu Anda menggunakan berbagai alat di AI Platform Notebook untuk menjelajahi data dan membuat prototipe model ML.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Membuat dan menyesuaikan instance AI Platform Notebooks
  • Melacak kode notebook Anda dengan git, yang terintegrasi langsung ke AI Platform Notebooks
  • Menggunakan Alat What-If dalam notebook

Total biaya untuk menjalankan lab ini di Google Cloud adalah sekitar $1. Detail lengkap tentang harga AI Platform Notebooks dapat ditemukan di sini.

2. Membuat instance AI Platform Notebooks

Anda memerlukan project Google Cloud Platform dengan penagihan yang diaktifkan untuk menjalankan codelab ini. Untuk membuat project, ikuti petunjuk di sini.

Langkah 2: Aktifkan Compute Engine API

Buka Compute Engine dan pilih Aktifkan jika belum diaktifkan. Anda memerlukannya untuk membuat instance notebook.

Langkah 3: Buat instance notebook

Buka bagian AI Platform Notebooks di Cloud Console, lalu klik New Instance. Kemudian, pilih jenis instance TensorFlow 2 Enterprise terbaru tanpa GPU:

9f2bb4dec1ba4f4f.png

Beri nama instance Anda atau gunakan nama default. Kemudian, kita akan mempelajari opsi penyesuaian. Klik tombol Sesuaikan:

63be602ba45ca7c9.png

AI Platform Notebook memiliki banyak opsi penyesuaian yang berbeda, termasuk: region tempat instance Anda di-deploy, jenis image, ukuran mesin, jumlah GPU, dan lainnya. Kita akan menggunakan default untuk region dan lingkungan. Untuk konfigurasi mesin, kita akan menggunakan mesin n1-standard-8:

27101d232f765a17.png

Kita tidak akan menambahkan GPU apa pun, dan kita akan menggunakan setelan default untuk disk booting, jaringan, dan izin. Pilih Create untuk membuat instance. Prosesnya perlu waktu beberapa menit sampai selesai.

Setelah instance dibuat, Anda akan melihat tanda centang hijau di sampingnya di UI Notebook. Pilih Open JupyterLab untuk membuka instance dan mulai membuat prototipe:

3598f414887ea9a8.png

Saat Anda membuka instance, buat direktori baru bernama codelab. Ini adalah direktori yang akan kita gunakan selama lab ini:

c16a821546acd92.png

Klik direktori codelab yang baru dibuat dengan mengklik dua kali, lalu pilih notebook Python 3 dari peluncur:

4390b1614ae8eae4.png

Ganti nama notebook menjadi demo.ipynb, atau nama apa pun yang ingin Anda berikan.

Langkah 4: Impor paket Python

Buat sel baru di notebook dan impor library yang akan kita gunakan dalam codelab ini:

import pandas as pd
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

import numpy as np
import json

from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle
from google.cloud import bigquery
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder

3. Menghubungkan data BigQuery ke notebook

BigQuery, data warehouse big data Google Cloud, telah menyediakan banyak set data secara publik untuk eksplorasi Anda. AI Platform Notebook mendukung integrasi langsung dengan BigQuery tanpa memerlukan autentikasi.

Untuk lab ini, kita akan menggunakan set data kelahiran. Set data ini berisi data tentang hampir setiap kelahiran di AS selama jangka waktu 40 tahun, termasuk berat lahir anak, dan informasi demografis tentang orang tua bayi. Kita akan menggunakan sebagian fitur untuk memprediksi berat lahir bayi.

Langkah 1: Download data BigQuery ke notebook

Kita akan menggunakan library klien Python untuk BigQuery guna mendownload data ke DataFrame Pandas. Set data asli berukuran 21 GB dan berisi 123 juta baris. Agar tetap sederhana,kita hanya akan menggunakan 10.000 baris dari set data.

Buat kueri dan lihat pratinjau DataFrame yang dihasilkan dengan kode berikut. Di sini, kita mendapatkan 4 fitur dari set data asli, beserta berat bayi (hal yang akan diprediksi model kita). Set data ini sudah ada sejak bertahun-tahun yang lalu, tetapi untuk model ini, kita hanya akan menggunakan data dari tahun 2000 dan seterusnya:

query="""
SELECT
  weight_pounds,
  is_male,
  mother_age,
  plurality,
  gestation_weeks
FROM
  publicdata.samples.natality
WHERE year > 2000
LIMIT 10000
"""
df = bigquery.Client().query(query).to_dataframe()
df.head()

Untuk mendapatkan ringkasan fitur numerik dalam set data kita, jalankan:

df.describe()

Tindakan ini akan menampilkan rata-rata, deviasi standar, minimum, dan metrik lainnya untuk kolom numerik. Terakhir, mari kita dapatkan beberapa data di kolom boolean yang menunjukkan gender bayi. Kita dapat melakukannya dengan metode value_counts Pandas:

df['is_male'].value_counts()

Sepertinya set data hampir seimbang 50/50 berdasarkan gender.

Langkah 2: Menyiapkan set data untuk pelatihan

Setelah mendownload set data ke notebook sebagai Pandas DataFrame, kita dapat melakukan beberapa prapemrosesan dan membaginya menjadi set pelatihan dan pengujian.

Pertama, mari hapus baris dengan nilai null dari set data dan acak data:

df = df.dropna()
df = shuffle(df, random_state=2)

Selanjutnya, ekstrak kolom label ke dalam variabel terpisah dan buat DataFrame hanya dengan fitur kita. Karena is_male adalah boolean, kita akan mengonversinya menjadi bilangan bulat sehingga semua input ke model kita bersifat numerik:

labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
data['is_male'] = data['is_male'].astype(int)

Sekarang, jika Anda melihat pratinjau set data dengan menjalankan data.head(), Anda akan melihat empat fitur yang akan digunakan untuk pelatihan.

4. Melakukan inisialisasi git

AI Platform Notebooks memiliki integrasi langsung dengan git, sehingga Anda dapat melakukan kontrol versi langsung dalam lingkungan notebook. Tindakan ini mendukung commit kode langsung di UI notebook, atau melalui Terminal yang tersedia di JupyterLab. Di bagian ini, kita akan melakukan inisialisasi repositori git di notebook dan membuat commit pertama melalui UI.

Langkah 1: Lakukan inisialisasi repositori git

Dari direktori codelab, pilih Git, lalu Init dari panel menu atas di JupyterLab:

d9f1729358f18e58.png

Saat ditanya apakah Anda ingin menjadikan direktori ini sebagai Repositori Git, pilih Ya. Kemudian, pilih ikon Git di sidebar kiri untuk melihat status file dan commit Anda:

1648d6828f11a6db.png

Langkah 2: Buat commit pertama Anda

Di UI ini, Anda dapat menambahkan file ke commit, melihat perbedaan file (kita akan membahasnya nanti), dan melakukan commit pada perubahan. Mari kita mulai dengan melakukan commit pada file notebook yang baru saja ditambahkan.

Centang kotak di samping file notebook demo.ipynb untuk mem-stage-nya untuk commit (Anda dapat mengabaikan direktori .ipynb_checkpoints/). Masukkan pesan commit di kotak teks, lalu klik tanda centang untuk melakukan commit pada perubahan Anda:

fe7366522a3a268f.png

Masukkan nama dan email Anda saat diminta. Kemudian, kembali ke tab Histori untuk melihat commit pertama Anda:

d03567c3592afb77.png

Perhatikan bahwa screenshot mungkin tidak sama persis dengan UI Anda, karena adanya update sejak lab ini dipublikasikan.

5. Mem-build dan melatih model TensorFlow

Kita akan menggunakan set data kelahiran BigQuery yang telah didownload ke notebook untuk membuat model yang memprediksi berat bayi. Dalam lab ini, kita akan berfokus pada alat notebook, bukan akurasi model itu sendiri.

Langkah 1: Bagi data Anda menjadi set pelatihan dan pengujian

Kita akan menggunakan utilitas train_test_split Scikit Learn untuk memisahkan data sebelum membuat model:

x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)

Sekarang kita siap untuk mem-build model TensorFlow.

Langkah 2: Buat dan latih model TensorFlow

Kita akan mem-build model ini menggunakan API model Sequential tf.keras, yang memungkinkan kita menentukan model sebagai tumpukan lapisan. Semua kode yang diperlukan untuk mem-build model ada di sini:

model = Sequential([
    Dense(64, activation='relu', input_shape=(len(x_train.iloc[0]),)),
    Dense(32, activation='relu'),
    Dense(1)]
)

Kemudian, kita akan mengompilasi model agar dapat melatihnya. Di sini, kita akan memilih pengoptimal, fungsi kerugian, dan metrik model yang ingin dicatat ke dalam log oleh model selama pelatihan. Karena ini adalah model regresi (memprediksi nilai numerik), kita menggunakan error kuadrat rata-rata, bukan akurasi, sebagai metrik:

model.compile(optimizer=tf.keras.optimizers.RMSprop(),
              loss=tf.keras.losses.MeanSquaredError(),
              metrics=['mae', 'mse'])

Anda dapat menggunakan fungsi model.summary() praktis Keras untuk melihat bentuk dan jumlah parameter model yang dapat dilatih di setiap lapisan.

Sekarang kita siap untuk melatih model. Yang perlu kita lakukan hanyalah memanggil metode fit(), dengan meneruskan data dan label pelatihan. Di sini, kita akan menggunakan parameter validation_split opsional, yang akan menyimpan sebagian data pelatihan untuk memvalidasi model di setiap langkah. Idealnya, Anda ingin melihat kerugian pelatihan dan validasi berkurang. Namun, ingat bahwa dalam contoh ini, kita lebih berfokus pada alat model dan notebook, bukan kualitas model:

model.fit(x_train, y_train, epochs=10, validation_split=0.1)

Langkah 3: Buat prediksi pada contoh pengujian

Untuk melihat performa model, mari kita buat beberapa prediksi pengujian pada 10 contoh pertama dari set data pengujian.

num_examples = 10
predictions = model.predict(x_test[:num_examples])

Kemudian, kita akan melakukan iterasi pada prediksi model, membandingkannya dengan nilai sebenarnya:

for i in range(num_examples):
    print('Predicted val: ', predictions[i][0])
    print('Actual val: ',y_test.iloc[i])
    print()

Langkah 4: Gunakan git diff dan commit perubahan Anda

Setelah melakukan beberapa perubahan pada notebook, Anda dapat mencoba fitur git diff yang tersedia di UI git Notebook. Notebook demo.ipynb kini akan berada di bagian "Changed" di UI. Arahkan kursor ke nama file, lalu klik ikon perbedaan:

a370facb3632fb32.png

Dengan begitu, Anda akan dapat melihat perbedaan perubahan, seperti berikut:

461c502bd3ab910e.png

Kali ini kita akan melakukan commit perubahan melalui command line menggunakan Terminal. Dari menu Git di panel menu atas JupyterLab, pilih Perintah Git di Terminal. Jika tab git di sidebar kiri terbuka saat Anda menjalankan perintah di bawah, Anda akan dapat melihat perubahan yang diterapkan di UI git.

Di instance terminal baru, jalankan perintah berikut untuk menyiapkan file notebook untuk commit:

git add demo.ipynb

Kemudian, jalankan perintah berikut untuk melakukan perubahan (Anda dapat menggunakan pesan commit apa pun yang diinginkan):

git commit -m "Build and train TF model"

Kemudian, Anda akan melihat commit terbaru di histori:

a4b44045e97cb7a7.png

6. Menggunakan What-If Tool langsung dari notebook

What-If Tool adalah antarmuka visual interaktif yang dirancang untuk membantu Anda memvisualisasikan set data dan lebih memahami output model ML. Ini adalah alat open source yang dibuat oleh tim PAIR di Google. Meskipun berfungsi dengan semua jenis model, Cloud AI Platform memiliki beberapa fitur yang dibuat secara eksklusif untuk Cloud AI Platform.

Alat What-If sudah diinstal sebelumnya di instance Notebook Cloud AI Platform dengan TensorFlow. Di sini, kita akan menggunakannya untuk melihat performa model secara keseluruhan dan memeriksa perilakunya pada titik data dari set pengujian.

Langkah 1: Siapkan data untuk Alat Perbandingan

Untuk memaksimalkan Alat What-If, kita akan mengirimkan contoh dari set pengujian beserta label kebenaran dasar untuk contoh tersebut (y_test). Dengan begitu, kita dapat membandingkan prediksi model dengan kebenaran dasar. Jalankan baris kode di bawah untuk membuat DataFrame baru dengan contoh pengujian dan labelnya:

wit_data = pd.concat([x_test, y_test], axis=1)

Dalam lab ini, kita akan menghubungkan Alat What-If ke model yang baru saja dilatih di notebook. Untuk melakukannya, kita perlu menulis fungsi yang akan digunakan alat untuk menjalankan titik data pengujian ini ke model kita:

def custom_predict(examples_to_infer):
    preds = model.predict(examples_to_infer)
    return preds

Langkah 2: Buat instance Alat Perbandingan

Kita akan membuat instance Alat What-If dengan meneruskan 500 contoh dari set data pengujian yang digabungkan + label kebenaran nyata yang baru saja kita buat. Kita membuat instance WitConfigBuilder untuk menyiapkan alat, dengan meneruskan data kita, fungsi prediksi kustom yang kita tentukan di atas, bersama dengan target kita (hal yang kita prediksi), dan jenis model:

config_builder = (WitConfigBuilder(wit_data[:500].values.tolist(), data.columns.tolist() + ['weight_pounds'])
  .set_custom_predict_fn(custom_predict)
  .set_target_feature('weight_pounds')
  .set_model_type('regression'))
WitWidget(config_builder, height=800)

Anda akan melihat tampilan seperti ini saat Alat What-If dimuat:

fcdc1cb7ed8e364e.png

Pada sumbu x, Anda dapat melihat titik data pengujian yang tersebar berdasarkan nilai bobot prediksi model, weight_pounds.

Langkah 3: Pelajari perilaku model dengan Alat What-If

Ada banyak hal keren yang dapat Anda lakukan dengan Alat Simulasi. Kita akan mempelajari beberapa di antaranya di sini. Pertama, mari kita lihat editor titik data. Anda dapat memilih titik data mana pun untuk melihat fiturnya, dan mengubah nilai fitur. Mulailah dengan mengklik titik data mana pun:

2ba944f16240ff4b.png

Di sebelah kiri, Anda akan melihat nilai fitur untuk titik data yang telah dipilih. Anda juga dapat membandingkan label kebenaran dasar titik data tersebut dengan nilai yang diprediksi oleh model. Di sidebar kiri, Anda juga dapat mengubah nilai fitur dan menjalankan ulang prediksi model untuk melihat pengaruh perubahan ini terhadap model Anda. Misalnya, kita dapat mengubah gestation_weeks menjadi 30 untuk titik data ini dengan mengklik dua kali dan menjalankan kembali prediksi:

aaa6a937c66758cf.png

Dengan menggunakan menu dropdown di bagian plot Alat Perbandingan, Anda dapat membuat berbagai visualisasi kustom. Misalnya, berikut adalah diagram dengan berat yang diprediksi model pada sumbu x, usia ibu pada sumbu y, dan titik yang diwarnai berdasarkan error inferensi (lebih gelap berarti perbedaan yang lebih tinggi antara berat yang diprediksi dan berat aktual). Di sini, terlihat bahwa seiring dengan penurunan bobot, error model sedikit meningkat:

cd2ce527a9044e7b.png

Selanjutnya, centang tombol Plot dependensi parsial di sebelah kiri. Hal ini menunjukkan pengaruh setiap fitur terhadap prediksi model. Misalnya, seiring bertambahnya waktu gestasi, prediksi berat bayi model kami juga akan meningkat:

1fec2a64fb03f432.png

Untuk ide eksplorasi lainnya dengan Alat Perbandingan, lihat link di awal bagian ini.

7. Opsional: hubungkan repo git lokal Anda ke GitHub

Terakhir, kita akan mempelajari cara menghubungkan repo git di instance notebook ke repo di akun GitHub. Jika ingin melakukan langkah ini, Anda memerlukan akun GitHub.

Langkah 1: Buat repo baru di GitHub

Di akun GitHub Anda, buat repositori baru. Beri nama dan deskripsi, tentukan apakah Anda ingin repositori bersifat publik, lalu pilih Buat repositori (Anda tidak perlu melakukan inisialisasi dengan README). Di halaman berikutnya, Anda akan mengikuti petunjuk untuk mendorong repositori yang ada dari command line.

Buka jendela Terminal, lalu tambahkan repositori baru sebagai repositori jarak jauh. Ganti username di URL repo di bawah dengan nama pengguna GitHub Anda, dan your-repo dengan nama yang baru saja Anda buat:

git remote add origin git@github.com:username/your-repo.git

Langkah 2: Lakukan autentikasi ke GitHub di instance notebook Anda

Selanjutnya, Anda harus mengautentikasi ke GitHub dari dalam instance notebook. Proses ini bervariasi bergantung pada apakah Anda telah mengaktifkan autentikasi 2 langkah di GitHub.

Jika Anda tidak yakin harus memulai dari mana, ikuti langkah-langkah dalam dokumentasi GitHub untuk membuat kunci SSH, lalu menambahkan kunci baru ke GitHub.

Langkah 3: Pastikan Anda telah menautkan repo GitHub dengan benar

Untuk memastikan Anda telah menyiapkan semuanya dengan benar, jalankan git remote -v di terminal. Anda akan melihat repositori baru tercantum sebagai repositori jarak jauh. Setelah melihat URL repo GitHub dan mengautentikasi ke GitHub dari notebook, Anda siap untuk melakukan push langsung ke GitHub dari instance notebook.

Untuk menyinkronkan repo git notebook lokal dengan repo GitHub yang baru dibuat, klik tombol upload cloud di bagian atas sidebar Git:

eec001587bb9cfb1.png

Muat ulang repositori GitHub Anda, dan Anda akan melihat kode notebook dengan commit sebelumnya. Jika orang lain memiliki akses ke repo GitHub Anda dan Anda ingin mendownload perubahan terbaru ke notebook, klik ikon download cloud untuk menyinkronkan perubahan tersebut.

Di tab Histori pada UI git Notebook, Anda dapat melihat apakah commit lokal Anda disinkronkan dengan GitHub. Dalam contoh ini, origin/master sesuai dengan repo kami di GitHub:

2c3d1eb7cf95c24e.png

Setiap kali Anda membuat commit baru, cukup klik tombol upload cloud lagi untuk mengirim perubahan tersebut ke repo GitHub Anda.

8. Selamat!

Anda telah melakukan banyak hal di lab ini 👏👏👏

Sebagai rangkuman, Anda telah mempelajari cara:

  • Membuat dan menyesuaikan instance AI Platform Notebook
  • Lakukan inisialisasi repo git lokal di instance tersebut, tambahkan commit melalui UI git atau command line, lihat perbedaan git di UI git Notebook
  • Mem-build dan melatih model TensorFlow 2 sederhana
  • Menggunakan Alat What-If dalam instance Notebook
  • Menghubungkan repo git Notebook ke repositori eksternal di GitHub

9. Pembersihan

Jika ingin terus menggunakan notebook ini, sebaiknya nonaktifkan saat tidak digunakan. Dari UI Notebook di Cloud Console, pilih notebook, lalu pilih Stop:

ba727f9a0aefbc30.png

Jika Anda ingin menghapus semua resource yang telah dibuat di lab ini, cukup hapus instance notebook, bukan menghentikannya.

Menggunakan menu Navigasi di Konsol Cloud, buka Penyimpanan dan hapus kedua bucket yang Anda buat untuk menyimpan aset model.