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 ingin menggunakan penampung kustom untuk menyajikan prediksi, Anda tidak perlu mematuhi persyaratan di halaman ini, tetapi Anda tetap dapat menggunakannya sebagai pedoman.

Persyaratan khusus framework untuk mengekspor ke container 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 inginmendapatkan penjelasan dari Model yang menggunakan container bawaan TensorFlow untuk menyajikan prediksi, lalu membaca persyaratan tambahan untuk mengekspor model TensorFlow untuk Vertex Explainable AI.

Mengaktifkan btach 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 gcs 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 Model Torch 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 XGBoost untuk melatih model, Anda dapat mengekspor model terlatih dengan salah satu dari tiga cara berikut:

  • Gunakan metode save_model xgboost.Booster untuk mengekspor file bernama model.bst.
  • Gunakan library joblib untuk mengekspor file bernama model.joblib.
  • Gunakan modul pickle Python untuk mengekspor file bernama model.pkl.

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

Contoh dengan tab berikut menunjukkan cara melatih dan mengekspor model dengan ketiga cara tersebut:

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 scikit-learn untuk melatih model, Anda dapat mengekspornya dengan salah satu dari dua cara berikut:

  • Gunakan library joblib untuk mengekspor file bernama model.joblib.
  • Gunakan modul pickle Python untuk mengekspor file bernama model.pkl.

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 dengan tab berikut menunjukkan cara melatih dan mengekspor model dengan kedua cara tersebut:

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