Dengan algoritma bawaan di AI Platform Training, Anda dapat mengirimkan data pelatihan, memilih algoritme, dan membiarkan AI Platform Training menangani pra-pemrosesan dan pelatihan untuk Anda, tanpa perlu menulis kode apa pun untuk aplikasi pelatihan. Dengan algoritma gambar bawaan, Anda dapat berlatih di TPU dengan konfigurasi minimal. TensorFlowSavedModel yang dihasilkan kompatibel untuk disalurkan di CPU dan GPU.
Ringkasan
Dalam tutorial ini, Anda akan melatih model deteksi objek gambar tanpa menulis kode apa pun. Anda mengirimkan set data COCO ke Pelatihan AI Platform untuk pelatihan, lalu men-deploy model di Pelatihan AI Platform untuk mendapatkan prediksi. Model yang dihasilkan mengklasifikasikan objek umum dalam gambar adegan sehari-hari yang kompleks.
Sebelum memulai
Untuk menyelesaikan tutorial ini di command line, gunakan Cloud Shell atau lingkungan apa 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:
- 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
Otorisasi Cloud TPU untuk mengakses project Anda
Ikuti langkah-langkah berikut untuk memberi otorisasi nama akun layanan Cloud TPU yang terkait dengan project Google Cloud Anda:
Dapatkan nama akun layanan Cloud TPU 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 di project Anda, dengan peran Cloud ML Service Agent. Selesaikan langkah-langkah berikut di Konsol Google Cloud atau menggunakan perintah gcloud
:
Konsol
- Login ke Google Cloud Console dan pilih project tempat Anda menggunakan TPU.
- Pilih IAM & Admin > IAM.
- Klik tombol Add untuk menambahkan anggota ke project.
- Masukkan akun layanan TPU di kotak teks Anggota.
- Klik daftar dropdown Peran.
- Aktifkan peran Cloud ML Service Agent (Service Agents > Cloud ML Service Agent).
gcloud
Tetapkan variabel lingkungan yang berisi project ID Anda dan akun layanan Cloud TPU:
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 memberikan peran ke akun layanan, lihat dokumentasi IAM.
Penyiapan
Kami telah mengubah set data COCO untuk digunakan dengan tutorial ini, dan menghostingnya di bucket Cloud Storage publik,
gs://cloud-samples-data/ai-platform/built-in/image/coco/
.
Konsol
Pilih algoritma Anda
Buka halaman Tugas Pelatihan AI Platform di Konsol Google Cloud:
Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritme bawaan. Halaman Buat tugas pelatihan baru akan ditampilkan.
Pembuatan tugas pelatihan dibagi menjadi empat langkah. Langkah pertama adalah Algoritme pelatihan. Pilih image object detection, lalu klik Next.
Data pelatihan
Di bagian Data pelatihan, pilih data pelatihan untuk set data sampel, yang dihosting di bucket Cloud Storage publik kami:
Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.
Untuk Directory path, isi: "cloud-samples-data/ai-platform/built-in/image/coco/"
Untuk Nama karakter pengganti, isi "train*" untuk memilih semua file pelatihan dalam direktori.
Complete GCS path akan ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/coco/train*"
Di bagian Data validasi, pilih data validasi untuk set data sampel, yang dihosting di bucket Cloud Storage publik kami:
Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.
Untuk Directory path, isi: "cloud-samples-data/ai-platform/built-in/image/coco/"
Untuk Nama karakter pengganti, isi "val*" untuk memilih semua file validasi dalam direktori.
Complete GCS path akan ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/coco/val*"
Tentukan Direktori output di bucket Cloud Storage Anda tempat Anda ingin AI Platform Training menyimpan model terlatih, checkpoint, dan output tugas pelatihan lainnya. Anda dapat mengisi jalur yang tepat di bucket, atau menggunakan tombol Browse untuk memilih jalur.
gcloud
Siapkan variabel lingkungan untuk project ID Anda, bucket Cloud Storage, jalur Cloud Storage ke data pelatihan, dan pilihan algoritme Anda.
Algoritma bawaan AI Platform Training berada di 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/coco/train*"
VALIDATION_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/coco/val*"
# Specify the Docker container for your built-in algorithm selection.
IMAGE_URI="gcr.io/cloud-ml-algos/image_object_detection:latest"
Mengirim tugas pelatihan
Untuk mengirimkan tugas, Anda harus menentukan beberapa argumen pelatihan dasar dan beberapa argumen dasar yang terkait dengan algoritma deteksi objek gambar.
Argumen umum untuk tugas pelatihan:
Melatih argumen tugas | |
---|---|
Argumen | Deskripsi |
job-id |
ID unik untuk tugas pelatihan Anda. Anda dapat menggunakannya untuk menemukan log tentang 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 untuk satu mesin saja.
|
master-image-uri |
URI Container Registry digunakan untuk menentukan container Docker yang akan digunakan untuk tugas pelatihan. Gunakan container untuk algoritme deteksi objek gambar bawaan yang ditentukan sebelumnya sebagai IMAGE_URI .
|
region |
Tentukan region yang tersedia untuk menjalankan tugas pelatihan Anda. Untuk tutorial ini, Anda dapat menggunakan wilayah us-central1 .
|
Argumen khusus untuk algoritma deteksi objek 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 yang telah dilatih sebelumnya. Anda dapat menggunakan beberapa checkpoint yang dipublikasikan. |
num_classes |
Jumlah kelas dalam data pelatihan/validasi. |
max_steps |
Jumlah langkah yang akan dijalankan oleh tugas pelatihan. |
train_batch_size |
Jumlah gambar yang akan digunakan per langkah pelatihan. |
num_eval_images |
Jumlah total gambar yang digunakan untuk evaluasi. Jika nilainya 0, semua gambar dalam validation_data_path akan
digunakan untuk evaluasi.
|
learning_rate_decay_type |
Metode yang digunakan untuk melambatkan kecepatan pembelajaran selama pelatihan. |
warmup_learning_rate |
Kecepatan pemelajaran di awal fase pemanasan. |
warmup_steps |
Jumlah langkah yang akan dijalankan selama fase pemanasan, atau durasi fase pemanasan dalam langkah-langkah.
Tugas pelatihan menggunakan warmup_learning_rate selama fase pemanasan. Saat fase pemanasan selesai, tugas pelatihan akan menggunakan
initial_learning_rate .
|
initial_learning_rate |
Kecepatan pemelajaran awal setelah fase pemanasan selesai. |
stepwise_learning_rate_steps |
Langkah-langkah untuk mengurangi/mengubah kecepatan pemelajaran untuk jenis peluruhan kecepatan pembelajaran bertahap. Misalnya, 100.200 berarti kecepatan pemelajaran akan berubah (sehubungan dengan stepwise_learning_rate_levels ) pada langkah 100
dan langkah 200. Perhatikan bahwa ini hanya akan diterapkan jika learning_rate_decay_type ditetapkan ke bertahap.
|
stepwise_learning_rate_levels |
Nilai kecepatan pembelajaran setiap langkah untuk jenis peluruhan kecepatan pembelajaran bertahap. Perhatikan bahwa ini hanya akan diterapkan jika learning_rate_decay_type ditetapkan ke bertahap.
|
image_size |
Ukuran gambar (lebar dan tinggi) yang digunakan untuk pelatihan. |
optimizer_type |
Pengoptimal yang digunakan untuk pelatihan. ID harus berupa salah satu dari: {momentum, adam, adadelta, adagrad, rmsprop}
|
optimizer_arguments |
Argumen untuk pengoptimal. Nilai ini adalah daftar pasangan "name=value" yang dipisahkan koma. Aplikasi harus kompatibel dengan
optimizer_type . Contoh:
|
fpn_type |
Jenis Jaringan Piramida Fitur (FPN) multilevel.
Harus salah satu dari {fpn, nasfpn} .
|
resnet_depth |
Kedalaman backbone ResNet.
Harus salah satu dari {18,34,50,101,152,200} .
|
max_num_bboxes_in_training |
Jumlah maksimum kotak pembatas yang diusulkan yang akan digunakan untuk pelatihan. |
max_num_bboxes_in_prediction |
Jumlah maksimum kotak pembatas yang diusulkan untuk digunakan dalam output prediksi. |
bbox_aspect_ratios |
Skala ukuran anchor dasar yang merepresentasikan anchor rasio aspek yang ditambahkan di setiap tingkat. Angka menunjukkan rasio lebar terhadap tinggi. Misalnya, "1.0,2.0,0.5" menambahkan tiga anchor pada setiap tingkat skala. |
nms_iou_threshold |
Ambang batas untuk menentukan apakah kotak pembatas tumpang-tindih sehubungan dengan IOU untuk penyembunyian non-maksimum. |
nms_score_threshold |
Ambang batas untuk memutuskan kapan harus menghapus kotak pembatas berdasarkan skor. |
focal_loss_alpha |
Nilai alfa loss fokal (parameter menyeimbangkan). |
focal_loss_gamma |
Nilai gamma loss fokal (parameter pemfokus). |
aug_scale_min |
Skala minimum yang diterapkan selama augmentasi gambar. Nilainya
antara [0, 1.0] .
|
aug_scale_max |
Skala maksimum yang diterapkan selama augmentasi gambar. Nilainya
antara [1.0, inf] .
|
aug_rand_hflip |
Boolean. Jika ditetapkan ke True, setelan ini akan meningkatkan pelatihan dengan balik horizontal acak. |
Untuk mengetahui daftar mendetail dari semua flag algoritma deteksi objek gambar lainnya, lihat referensi deteksi objek gambar bawaan.
Konsol
Argumen algoritme
Di bagian pertama tab Argumen algoritma, isi nilai berikut:
- Jumlah kelas: 91
- Langkah maks: 15.000
- Ukuran tumpukan kereta: 64
- Jumlah gambar evaluasi: 5000
Di Bagian Model pada tab Argumen algoritma:
Untuk Jalur checkpoint terlatih, isi
gs://cloud-samples-data/ai-platform/built-in/image/pretrained_checkpoints/detection/
.Biarkan semua kolom lain pada setelan defaultnya, lalu klik Next.
Setelan pekerjaan
Pada tab Job settings:
- Masukkan ID Tugas unik (seperti "object_detection_example").
- Masukkan region yang tersedia (seperti "us-central1").
- Untuk memilih jenis mesin, pilih "KHUSUS" untuk tingkat skala.
Bagian untuk menyediakan tampilan Spesifikasi cluster kustom
Anda.
- Untuk Master type, pilih complex_model_m.
- Untuk Worker type, pilih cloud_tpu. Secara default, jumlah pekerja adalah 1.
Klik Selesai untuk mengirim tugas pelatihan.
gcloud
Siapkan semua argumen untuk tugas pelatihan dan algoritma, sebelum menggunakan
gcloud
untuk mengirim tugas:DATASET_NAME="coco" ALGORITHM="object_detection" 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 \ --job-dir=$JOB_DIR \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --train_batch_size=64 \ --num_eval_images=500 \ --train_steps_per_eval=2000 \ --max_steps=15000 \ --num_classes=90 \ --warmup_steps=500 \ --initial_learning_rate=0.08 \ --fpn_type="nasfpn" \ --aug_scale_min=0.8 \ --aug_scale_max=1.2
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 pekerjaan Anda
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 TersimpanModel
yang juga berisi file
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- eval/
- events.out.tfevents.[timestamp].cmle-training-[timestamp]
- event.out.tfevents...
- ...
- variabel/
- variables.data-00000-of-00001
- variables.index
Direktori tugas juga berisi berbagai file checkpoint model.
Pastikan struktur direktori di JOB_DIR
cocok dengan:
gsutil ls -a $JOB_DIR/*
Men-deploy model yang dilatih
AI Platform Training mengatur model terlatih Anda menggunakan resource model dan versi. Model Pelatihan AI Platform adalah container untuk versi model machine learning Anda.
Untuk men-deploy model, buat resource model di AI Platform Training, buat versi model tersebut, lalu gunakan model dan versi tersebut untuk meminta prediksi online.
Untuk mengetahui informasi lebih lanjut tentang cara men-deploy model ke Pelatihan AI Platform, lihat cara men-deploy model TensorFlow.
Konsol
Di halaman Tugas, Anda dapat menemukan daftar semua tugas pelatihan Anda. Klik nama tugas pelatihan yang baru saja Anda kirimkan ("object_detection" atau nama tugas yang Anda gunakan).
Di halaman Detail tugas, Anda dapat melihat progres umum dari tugas Anda, atau mengklik View logs untuk melihat progresnya secara lebih mendetail.
Setelah tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.
Pilih Deploy as new model, lalu masukkan nama model, seperti "algorithms_object_detection_model". Selanjutnya, klik Konfirmasi.
Pada halaman Buat versi, masukkan nama versi, misalnya "v1", dan biarkan semua kolom lain dalam setelan defaultnya. Klik Save.
gcloud
Proses pelatihan dengan algoritma deteksi objek gambar bawaan menghasilkan file deployment_config.yaml
, yang mempermudah deployment model Anda pada AI Platform Training untuk prediksi.
Salin file ke direktori lokal Anda dan lihat isinya:
gsutil 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/coco_object_detection/model framework: TENSORFLOW labels: global_step: '1000' job_id: coco_object_detection_20190227060114 runtimeVersion: '1.14'
Buat model dan versi dalam 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 diformat sebagai JSON.
Download file artefak pelatihan:
gsutil cp $JOB_DIR/artifacts/* .
Siapkan 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 Anda guna 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/coco_sample.jpeg' 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
Untuk setiap objek yang terdeteksi dalam gambar, output prediksi mencakup class, skor, dan lokasi kotak pembatas.
Tentang data
Set data Common Objects in Context (COCO) Microsoft adalah set data deteksi, segmentasi, dan teks dalam skala besar.
Langkah selanjutnya
- Pelajari lebih lanjut cara menggunakan algoritma deteksi objek gambar bawaan.