Melatih model ML dengan scikit-learn dan XGBoost
Layanan Pelatihan AI Platform mengelola resource komputasi di cloud untuk melatih model Anda. Halaman ini menjelaskan proses melatih model dengan scikit-learn dan XGBoost menggunakan AI Platform Training.
Ringkasan
Dalam tutorial ini, Anda akan melatih model sederhana untuk memprediksi spesies bunga, menggunakan set data Iris. Setelah menyesuaikan kode pelatihan model untuk mendownload data dari Cloud Storage dan mengupload file model yang tersimpan ke Cloud Storage, Anda perlu membuat paket aplikasi pelatihan dan menggunakannya untuk menjalankan pelatihan tentang Pelatihan AI Platform.
Cara melatih model Anda di Pelatihan AI Platform
Setelah menyelesaikan proses penyiapan awal, Anda dapat melatih model Anda di Pelatihan AI Platform dalam tiga langkah:
- Membuat modul pelatihan Python
- Tambahkan kode untuk mendownload data dari Cloud Storage agar AI Platform Training dapat menggunakannya
- Tambahkan kode untuk mengekspor dan menyimpan model ke Cloud Storage setelah Pelatihan AI Platform selesai melatih model tersebut
- Menyiapkan paket aplikasi pelatihan
- Mengirim tugas pelatihan
Proses penyiapan awal termasuk membuat project Google Cloud, mengaktifkan penagihan dan API, menyiapkan bucket Cloud Storage untuk digunakan dengan AI Platform Training, dan menginstal scikit-learn atau XGBoost secara lokal. Jika sudah menyiapkan dan menginstal semuanya, lanjutkan ke membuat kode pelatihan model.
Sebelum memulai
Selesaikan langkah-langkah berikut untuk menyiapkan akun GCP, mengaktifkan AI Platform Training API, serta menginstal dan mengaktifkan Cloud SDK.
Menyiapkan project GCP
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction and Compute Engine.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction and Compute Engine.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Menyiapkan lingkungan Anda
Pilih salah satu opsi di bawah ini untuk menyiapkan lingkungan Anda secara lokal di macOS atau di lingkungan jarak jauh di Cloud Shell.
Untuk pengguna macOS, sebaiknya siapkan lingkungan Anda menggunakan tab MACOS di bawah. Cloud Shell, yang ditampilkan di tab CLOUD SHELL, tersedia di macOS, Linux, dan Windows. Cloud Shell menyediakan cara cepat untuk mencoba AI Platform Training, tetapi tidak cocok untuk pekerjaan pengembangan berkelanjutan.
macOS
-
Periksa penginstalan Python
Pastikan Anda telah menginstal Python dan, jika perlu, menginstalnya.python -V
-
Periksa penginstalan
pip
pip
adalah pengelola paket Python, yang disertakan dengan versi Python saat ini. Periksa apakah Anda sudah menginstalpip
dengan menjalankanpip --version
. Jika belum, lihat cara menginstalpip
.Anda dapat mengupgrade
pip
menggunakan perintah berikut:pip install -U pip
Lihat dokumentasi pip untuk mengetahui detail selengkapnya.
-
Instal
virtualenv
virtualenv
adalah alat untuk membuat lingkungan Python yang terisolasi. Periksa apakah Anda sudah menginstalvirtualenv
dengan menjalankanvirtualenv --version
. Jika tidak, instalvirtualenv
:pip install --user --upgrade virtualenv
Guna membuat lingkungan pengembangan terisolasi untuk panduan ini, buat lingkungan virtual baru di
virtualenv
. Misalnya, perintah berikut mengaktifkan lingkungan bernamaaip-env
:virtualenv aip-env source aip-env/bin/activate
-
Untuk keperluan tutorial ini, jalankan perintah lainnya dalam lingkungan virtual Anda.
Lihat informasi selengkapnya tentang penggunaanvirtualenv
. Untuk keluar darivirtualenv
, jalankandeactivate
.
Cloud Shell
-
Buka konsol Google Cloud.
-
Klik tombol Activate Google Cloud Shell di bagian atas jendela konsol.
Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah konsol dan menampilkan perintah command line. Perlu waktu beberapa detik hingga sesi shell diinisialisasi.
Sesi Cloud Shell Anda siap digunakan.
-
Konfigurasikan alat command line
gcloud
untuk menggunakan project yang dipilih.gcloud config set project [selected-project-id]
dengan
[selected-project-id]
sebagai project ID Anda. (Hilangkan tanda kurung penutup.)
Menginstal framework
macOS
Dalam lingkungan virtual Anda, jalankan perintah berikut untuk menginstal versi scikit-learn, XGBoost, dan pandas yang digunakan dalam AI Platform Training versi runtime 2.11:
(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5
Dengan memberikan nomor versi dalam perintah sebelumnya, Anda memastikan bahwa dependensi di lingkungan virtual Anda cocok dengan dependensi dalam versi runtime. Hal ini membantu mencegah perilaku yang tidak diharapkan saat kode Anda dijalankan di AI Platform Training.
Untuk detail selengkapnya, opsi penginstalan, dan informasi pemecahan masalah, lihat petunjuk penginstalan untuk setiap framework:
Cloud Shell
Jalankan perintah berikut untuk menginstal scikit-learn, XGBoost, dan pandas:
pip install --user scikit-learn xgboost pandas
Untuk detail selengkapnya, opsi penginstalan, dan informasi pemecahan masalah, lihat petunjuk penginstalan untuk setiap framework:
Menyiapkan bucket Cloud Storage
Anda memerlukan bucket Cloud Storage untuk menyimpan kode pelatihan dan dependensi. Untuk tujuan tutorial ini, cara yang paling mudah adalah menggunakan bucket Cloud Storage khusus dalam project yang sama dengan yang Anda gunakan untuk Pelatihan AI Platform.
Jika menggunakan bucket di project yang berbeda, Anda harus memastikan bahwa akun layanan AI Platform Training Anda dapat mengakses kode pelatihan dan dependensi di Cloud Storage. Tanpa izin yang sesuai, tugas pelatihan Anda akan gagal. Lihat cara memberikan izin untuk penyimpanan.
Pastikan untuk menggunakan atau menyiapkan bucket di region yang sama dengan yang Anda gunakan untuk menjalankan tugas pelatihan. Lihat region yang tersedia untuk layanan AI Platform Training.
Bagian ini menunjukkan cara membuat bucket baru. Anda dapat menggunakan bucket yang ada, tetapi bucket tersebut harus berada di region yang sama dengan tempat Anda berencana menjalankan tugas AI Platform. Selain itu, jika bukan bagian dari project yang Anda gunakan untuk menjalankan AI Platform Training, Anda harus secara eksplisit memberikan akses ke akun layanan AI Platform Training.
-
Tentukan nama untuk bucket baru Anda. Nama harus unik di semua bucket di Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Misalnya, gunakan nama project Anda dengan tambahan
-aiplatform
:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
Periksa nama bucket yang Anda buat.
echo $BUCKET_NAME
-
Pilih region untuk bucket Anda dan tetapkan variabel lingkungan
REGION
.Gunakan region yang sama tempat Anda berencana menjalankan tugas Pelatihan AI Platform. Lihat region yang tersedia untuk layanan AI Platform Training.
Misalnya, kode berikut membuat
REGION
dan menetapkannya keus-central1
:REGION=us-central1
-
Buat bucket baru:
gsutil mb -l $REGION gs://$BUCKET_NAME
Membuat modul pelatihan Python
Buat file, iris_training.py
, yang berisi kode untuk melatih model Anda.
Bagian ini memberikan penjelasan tentang fungsi setiap bagian kode pelatihan:
- Penyiapan dan impor
- Mendownload data dari Cloud Storage
- Memuat data ke dalam pandas
- Latih dan simpan model Anda
- Mengupload file model tersimpan ke Cloud Storage
Demi kemudahan Anda, kode lengkap untuk iris_training.py
dihosting di GitHub sehingga Anda dapat menggunakannya untuk tutorial ini:
Penyiapan
Impor library berikut dari Python dan scikit-learn atau XGBoost. Tetapkan variabel untuk nama bucket Cloud Storage Anda.
scikit-learn
XGBoost
Mendownload data dari Cloud Storage
Selama proses pengembangan standar, Anda mengupload data Anda sendiri ke
Cloud Storage sehingga AI Platform Training dapat mengaksesnya. Data untuk tutorial ini dihosting di bucket Cloud Storage publik: gs://cloud-samples-data/ai-platform/iris/
Kode berikut mendownload data menggunakan gsutil
, lalu mengalihkan data
dari gsutil
ke stdout
:
scikit-learn
XGBoost
Memuat data ke dalam pandas
Gunakan pandas untuk memuat data ke array NumPy untuk pelatihan dengan scikit-learn atau XGBoost.
scikit-learn
XGBoost
Melatih dan menyimpan model
Buat modul pelatihan untuk menjalankan Pelatihan AI Platform. Dalam contoh ini, modul pelatihan melatih model pada data pelatihan Iris (iris_data
dan iris_target
) serta menyimpan model yang telah dilatih dengan mengekspornya ke file. Jika ingin menggunakan AI Platform Prediction untuk mendapatkan prediksi online setelah pelatihan, Anda harus memberi nama file model sesuai dengan library yang Anda gunakan untuk mengekspornya. Lihat persyaratan penamaan lebih lanjut untuk file model Anda.
scikit-learn
Dengan mengikuti contoh scikit-learn tentang persistensi model, Anda dapat melatih dan mengekspor model seperti yang ditunjukkan di bawah ini:
Untuk mengekspor model, Anda juga memiliki opsi untuk menggunakan library pilihan sebagai berikut:
import pickle
with open('model.pkl', 'wb') as model_file:
pickle.dump(classifier, model_file)
XGBoost
Anda dapat mengekspor model menggunakan metode "save_model" dari objek Booster.
Untuk mengekspor model, Anda juga memiliki opsi untuk menggunakan library pilihan sebagai berikut:
import pickle
with open('model.pkl', 'wb') as model_file:
pickle.dump(bst, model_file)
Persyaratan penamaan file model
Untuk prediksi online, file model tersimpan yang Anda upload ke Cloud Storage harus diberi nama salah satu dari: model.pkl
, model.joblib
, atau model.bst
, bergantung pada library yang Anda gunakan. Batasan ini memastikan AI Platform Prediction menggunakan pola yang sama untuk merekonstruksi model terkait impor seperti yang digunakan selama ekspor.
Persyaratan ini tidak berlaku jika Anda membuat rutinitas prediksi kustom (beta).
scikit-learn
Library yang digunakan untuk mengekspor model | Nama model yang benar |
---|---|
pickle |
model.pkl |
sklearn.externals.joblib |
model.joblib |
XGBoost
Library yang digunakan untuk mengekspor model | Nama model yang benar |
---|---|
pickle |
model.pkl |
joblib |
model.joblib |
xgboost.Booster |
model.bst |
Untuk iterasi model pada masa mendatang, atur bucket Cloud Storage Anda sehingga setiap model baru memiliki direktori khusus.
Mengupload model tersimpan ke Cloud Storage
Jika Anda menggunakan bucket Cloud Storage di luar project Google Cloud yang digunakan untuk menjalankan Pelatihan AI Platform, pastikan AI Platform Training memiliki akses ke bucket Anda.
scikit-learn
XGBoost
Membuat paket aplikasi pelatihan
Setelah iris_training.py
dibuat dari cuplikan di atas, buat paket aplikasi
pelatihan yang menyertakan iris_training.py
sebagai modul utamanya.
Cara termudah (dan direkomendasikan) untuk membuat paket aplikasi pelatihan adalah menggunakan gcloud
untuk mengemas dan mengupload aplikasi tersebut saat Anda mengirimkan tugas pelatihan. Metode ini mengharuskan Anda membuat struktur file yang sangat sederhana dengan dua
file:
scikit-learn
Untuk tutorial ini, struktur file paket aplikasi pelatihan Anda akan terlihat seperti berikut:
iris_sklearn_trainer/
__init__.py
iris_training.py
Pada command line, buat direktori secara lokal:
mkdir iris_sklearn_trainer
Buat file kosong bernama
__init__.py
:touch iris_sklearn_trainer/__init__.py
Simpan kode pelatihan Anda sebagai
iris_training.py
, dan simpan file tersebut dalam direktoriiris_sklearn_trainer
Anda. Atau, gunakancURL
untuk mendownload dan menyimpan file dari GitHub:curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/sklearn/iris_training.py > iris_sklearn_trainer/iris_training.py
Pastikan paket aplikasi pelatihan Anda disiapkan dengan benar:
ls ./iris_sklearn_trainer __init__.py iris_training.py
XGBoost
Untuk tutorial ini, struktur file paket aplikasi pelatihan Anda akan terlihat seperti berikut:
iris_xgboost_trainer/
__init__.py
iris_training.py
Pada command line, buat direktori secara lokal:
mkdir iris_xgboost_trainer
Buat file kosong bernama
__init__.py
:touch iris_xgboost_trainer/__init__.py
Simpan kode pelatihan Anda sebagai
iris_training.py
, dan simpan file tersebut dalam direktoriiris_xgboost_trainer
Anda. Atau, gunakancURL
untuk mendownload dan menyimpan file dari GitHub:curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/xgboost/iris_training.py > iris_xgboost_trainer/iris_training.py
Pastikan paket aplikasi pelatihan Anda disiapkan dengan benar:
ls ./iris_xgboost_trainer __init__.py iris_training.py
Pelajari lebih lanjut cara memaketkan aplikasi pelatihan.
Jalankan pelatih secara lokal
Anda dapat menguji aplikasi pelatihan secara lokal menggunakan perintah gcloud ai-platform local train
. Langkah ini bersifat opsional, tetapi akan berguna untuk tujuan proses debug.
scikit-learn
Pada command line, tetapkan variabel lingkungan berikut, dengan mengganti [VALUES-IN-BRACKETS]
dengan nilai yang sesuai:
TRAINING_PACKAGE_PATH="./iris_sklearn_trainer/"
MAIN_TRAINER_MODULE="iris_sklearn_trainer.iris_training"
Uji tugas pelatihan Anda secara lokal:
gcloud ai-platform local train \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE
XGBoost
Pada command line, tetapkan variabel lingkungan berikut, dengan mengganti [VALUES-IN-BRACKETS]
dengan nilai yang sesuai:
TRAINING_PACKAGE_PATH="./iris_xgboost_trainer/"
MAIN_TRAINER_MODULE="iris_xgboost_trainer.iris_training"
Uji tugas pelatihan Anda secara lokal:
gcloud ai-platform local train \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE
Mengirim tugas pelatihan
Di bagian ini, Anda menggunakan
gcloud ai-platform jobs submit training
untuk mengirimkan
tugas pelatihan.
Menentukan parameter tugas pelatihan
Setel variabel lingkungan berikut untuk setiap parameter dalam permintaan tugas pelatihan Anda:
BUCKET_NAME
- Nama bucket Cloud Storage Anda.JOB_NAME
- Nama yang akan digunakan untuk tugas (hanya campuran huruf besar/kecil, angka, dan garis bawah, yang dimulai dengan huruf). Misalnya,iris_scikit_learn_$(date +"%Y%m%d_%H%M%S")
atauiris_xgboost_$(date +"%Y%m%d_%H%M%S")
.JOB_DIR
- Jalur ke lokasi Cloud Storage yang akan digunakan untuk file output tugas pelatihan Anda. Misalnya,gs://$BUCKET_NAME/scikit_learn_job_dir
ataugs://$BUCKET_NAME/xgboost_job_dir
.TRAINING_PACKAGE_PATH
- Jalur lokal ke direktori utama aplikasi pelatihan Anda. Misalnya,./iris_sklearn_trainer/
atau./iris_xgboost_trainer/
.MAIN_TRAINER_MODULE
- Menentukan file mana yang harus dijalankan oleh layanan pelatihan Pelatihan AI Platform. Ini diformat sebagai[YOUR_FOLDER_NAME.YOUR_PYTHON_FILE_NAME]
. Misalnya,iris_sklearn_trainer.iris_training
atauiris_xgboost_trainer.iris_training
.REGION
- Nama region yang Anda gunakan untuk menjalankan tugas pelatihan. Gunakan salah satu region yang tersedia untuk layanan pelatihan AI Platform Training. Pastikan bucket Cloud Storage Anda berada di region yang sama.RUNTIME_VERSION
- Anda harus menentukan versi runtime Pelatihan AI Platform yang mendukung scikit-learn. Dalam contoh ini,2.11
.PYTHON_VERSION
- Versi Python yang akan digunakan untuk tugas. Untuk tutorial ini, tentukan Python 3.7.SCALE_TIER
- Spesifikasi cluster yang telah ditentukan sebelumnya agar mesin dapat menjalankan tugas pelatihan Anda. Dalam hal ini,BASIC
. Anda juga dapat menggunakan tingkat skala kustom untuk menentukan konfigurasi cluster Anda sendiri untuk pelatihan.
Untuk memudahkan Anda, variabel lingkungan untuk tutorial ini ada di bawah.
scikit-learn
Ganti [VALUES-IN-BRACKETS]
dengan nilai yang sesuai:
BUCKET_NAME=[YOUR-BUCKET-NAME]
JOB_NAME="iris_scikit_learn_$(date +"%Y%m%d_%H%M%S")"
JOB_DIR=gs://$BUCKET_NAME/scikit_learn_job_dir
TRAINING_PACKAGE_PATH="./iris_sklearn_trainer/"
MAIN_TRAINER_MODULE="iris_sklearn_trainer.iris_training"
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
XGBoost
Ganti [VALUES-IN-BRACKETS]
dengan nilai yang sesuai:
BUCKET_NAME=[YOUR-BUCKET-NAME]
JOB_NAME="iris_xgboost_$(date +"%Y%m%d_%H%M%S")"
JOB_DIR=gs://$BUCKET_NAME/xgboost_job_dir
TRAINING_PACKAGE_PATH="./iris_xgboost_trainer/"
MAIN_TRAINER_MODULE="iris_xgboost_trainer.iris_training"
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
Kirim permintaan tugas pelatihan:
gcloud ai-platform jobs submit training $JOB_NAME \
--job-dir $JOB_DIR \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--region $REGION \
--runtime-version=$RUNTIME_VERSION \
--python-version=$PYTHON_VERSION \
--scale-tier $SCALE_TIER
Anda akan melihat output yang mirip dengan berikut ini:
Job [iris_scikit_learn_[DATE]_[TIME]] submitted successfully.
Your job is still active. You may view the status of your job with the command
$ gcloud ai-platform jobs describe iris_scikit_learn_[DATE]_[TIME]
or continue streaming the logs with the command
$ gcloud ai-platform jobs stream-logs iris_scikit_learn_[DATE]_[TIME]
jobId: iris_scikit_learn_[DATE]_[TIME]
state: QUEUED
Melihat log pelatihan Anda (opsional)
Pelatihan AI Platform merekam semua aliran data stdout
dan stderr
serta pernyataan logging. Log ini disimpan di Logging dan terlihat selama serta setelah eksekusi.
Untuk melihat log tugas pelatihan Anda:
Konsol
Buka halaman Tugas Pelatihan AI Platform.
Pilih nama tugas pelatihan yang akan diperiksa. Tindakan ini akan mengarahkan Anda ke halaman Detail tugas untuk tugas pelatihan yang dipilih.
Dalam detail tugas, pilih link Lihat log. Tindakan ini akan membuka halaman Logging tempat Anda dapat menelusuri dan memfilter log untuk tugas pelatihan yang dipilih.
gcloud
Anda dapat melihat log di terminal dengan
gcloud ai-platform jobs stream-logs
.
gcloud ai-platform jobs stream-logs $JOB_NAME
Memverifikasi file model Anda di Cloud Storage
Lihat konten folder model tujuan untuk memverifikasi bahwa file model tersimpan Anda telah diupload ke Cloud Storage.
gsutil ls gs://$BUCKET_NAME/iris_*
Contoh output:
gs://bucket-name/iris_20180518_123815/:
gs://bucket-name/iris_20180518_123815/model.joblib
Langkah selanjutnya
- Dapatkan prediksi online dengan scikit-learn on AI Platform Training.
- Lihat cara menggunakan tingkat skala kustom untuk menentukan konfigurasi cluster Anda sendiri untuk pelatihan.