Mulai menggunakan algoritma klasifikasi gambar bawaan

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:

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. 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:

  1. 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
    
  2. Simpan nilai kolom serviceAccountProject dan tpuServiceAccount yang ditampilkan oleh API.

  3. 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

  1. Login ke konsol Google Cloud dan pilih project tempat Anda menggunakan TPU.
  2. Pilih IAM & Admin > IAM.
  3. Klik tombol Tambahkan untuk menambahkan anggota ke project.
  4. Masukkan akun layanan TPU di kotak teks Anggota.
  5. Klik menu drop-down Roles.
  6. Aktifkan peran Cloud ML Service Agent (Service Agents > Cloud ML Service Agent).

gcloud

  1. 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
    
  2. 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

  1. Buka halaman Tugas Pelatihan AI Platform di konsol Google Cloud:

    Halaman Lowongan AI Platform Training

  2. Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritma bawaan. Halaman Create a new training job akan ditampilkan.

  3. Pembuatan tugas pelatihan dibagi menjadi empat langkah. Langkah pertama adalah Algoritma pelatihan. Pilih klasifikasi gambar, lalu klik Berikutnya.

Data pelatihan

  1. Di bagian Training data, pilih data pelatihan untuk set data contoh, yang dihosting di bucket Cloud Storage publik kami:

    1. Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.

    2. Untuk Jalur direktori, isi: "cloud-samples-data/ai-platform/built-in/image/flowers/"

    3. Untuk Nama karakter pengganti, isi "flowers_train*" untuk memilih semua file pelatihan di direktori.

    4. Jalur GCS lengkap ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"

  2. Di bagian Validation data, pilih data validasi untuk set data contoh, yang dihosting di bucket Cloud Storage publik kami:

    1. Pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage.

    2. Untuk Jalur direktori, isi: "cloud-samples-data/ai-platform/built-in/image/flowers/"

    3. Untuk Nama karakter pengganti, isi "flowers_validation*" untuk memilih semua file validasi dalam direktori.

    4. Jalur GCS lengkap ditampilkan di bawah: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"

  3. 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:
  • Untuk pengoptimal Momentum, pengoptimal ini menerima momentum=0.9. Lihat tf.train.MomentumOptimizer untuk detail selengkapnya.
  • Untuk pengoptimal Adam, nilainya dapat berupa beta1=0.9,beta2=0.999. Lihat tf.train.AdamOptimizer untuk mengetahui detail selengkapnya.
  • Untuk pengoptimal RMSProp, nilainya dapat berupa decay=0.9,momentum=0.1,epsilon=1e-10. Lihat RMSPropOptimizer untuk mengetahui detail selengkapnya.
model_type Jenis arsitektur model yang digunakan untuk melatih model. Dapat berupa salah satu dari:
  • resnet-(18|34|50|101|152|200)
  • efficientnet-(b0|b1|b2|b3|b4|b5|b6|b7)
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:

  1. Untuk Model type, pilih Efficientnet-b4.
  2. Biarkan Pretrained checkpoint path kosong.
  3. Biarkan Label smoothing dan Weight Decay pada nilai defaultnya.

Setelan pekerjaan

Pada tab Setelan tugas:

  1. Masukkan ID Tugas yang unik (seperti "image_classification_example").
  2. Masukkan region yang tersedia (seperti "us-central1").
  3. Untuk memilih jenis mesin, pilih "CUSTOM" untuk scale tier. Bagian untuk menampilkan Spesifikasi cluster kustom.
    1. Untuk Jenis master, pilih complex_model_m.
    2. Untuk Jenis pekerja, pilih cloud_tpu. Jumlah pekerja ditetapkan secara default ke 1.

Klik Selesai untuk mengirimkan tugas pelatihan.

gcloud

  1. 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}"
    
  2. 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'

  3. 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

  1. 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).

  2. Di halaman Detail tugas, Anda dapat melihat progres umum tugas, atau mengklik Lihat log untuk melihat progresnya secara lebih mendetail.

  3. Jika tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.

  4. Pilih Deploy as new model, lalu masukkan nama model, seperti "algorithms_image_classification_model". Selanjutnya, klik Konfirmasi.

  5. 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.

  1. 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'
    
  2. 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.

  1. Download file artefak pelatihan:

    gcloud storage cp $JOB_DIR/artifacts/* .
    
  2. 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 bernama prediction_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))
    
  3. 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