1. Ringkasan
Lab ini akan memandu Anda melalui berbagai alat di AI Platform Notebooks 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 What-If Tool dalam notebook Anda
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 akan memerlukan ini untuk membuat instance notebook.
Langkah 3: Buat instance notebook
Buka bagian AI Platform Notebooks di Cloud Console Anda, lalu klik Instance Baru. Kemudian, pilih jenis instance TensorFlow 2 Enterprise terbaru tanpa GPU:

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

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

Kita tidak akan menambahkan GPU apa pun, dan kita akan menggunakan nilai default untuk disk boot, jaringan, dan izin. Pilih Buat untuk membuat instance Anda. Prosesnya perlu waktu beberapa menit sampai selesai.
Setelah instance dibuat, Anda akan melihat tanda centang hijau di sampingnya di UI Notebooks. Pilih Buka JupyterLab untuk membuka instance Anda dan mulai membuat prototipe:

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

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

Ganti nama notebook menjadi demo.ipynb, atau nama apa pun yang Anda inginkan.
Langkah 4: Impor paket Python
Buat sel baru di notebook dan impor library yang akan kita gunakan di 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 Anda
BigQuery, data warehouse berskala besar Google Cloud, telah menyediakan banyak set data secara publik untuk Anda eksplorasi. AI Platform Notebooks mendukung integrasi langsung dengan BigQuery tanpa memerlukan autentikasi.
Untuk lab ini, kita akan menggunakan set data natality. Set data ini berisi data tentang hampir setiap kelahiran di AS selama periode 40 tahun, termasuk berat lahir anak, dan informasi demografis tentang orang tua bayi. Kita akan menggunakan subset fitur untuk memprediksi berat lahir bayi.
Langkah 1: Download data BigQuery ke notebook kita
Kita akan menggunakan library klien Python untuk BigQuery guna mendownload data ke Pandas DataFrame. Set data asli berukuran 21 GB dan berisi 123 juta baris. Untuk mempermudah,kita hanya akan menggunakan 10.000 baris dari set data.
Buat kueri dan 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 setelah tahun 2000:
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()
Ini menunjukkan rata-rata, standar deviasi, minimum, dan metrik lainnya untuk kolom numerik kita. 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()
Tampaknya set data hampir seimbang 50/50 berdasarkan gender.
Langkah 2: Siapkan set data untuk pelatihan
Setelah mendownload set data ke notebook kita sebagai Pandas DataFrame, kita dapat melakukan prapemrosesan dan membaginya menjadi set pelatihan dan pengujian.
Pertama, mari kita 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 kita dengan menjalankan data.head(), Anda akan melihat empat fitur yang akan kita gunakan untuk pelatihan.
4. Lakukan inisialisasi git
AI Platform Notebooks memiliki integrasi langsung dengan git, sehingga Anda dapat melakukan kontrol versi langsung dalam lingkungan notebook. Hal 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 melakukan commit pertama melalui UI.
Langkah 1: Lakukan inisialisasi repositori git
Dari direktori codelab Anda, pilih Git , lalu Init dari panel menu atas di JupyterLab:

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

Langkah 2: Lakukan commit pertama Anda
Di UI ini, Anda dapat menambahkan file ke commit, melihat perbedaan file (kita akan membahasnya nanti), dan melakukan commit perubahan. Mari kita mulai dengan melakukan commit file notebook yang baru saja kita tambahkan.
Centang kotak di samping file notebook demo.ipynb untuk menahapkannya untuk commit (Anda dapat mengabaikan direktori .ipynb_checkpoints/). Masukkan pesan commit di kotak teks, lalu klik tanda centang untuk melakukan commit perubahan:

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

Perhatikan bahwa screenshot mungkin tidak sama persis dengan UI Anda, karena ada update sejak lab ini dipublikasikan.
5. Membangun dan melatih model TensorFlow
Kita akan menggunakan set data natality BigQuery yang telah kita download ke notebook untuk membangun model yang memprediksi berat bayi. Di 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 membagi data sebelum membangun model:
x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)
Sekarang kita siap membangun model TensorFlow.
Langkah 2: Bangun dan latih model TensorFlow
Kita akan membangun model ini menggunakan tf.keras Sequential model API, yang memungkinkan kita menentukan model sebagai tumpukan lapisan. Semua kode yang kita butuhkan untuk membangun 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 sehingga kita dapat melatihnya. Di sini, kita akan memilih pengoptimal model, fungsi kerugian, dan metrik yang ingin dicatat oleh model selama pelatihan. Karena ini adalah model regresi (memprediksi nilai numerik), kita menggunakan mean squared error, 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() Keras yang praktis untuk melihat bentuk dan jumlah parameter model yang dapat dilatih di setiap lapisan.
Sekarang kita siap melatih model. Yang perlu kita lakukan adalah 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 keduanya menurun. Namun, ingatlah 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 kita, 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 atas 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 lakukan commit perubahan Anda
Setelah membuat beberapa perubahan pada notebook, Anda dapat mencoba fitur git diff yang tersedia di UI git Notebooks. Notebook demo.ipynb kini akan berada di bagian "Diubah" di UI. Arahkan kursor ke nama file dan klik ikon diff:

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

Kali ini kita akan melakukan commit perubahan melalui command line menggunakan Terminal. Dari menu Git di panel menu atas JupyterLab, pilih Git Command in Terminal. Jika tab git sidebar kiri Anda terbuka saat menjalankan perintah di bawah, Anda akan dapat melihat perubahan yang tercermin di UI git.
Di instance terminal baru, jalankan perintah berikut untuk menahapkan file notebook Anda untuk commit:
git add demo.ipynb
Kemudian, jalankan perintah berikut untuk melakukan commit perubahan (Anda dapat menggunakan pesan commit apa pun yang Anda inginkan):
git commit -m "Build and train TF model"
Kemudian, Anda akan melihat commit terbaru dalam histori:

6. Menggunakan What-If Tool langsung dari notebook Anda
What-If Tool adalah antarmuka visual interaktif yang dirancang untuk membantu Anda memvisualisasikan set data dan memahami output model ML dengan lebih baik. Alat ini adalah alat open source yang dibuat oleh tim PAIR di Google. Meskipun berfungsi dengan semua jenis model, alat ini memiliki beberapa fitur yang dibuat khusus untuk Cloud AI Platform.
What-If Tool sudah diinstal sebelumnya di instance Cloud AI Platform Notebooks dengan TensorFlow. Di sini, kita akan menggunakannya untuk melihat performa model secara keseluruhan dan memeriksa perilaku model pada titik data dari set pengujian.
Langkah 1: Siapkan data untuk What-If Tool
Untuk memaksimalkan What-If Tool, 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)
Di lab ini, kita akan menghubungkan What-If Tool ke model yang baru saja kita latih di notebook. Untuk melakukannya, kita perlu menulis fungsi yang akan digunakan alat untuk menjalankan titik data pengujian ini ke model:
def custom_predict(examples_to_infer):
preds = model.predict(examples_to_infer)
return preds
Langkah 2: Buat instance What-If Tool
Kita akan membuat instance What-If Tool dengan meneruskan 500 contoh dari set data pengujian gabungan + label kebenaran dasar yang baru saja kita buat. Kita membuat instance WitConfigBuilder untuk menyiapkan alat, meneruskan data, fungsi prediksi kustom yang kita tentukan di atas, beserta target (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 sesuatu seperti ini saat What-If Tool dimuat:

Di sumbu x, Anda dapat melihat titik data pengujian yang tersebar berdasarkan nilai berat yang diprediksi model, weight_pounds.
Langkah 3: Pelajari perilaku model dengan What-If Tool
Ada banyak hal menarik yang dapat Anda lakukan dengan What-If Tool. Kita hanya 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. Mulai dengan mengklik titik data mana pun:

Di sebelah kiri, Anda akan melihat nilai fitur untuk titik data yang telah Anda pilih. 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 kembali prediksi model untuk melihat efek perubahan ini pada model Anda. Misalnya, kita dapat mengubah gestation_weeks menjadi 30 untuk titik data ini dengan mengklik dua kali titik data tersebut dan menjalankan kembali prediksi:

Dengan menggunakan menu dropdown di bagian plot What-If Tool, Anda dapat membuat semua jenis visualisasi kustom. Misalnya, berikut adalah diagram dengan berat yang diprediksi model di sumbu x, usia ibu di sumbu y, dan titik yang diberi warna berdasarkan error inferensi (semakin gelap berarti perbedaan yang lebih tinggi antara berat yang diprediksi dan berat sebenarnya). Di sini, tampaknya saat berat badan menurun, error model akan meningkat sedikit:

Selanjutnya, centang tombol Partial dependence plots di sebelah kiri. Tombol ini menunjukkan pengaruh setiap fitur terhadap prediksi model. Misalnya, seiring bertambahnya waktu kehamilan, berat bayi yang diprediksi model kita juga meningkat:

Untuk ide eksplorasi lainnya dengan What-If Tool, 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 menjadikannya publik, dan pilih Buat repositori (Anda tidak perlu melakukan inisialisasi dengan README). Di halaman berikutnya, Anda akan mengikuti petunjuk untuk mengirim repositori yang ada dari command line.
Buka jendela Terminal, dan tambahkan repositori baru Anda sebagai remote. Ganti username di URL repo di bawah dengan nama pengguna GitHub Anda, dan your-repo dengan nama repo yang baru saja Anda buat:
git remote add origin git@github.com:username/your-repo.git
Langkah 2: Autentikasi ke GitHub di instance notebook Anda
Selanjutnya, Anda harus melakukan autentikasi ke GitHub dari dalam instance notebook. Proses ini bervariasi, bergantung pada apakah Anda mengaktifkan autentikasi dua faktor di GitHub.
Jika Anda tidak yakin harus mulai 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 remote. Setelah melihat URL repo GitHub dan melakukan autentikasi ke GitHub dari notebook, Anda siap untuk mengirim 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:

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 menarik perubahan terbaru ke notebook, klik ikon download cloud untuk menyinkronkan perubahan tersebut.
Di tab Histori UI git Notebooks, Anda dapat melihat apakah commit lokal disinkronkan dengan GitHub. Dalam contoh ini, origin/master sesuai dengan repo kita di GitHub:

Setiap kali Anda membuat commit baru, cukup klik tombol upload cloud lagi untuk mengirim perubahan tersebut ke repo GitHub.
8. Selamat!
Anda telah melakukan banyak hal di lab ini 👏👏👏
Sebagai ringkasan, Anda telah mempelajari cara:
- Membuat dan menyesuaikan instance AI Platform Notebook
- Melakukan inisialisasi repo git lokal di instance tersebut, menambahkan commit melalui UI git atau command line, melihat perbedaan git di UI git Notebook
- Membangun dan melatih model TensorFlow 2 sederhana
- Menggunakan What-If Tool dalam instance Notebook Anda
- Menghubungkan repo git Notebook ke repositori eksternal di GitHub
9. Pembersihan
Jika Anda ingin terus menggunakan notebook ini, sebaiknya nonaktifkan saat tidak digunakan. Dari UI Notebooks di Cloud Console Anda, pilih notebook, lalu pilih Hentikan:

Jika Anda ingin menghapus semua resource yang telah dibuat di lab ini, cukup hapus instance notebook, bukan menghentikannya.
Dengan menggunakan menu Navigasi di Cloud Console, buka Penyimpanan dan hapus kedua bucket yang Anda buat untuk menyimpan aset model.