Halaman ini menjelaskan cara memigrasikan deployment Rutinitas Prediksi Kustom (CPR) dari AI Platform ke Vertex AI.
Secara khusus, mengingat deployment CPR di AI Platform, halaman ini menunjukkan cara:
- Membuat container kustom yang sesuai untuk deployment di Vertex AI. Penampung kustom ini berfungsi seperti penampung kustom apa pun yang dibuat dengan API CPR di Vertex AI.
- Menjalankan dan uji container kustom secara lokal.
- Upload ke vertex_model_registry_name.
- Men-deploy model ke
endpoint
Vertex AI untuk menyalurkan prediksi online.
Sebelum memulai
Pastikan software berikut telah diinstal:
Dapatkan artefak model dan kode kustom dari CPR pada deployment AI Platform yang ingin Anda migrasikan ke Vertex AI.
Miliki bucket Cloud Storage untuk menyimpan artefak model.
Pastikan Anda telah mengaktifkan Vertex AI API di project.
Menyiapkan folder sumber untuk deployment Vertex AI
Buat folder lokal bernama
model_artifacts
, lalu salin artefak model dari CPR di deployment AI Platform. Artefak ini harus berupa artefak model yang sama dengan yang Anda tentukan dalamdeployment_uri
(atau--origin
jika Anda menggunakan gcloud) saat men-deploy CPR pada model AI Platform.Buat folder lokal bernama
cpr_src_dir
. Folder ini akan menyimpan paket distribusi sumber Anda,adapter.py
, danrequirements.txt
(dijelaskan di bawah) yang digunakan untuk mem-build container kustom untuk deployment di Vertex AI.Salin semua paket yang Anda berikan di
package_uris
saat men-deploy CPR di AI Platform, termasuk paket yang berisi classPredictor
.Buat file
adapter.py
yang berisi classAdapterPredictor
(ditentukan di bawah) dan tetapkanPREDICTION_CLASS
ke namaPredictor
Anda yang sepenuhnya memenuhi syarat. Nilai ini sama denganprediction_class
saat Anda men-deploy CPR di AI Platform.Adaptor menggabungkan CPR di antarmuka
Predictor
AI Platform sehingga kompatibel dengan CPR di antarmuka Vertex AI.import pydoc from google.cloud.aiplatform.utils import prediction_utils from google.cloud.aiplatform.prediction.predictor import Predictor # Fully qualified name of your CPR on CAIP Predictor class. PREDICTION_CLASS = "predictor.MyPredictor" class AdapterPredictor(Predictor): """Predictor implementation for adapting CPR on CAIP predictors.""" def __init__(self): return def load(self, artifacts_uri: str): """Loads the model artifact. Args: artifacts_uri (str): Required. The model artifacts path (may be local or on Cloud Storage). """ prediction_utils.download_model_artifacts(artifacts_uri) custom_class = pydoc.locate(PREDICTION_CLASS) self._predictor = custom_class.from_path(".") def predict(self, instances): """Performs prediction. Args: instances (Any): Required. The instance(s) used for performing prediction. Returns: Prediction results. """ return self._predictor.predict(**instances)
Buat file
requirements.txt
yang berisi dependensi model Anda, misalnya:# Required for model serving google-cloud-storage>=1.26.0,<2.0.0dev google-cloud-aiplatform[prediction]>=1.16.0 # ML dependencies numpy>=1.16.0 scikit-learn==0.20.2
Bagian pertama mencantumkan dependensi yang diperlukan untuk penyajian model.
Bagian kedua mencantumkan paket Machine Learning yang diperlukan untuk penyajian model (misalnya, scikit-learn, xgboost, dan TensorFlow). Pastikan untuk menginstal versi library yang sama seperti yang tercantum pada versi runtime yang Anda pilih saat sebelumnya men-deploy versi model.
Instal dependensi di lingkungan lokal Anda:
pip install -U --user -r cpr_src_dir/requirements.txt
Mengupload artefak model Anda ke Cloud Storage
Upload artefak model ke Cloud Storage:
gcloud storage cp model_artifacts/* gs://BUCKET_NAME/MODEL_ARTIFACT_DIR
Menyiapkan Artifact Registry
Artifact Registry digunakan untuk menyimpan dan mengelola image container Docker Anda.
Pastikan Anda telah mengaktifkan Artifacts Registry API di project Anda.
Buat repositori jika Anda belum memilikinya.
gcloud artifacts repositories create {REPOSITORY} \ --repository-format=docker \ --location={REGION}
Sebelum Anda dapat mengirim atau mengambil image, konfigurasikan Docker agar menggunakan Google Cloud CLI untuk mengautentikasi permintaan ke Artifact Registry.
gcloud auth configure-docker {REGION}-docker.pkg.dev
Membangun, menguji, dan men-deploy container kustom Anda
Skrip Python berikut menunjukkan cara membangun, menguji, dan men-deploy container kustom Anda menggunakan API di Vertex AI SDK. Pastikan untuk menetapkan variabel di bagian atas skrip.
import json
import logging
import os
from google.cloud import aiplatform
from google.cloud.aiplatform.prediction import LocalModel
from cpr_src_dir.adapter import AdapterPredictor
##########################################################################
# CONFIGURE THE FOLLOWING
##########################################################################
# We recommend that you choose the region closest to you.
REGION = …
# Your project ID.
PROJECT_ID = …
# Name of the Artifact Repository to create or use.
REPOSITORY = …
# Name of the container image that will be pushed.
IMAGE = …
# Cloud Storage bucket where your model artifacts will be stored.
BUKCET_NAME = …
# Directory within the bucket where your model artifacts are stored.
MODEL_ARTIFACT_DIR = …
# Your model's input instances.
INSTANCES = …
##########################################################################
# Build the CPR custom container
##########################################################################
local_model = LocalModel.build_cpr_model(
"cpr_src_dir",
f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
predictor=AdapterPredictor,
requirements_path="cpr_src_dir/requirements.txt",
extra_packages=["cpr_src_dir/my_custom_code-0.1.tar.gz"],
)
##########################################################################
# Run and test the custom container locally
##########################################################################
logging.basicConfig(level=logging.INFO)
local_endpoint =
local_model.deploy_to_local_endpoint(artifact_uri="model_artifacts")
local_endpoint.serve()
health_check_response = local_endpoint.run_health_check()
predict_response = local_endpoint.predict(
request=json.dumps({"instances": INSTANCES}),
headers={"Content-Type": "application/json"},
)
local_endpoint.stop()
print(predict_response, predict_response.content)
print(health_check_response, health_check_response.content)
local_endpoint.print_container_logs(show_all=True)
##########################################################################
# Upload and deploy to Vertex
##########################################################################
local_model.push_image()
model = aiplatform.Model.upload(\
local_model=local_model,
display_name=MODEL_DISPLAY_NAME,
artifact_uri=f"gs://{BUKCET_NAME}/{MODEL_ARTIFACT_DIR}",
)
endpoint = model.deploy(machine_type="n1-standard-4")
endpoint.predict(instances=INSTANCES)
Pelajari Vertex AI Prediction lebih lanjut.