Memilih jenis mesin untuk prediksi online

Prediksi AI Platform mengalokasikan node untuk menangani permintaan prediksi online yang dikirim ke versi model. Saat men-deploy versi model, Anda dapat menyesuaikan jenis mesin virtual yang digunakan AI Platform Prediction untuk node tersebut.

Jenis mesin berbeda dalam beberapa hal:

Dengan memilih jenis mesin dengan resource komputasi lebih banyak, Anda dapat menyajikan prediksi dengan latensi lebih rendah atau menangani lebih banyak permintaan prediksi secara bersamaan.

Jenis mesin yang tersedia

Jenis mesin Compute Engine (N1) dan jenis mesin mls1-c1-m2 umumnya tersedia untuk prediksi online. Jenis mesin mls1-c4-m2 tersedia dalam versi beta.

Tabel berikut membandingkan jenis mesin yang tersedia:

Nama Ketersediaan vCPUs Memori (GB) Mendukung GPU? Dukungan framework ML Ukuran model maksimum
mls1-c1-m2 (default pada endpoint global) Tersedia secara umum 1 2 Tidak TensorFlow, XGBoost, scikit-learn (termasuk pipeline dengan kode kustom), rutinitas prediksi kustom 500 MB
mls1-c4-m2 Beta 4 2 Tidak TensorFlow, XGBoost, scikit-learn (termasuk pipeline dengan kode kustom), rutinitas prediksi kustom 500 MB
n1-standard-2 (default di endpoint regional) Tersedia secara umum 2 7.5 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-standard-4 Tersedia secara umum 4 15 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-standard-8 Tersedia secara umum 8 30 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-standard-16 Tersedia secara umum 16 60 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-standard-32 Tersedia secara umum 32 120 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highmem-2 Tersedia secara umum 2 13 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highmem-4 Tersedia secara umum 4 26 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highmem-8 Tersedia secara umum 8 52 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highmem-16 Tersedia secara umum 16 104 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highmem-32 Tersedia secara umum 32 208 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highcpu-2 Tersedia secara umum 2 1.8 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highcpu-4 Tersedia secara umum 4 3.6 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highcpu-8 Tersedia secara umum 8 7.2 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highcpu-16 Tersedia secara umum 16 14.4 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB
n1-highcpu-32 Tersedia secara umum 32 28.8 Ya TensorFlow, XGBoost, dan scikit-learn 10 GB

Pelajari harga untuk setiap jenis mesin. Baca lebih lanjut spesifikasi mendetail jenis mesin Compute Engine (N1) di dokumentasi Compute Engine.

Menentukan jenis mesin

Anda dapat menentukan pilihan jenis mesin saat membuat versi model. Jika Anda tidak menentukan jenis mesin, versi model Anda akan ditetapkan secara default untuk menggunakan n1-standard-2 jika Anda menggunakan endpoint regional dan mls1-c1-m2 jika Anda menggunakan endpoint global.

Petunjuk berikut menyoroti cara menentukan jenis mesin saat Anda membuat versi model. Mereka menggunakan jenis mesin n1-standard-4 sebagai contoh. Untuk mempelajari proses lengkap pembuatan versi model, baca panduan men-deploy model.

Konsol Google Cloud

Pada halaman Create version, buka menu drop-down Machine type, lalu pilih Standard > n1-standard-4.

gcloud

Setelah mengupload artefak model ke Cloud Storage dan membuat resource model, Anda dapat membuat versi model yang menggunakan jenis mesin n1-standard-4:

gcloud ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework ML_FRAMEWORK_NAME \
  --region us-central1 \
  --machine-type n1-standard-4

Python

Contoh ini menggunakan Library Klien Google API untuk Python. Sebelum menjalankan contoh kode berikut, Anda harus menyiapkan autentikasi.

Setelah Anda mengupload artefak model ke Cloud Storage dan membuat resource model, kirim permintaan ke metode projects.models.versions.create model Anda dan tentukan kolom machineType dalam isi permintaan:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

Menggunakan GPU untuk prediksi online

Untuk beberapa konfigurasi, Anda dapat secara opsional menambahkan GPU untuk mempercepat setiap node prediksi. Untuk menggunakan GPU, Anda harus memperhitungkan beberapa persyaratan:

  • Anda hanya dapat menggunakan GPU dengan jenis mesin Compute Engine (N1). Jenis mesin lama (MLS1) tidak mendukung GPU.
  • Anda hanya dapat menggunakan GPU saat men-deploy TensorFlow SavedModel. Anda tidak dapat menggunakan GPU untuk model scikit-learn atau XGBoost.
  • Ketersediaan setiap jenis GPU bervariasi, bergantung pada region yang Anda gunakan untuk model. Pelajari jenis GPU apa yang tersedia di region mana.
  • Anda hanya dapat menggunakan satu jenis GPU untuk versi model Anda, dan ada batasan jumlah GPU yang dapat ditambahkan, bergantung pada jenis mesin yang Anda gunakan. Tabel berikut menjelaskan batasan ini.

Tabel berikut menunjukkan GPU yang tersedia untuk prediksi online dan jumlah dari setiap jenis GPU yang dapat Anda gunakan dengan setiap jenis mesin Compute Engine:

Jumlah GPU yang valid untuk setiap jenis mesin
Machine type NVIDIA Tesla K80 NVIDIA Tesla P4 NVIDIA Tesla P100 NVIDIA Tesla T4 NVIDIA Tesla V100
n1-standard-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highmem-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highcpu-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 4, 8 2, 4 2, 4 2, 4 4, 8

GPU bersifat opsional dan dikenai biaya tambahan.

Menentukan GPU

Tentukan GPU saat Anda membuat versi model. AI Platform Prediction mengalokasikan jumlah dan jenis GPU yang Anda tentukan untuk setiap node prediksi. Anda dapat menskalakan secara otomatis (pratinjau) atau menskalakan node prediksi secara manual (GA), tetapi jumlah GPU yang digunakan setiap node tetap ketika Anda membuat versi model. Kecuali jika Anda memiliki kasus penggunaan lanjutan, sebaiknya konfigurasi satu GPU pada setiap node prediksi; dengan kata lain, tetapkan jumlah akselerator ke 1.

Petunjuk berikut menunjukkan cara menentukan GPU untuk prediksi online dengan membuat versi model yang berjalan di setidaknya dua node prediksi secara sekaligus. Setiap node menggunakan jenis mesin n1-standard-4 dan satu GPU NVIDIA Tesla T4.

Contoh ini mengasumsikan bahwa Anda telah mengupload TensorFlowSavedModel ke Cloud Storage dan membuat resource model di region yang mendukung GPU.

Konsol Google Cloud

Ikuti panduan untuk membuat versi model. Di halaman Create version, tentukan opsi berikut:

  1. Pada menu drop-down Scaling, pilih Autoscaling.
  2. Di kolom Minimum number of node, masukkan 2.
  3. Pada menu drop-down Machine type, pilih Standard > n1-standard-4.
  4. Pada menu drop-down Accelerator type, pilih NVIDIA_TESLA_T4.
  5. Di menu drop-down Jumlah akselerator, pilih 1.

gcloud

Gunakan gcloud CLI untuk membuat versi model. Dalam contoh ini, versi tersebut berjalan pada node prediksi n1-standard-4 yang masing-masing menggunakan satu GPU NVIDIA Tesla T4. AI Platform Prediction secara otomatis menskalakan jumlah node prediksi menjadi angka antara 2 hingga 4, bergantung pada penggunaan GPU pada waktu tertentu. Contoh ini menggunakan endpoint regional us-central1:

gcloud beta ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --min-nodes 2 \
  --max-nodes 4 \
  --metric-targets gpu-duty-cycle=60

Perhatikan bahwa nama akselerator ditentukan dalam huruf kecil dengan tanda hubung di antara kata.

Python

Contoh ini menggunakan Library Klien Google API untuk Python. Sebelum menjalankan contoh kode berikut, Anda harus menyiapkan autentikasi.

Contoh ini menggunakan endpoint regionalus-central1.

Kirim permintaan ke metode projects.models.versions.create model Anda dan tentukan kolom machineType, acceleratorConfig, dan manualScaling dalam isi permintaan Anda:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'autoScaling': {
      'minNodes': 2,
      'maxNodes': 4,
      'metrics': [
        {
          'name': 'GPU_DUTY_CYCLE',
          'target': 60
        }
      ]
    }
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

Perhatikan bahwa nama akselerator ditentukan dalam huruf besar dengan garis bawah di antara kata.

Perbedaan berbagai jenis mesin

Selain menyediakan berbagai jumlah resource komputasi, jenis mesin juga bervariasi dalam dukungannya untuk fitur AI Platform Prediction tertentu. Tabel berikut memberikan ringkasan perbedaan antara jenis mesin Compute Engine (N1) dan jenis mesin lama (MLS1):

Jenis mesin Compute Engine (N1) Jenis mesin (MLS1) lama
Region Semua region endpoint regional Semua region endpoint global
Jenis artefak ML
Versi runtime 1.11 atau yang lebih baru Semua versi runtime AI Platform yang tersedia
Dukungan container kustom Ya Tidak
Ukuran model maksimum 10 GB 500 MB
Penskalaan otomatis Node minimum = 1 Node minimum = 0
Penskalaan manual Dapat memperbarui jumlah node Tidak dapat memperbarui jumlah node setelah membuat versi model
Dukungan GPU Ya (khusus TensorFlow) Tidak
Dukungan AI Explanations Ya (khusus TensorFlow) Tidak
Dukungan Kontrol Layanan VPC Ya Tidak
Cakupan SLA untuk jenis mesin yang tersedia secara umum Ya, dalam beberapa kasus Ya

Bagian berikut memberikan penjelasan mendetail tentang perbedaan antara berbagai jenis mesin.

Ketersediaan regional

Jenis mesin Compute Engine (N1) tersedia saat Anda men-deploy model di endpoint regional. Jika menggunakan jenis mesin Compute Engine (N1), Anda tidak dapat men-deploy model ke endpoint global.

Saat Anda menskalakan versi model yang menggunakan jenis mesin Compute Engine (N1) ke dua node prediksi atau lebih, node tersebut berjalan di beberapa zona dalam region yang sama. Hal ini memastikan ketersediaan berkelanjutan jika terjadi pemadaman layanan di salah satu zona. Pelajari lebih lanjut di bagian penskalaan pada dokumen ini.

Perlu diperhatikan bahwa ketersediaan GPU untuk jenis mesin Compute Engine (N1) juga bervariasi menurut region.

Jenis mesin (MLS1) lama tersedia di endpoint global di banyak region. Jenis mesin lama (MLS1) tidak tersedia di endpoint regional.

Dukungan prediksi batch

Versi model yang menggunakan jenis mesin mls1-c1-m2 mendukung prediksi batch. Versi model yang menggunakan jenis mesin lainnya tidak mendukung prediksi batch.

Dukungan framework ML

Jika menggunakan salah satu jenis mesin Compute Engine (N1), Anda dapat membuat versi model dengan semua artefak model yang dijelaskan dalam Mengekspor panduan model prediksi, kecuali untuk dua:

Untuk jenis mesin lama (MLS1), Anda dapat menggunakan semua jenis artefak model yang didukung Prediction AI Platform, termasuk pipeline scikit-learn dengan kode kustom atau rutinitas prediksi kustom.

Dukungan versi runtime

Jika menggunakan jenis mesin Compute Engine (N1), Anda harus menggunakan runtime versi 1.11 atau yang lebih baru untuk versi model Anda.

Jika menggunakan jenis mesin (MLS1) lama, Anda dapat menggunakan versi runtime AI Platform yang tersedia.

Dukungan container kustom

Untuk menggunakan container kustom guna menyajikan prediksi online, Anda harus menggunakan jenis mesin Compute Engine (N1).

Ukuran model maksimum

Artefak model yang Anda berikan saat membuat versi model harus memiliki total ukuran file kurang dari 500 MB jika Anda menggunakan jenis mesin (MLS1) lama. Total ukuran file dapat mencapai 10 GB jika Anda menggunakan jenis mesin Compute Engine (N1).

Prediksi logging

Untuk jenis mesin Compute Engine (N1), logging konsol sedang dalam tahap pratinjau. Untuk jenis mesin (MLS1) lama, logging konsol tersedia secara umum.

Menskalakan node prediksi

Penskalaan otomatis dan penskalaan manual node prediksi memiliki batasan yang berbeda, bergantung pada apakah Anda menggunakan jenis mesin Compute Engine (N1) atau jenis mesin lama (MLS1).

Penskalaan otomatis

Jika Anda menggunakan jenis mesin Compute Engine (N1) dengan penskalaan otomatis, versi model Anda harus selalu memiliki setidaknya satu node yang berjalan. Dengan kata lain, kolom autoScaling.minNodes versi ditetapkan secara default ke 1 dan tidak boleh kurang dari 1. Jika Anda menetapkan autoScaling.minNodes ke 2 atau lebih besar, node prediksi akan berjalan di beberapa zona dalam region yang sama. Hal ini memastikan ketersediaan terus-menerus jika terjadi pemadaman layanan di salah satu zona.

Perlu diperhatikan bahwa jika Anda mengalokasikan lebih banyak vCPU atau RAM dari yang dibutuhkan oleh model machine learning, penskalaan otomatis mungkin tidak akan berfungsi dengan baik. Hal ini dapat menyebabkan masalah pada performa model. Lakukan eksperimen dengan menggunakan berbagai jenis mesin untuk model guna memastikan Anda tidak menyediakan terlalu banyak resource komputasi.

Jika Anda menggunakan jenis mesin (MLS1) lama, versi model Anda dapat diskalakan ke nol node saat tidak menerima traffic: autoScaling.minNodes dapat ditetapkan ke 0, dan ditetapkan ke 0 secara default. Penskalaan ke nol dapat mengurangi biaya saat versi model Anda tidak menerima permintaan prediksi. Namun, hal ini juga dapat menyebabkan latensi atau error selama periode apa pun saat AI Platform Prediction mengalokasikan node baru untuk menangani permintaan setelah periode dengan node nol. Pelajari lebih lanjut cara melakukan penskalaan hingga nol.

Penskalaan manual

Jika menggunakan jenis mesin Compute Engine (N1) dengan penskalaan manual, Anda dapat memperbarui jumlah node prediksi yang berjalan kapan saja menggunakan metode API projects.models.versions.patch. Jika Anda menetapkan kolom manualScaling.nodes ke 2 atau lebih, node prediksi akan dijalankan di beberapa zona dalam region yang sama. Hal ini memastikan ketersediaan terus-menerus jika terjadi pemadaman layanan di salah satu zona.

Jika menggunakan jenis mesin (MLS1) lama dengan penskalaan manual, Anda tidak dapat memperbarui jumlah node prediksi setelah membuat versi model. Jika ingin mengubah jumlah node, Anda harus menghapus versi dan membuat yang baru.

Dukungan Kontrol Layanan VPC

Jika Anda menggunakan Kontrol Layanan VPC untuk melindungi AI Platform Prediction, Anda tidak dapat membuat versi yang menggunakan jenis mesin (MLS1) lama. Anda harus menggunakan jenis mesin Compute Engine (N1).