Pelatihan dengan algoritma bawaan di Pelatihan AI Platform memungkinkan Anda mengirim set data dan melatih model tanpa menulis kode pelatihan apa pun. Halaman ini menjelaskan cara kerja algoritma klasifikasi gambar bawaan, dan cara menggunakannya.
Ringkasan
Algoritma klasifikasi image bawaan menggunakan set data pelatihan dan validasi Anda untuk melatih model secara terus menerus, lalu menghasilkanSavedModel paling akurat yang dihasilkan selama tugas pelatihan. Anda juga dapat menggunakan penyesuaian hyperparameter untuk mencapai akurasi model terbaik. SaveModel yang diekspor dapat digunakan secara langsung untuk prediksi, baik secara lokal maupun di-deploy ke AI Platform Prediction untuk layanan produksi.
Batasan
Algoritma bawaan gambar mendukung pelatihan dengan CPU tunggal, GPU, atau TPU. SaveModel yang dihasilkan kompatibel dengan penyaluran di CPU dan GPU.
Fitur berikut tidak didukung untuk pelatihan dengan algoritma klasifikasi gambar bawaan:
- Pelatihan terdistribusi. Untuk menjalankan tugas pelatihan terdistribusi TensorFlow pada Pelatihan AI Platform, Anda harus membuat aplikasi pelatihan.
- Pelatihan multi-GPU. Algoritma bawaan hanya menggunakan satu GPU pada satu waktu. Untuk memanfaatkan pelatihan dengan beberapa GPU di satu mesin secara maksimal, Anda harus membuat aplikasi pelatihan. Temukan informasi selengkapnya tentang jenis mesin.
Jenis mesin yang didukung
Tingkat skala dan jenis mesin Pelatihan AI Platform berikut didukung:
- Tingkat skala
BASIC
- Tingkat skala
BASIC_TPU
- Tingkat skala
CUSTOM
dengan salah satu jenis mesin Compute Engine yang didukung oleh AI Platform Training. - Tingkat skala
CUSTOM
dengan salah satu jenis mesin lama berikut:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
complex_model_m_gpu
complex_model_l_gpu
complex_model_m_p100
complex_model_m_v100
complex_model_l_v100
TPU_V2
(8 core)
Otorisasi Cloud TPU untuk mengakses project Anda
Memformat data input untuk pelatihan
Algoritma klasifikasi gambar bawaan mengharuskan data input Anda diformat
sebagai tf.Examples
, yang disimpan dalam file TFRecord. Struktur data tf.Example
dan
format file TFRecord dirancang untuk pembacaan data yang efisien dengan TensorFlow.
Format TFRecord adalah format sederhana untuk menyimpan urutan catatan biner.
Dalam hal ini, semua kumpulan data berisi representasi biner dari gambar. Setiap
gambar, beserta label class-nya, direpresentasikan sebagai tf.Example
. Anda dapat
menyimpan banyak tf.Example
ke satu file TFRecord. Anda juga dapat melakukan sharding set data berukuran besar di antara beberapa file TFRecord.
Pelajari TFRecord dan tf.Example
lebih lanjut.
Mengonversi gambar Anda ke TFRecords
TensorFlow menyediakan skrip yang dapat Anda gunakan untuk mengonversi gambar dari format JPEG ke TFRecord.
Anda dapat menggunakan skrip jika:
- Anda menyimpan gambar di Cloud Storage.
Anda memiliki file CSV dengan jalur ke gambar di Cloud Storage, dan label yang sesuai. Contoh:
gs://cloud-ml-data/img/flower_photos/daisy/754296579_30a9ae018c_n.jpg,daisy gs://cloud-ml-data/img/flower_photos/dandelion/18089878729_907ed2c7cd_m.jpg,dandelion
Anda menyimpan file CSV ini di Cloud Storage.
Contoh berikut menunjukkan cara menjalankan skrip:
Download skrip:
curl https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/jpeg_to_tf_record.py > ./jpeg_to_tf_record.py
Jika Anda belum melakukannya, tetapkan variabel untuk project ID dan nama bucket:
PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME="YOUR_BUCKET_NAME"
Buat daftar semua label yang mungkin untuk set data Anda dalam file sementara:
cat << EOF > /tmp/labels.txt daisy dandelion roses sunflowers tulips EOF
Jalankan skrip menggunakan data bunga dari bucket
cloud-ml-data
publik dan daftar label Anda:python -m jpeg_to_tf_record.py \ --train_csv gs://cloud-ml-data/img/flower_photos/train_set.csv \ --validation_csv gs://cloud-ml-data/img/flower_photos/eval_set.csv \ --labels_file /tmp/labels.txt \ --project_id $PROJECT_ID \ --output_dir gs://$BUCKET_NAME/flowers_as_tf_record
Memeriksa izin bucket Cloud Storage
Untuk menyimpan data Anda, gunakan bucket Cloud Storage di project Google Cloud yang sama dengan yang Anda gunakan untuk menjalankan tugas Pelatihan AI Platform. Jika tidak, berikan AI Platform akses ke bucket Cloud Storage tempat data Anda disimpan.
Format input yang diperlukan
Untuk berlatih dengan algoritma klasifikasi gambar bawaan, data gambar Anda harus disusun sebagai tf.Example
yang mencakup kolom berikut:
image/encoded
adalah string gambar raw.image/class/label
adalah label bilangan bulat tunggal untuk gambar yang sesuai. Beberapa label per instance tidak didukung.Kumpulan label bilangan bulat yang digunakan untuk set data Anda harus berupa urutan berurutan yang dimulai dari
1
. Misalnya, jika set data Anda memiliki lima class, setiap label harus berupa bilangan bulat dalam interval[1, 5]
.
Contoh:
{
'image/encoded': '<encoded image data>',
'image/class/label': 2
}
Mendapatkan SaveModel terbaik sebagai output
Setelah tugas pelatihan selesai, Pelatihan AI Platform menulis TensorFlow TersimpanModel ke bucket Cloud Storage yang Anda tentukan sebagai jobDir
saat mengirimkan tugas. SaveModel ditulis ke jobDir/model
. Misalnya, jika Anda
mengirimkan tugas ke gs://your-bucket-name/your-job-dir
, AI Platform Training akan menulis
SavedModel ke gs://your-bucket-name/your-job-dir/model
.
Jika Anda mengaktifkan penyesuaian hyperparameter, Pelatihan AI Platform akan menampilkan TensorFlow SavedModel dengan akurasi tertinggi yang dicapai selama proses pelatihan. Misalnya, jika Anda mengirimkan tugas pelatihan dengan 2.500 langkah pelatihan, dan akurasinya mencapai tertinggi pada 2.000 langkah, Anda akan mendapatkan TensorFlowSavedModel yang disimpan dari titik tertentu tersebut.
Setiap uji coba Pelatihan AI Platform menulis TensorFlowSavedModel dengan akurasi tertinggi ke direktorinya sendiri dalam bucket Cloud Storage Anda. Contoh,
gs://your-bucket-name/your-job-dir/model/trial_{trial_id}
.
Tanda tangan SaveModel output adalah:
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['image_bytes'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: Placeholder:0
inputs['key'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: key:0
The given SavedModel SignatureDef contains the following output(s):
outputs['classes'] tensor_info:
dtype: DT_INT64
shape: (-1)
name: ArgMax:0
outputs['key'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: Identity:0
outputs['probabilities'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 1000)
name: softmax_tensor:0
Method name is: tensorflow/serving/predict
Input:
image_bytes
: Byte gambar mentah (tidak didekode). Ini sama denganimage/encoded
yang disimpan di tf.Example.key
: ID nilai string dari input prediksi. Nilai ini diteruskan ke outputkey
. Dalam prediksi batch, hal ini membantu memetakan output prediksi ke input.
Output:
classes
: Label class (bilangan bulat) yang diprediksi, yang merupakan label dengan probabilitas tertinggi.key
: Tombol output.probabilities
:probability
(antara 0 dan 1) untuk setiapclass
(mulai dari 0 hingganum_classes
).
Berikut adalah contoh input dan output prediksi:
prediction_input: {
'image_bytes': 'some_raw_image_bytes',
'key': ['test_key'])
}
prediction_output: {
'probabilities': [[0.1, 0.3, 0.6]],
'classes': [2],
'key': ['test_key'],
}
Contoh konfigurasi
Jika mengirimkan tugas menggunakan gcloud
, Anda harus membuat file config.yaml
untuk spesifikasi jenis mesin dan hyperparameter. Jika menggunakan
Konsol Google Cloud, Anda tidak perlu membuat file ini. Pelajari cara mengirimkan tugas pelatihan.
Contoh file config.yaml
berikut menunjukkan cara mengalokasikan resource TPU untuk tugas pelatihan Anda:
cat << EOF > config.yaml
trainingInput:
# Use a cluster with many workers and a few parameter servers.
scaleTier: CUSTOM
masterType: n1-highmem-16
masterConfig:
imageUri: gcr.io/cloud-ml-algos/image_classification:latest
workerType: cloud_tpu
workerConfig:
imageUri: gcr.io/cloud-ml-algos/image_classification:latest
acceleratorConfig:
type: TPU_V2
count: 8
workerCount: 1
EOF
Selanjutnya, gunakan file config.yaml
untuk mengirimkan tugas pelatihan.
Konfigurasi penyesuaian hyperparameter
Untuk menggunakan penyesuaian hyperparameter, sertakan konfigurasi penyesuaian hyperparameter dalam file config.yaml
yang sama dengan konfigurasi mesin Anda.
Anda dapat menemukan penjelasan singkat tentang setiap hyperparameter dalam Google Cloud Console, dan penjelasan yang lebih komprehensif di referensi untuk algoritma klasifikasi image bawaan.
Contoh file config.yaml
berikut menunjukkan cara mengalokasikan resource TPU untuk tugas pelatihan Anda, dan menyertakan konfigurasi penyesuaian hyperparameter:
cat << EOF > config.yaml
trainingInput:
# Use a cluster with many workers and a few parameter servers.
scaleTier: CUSTOM
masterType: n1-highmem-16
masterConfig:
imageUri: gcr.io/cloud-ml-algos/image_classification:latest
workerType: cloud_tpu
workerConfig:
imageUri: gcr.io/cloud-ml-algos/image_classification:latest
tpuTfVersion: 1.14
acceleratorConfig:
type: TPU_V2
count: 8
workerCount: 1
# The following are hyperparameter configs.
hyperparameters:
goal: MAXIMIZE
hyperparameterMetricTag: top_1_accuracy
maxTrials: 6
maxParallelTrials: 3
enableTrialEarlyStopping: True
params:
- parameterName: initial_learning_rate
type: DOUBLE
minValue: 0.001
maxValue: 0.2
scaleType: UNIT_LOG_SCALE
EOF
Mengirim tugas pelatihan klasifikasi gambar
Bagian ini menjelaskan cara mengirimkan tugas pelatihan menggunakan algoritma klasifikasi gambar bawaan.
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.
Di halaman Create a new training job, pilih imageClassification, lalu klik Next.
Memilih data pelatihan dan validasi Anda
Di kotak drop-down pada bagian Data pelatihan, tentukan apakah Anda menggunakan satu file atau beberapa file:
- Untuk satu file, biarkan "Use single file in a GCS bucket" dipilih.
- Untuk beberapa file, pilih "Gunakan beberapa file yang disimpan di satu direktori Cloud Storage".
Untuk Jalur direktori, klik Jelajahi. Di panel kanan, klik nama bucket tempat Anda mengupload data pelatihan, lalu buka file Anda.
Jika Anda memilih beberapa file, tempatkan karakter pengganti di Nama karakter pengganti. "Complete GCS path" akan ditampilkan di bawah untuk membantu Anda mengonfirmasi bahwa jalur tersebut sudah benar.
Di kotak drop-down pada bagian Validation data, tentukan apakah Anda menggunakan satu file atau beberapa file:
- Untuk satu file, biarkan "Use single file in a GCS bucket" dipilih.
- Untuk beberapa file, pilih "Gunakan beberapa file yang disimpan di satu direktori Cloud Storage".
Untuk Jalur direktori, klik Jelajahi. Di panel kanan, klik nama bucket tempat Anda mengupload data pelatihan, lalu buka file Anda.
Jika Anda memilih beberapa file, tempatkan karakter pengganti di Nama karakter pengganti. "Complete GCS path" akan ditampilkan di bawah untuk membantu Anda mengonfirmasi bahwa jalur tersebut sudah benar.
Di Direktori Output, masukkan jalur ke bucket Cloud Storage tempat Anda ingin AI Platform Training menyimpan output dari tugas pelatihan Anda. Anda dapat mengisi jalur bucket Cloud Storage secara langsung, atau mengklik tombol Browse untuk memilihnya.
Agar semuanya tetap teratur, buat direktori baru di dalam bucket Cloud Storage untuk tugas pelatihan ini. Anda dapat melakukannya di dalam panel Browse.
Klik Next.
Menetapkan argumen algoritma
Setiap argumen khusus algoritme menampilkan nilai default untuk tugas pelatihan tanpa penyesuaian hyperparameter. Jika mengaktifkan penyesuaian hyperparameter pada argumen algoritma, Anda harus menentukan nilai minimum dan maksimumnya.
Untuk mempelajari semua argumen algoritma lebih lanjut, ikuti link di Konsol Google Cloud dan lihat referensi klasifikasi gambar bawaan untuk mengetahui detail lebih lanjut.
Mengirimkan tugas
Pada tab Job settings:
- Masukkan ID Pekerjaan yang unik.
- Masukkan region yang tersedia (seperti "us-central1").
- Untuk memilih jenis mesin, pilih "KHUSUS" untuk tingkat skala.
Bagian untuk menyediakan tampilan Spesifikasi cluster kustom
Anda.
- Pilih jenis mesin yang tersedia untuk Master type.
- Jika Anda ingin menggunakan TPU, tetapkan Jenis pekerja ke cloud_tpu. Jumlah pekerja ditetapkan secara default ke 1.
Klik Selesai untuk mengirim tugas pelatihan.
gcloud
Tetapkan variabel lingkungan untuk tugas Anda:
PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME="YOUR_BUCKET_NAME" # Specify the same region where your data is stored REGION="YOUR_REGION" gcloud config set project $PROJECT_ID gcloud config set compute/region $REGION # Set Cloud Storage paths to your training and validation data # Include a wildcard if you select multiple files. TRAINING_DATA_PATH="gs://${BUCKET_NAME}/YOUR_DATA_DIRECTORY/train-*.tfrecord" VALIDATION_DATA_PATH="gs://${BUCKET_NAME}/YOUR_DATA_DIRECTORY/eval-*.tfrecord" # Specify the Docker container for your built-in algorithm selection IMAGE_URI="gcr.io/cloud-ml-algos/image_classification:latest" # Variables for constructing descriptive names for JOB_ID and JOB_DIR DATASET_NAME="flowers" ALGORITHM="image_classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}" DATE="$(date '+%Y%m%d_%H%M%S')" # Specify an ID for this job JOB_ID="${MODEL_NAME}_${DATE}" # Specify the directory where you want your training outputs to be stored JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${JOB_ID}"
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
Langkah selanjutnya
- Lihat referensi klasifikasi gambar bawaan untuk mempelajari semua parameter yang berbeda.