Deployment model

Halaman ini menjelaskan cara men-deploy model Anda ke AI Platform Prediction untuk mendapatkan prediksi.

Untuk men-deploy model terlatih Anda pada AI Platform Prediction, Anda harus:

  • Upload model tersimpan ke bucket Cloud Storage.
  • Buat resource model Prediksi AI Platform.
  • Buat resource versi Prediksi AI Platform, dengan menentukan jalur Cloud Storage ke model tersimpan Anda.

Sebelum memulai

Latih model machine learning Anda dan ikuti panduan mengekspor model untuk prediksi guna membuat artefak model yang dapat di-deploy ke AI Platform Prediction.

Menyimpan model Anda di Cloud Storage

Secara umum, cara yang paling mudah adalah menggunakan bucket Cloud Storage khusus di project yang sama dengan yang Anda gunakan untuk AI Platform Prediction.

Jika menggunakan bucket dalam project yang berbeda, Anda harus memastikan bahwa akun layanan AI Platform Prediction Anda dapat mengakses model di Cloud Storage. Tanpa izin yang sesuai, permintaan Anda untuk membuat versi model Prediction AI Platform akan gagal. Lihat selengkapnya tentang memberikan izin untuk penyimpanan.

Menyiapkan bucket Cloud Storage

Bagian ini menunjukkan cara membuat bucket baru. Anda dapat menggunakan bucket yang sudah ada, tetapi harus berada di region yang sama dengan tempat Anda berencana menjalankan tugas AI Platform. Selain itu, jika bukan bagian dari project yang Anda gunakan untuk menjalankan AI Platform Prediction, Anda harus secara eksplisit memberikan akses ke akun layanan AI Platform Prediction.

  1. Tentukan nama untuk bucket baru Anda. Nama harus unik di semua bucket di Cloud Storage.

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Misalnya, gunakan nama project Anda dengan tambahan -aiplatform:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-aiplatform
  2. Periksa nama bucket yang Anda buat.

    echo $BUCKET_NAME
  3. Pilih region untuk bucket Anda dan tetapkan variabel lingkungan REGION.

    Gunakan region yang sama tempat Anda berencana menjalankan tugas Prediksi AI Platform. Lihat region yang tersedia untuk layanan AI Platform Prediction.

    Misalnya, kode berikut membuat REGION dan menetapkannya ke us-central1:

    REGION=us-central1
  4. Buat bucket baru:

    gsutil mb -l $REGION gs://$BUCKET_NAME

Mengupload model yang diekspor ke Cloud Storage

Contoh berikut menunjukkan cara mengupload berbagai jenis artefak model ke direktori model di Cloud Storage:

TensorFlow SavedModel

SAVED_MODEL_DIR=$(ls ./YOUR_EXPORT_DIR_BASE | tail -1)
gsutil cp -r $SAVED_MODEL_DIR gs://YOUR_BUCKET

Saat Anda mengeksporSavedModel dari tf.keras atau dari penaksir TensorFlow, Model itu akan disimpan sebagai subdirektori dengan stempel waktu dari direktori ekspor dasar yang Anda pilih, seperti YOUR_EXPORT_DIR_BASE/1487877383942. Contoh ini menunjukkan cara mengupload direktori dengan stempel waktu terbaru. Jika Anda membuatSavedModel dengan cara yang berbeda, model mungkin berada di lokasi yang berbeda pada sistem file lokal Anda.

file model scikit-learn atau XGBoost

Bergantung pada cara Anda mengekspor model terlatih, upload file model.joblib, model.pkl, atau model.bst.

Contoh berikut menunjukkan cara mengupload file yang diekspor oleh sklearn.externals.joblib:

gsutil cp ./model.joblib gs://YOUR_BUCKET/model.joblib

Contoh berikut menunjukkan cara mengupload file yang diekspor oleh modul pickle Python:

gsutil cp ./model.pkl gs://YOUR_BUCKET/model.pkl

Contoh berikut menunjukkan cara mengupload file yang diekspor oleh metode save_model xgboost.Booster:

gsutil cp ./model.bst gs://YOUR_BUCKET/model.bst

Jika Anda men-deploy rutinitas prediksi kustom (beta), upload juga artefak model tambahan ke direktori model Anda.

Total ukuran file direktori model Anda harus 500 MB atau kurang jika Anda menggunakan jenis mesin (MLS1) lama atau 10 GB atau kurang jika Anda menggunakan jenis mesin Compute Engine (N1). Pelajari lebih lanjut jenis mesin untuk prediksi online.

Saat Anda membuat versi berikutnya dari model Anda, atur model tersebut dengan menempatkan setiap model ke direktori tersendiri yang terpisah dalam bucket Cloud Storage Anda.

Upload kode kustom

Jika Anda men-deploy pipeline scikit-learn dengan kode kustom atau rutinitas prediksi kustom, Anda juga harus mengupload paket distribusi sumber yang berisi kode kustom Anda. Contoh:

gsutil cp dist/my_custom_code-0.1.tar.gz gs://YOUR_BUCKET/my_custom_code-0.1.tar.gz

Anda dapat mengupload tarball ini ke direktori yang sama di Cloud Storage dengan file model, tetapi hal ini tidak perlu dilakukan. Bahkan, memisahkan keduanya dapat memberikan pengaturan yang lebih baik, terutama jika Anda men-deploy banyak versi model dan kode.

Menguji model Anda dengan prediksi lokal

Anda dapat menggunakan perintah gcloud ai-platform local predict untuk menguji bagaimana model Anda menyajikan prediksi sebelum men-deploy-nya ke AI Platform Prediction. Perintah ini menggunakan dependensi di lingkungan lokal Anda untuk melakukan prediksi dan menampilkan hasil dalam format yang sama dengan yang digunakan gcloud ai-platform predict saat melakukan prediksi online. Menguji prediksi secara lokal dapat membantu Anda menemukan error sebelum dikenai biaya untuk permintaan prediksi online.

Untuk argumen --model-dir, tentukan direktori yang berisi model machine learning yang diekspor, baik di mesin lokal Anda maupun di Cloud Storage. Untuk argumen --framework, tentukan tensorflow, scikit-learn, atau xgboost. Anda tidak dapat menggunakan perintah gcloud ai-platform local predict dengan rutinitas prediksi kustom.

Contoh berikut menunjukkan cara melakukan prediksi lokal:

gcloud ai-platform local predict --model-dir LOCAL_OR_CLOUD_STORAGE_PATH_TO_MODEL_DIRECTORY/ \
  --json-instances LOCAL_PATH_TO_PREDICTION_INPUT.JSON \
  --framework NAME_OF_FRAMEWORK

Men-deploy model dan versi

AI Platform Prediction mengatur model terlatih Anda menggunakan resource model dan versi. Model Prediksi AI Platform adalah penampung untuk versi model machine learning Anda.

Untuk men-deploy model, buat resource model di AI Platform Prediction, buat versi model tersebut, lalu tautkan versi model ke file model yang disimpan di Cloud Storage.

Membuat resource model

AI Platform Prediction menggunakan resource model untuk mengatur berbagai versi model Anda.

Untuk saat ini, Anda harus memutuskan apakah ingin versi model milik model ini menggunakan endpoint regional atau endpoint global. Pada umumnya, pilih endpoint regional. Jika Anda memerlukan fungsi yang hanya tersedia pada jenis mesin (MLS1) lama, gunakan endpoint global.

Anda juga harus memutuskan untuk saat ini apakah ingin versi model milik model ini mengekspor log apa pun saat model tersebut menayangkan prediksi. Contoh berikut tidak mengaktifkan logging. Pelajari cara mengaktifkan logging.

console

  1. Buka halaman Model Prediksi AI Platform di Konsol Google Cloud:

    Buka halaman Models

  2. Klik tombol Model Baru di bagian atas halaman Model. Tindakan ini akan mengarahkan Anda ke halaman Buat model.

  3. Masukkan nama unik untuk model Anda di kolom Nama model.

  4. Jika kotak Use regional endpoint dicentang, AI Platform Prediction akan menggunakan endpoint regional. Untuk menggunakan endpoint global, hapus centang pada kotak Use regional endpoint.

  5. Dari menu drop-down Region, pilih lokasi untuk node prediksi Anda. Region yang tersedia berbeda-beda bergantung pada apakah Anda menggunakan endpoint regional atau endpoint global.

  6. Klik Create.

  7. Pastikan Anda telah kembali ke halaman Model, dan bahwa model baru Anda muncul dalam daftar.

gcloud

Endpoint regional

Jalankan perintah berikut:

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

Ganti kode berikut:

Jika Anda tidak menentukan flag --region, gcloud CLI akan meminta Anda untuk memilih endpoint regional (atau menggunakan us-central di endpoint global).

Selain itu, Anda dapat menetapkan properti ai_platform/region ke region tertentu untuk memastikan gcloud CLI selalu menggunakan endpoint regional yang sesuai untuk AI Platform Prediction, meskipun Anda tidak menentukan flag --region. (Konfigurasi ini tidak berlaku untuk perintah dalam grup perintah gcloud ai-platform operations.)

Endpoint global

Jalankan perintah berikut:

gcloud ai-platform models create MODEL_NAME \
  --regions=REGION

Ganti kode berikut:

Jika Anda tidak menentukan flag --regions, gcloud CLI akan meminta Anda untuk memilih endpoint regional (atau menggunakan us-central1 di endpoint global).

REST API

Endpoint regional

  1. Format permintaan Anda dengan menempatkan objek model dalam isi permintaan. Setidaknya, tentukan nama untuk model Anda dengan mengganti MODEL_NAME dalam contoh berikut:

    {
      "name": "MODEL_NAME"
    }
    
  2. Lakukan panggilan REST API ke URL berikut, dengan mengganti PROJECT_ID dengan project ID Google Cloud Anda:

    POST https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Ganti kode berikut:

    Misalnya, Anda dapat membuat permintaan berikut menggunakan perintah curl. Perintah ini mengizinkan permintaan menggunakan kredensial yang terkait dengan penginstalan Google Cloud CLI Anda.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    API menampilkan respons yang mirip dengan berikut ini:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Endpoint global

  1. Format permintaan Anda dengan menempatkan objek model dalam isi permintaan. Setidaknya, tentukan nama untuk model Anda dengan mengganti MODEL_NAME dalam contoh berikut, dan tentukan region dengan mengganti REGION dengan region yang mendukung jenis mesin (MLS1) lama:

    {
      "name": "MODEL_NAME",
      "regions": ["REGION"]
    }
    
  2. Lakukan panggilan REST API ke URL berikut, dengan mengganti PROJECT_ID dengan project ID Google Cloud Anda:

    POST https://ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Misalnya, Anda dapat membuat permintaan berikut menggunakan perintah curl. Perintah ini mengizinkan permintaan menggunakan kredensial yang terkait dengan penginstalan Google Cloud CLI Anda.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME", "regions": ["REGION"]}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    API menampilkan respons yang mirip dengan berikut ini:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Lihat AI Platform Prediction model API untuk detail selengkapnya.

Membuat versi model

Sekarang Anda siap untuk membuat versi model dengan model terlatih yang sebelumnya diupload ke Cloud Storage. Saat membuat versi, Anda dapat menentukan sejumlah parameter. Daftar berikut menjelaskan parameter umum, beberapa di antaranya diperlukan:

  • name: harus unik dalam model AI Platform Prediction.
  • deploymentUri: jalur ke direktori model Anda di Cloud Storage.

    • Jika Anda men-deploy model TensorFlow, ini adalah direktoriSavedModel.
    • Jika Anda men-deploy model scikit-learn atau XGBoost, ini adalah direktori yang berisi file model.joblib, model.pkl, atau model.bst Anda.
    • Jika Anda men-deploy rutinitas prediksi kustom, ini adalah direktori yang berisi semua artefak model Anda. Ukuran total direktori ini harus 500 MB atau kurang.
  • framework: TENSORFLOW, SCIKIT_LEARN, atau XGBOOST. Hapus parameter ini jika Anda men-deploy rutinitas prediksi kustom.

  • runtimeVersion: versi runtime berdasarkan dependensi yang diperlukan model Anda. Jika Anda men-deploy model scikit-learn, model XGBoost, atau rutinitas prediksi kustom, nilai tersebut setidaknya harus dalam versi 1,4. Jika berencana menggunakan versi model untuk prediksi batch, Anda harus menggunakan runtime versi 2.1 atau yang lebih lama.

  • packageUris (opsional): daftar jalur ke paket distribusi kode kustom Anda (file .tar.gz) di Cloud Storage. Hanya berikan parameter ini jika Anda men-deploy pipeline scikit-learn dengan kode kustom (beta) atau rutinitas prediksi kustom (beta).

  • predictionClass (opsional): nama class Prediktor Anda dalam format module_name.class_name. Hanya berikan parameter ini jika Anda men-deploy rutinitas prediksi kustom (beta).

  • serviceAccount (opsional): Anda dapat menentukan akun layanan untuk versi model Anda yang akan digunakan jika akun tersebut mengakses resource Google Cloud saat menyajikan prediksi. Pelajari lebih lanjut cara menentukan akun layanan. Hanya berikan parameter ini jika Anda menggunakan penampung kustom atau rutinitas prediksi kustom.

  • pythonVersion: harus ditetapkan ke "3.5" (untuk runtime versi 1.4 hingga 1.14) atau "3.7" (untuk versi runtime 1.15 dan yang lebih baru) agar kompatibel dengan file model yang diekspor menggunakan Python 3. Juga dapat ditetapkan ke "2.7" jika digunakan dengan runtime versi 1.15 atau yang lebih lama.

  • machineType (opsional): jenis mesin virtual yang digunakan AI Platform Prediction untuk node yang menyajikan prediksi. Pelajari jenis mesin lebih lanjut. Jika tidak ditetapkan, setelan ini akan ditetapkan secara default ke n1-standard-2 di endpoint regional dan mls1-c1-m2 di endpoint global.

Lihat informasi selengkapnya tentang setiap parameter ini, serta parameter tambahan yang kurang umum, di referensi API untuk resource versi.

Selain itu, jika Anda membuat model di endpoint regional, pastikan untuk membuat versi di endpoint regional yang sama juga.

console

  1. Buka halaman Model Prediksi AI Platform di Konsol Google Cloud:

    Buka halaman Models

  2. Di halaman Models, pilih nama resource model yang ingin digunakan untuk membuat versi. Tindakan ini akan mengarahkan Anda ke halaman Model Details.

  3. Klik tombol New Version di bagian atas halaman Model Details. Tindakan ini akan mengarahkan Anda ke halaman Buat versi.

  4. Masukkan nama versi di kolom Name. Jika ingin, masukkan deskripsi untuk versi Anda di kolom Description.

  5. Masukkan informasi berikut tentang cara melatih model Anda di kotak dropdown yang sesuai:

  6. Pilih Jenis mesin untuk menjalankan prediksi online.

  7. Di kolom Model URI, masukkan lokasi bucket Cloud Storage tempat Anda mengupload file model. Anda dapat menggunakan tombol Browse untuk menemukan jalur yang benar.

    Pastikan untuk menentukan jalur ke direktori yang berisi file, bukan jalur ke file model itu sendiri. Misalnya, gunakan gs://your_bucket_name/model-dir/, bukan gs://your_bucket_name/model-dir/saved_model.pb atau gs://your_bucket_name/model-dir/model.pkl.

  8. Jika Anda men-deploy pipeline scikit-learn dengan kode kustom (beta) atau rutinitas prediksi kustom (beta), berikan jalur Cloud Storage ke semua paket kode kustom (.tar.gz) pada bagian Kode dan dependensi kustom. Jika Anda men-deploy rutinitas prediksi kustom, masukkan nama Predictor class di kolom Prediction class.

  9. Pilih opsi Scaling untuk deployment prediksi online:

    • Jika Anda memilih "Penskalaan otomatis", kolom Jumlah node minimum opsional akan ditampilkan. Anda dapat memasukkan jumlah minimum node agar tetap berjalan setiap saat, setelah skala layanan diperkecil.

    • Jika memilih "Penskalaan manual", Anda harus memasukkan Jumlah node yang ingin selalu dijalankan.

    Pelajari bagaimana opsi penskalaan berbeda bergantung pada jenis mesin.

    Pelajari lebih lanjut penetapan harga untuk biaya prediksi.

  10. Untuk menyelesaikan pembuatan versi model, klik Simpan.

gcloud

  1. Tetapkan variabel lingkungan untuk menyimpan jalur ke direktori Cloud Storage tempat biner model Anda berada, nama model, nama versi, dan pilihan framework Anda.

    Saat membuat versi dengan gcloud CLI, Anda dapat memberikan nama framework dalam huruf besar dengan garis bawah (misalnya, SCIKIT_LEARN) atau dalam huruf kecil dengan tanda hubung (misalnya, scikit-learn). Kedua opsi tersebut menghasilkan perilaku yang identik.

    Ganti [VALUES_IN_BRACKETS] dengan nilai yang sesuai:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="[YOUR-FRAMEWORK_NAME]"
    

    Untuk pipeline scikit-learn dengan kode kustom (beta), tetapkan variabel tambahan dengan jalur ke tarball kode kustom Anda:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="scikit-learn"
    CUSTOM_CODE_PATH="gs://your_bucket_name/my_custom_code-0.1.tar.gz"
    

    Untuk rutinitas prediksi kustom (beta), hapus variabel FRAMEWORK dan tetapkan variabel tambahan dengan jalur ke tarball kode kustom dan nama class prediktor Anda:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    CUSTOM_CODE_PATH="gs://your_bucket_name/my_custom_code-0.1.tar.gz"
    PREDICTOR_CLASS="[MODULE_NAME].[CLASS_NAME]"
    
  2. Buat versi:

    gcloud ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --framework=$FRAMEWORK \
      --python-version=3.7 \
      --region=REGION \
      --machine-type=MACHINE_TYPE
    

    Ganti kode berikut:

    • REGION: Region dari endpoint regional tempat Anda membuat model. Jika Anda membuat model di endpoint global, hapus flag --region.

    • MACHINE_TYPE: Jenis mesin, yang menentukan resource komputasi yang tersedia untuk node prediksi Anda.

    Untuk pipeline scikit-learn dengan kode kustom (beta), gunakan komponen gcloud beta dan pastikan untuk menetapkan flag --package-uris. Untuk men-deploy kode kustom, model Anda harus menggunakan endpoint global.

    gcloud components install beta
    
    gcloud beta ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --framework=$FRAMEWORK \
      --python-version=3.7 \
      --machine-type=mls1-c1-m2 \
      --package-uris=$CUSTOM_CODE_PATH
    

    Untuk rutinitas prediksi kustom (beta), gunakan komponen gcloud beta, hilangkan tanda --framework, lalu setel tanda --package-uris dan --prediction-class. Untuk men-deploy kode kustom, model Anda harus menggunakan endpoint global.

    gcloud components install beta
    
    gcloud beta ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --python-version=3.7 \
      --machine-type=mls1-c1-m2 \
      --package-uris=$CUSTOM_CODE_PATH \
      --prediction-class=$PREDICTOR_CLASS
    

    Pembuatan versi memerlukan waktu beberapa menit. Jika sudah siap, Anda akan melihat output berikut:

    Creating version (this might take a few minutes)......done.
  3. Dapatkan informasi tentang versi baru Anda:

    gcloud ai-platform versions describe $VERSION_NAME \
      --model=$MODEL_NAME
    

    Anda akan melihat output yang serupa dengan ini:

    createTime: '2018-02-28T16:30:45Z'
    deploymentUri: gs://your_bucket_name
    framework: [YOUR-FRAMEWORK-NAME]
    machineType: mls1-c1-m2
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.7'
    runtimeVersion: '2.11'
    state: READY

REST API

  1. Format isi permintaan Anda agar memuat objek versi. Contoh ini menentukan versi name, deploymentUri, runtimeVersion, framework, dan machineType. Ganti [VALUES_IN_BRACKETS] dengan nilai yang sesuai:

    {
      "name": "[YOUR-VERSION-NAME]",
      "deploymentUri": "gs://your_bucket_name/",
      "runtimeVersion": "2.11",
      "framework": "[YOUR_FRAMEWORK_NAME]",
      "pythonVersion": "3.7",
      "machineType": "[YOUR_MACHINE_TYPE]"
    }
    
  2. Lakukan panggilan REST API Anda ke jalur berikut, dengan mengganti [VALUES_IN_BRACKETS] dengan nilai yang sesuai:

    POST https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
    

    Ganti REGION dengan region endpoint regional tempat Anda membuat model. Jika Anda membuat model di endpoint global, gunakan ml.googleapis.com.

    Misalnya, Anda dapat membuat permintaan berikut menggunakan perintah curl:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
    

    Pembuatan versi memerlukan waktu beberapa menit. Jika sudah siap, Anda akan melihat output seperti ini:

    {
      "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata",
        "createTime": "2018-07-07T02:51:50Z",
        "operationType": "CREATE_VERSION",
        "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
        "version": {
          "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]",
          "deploymentUri": "gs://your_bucket_name",
          "createTime": "2018-07-07T02:51:49Z",
          "runtimeVersion": "2.11",
          "framework": "[YOUR_FRAMEWORK_NAME]",
          "machineType": "[YOUR_MACHINE_TYPE]",
          "pythonVersion": "3.7"
        }
      }
    }