Dengan algoritma bawaan di AI Platform Training, Anda dapat mengirimkan data pelatihan, memilih algoritma, dan membiarkan AI Platform Training menangani prapemrosesan dan pelatihan untuk Anda, tanpa menulis kode apa pun untuk aplikasi pelatihan. Algoritma gambar bawaan memungkinkan Anda melakukan pelatihan di TPU dengan konfigurasi minimal. SavedModel TensorFlow yang dihasilkan kompatibel untuk ditayangkan di CPU dan GPU.
Ringkasan
Dalam tutorial ini, Anda akan melatih model klasifikasi gambar tanpa menulis kode apa pun. Anda mengirimkan set data Bunga ke AI Platform Training untuk pelatihan, lalu men-deploy model di AI Platform Prediction untuk mendapatkan prediksi. Model yang dihasilkan mengklasifikasikan gambar bunga berdasarkan spesies (daisy, tulip, mawar, bunga matahari, atau dandelion).
Sebelum memulai
Untuk menyelesaikan tutorial ini di command line, gunakan Cloud Shell atau lingkungan mana pun tempat Google Cloud CLI diinstal.
Selesaikan langkah-langkah berikut untuk menyiapkan akun GCP, mengaktifkan API yang diperlukan, serta menginstal dan mengaktifkan Google Cloud CLI:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Memberi otorisasi Cloud TPU untuk mengakses project Anda
Ikuti langkah-langkah berikut untuk memberikan otorisasi pada nama akun layanan Cloud TPU yang terkait dengan project Google Cloud Anda:
Dapatkan nama akun layanan Cloud TPU Anda dengan memanggil
projects.getConfig
. Contoh:PROJECT_ID=PROJECT_ID curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID:getConfig
Simpan nilai kolom
serviceAccountProject
dantpuServiceAccount
yang ditampilkan oleh API.Lakukan inisialisasi akun layanan Cloud TPU:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{}' \ https://serviceusage.googleapis.com/v1beta1/projects/<serviceAccountProject>/services/tpu.googleapis.com:generateServiceIdentity
Sekarang, tambahkan akun layanan Cloud TPU sebagai anggota dalam project Anda, dengan peran Cloud ML Service Agent. Selesaikan langkah-langkah berikut di konsol Google Cloud atau menggunakan perintah gcloud
:
Konsol
- Login ke konsol Google Cloud dan pilih project tempat Anda menggunakan TPU.
- Pilih IAM & Admin > IAM.
- Klik tombol Tambahkan untuk menambahkan anggota ke project.
- Masukkan akun layanan TPU di kotak teks Anggota.
- Klik menu drop-down Roles.
- Aktifkan peran Cloud ML Service Agent (Service Agents > Cloud ML Service Agent).
gcloud
Tetapkan variabel lingkungan yang berisi project ID dan akun layanan Cloud TPU Anda:
PROJECT_ID=PROJECT_ID SVC_ACCOUNT=your-tpu-sa-123@your-tpu-sa.google.com.iam.gserviceaccount.com
Berikan peran
ml.serviceAgent
ke akun layanan Cloud TPU:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SVC_ACCOUNT --role roles/ml.serviceAgent
Untuk mengetahui detail selengkapnya tentang cara memberikan peran ke akun layanan, lihat dokumentasi IAM.
Penyiapan
Kami telah mengubah set data TensorFlow Flowers untuk digunakan dengan tutorial ini, dan
menghostingnya di bucket Cloud Storage publik,
gs://cloud-samples-data/ai-platform/built-in/image/flowers/
.
Konsol
Memilih algoritme
Buka halaman Tugas Pelatihan AI Platform di konsol Google Cloud:
Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritma bawaan. Halaman Create a new training job akan ditampilkan.
Pembuatan tugas pelatihan dibagi menjadi empat langkah. Langkah pertama adalah Algoritma pelatihan. Pilih klasifikasi gambar, lalu klik Berikutnya.
Data pelatihan
Di bagian Training data, pilih data pelatihan untuk set data contoh, yang dihosting di bucket Cloud Storage publik kami:
Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.
Untuk Jalur direktori, isi: "cloud-samples-data/ai-platform/built-in/image/flowers/"
Untuk Nama karakter pengganti, isi "flowers_train*" untuk memilih semua file pelatihan di direktori.
Jalur GCS lengkap ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
Di bagian Validation data, pilih data validasi untuk set data contoh, yang dihosting di bucket Cloud Storage publik kami:
Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.
Untuk Jalur direktori, isi: "cloud-samples-data/ai-platform/built-in/image/flowers/"
Untuk Nama karakter pengganti, isi "flowers_validation*" untuk memilih semua file validasi dalam direktori.
Jalur GCS lengkap ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
Tentukan Output directory di bucket Cloud Storage Anda tempat Anda ingin AI Platform Training menyimpan model, checkpoint, dan output tugas pelatihan lainnya yang telah dilatih. Anda dapat mengisi jalur persis di bucket, atau menggunakan tombol Browse untuk memilih jalur.
gcloud
Siapkan variabel lingkungan untuk project ID, bucket Cloud Storage, jalur Cloud Storage ke data pelatihan, dan pilihan algoritma Anda.
Algoritma bawaan AI Platform Training berada dalam container Docker yang dihosting di Container Registry.
PROJECT_ID="YOUR_PROJECT_ID"
BUCKET_NAME="YOUR_BUCKET_NAME"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
# Set paths to the training and validation data.
TRAINING_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
VALIDATION_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
# Specify the Docker container for your built-in algorithm selection.
IMAGE_URI="gcr.io/cloud-ml-algos/image_classification:latest"
Mengirim tugas pelatihan
Untuk mengirimkan tugas, Anda harus menentukan beberapa argumen pelatihan dasar dan beberapa argumen dasar yang terkait dengan algoritma klasifikasi gambar.
Argumen umum untuk tugas pelatihan:
Argumen tugas pelatihan | |
---|---|
Argumen | Deskripsi |
job-id |
ID unik untuk tugas pelatihan Anda. Anda dapat menggunakannya untuk menemukan log status tugas pelatihan setelah mengirimkannya. |
job-dir |
Jalur Cloud Storage tempat AI Platform Training menyimpan file pelatihan setelah menyelesaikan tugas pelatihan yang berhasil. |
scale-tier |
Menentukan jenis mesin untuk pelatihan. Gunakan BASIC untuk memilih
konfigurasi hanya satu mesin.
|
master-image-uri |
URI Container Registry yang digunakan untuk menentukan container Docker yang akan digunakan untuk tugas pelatihan. Gunakan penampung untuk algoritma klasifikasi gambar bawaan yang ditentukan sebelumnya sebagai IMAGE_URI .
|
region |
Tentukan region yang tersedia untuk menjalankan tugas pelatihan Anda. Untuk
tutorial ini, Anda dapat menggunakan region us-central1 .
|
Argumen khusus untuk algoritma klasifikasi gambar bawaan:
Argumen algoritme | |
---|---|
Argumen | Deskripsi |
training_data_path |
Jalur ke pola jalur TFRecord yang digunakan untuk pelatihan. |
validation_data_path |
Jalur ke pola jalur TFRecord yang digunakan untuk validasi. |
pretrained_checkpoint_path |
Jalur checkpoint terlatih sebelumnya. Anda dapat menggunakan beberapa pos pemeriksaan yang dipublikasikan. |
num_classes |
Jumlah class dalam data pelatihan/validasi. |
max_steps |
Jumlah langkah yang akan dijalankan tugas pelatihan. |
train_batch_size |
Jumlah gambar yang akan digunakan per langkah pelatihan. |
num_eval_images |
Jumlah total gambar yang digunakan untuk evaluasi. Jika 0, semua gambar di validation_data_path akan
digunakan untuk evaluasi.
|
learning_rate_decay_type |
Metode yang digunakan untuk mengurangi kecepatan pembelajaran selama pelatihan. |
warmup_learning_rate |
Kecepatan belajar di awal fase pemanasan. |
warmup_steps |
Jumlah langkah yang akan dijalankan selama fase pemanasan, atau durasi
fase pemanasan dalam langkah.
Tugas pelatihan menggunakan warmup_learning_rate selama fase pemanasan. Setelah fase pemanasan selesai, tugas pelatihan akan menggunakan
initial_learning_rate .
|
initial_learning_rate |
Kecepatan belajar awal setelah fase pemanasan selesai. |
stepwise_learning_rate_steps |
Langkah-langkah untuk menurunkan/mengubah kecepatan pembelajaran untuk jenis peluruhan kecepatan pembelajaran
bertahap. Misalnya, 100.200 berarti kecepatan belajar akan berubah (sehubungan dengan stepwise_learning_rate_levels ) pada langkah 100
dan langkah 200. Perhatikan bahwa hal ini hanya akan dipatuhi jika
learning_rate_decay_type ditetapkan ke stepwise.
|
stepwise_learning_rate_levels |
Nilai rasio pembelajaran dari setiap langkah untuk jenis penurunan rasio pembelajaran
bertahap. Perhatikan bahwa hal ini hanya akan dipatuhi jika
learning_rate_decay_type ditetapkan ke stepwise.
|
image_size |
Ukuran gambar (lebar dan tinggi) yang digunakan untuk pelatihan. |
optimizer_type |
Pengoptimal yang digunakan untuk pelatihan. Formatnya harus salah satu dari: {momentum, adam, rmsprop}
|
optimizer_arguments |
Argumen untuk pengoptimal. Ini adalah daftar yang dipisahkan koma dari
pasangan "name=value". File ini harus kompatibel dengan
optimizer_type . Contoh:
|
model_type |
Jenis arsitektur model yang digunakan untuk melatih model. Dapat berupa salah satu dari:
|
label_smoothing |
Parameter penghalusan label yang digunakan di
softmax_cross_entropy .
|
weight_decay |
Koefisien depresi bobot untuk regularisasi L2.
loss = cross_entropy + params['weight_decay'] * l2_loss
|
Untuk mengetahui daftar mendetail semua flag algoritma klasifikasi gambar lainnya, lihat referensi klasifikasi gambar bawaan.
Konsol
Argumen algoritme
Di bagian pertama tab Algorithm arguments, isi nilai berikut:
- Jumlah class: 5
- Langkah maksimum: 15.000
- Ukuran batch pelatihan: 128
- Jumlah gambar evaluasi: 1
Di Bagian Model pada tab Argumen algoritma:
- Untuk Model type, pilih Efficientnet-b4.
- Biarkan Pretrained checkpoint path kosong.
- Biarkan Label smoothing dan Weight Decay pada nilai defaultnya.
Setelan pekerjaan
Pada tab Setelan tugas:
- Masukkan ID Tugas yang unik (seperti "image_classification_example").
- Masukkan region yang tersedia (seperti "us-central1").
- Untuk memilih jenis mesin, pilih "CUSTOM" untuk scale tier.
Bagian untuk menampilkan Spesifikasi cluster kustom.
- Untuk Jenis master, pilih complex_model_m.
- Untuk Jenis pekerja, pilih cloud_tpu. Jumlah pekerja ditetapkan secara default ke 1.
Klik Selesai untuk mengirimkan tugas pelatihan.
gcloud
Siapkan semua argumen untuk tugas pelatihan dan algoritme, sebelum menggunakan
gcloud
untuk mengirimkan tugas:DATASET_NAME="flowers" ALGORITHM="image_classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_model" # Give a unique name to your training job. DATE="$(date '+%Y%m%d_%H%M%S')" JOB_ID="${MODEL_NAME}_${DATE}" # Make sure you have access to this Cloud Storage bucket. JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
Kirim tugas:
gcloud ai-platform jobs submit training $JOB_ID \ --region=$REGION \ --config=config.yaml \ --master-image-uri=$IMAGE_URI \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --job-dir=$JOB_DIR \ --max_steps=30000 \ --train_batch_size=128 \ --num_classes=5 \ --num_eval_images=100 \ --initial_learning_rate=0.128 \ --warmup_steps=1000 \ --model_type='efficientnet-b4'
Setelah tugas berhasil dikirim, Anda dapat melihat log menggunakan perintah
gcloud
berikut:gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
Memahami direktori lowongan
Setelah tugas pelatihan berhasil diselesaikan, AI Platform Training akan membuat model terlatih di bucket Cloud Storage Anda, beserta beberapa artefak lainnya. Anda dapat menemukan struktur direktori berikut dalam JOB_DIR
:
- model/ (direktori TensorFlow SavedModel yang juga berisi file
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- eval/
- events.out.tfevents.[timestamp].cmle-training-[timestamp]
- events.out.tfevents...
- ...
- variables/
- variables.data-00000-of-00001
- variables.index
Direktori tugas juga berisi berbagai file titik periksa model.
Pastikan struktur direktori di JOB_DIR
Anda cocok dengan:
gcloud storage ls $JOB_DIR/* --all-versions
Men-deploy model terlatih
AI Platform Training mengatur model terlatih Anda menggunakan resource model dan versi. Model AI Platform Training adalah penampung untuk versi model machine learning Anda.
Untuk men-deploy model, Anda membuat resource model di AI Platform Training, membuat versi model tersebut, lalu menggunakan model dan versi untuk meminta prediksi online.
Untuk informasi selengkapnya tentang cara men-deploy model ke AI Platform Training, lihat cara men-deploy model TensorFlow.
Konsol
Di halaman Tugas, Anda dapat menemukan daftar semua tugas pelatihan. Klik nama tugas pelatihan yang baru saja Anda kirimkan ("image_classification" atau nama tugas yang Anda gunakan).
Di halaman Detail tugas, Anda dapat melihat progres umum tugas, atau mengklik Lihat log untuk melihat progresnya secara lebih mendetail.
Jika tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.
Pilih Deploy as new model, lalu masukkan nama model, seperti "algorithms_image_classification_model". Selanjutnya, klik Konfirmasi.
Di halaman Create version, masukkan nama versi, seperti "v1", dan biarkan semua kolom lainnya menggunakan setelan defaultnya. Klik Simpan.
gcloud
Proses pelatihan dengan algoritma klasifikasi gambar bawaan menghasilkan file, deployment_config.yaml
, yang mempermudah deployment model Anda di AI Platform Training untuk prediksi.
Salin file ke direktori lokal Anda dan lihat kontennya:
gcloud storage cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
File
deployment_config.yaml
Anda akan terlihat seperti berikut:deploymentUri: gs://BUCKET_NAME/algorithms_training/flowers_image_classification/model framework: TENSORFLOW labels: global_step: '1000' job_id: flowers_image_classification_20190227060114 runtimeVersion: '1.14'
Buat model dan versi di AI Platform Training:
gcloud ai-platform models create $MODEL_NAME --regions $REGION # Create a model and a version using the file above. VERSION_NAME="v_${DATE}" gcloud ai-platform versions create $VERSION_NAME \ --model $MODEL_NAME \ --config deployment_config.yaml
Pembuatan versi memerlukan waktu beberapa menit.
Mendapatkan prediksi online
Saat meminta prediksi, Anda harus memastikan bahwa data input Anda diformat sebagai JSON.
Download file artefak pelatihan:
gcloud storage cp $JOB_DIR/artifacts/* .
Menyiapkan input prediksi untuk satu gambar.
Untuk mengirim permintaan prediksi online menggunakan Google Cloud CLI, seperti dalam contoh ini, tulis setiap instance ke baris dalam file JSON yang dibatasi baris baru.
Jalankan perintah berikut di terminal untuk membuat input untuk satu instance yang dapat Anda kirim ke AI Platform Prediction:
Skrip Python berikut mengenkode satu gambar menggunakan
base64
, memformatnya untuk prediksi, menambahkan kunci instance, dan menulis hasilnya ke file bernamaprediction_instances.json
:import json import base64 import tensorflow as tf IMAGE_URI='gs://cloud-samples-data/ai-platform/built-in/image/tutorial_examples/daisy.jpg' with tf.gfile.Open(IMAGE_URI, 'rb') as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') image_bytes = {'b64': str(encoded_string)} instances = {'image_bytes': image_bytes, 'key': '1'} with open("prediction_instances.json","w") as f: f.write(json.dumps(instances))
Kirim permintaan prediksi:
gcloud ai-platform predict --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances prediction_instances.json
Kemungkinan besar, output prediksi menyertakan class daisy
, yang menunjukkan bahwa
model yang di-deploy telah mengklasifikasikan gambar input sebagai daisy. (Karena pelatihan bersifat
non-deterministik, model Anda mungkin berbeda.)
Tentang data
Set data Bunga yang digunakan sampel ini untuk pelatihan disediakan oleh Tim TensorFlow.
Langkah selanjutnya
- Pelajari lebih lanjut cara menggunakan algoritma klasifikasi gambar bawaan.