Mengekspor model

Halaman ini menjelaskan cara menggunakan AutoML Tables untuk mengekspor model kustom Anda ke Cloud Storage, mendownload model ke server Anda, lalu menggunakan Docker agar model tersedia untuk prediksi.

Model yang diekspor hanya dapat berjalan pada CPU arsitektur x86 yang mendukung set petunjuk Advanced Vector Extensions (AVX).

Pengantar

Berikut langkah-langkah untuk mengekspor model:

  1. Mengekspor model
  2. Jalankan server model.
  3. Meminta prediksi.

Sebelum memulai

Sebelum dapat menyelesaikan tugas ini, Anda harus telah menyelesaikan tugas-tugas berikut:

  • Siapkan project Anda seperti yang dijelaskan di bagian Sebelum memulai.
  • Latih model yang ingin didownload.
  • Instal dan inisialisasi Google Cloud CLI di server yang akan Anda gunakan untuk menjalankan model yang diekspor.
  • Instal Docker di server Anda.
  • Ambil image Docker server model AutoML Tables:

    sudo docker pull gcr.io/cloud-automl-tables-public/model_server
    

Mengekspor model

Anda tidak dapat mengekspor model yang dibuat sebelum 23 Agustus 2019.

Konsol

  1. Buka halaman AutoML Tables di Konsol Google Cloud.

    Buka halaman AutoML Tables

  2. Pilih tab Models di panel navigasi sebelah kiri.

  3. Pada menu More actions untuk model yang ingin diekspor, klik Export model.

    Menu tindakan lainnya dengan Export model

  4. Pilih atau buat folder Cloud Storage di lokasi yang diinginkan.

    Bucket harus memenuhi persyaratan bucket.

    Anda tidak dapat mengekspor model ke bucket tingkat teratas. Anda harus menggunakan minimal satu tingkat folder.

  5. Klik Ekspor.

    Periode ekspor model

    Anda akan mendownload model yang diekspor ke server Anda di bagian berikutnya.

REST

Anda dapat menggunakan metode models.export untuk mengekspor model ke Cloud Storage.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • endpoint: automl.googleapis.com untuk lokasi global, dan eu-automl.googleapis.com untuk region Uni Eropa.
  • project-id: Project ID Google Cloud Anda.
  • location: lokasi untuk resource: us-central1 untuk Global atau eu untuk Uni Eropa.
  • model-id: ID model yang ingin Anda deploy. Misalnya, TBL543.
  • gcs-destination : folder tujuan Anda di Cloud Storage. Contoh, gs://export-bucket/exports.

    Anda tidak dapat mengekspor model ke bucket tingkat teratas. Anda harus menggunakan minimal satu tingkat folder.

Metode HTTP dan URL:

POST https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export

Isi JSON permintaan:

{
  "outputConfig": {
    "modelFormat": "tf_saved_model",
    "gcsDestination": {
      "outputUriPrefix": "gcs-destination"
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export"

PowerShell

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/292381/locations/us-central1/operations/TBL543",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2019-12-30T18:23:47.728373Z",
    "updateTime": "2019-12-30T18:23:47.728373Z",
    "worksOn": [
      "projects/292381/locations/us-central1/models/TBL543"
    ],
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "gs://export-bucket/exports/model-export/tbl/tf_saved_model-automl_integration_test_model-2019-12-30T18:23:47.461Z/"
      }
    },
    "state": "RUNNING"
  }
}

Mengekspor model adalah operasi yang berjalan lama. Anda dapat memeriksa status operasi atau menunggu hingga operasi ditampilkan. Pelajari lebih lanjut.

Menjalankan server model

Dalam tugas ini, Anda akan mendownload model yang diekspor dari Cloud Storage dan memulai container Docker sehingga model Anda siap menerima permintaan prediksi.

Model Anda harus dijalankan di dalam container Docker.

Untuk menjalankan server model:

  1. Di mesin tempat Anda akan menjalankan model, ubah ke direktori tempat Anda ingin menyimpan model yang diekspor.

  2. Download model yang diekspor:

    gsutil cp -r gcs-destination/* .

    Dengan gcs-destination adalah jalur ke lokasi model yang diekspor di Cloud Storage. Contoh:

    gsutil cp -r gs://export-us-central1/models/* .
    

    Model disalin ke direktori Anda saat ini, di jalur berikut:

    ./model-export/tbl/tf_saved_model-<model-name>-<export-timestamp>

  3. Ganti nama direktori yang berisi stempel waktu.

    mv model-export/tbl/tf_saved_model-<model-name>-<export-timestamp> model-export/tbl/<new-dir-name>
    

    Format stempel waktu membuat direktori tidak valid untuk Docker.

  4. Mulai container Docker menggunakan nama direktori yang baru saja Anda buat:

    docker run -v `pwd`/model-export/tbl/new_folder_name:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
    

Anda dapat menghentikan server model kapan saja menggunakan Ctrl-C.

Memperbarui penampung docker server model

Karena mendownload penampung Docker server model saat mengekspor model, Anda harus secara eksplisit mengupdate server model agar mendapatkan update dan perbaikan bug. Anda harus mengupdate server model secara berkala menggunakan perintah berikut:

    docker pull gcr.io/cloud-automl-tables-public/model_server

Mendapatkan prediksi dari model yang diekspor

Server model dalam container gambar AutoML Tables menangani permintaan prediksi dan menampilkan hasil prediksi.

Prediksi batch tidak tersedia untuk model yang diekspor.

Format data prediksi

Anda memberikan data (kolom payload) untuk permintaan prediksi dengan format JSON berikut:

{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }

Jenis data JSON yang diperlukan bergantung pada jenis data AutoML Tables. Lihat Format objek baris untuk mengetahui detailnya.

Contoh berikut menunjukkan permintaan dengan tiga kolom: kolom kategori, array numerik, dan struct. Permintaan berisi dua baris.

{
  "instances": [
    {
      "categorical_col": "mouse",
      "num_array_col": [
        1,
        2,
        3
      ],
      "struct_col": {
        "foo": "piano",
        "bar": "2019-05-17T23:56:09.05Z"
      }
    },
    {
      "categorical_col": "dog",
      "num_array_col": [
        5,
        6,
        7
      ],
      "struct_col": {
        "foo": "guitar",
        "bar": "2019-06-17T23:56:09.05Z"
      }
    }
  ]
}

Membuat permintaan prediksi

  1. Masukkan data permintaan Anda ke dalam file teks, misalnya, tmp/request.json.

    Jumlah baris data dalam permintaan prediksi, yang disebut ukuran tumpukan mini, dapat memengaruhi latensi dan throughput prediksi. Makin besar ukuran tumpukan mini, makin tinggi latensi dan throughput-nya. Untuk mengurangi latensi, gunakan ukuran tumpukan mini yang lebih kecil. Untuk meningkatkan throughput, tingkatkan ukuran tumpukan mini. Ukuran tumpukan mini yang paling umum digunakan adalah 1, 32, 64, 128, 256, 512, dan 1024.

  2. Minta prediksi:

    curl -X POST --data @/tmp/request.json http://localhost:8080/predict
    

Format hasil prediksi

Format hasil bergantung pada jenis model Anda.

Hasil model klasifikasi

Hasil prediksi untuk model klasifikasi (biner dan multi-class) menampilkan skor probabilitas untuk setiap nilai potensial kolom target. Anda harus menentukan cara menggunakan skor. Misalnya, untuk mendapatkan klasifikasi biner dari skor yang diberikan, Anda harus mengidentifikasi nilai minimum. Jika ada dua kelas, "A" dan "B", Anda harus mengklasifikasikan contoh sebagai "A" jika skor untuk "A" lebih besar dari nilai minimum yang dipilih, dan "B" jika sebaliknya. Untuk set data yang tidak seimbang, nilai minimumnya mungkin mendekati 100% atau 0%.

Payload hasil untuk model klasifikasi terlihat mirip dengan contoh ini:

{
  "predictions": [
    {
      "scores": [
        0.539999994635582,
        0.2599999845027924,
        0.2000000208627896
      ],
      "classes": [
        "apple",
        "orange",
        "grape"
      ]
    },
    {
      "scores": [
        0.23999999463558197,
        0.35999998450279236,
        0.40000002086278963
      ],
      "classes": [
        "apple",
        "orange",
        "grape"
      ]
    }
  ]
}

Hasil model regresi

Prediksi nilai ditampilkan untuk setiap baris yang valid dari permintaan prediksi. Interval prediksi tidak ditampilkan untuk model yang diekspor.

Payload hasil untuk model regresi terlihat mirip dengan contoh ini:

{
  "predictions": [
    3982.3662109375,
    3982.3662109375
  ]
}