Mengekspor artefak model untuk prediksi dan penjelasan

Vertex AI menawarkan container bawaan untuk menyajikan prediksi dan penjelasan dari model yang dilatih menggunakan framework machine learning (ML) berikut:

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Untuk menggunakan salah satu container bawaan ini, Anda harus menyimpan model sebagai satu atau beberapa artefak model yang sesuai dengan persyaratan container bawaan. Persyaratan ini berlaku terlepas dari apakah artefak model Anda dibuat di Vertex AI atau tidak.

Jika menggunakan penampung kustom untuk menayangkan prediksi, Anda tidak perlu mematuhi persyaratan di halaman ini, tetapi Anda masih dapat menggunakannya sebagai panduan.

Persyaratan khusus framework untuk mengekspor ke penampung bawaan

Bergantung pada framework ML yang ingin Anda gunakan untuk prediksi, Anda harus mengekspor artefak model dalam berbagai format. Bagian berikut ini menjelaskan format model yang dapat diterima untuk setiap framework ML.

TensorFlow

Jika Anda menggunakan TensorFlow untuk melatih model, ekspor model Anda sebagai direktori SavedModel TensorFlow.

Ada beberapa cara untuk mengekspor SavedModels dari kode pelatihan TensorFlow. Daftar berikut menjelaskan beberapa cara yang sesuai untuk berbagai API TensorFlow:

Untuk menampilkan prediksi menggunakan artefak ini, buat Model dengan container bawaan untuk prediksi yang cocok dengan versi TensorFlow yang Anda gunakan untuk pelatihan.

TensorFlow untuk Vertex Explainable AI

Jika Anda ingin mendapatkan penjelasan dari Model yang menggunakan container bawaan TensorFlow untuk menyajikan prediksi, baca persyaratan tambahan untuk mengekspor model TensorFlow untuk Vertex Explainable AI.

Mengaktifkan batch permintaan sisi server untuk TensorFlow

Jika Anda ingin mengaktifkan batch permintaan untuk Model yang menggunakan container bawaan TensorFlow untuk menyajikan prediksi, sertakan config/batching_parameters_config dalam direktori Cloud Storage yang sama dengan file saved_model.pb. Untuk mengonfigurasi file konfigurasi batch, lihat dokumentasi resmi TensorFlow.

PyTorch

Anda harus mengemas artefak model, termasuk pengendali default atau kustom dengan membuat file arsip menggunakan Torch model pengarsip. Image PyTorch bawaan mengharapkan arsip diberi nama model.mar, jadi pastikan Anda menetapkan nama model ke 'model'.

Untuk informasi tentang cara mengoptimalkan penggunaan, latensi, atau throughput memori model PyTorch yang disajikan dengan TorchServe, lihat panduan performa PyTorch.

XGBoost

Jika menggunakan container bawaan XGBoost untuk melatih model, Anda dapat mengekspor model terlatih dengan cara berikut:

Nama file artefak model Anda harus sama persis dengan salah satu opsi ini.

Contoh berikut menunjukkan cara melatih dan mengekspor model:

xgboost.Booster

import os

from google.cloud import storage
from sklearn import datasets
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.bst'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
bst.save_model(local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

joblib

import os

from google.cloud import storage
from sklearn import datasets
import joblib
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(bst, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

pickle

import os
import pickle

from google.cloud import storage
from sklearn import datasets
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(bst, model_file)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

Untuk menyajikan prediksi menggunakan artefak ini, buat Model dengan container bawaan untuk prediksi yang cocok dengan versi XGBoost yang Anda gunakan untuk pelatihan.

scikit-learn

Jika menggunakan model bawaan scikit-learn untuk melatih model, Anda dapat mengekspornya dengan cara berikut:

Nama file artefak model Anda harus sama persis dengan salah satu opsi ini. Anda dapat mengekspor estimator scikit-learn standar atau pipeline scikit-learn.

Contoh berikut menunjukkan cara melatih dan mengekspor model:

joblib

import os

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
import joblib

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(classifier, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

pickle

import os
import pickle

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(classifier, model_file)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

Untuk menyajikan prediksi menggunakan artefak ini, buat Model dengan container bawaan untuk prediksi yang cocok dengan versi scikit-learn yang Anda gunakan untuk pelatihan.

Langkah selanjutnya