Rutinitas inferensi kustom

Rutinitas inferensi kustom memungkinkan Anda membuat container kustom dengan kode prapemrosesan dan pascapemrosesan, tanpa perlu menangani detail penyiapan server HTTP atau membuat container dari awal. Anda dapat menggunakan pra-pemrosesan untuk menormalisasi dan mengubah input atau melakukan panggilan ke layanan eksternal untuk mendapatkan data tambahan, dan menggunakan pasca-pemrosesan untuk memformat inferensi model atau menjalankan logika bisnis.

Diagram berikut menggambarkan alur kerja pengguna dengan dan tanpa rutinitas inferensi kustom.

Perbedaan utamanya adalah:

  • Anda tidak perlu menulis server model atau Dockerfile. Server model, yang merupakan server HTTP yang menghosting model, disediakan untuk Anda.

  • Anda dapat men-deploy dan men-debug model secara lokal, sehingga mempercepat siklus iterasi selama pengembangan.

Membangun dan men-deploy container kustom

Bagian ini menjelaskan cara menggunakan CPR untuk mem-build container kustom dengan logika prapemrosesan dan pascapemrosesan, serta men-deploy ke endpoint lokal dan online.

Penyiapan

Anda harus menginstal Vertex AI SDK untuk Python dan Docker di lingkungan Anda.

Menulis antarmuka inferensi Predictor kustom

Terapkan antarmuka Predictor

Misalnya, lihat Penerapan Predictor Sklearn.

Menulis Handler kustom (opsional)

Pengendali kustom memiliki akses ke objek permintaan mentah, sehingga berguna dalam kasus yang jarang terjadi saat Anda perlu menyesuaikan logika terkait server web, seperti mendukung header permintaan dan respons tambahan atau melakukan deserialisasi permintaan inferensi berformat non-JSON.

Berikut adalah contoh notebook yang mengimplementasikan Predictor dan Handler.

Meskipun tidak diperlukan, untuk pengaturan dan penggunaan kembali kode yang lebih baik, sebaiknya Anda mengimplementasikan logika server web di Handler dan logika ML di Predictor seperti yang ditunjukkan di pengendali default.

Membuat container kustom

Masukkan kode kustom Anda dan file requirements.txt tambahan, jika Anda perlu menginstal paket di image Anda, di dalam direktori.

Gunakan Vertex AI SDK untuk Python guna mem-build container kustom sebagai berikut:

from google.cloud.aiplatform.prediction import LocalModel

# {import your predictor and handler}

local_model = LocalModel.build_cpr_model(
    {PATH_TO_THE_SOURCE_DIR},
    f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
    predictor={PREDICTOR_CLASS},
    handler={HANDLER_CLASS},
    requirements_path={PATH_TO_REQUIREMENTS_TXT},
)

Anda dapat memeriksa spesifikasi penampung untuk mendapatkan informasi yang berguna seperti URI image dan variabel lingkungan.

local_model.get_serving_container_spec()

Menjalankan container secara lokal (opsional)

Langkah ini hanya diperlukan jika Anda ingin menjalankan dan menguji penampung secara lokal yang berguna untuk iterasi yang lebih cepat. Pada contoh berikut, Anda men-deploy ke endpoint lokal dan mengirim permintaan inferensi (format untuk isi permintaan).

with local_model.deploy_to_local_endpoint(
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
    credential_path={PATH_TO_CREDENTIALS},
) as local_endpoint:
    health_check_response = local_endpoint.run_health_check()
    predict_response = local_endpoint.predict(
        request_file={PATH_TO_INPUT_FILE},
        headers={ANY_NEEDED_HEADERS},
    )

Cetak health check dan respons inferensi.

print(health_check_response, health_check_response.content)
print(predict_response, predict_response.content)

Cetak semua log container.

local_endpoint.print_container_logs(show_all=True)

Mengupload ke Vertex AI Model Registry

Model Anda perlu mengakses artefak model Anda (file dari pelatihan), jadi pastikan Anda telah menguploadnya ke Google Cloud Storage.

Kirim image ke Artifact Registry.

local_model.push_image()

Kemudian, upload ke Model Registry.

from google.cloud import aiplatform

model = aiplatform.Model.upload(
    local_model=local_model,
    display_name={MODEL_DISPLAY_NAME},
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
)

Setelah diupload ke Model Registry, model Anda dapat digunakan untuk mendapatkan inferensi batch atau di-deploy ke endpoint Vertex AI untuk mendapatkan inferensi online.

Men-deploy ke endpoint Vertex AI

endpoint = model.deploy(machine_type="n1-standard-4")

Setelah model di-deploy, Anda dapat mendapatkan inferensi online.

Contoh Notebook

Contoh ini menunjukkan berbagai cara untuk men-deploy model dengan prapemrosesan dan pascapemrosesan kustom menggunakan inferensi Vertex AI.