Memilih jenis mesin untuk prediksi online

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

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 vCPU Memori (GB) Mendukung GPU? Dukungan framework ML Ukuran model maksimum
mls1-c1-m2 (default di 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 selengkapnya tentang spesifikasi mendetail dari 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 secara default 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. Contoh ini menggunakan jenis mesin n1-standard-4. Untuk mempelajari proses lengkap pembuatan versi model, baca panduan untuk men-deploy model.

Konsol Google Cloud

Di halaman Create version, buka menu drop-down Machine type dan 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 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 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': '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 menambahkan GPU secara opsional 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, 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 setiap jenis GPU yang dapat Anda gunakan dengan setiap jenis mesin Compute Engine:

Jumlah GPU yang valid untuk setiap jenis mesin
Jenis mesin 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 secara manual (GA) node prediksi, tetapi jumlah GPU yang digunakan setiap node bersifat tetap saat Anda membuat versi model. Kecuali jika Anda memiliki kasus penggunaan lanjutan, sebaiknya konfigurasikan satu GPU di 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 kapan saja. Setiap node menggunakan jenis mesin n1-standard-4 dan satu GPU NVIDIA Tesla T4.

Contoh ini mengasumsikan bahwa Anda telah mengupload TensorFlow SavedModel 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. Di menu drop-down Scaling, pilih Auto scaling.
  2. Di kolom Jumlah node minimum, masukkan 2.
  3. Di menu drop-down Machine type, pilih Standard > n1-standard-4.
  4. Di menu drop-down Accelerator type, pilih NVIDIA_TESLA_T4.
  5. Di menu drop-down Accelerator count, pilih 1.

gcloud

Gunakan gcloud CLI untuk membuat versi model. Dalam contoh ini, versi tersebut berjalan di node prediksi n1-standard-4 yang masing-masing menggunakan satu GPU NVIDIA Tesla T4. AI Platform Prediction otomatis menskalakan jumlah node prediksi menjadi antara 2 dan 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 pengakselerasi 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-kata.

Perbedaan antara jenis mesin

Selain menyediakan jumlah resource komputasi yang berbeda, jenis mesin juga berbeda-beda 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 lama (MLS1)
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 jenis mesin.

Ketersediaan regional

Jenis mesin Compute Engine (N1) tersedia saat Anda men-deploy model di endpoint regional. Saat 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 akan 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 dalam dokumen ini.

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

Jenis mesin lama (MLS1) 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 lain 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 Panduan mengekspor model prediksi, kecuali dua:

Untuk jenis mesin lama (MLS1), Anda dapat menggunakan jenis artefak model apa pun yang didukung AI Platform Prediction, 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.

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

Dukungan container kustom

Untuk menggunakan penampung kustom guna menayangkan 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 lama (MLS1). Total ukuran file dapat mencapai 10 GB jika Anda menggunakan jenis mesin Compute Engine (N1).

Mencatat prediksi

Untuk jenis mesin Compute Engine (N1), logging konsol masih dalam pratinjau. Untuk jenis mesin lama (MLS1), logging konsol umumnya tersedia.

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, node prediksi akan berjalan di beberapa zona dalam region yang sama. Hal ini memastikan ketersediaan berkelanjutan jika terjadi pemadaman layanan di salah satu zona.

Perhatikan bahwa jika Anda mengalokasikan lebih banyak vCPU atau RAM daripada yang diperlukan model machine learning, penskalaan otomatis mungkin tidak berfungsi dengan benar. Hal ini dapat menyebabkan masalah pada performa model. Lakukan eksperimen dengan menggunakan berbagai jenis mesin untuk model Anda guna memastikan Anda tidak menyediakan terlalu banyak resource komputasi.

Jika Anda menggunakan jenis mesin lama (MLS1), versi model Anda dapat diskalakan ke nol node saat tidak menerima traffic: autoScaling.minNodes dapat disetel ke 0, dan disetel 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 tanpa node. Pelajari lebih lanjut cara menskalakan ke 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 berjalan di beberapa zona dalam region yang sama. Hal ini memastikan ketersediaan berkelanjutan jika terjadi pemadaman layanan di salah satu zona.

Jika menggunakan jenis mesin lama (MLS1) 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 versi baru.

Dukungan Kontrol Layanan VPC

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