Rutinitas inferensi kustom

Rutinitas inferensi kustom memungkinkan Anda membuat container kustom dengan kode pra-pemrosesan dan pasca-pemrosesan, tanpa perlu menangani detail penyiapan server HTTP atau membuat container dari awal. Anda dapat menggunakan pra-pemrosesan untuk menormalkan 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 pra-pemrosesan dan pasca-pemrosesan dan men-deploy ke endpoint lokal dan online.

Penyiapan

Anda harus menginstal Agent Platform 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 Agent Platform SDK untuk Python guna membuat 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 bisa memeriksa spesifikasi container 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 container 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 Model Registry Gemini Enterprise Agent Platform

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 Agent Platform untuk mendapatkan inferensi online.

Men-deploy ke endpoint Agent Platform

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

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

Contoh Notebook

Contoh ini menunjukkan berbagai cara untuk men-deploy model dengan pra-pemrosesan dan pasca-pemrosesan kustom menggunakan Vertex AI Inference.