Ringkasan prediksi

Anda dapat menghosting model machine learning yang terlatih di cloud dan menggunakan AI Platform Prediction untuk menyimpulkan nilai target data baru. Halaman ini membahas hosting dan prediksi model serta memperkenalkan pertimbangan yang harus Anda ingat untuk project Anda.

Cara kerjanya

AI Platform Prediction mengelola resource komputasi di cloud untuk menjalankan model Anda. Anda dapat meminta prediksi dari model dan mendapatkan nilai target prediksi untuk model tersebut. Berikut adalah proses untuk menyiapkan prediksi di cloud:

  1. Anda mengekspor model sebagai artefak yang dapat di-deploy ke AI Platform Prediction.

  2. Anda membuat resource model di AI Platform Prediction, lalu membuat versi model dari model tersimpan.

    Jika men-deploy rutinitas prediksi kustom, Anda juga harus menyediakan kode untuk dijalankan pada waktu prediksi.

  3. Anda memformat data input untuk prediksi dan meminta prediksi online atau prediksi batch

  4. Saat Anda menggunakan prediksi online, layanan akan menjalankan model tersimpan dan menampilkan prediksi yang diminta sebagai pesan respons untuk panggilan.

    • Versi model Anda di-deploy di region yang Anda tentukan saat membuat model.
    • Meskipun tidak dijamin, versi model yang Anda gunakan secara rutin umumnya selalu siap dijalankan.

    Saat Anda menggunakan prediksi batch, yang hanya didukung untuk model TensorFlow, prosesnya sedikit lebih rumit:

    1. Layanan prediksi mengalokasikan resource untuk menjalankan tugas Anda. Hal ini mencakup satu atau beberapa node prediksi.

    2. Layanan ini memulihkan grafik TensorFlow Anda di setiap node yang dialokasikan.

    3. Layanan prediksi mendistribusikan data input Anda di seluruh node yang dialokasikan.

    4. Setiap node menjalankan grafik dan menyimpan prediksi ke lokasi Cloud Storage yang Anda tentukan.

    5. Setelah semua data input diproses, layanan akan menonaktifkan tugas dan melepaskan resource yang dialokasikan untuknya.

Deployment model

AI Platform Prediction dapat menghosting model Anda sehingga Anda bisa mendapatkan prediksi dari model tersebut di cloud. Proses hosting model tersimpan disebut deployment. Layanan prediksi mengelola infrastruktur yang diperlukan untuk menjalankan model Anda dalam skala besar, dan menyediakannya untuk permintaan prediksi online dan batch. Bagian ini menjelaskan deployment model.

Tentang model dan versi

AI Platform Prediction mengatur model terlatih Anda menggunakan resource yang disebut model dan versi. Model adalah solusi machine learning. Misalnya, Anda dapat membuat model bernama census untuk memuat semua pekerjaan Anda pada model machine learning sensus Amerika Serikat. Entitas yang Anda buat, bernama census, adalah penampung untuk implementasi aktual model machine learning, yang disebut versi.

Mengembangkan model machine learning adalah proses berulang. Oleh karena itu, paradigma resource AI Platform Prediction disiapkan dengan asumsi bahwa Anda akan membuat beberapa versi dari setiap model machine learning. Terminologi ini dapat membingungkan karena resource model AI Platform Prediction sebenarnya bukan model machine learning itu sendiri. Di AI Platform Prediction, model adalah penampung untuk versi model machine learning.

Apa yang ada dalam versi?

"Model" yang Anda deploy ke AI Platform Prediction sebagai versi model terdiri dari satu atau beberapa artefak yang dihasilkan oleh pelatihan dengan framework yang dihosting, TensorFlow, scikit-learn, atau XGBoost. Tidak penting apakah Anda melatih model di cloud menggunakan AI Platform Training atau di tempat lain.

Anda juga dapat men-deploy rutinitas prediksi kustom (beta). Dalam hal ini, Anda dapat menyediakan versi model dengan artefak dan kode pelatihan tambahan untuk menangani permintaan prediksi.

Variasi antarversi

Versi yang Anda buat untuk resource model tertentu bersifat arbitrer; Anda dapat menggunakan resource model yang sama meskipun Anda sepenuhnya mengubah model machine learning di antara versi. Model adalah alat organisasi yang dapat Anda gunakan sesuai dengan situasi Anda.

Hal ini umum, terutama setelah Anda memiliki versi dalam produksi, untuk mempertahankan input dan output yang sama di antara versi model. Hal ini memungkinkan Anda beralih versi tanpa perlu mengubah struktur aplikasi lain yang mungkin telah Anda buat di sekitar model. Hal ini juga memudahkan pengujian versi baru dengan data yang ada.

Versi default

Setiap model dengan setidaknya satu versi memiliki versi default; versi default ditetapkan saat versi pertama dibuat. Jika Anda meminta prediksi yang hanya menentukan nama model, AI Platform Prediction akan menggunakan versi default untuk model tersebut.

Perhatikan bahwa satu-satunya waktu layanan otomatis menetapkan versi default adalah saat Anda membuat versi pertama. Anda dapat secara manual menjadikan versi berikutnya sebagai versi default dengan memanggil projects.models.versions.setDefault (juga ditampilkan sebagai gcloud ai-platform versions set-default dan sebagai opsi dalam daftar Versi di halaman Detail model di konsol Google Cloud (buka halaman detail model dengan mengklik model Anda dalam daftar model di halaman Model). Hal ini memungkinkan Anda, misalnya, menggunakan versi default yang stabil untuk menayangkan prediksi dalam produksi sambil menguji versi yang lebih baru tanpa membuat resource model khusus untuk pengujian.

Penamaan model dan versi

Nama model dan versi harus:

  • Hanya berisi huruf besar/kecil, angka, dan garis bawah (peka huruf besar/kecil).
  • Dimulai dengan huruf.
  • Berisi 128 karakter atau kurang.
  • Harus unik dalam project tertentu (untuk model) atau model (untuk versi).

Tidak ada aturan untuk nama selain persyaratan teknis tersebut, tetapi berikut beberapa praktik terbaik:

  • Nama model harus deskriptif dan berbeda—Anda mungkin perlu memilihnya dari daftar banyak nama dalam log atau laporan.
  • Sebaiknya nama versi dibuat singkat dan sederhana. Misalnya, lebih mudah untuk mengidentifikasi 'v1' dalam daftar resource daripada '2017_01_29T13_54_58'.

Batas model dan versi

Untuk mempelajari jumlah model dan versi yang dapat Anda buat dalam satu project Google Cloud, lihat Kuota resource.

Parameter deployment model

AI Platform Prediction memerlukan beberapa informasi untuk membuat versi model Anda. Anda juga memiliki beberapa opsi yang dapat dikonfigurasi. Bagian ini menjelaskan parameter dari kedua jenis tersebut. Parameter ini ditentukan dalam objek Version atau ditambahkan untuk memudahkan dalam perintah gcloud ai-platform versions create.

Nama versi
Nama untuk versi baru yang unik di antara nama versi model lainnya.
Deskripsi
Anda dapat memberikan deskripsi untuk versi Anda. Saat ini, deskripsi hanya diberikan saat Anda mendapatkan informasi versi dengan API; baik Google Cloud CLI maupun konsol Google Cloud tidak menampilkan deskripsi.
URI Deployment
Anda harus memberikan URI lokasi Cloud Storage tempat SavedModel Anda disimpan. AI Platform Prediction mengambil model dari lokasi ini dan men-deploy-nya. Parameter ini disebut --origin dalam perintah gcloud ai-platform versions create. Jika men-deploy rutinitas prediksi kustom (beta), Anda dapat memberikan URI direktori Cloud Storage yang berisi artefak apa pun yang digunakan versi model Anda untuk prediksi, bukan hanya SavedModel.
Versi runtime
AI Platform Prediction menggunakan versi runtime stabil terbaru untuk men-deploy versi model Anda, kecuali jika Anda menentukan versi yang didukung yang berbeda. Versi runtime secara utama menentukan versi TensorFlow yang digunakan layanan prediksi untuk menjalankan model Anda. Saat menjalankan tugas prediksi batch, Anda memiliki opsi untuk mengganti versi runtime yang ditetapkan. Prediksi online selalu menggunakan versi runtime yang ditetapkan saat versi model di-deploy.
Penskalaan manual

Anda dapat menentukan jumlah node prediksi yang akan terus berjalan untuk versi model. Lihat bagian tentang penskalaan untuk mengetahui informasi selengkapnya.

Bucket staging

Jika menggunakan Google Cloud CLI untuk men-deploy model, Anda dapat menggunakan SavedModel di komputer lokal. Alat ini akan menyiapkannya di lokasi Cloud Storage yang Anda tentukan sebelum men-deploy-nya ke AI Platform Prediction.

Perubahan grafik untuk prediksi

Anda mungkin telah menyertakan TensorFlow Ops dalam grafik komputasi yang berguna terutama dalam konteks pelatihan. Setelah melatih model, Anda dapat menghapus operasi tersebut dari grafik sebelum mengekspor versi akhir.

Sebagian besar saran yang diberikan di halaman pengembangan aplikasi pelatihan ditujukan untuk pengalaman prediksi. Dalam beberapa kasus, perubahan tersebut adalah perubahan yang Anda buat pada model saat sebagian besar pelatihan selesai dan Anda siap mulai men-deploy versi.

Mendapatkan prediksi

Anda dapat mengirim data baru ke versi model yang di-deploy untuk mendapatkan prediksi. Bagian berikut menjelaskan pertimbangan prediksi yang penting.

Prediksi online versus prediksi batch

Pelajari perbedaan antara prediksi online dan batch.

Memahami node prediksi dan alokasi resource

AI Platform Prediction mengukur jumlah pemrosesan yang Anda gunakan untuk prediksi dalam jam kerja node. Bagian ini menjelaskan node ini dan cara dialokasikan untuk berbagai jenis prediksi.

Cara termudah untuk memahami node adalah sebagai virtual machine (VM), meskipun node tersebut diimplementasikan dengan mekanisme yang berbeda dari VM tradisional. Setiap node disediakan dengan jumlah daya pemrosesan dan memori yang ditetapkan. Image sistem juga memiliki image sistem operasi dan konfigurasi software yang ditetapkan yang diperlukan untuk menjalankan model Anda guna mendapatkan prediksi.

Prediksi online dan batch menjalankan node Anda dengan pemrosesan terdistribusi, sehingga permintaan atau tugas tertentu dapat menggunakan beberapa node secara bersamaan. Anda dikenai biaya untuk total penggunaan node per menit, menggunakan tarif per jam. Misalnya, menjalankan dua node selama sepuluh menit dikenai biaya yang sama dengan menjalankan satu node selama dua puluh menit. Prediksi online dan batch mengalokasikan node secara berbeda, yang dapat berdampak signifikan pada tagihan yang akan Anda terima.

Alokasi node untuk prediksi batch

Layanan prediksi batch menskalakan jumlah node yang digunakan, untuk meminimalkan jumlah waktu yang diperlukan tugas Anda. Untuk melakukannya, layanan:

  • Mengalokasikan beberapa node untuk menangani tugas Anda saat Anda memulainya.

  • Menskalakan jumlah node selama tugas dalam upaya untuk mengoptimalkan efisiensi. Setiap node memerlukan waktu untuk memulai, sehingga layanan mencoba mengalokasikan node secukupnya sehingga waktu startup diimbangi dengan pengurangan waktu yang berlalu.

  • Mematikan node segera setelah tugas Anda selesai.

Anda dapat memengaruhi penskalaan tugas prediksi batch dengan menentukan jumlah maksimum node yang akan digunakan. Anda biasanya menginginkan node sebanyak yang akan digunakan layanan, tetapi penggunaan node tunduk pada kebijakan kuota AI Platform Prediction. Sebaiknya batasi jumlah node yang dialokasikan ke tugas tertentu, terutama jika Anda membagikan project kepada orang lain dan berpotensi menjalankan tugas (baik pelatihan maupun prediksi) secara serentak.

Alokasi node untuk prediksi online

Layanan prediksi online menskalakan jumlah node yang digunakan, untuk memaksimalkan jumlah permintaan yang dapat ditangani tanpa menimbulkan terlalu banyak latensi. Untuk melakukannya, layanan:

  • Mengalokasikan beberapa node saat pertama kali Anda meminta prediksi setelah jeda yang lama dalam permintaan.

  • Menskalakan jumlah node sebagai respons terhadap traffic permintaan, menambahkan node saat traffic meningkat, dan menghapusnya saat ada lebih sedikit permintaan.

  • Mempertahankan setidaknya satu node siap selama beberapa menit, untuk menangani permintaan meskipun tidak ada yang harus ditangani. Status siap memastikan bahwa layanan dapat menayangkan setiap prediksi dengan segera.

  • Menskalakan ke nol setelah versi model Anda berjalan beberapa menit tanpa permintaan prediksi.

Setelah layanan diskalakan ke nol, atau saat terjadi lonjakan traffic secara tiba-tiba, perlu waktu (detik hingga menit) untuk melakukan inisialisasi node guna melayani permintaan. Waktu inisialisasi bergantung pada ukuran versi model Anda, sehingga waktu tunggu sisi klien dapat menyebabkan permintaan dihapus hingga node baru diinisialisasi, dan/atau meningkatkan latensi selama jangka waktu ini.

Untuk memastikan penayangan yang cepat setiap saat, Anda dapat menentukan jumlah minimum node yang harus selalu siap oleh layanan, dengan menetapkan opsi minNodes pada versi model Anda. Setelan ini dapat meningkatkan biaya, karena Anda membayar node meskipun tidak ada prediksi yang ditayangkan.

Batasan penskalaan otomatis

Penskalaan otomatis AI Platform Prediction untuk prediksi online dapat membantu Anda menayangkan berbagai tingkat permintaan prediksi sekaligus meminimalkan biaya. Namun, cara ini tidak ideal untuk semua situasi. Layanan mungkin tidak dapat membuat node online dengan cukup cepat untuk mengimbangi lonjakan traffic permintaan yang besar. Jika traffic Anda secara rutin mengalami lonjakan tajam, dan jika latensi yang rendah dan andal penting bagi aplikasi Anda, sebaiknya pertimbangkan penskalaan manual.

Menggunakan penskalaan manual

Anda dapat memengaruhi penskalaan prediksi online untuk versi model dengan menentukan jumlah node yang akan terus berjalan, berapa pun traffic-nya. Menetapkan jumlah node secara manual sebenarnya menghentikan penskalaan layanan, yang berarti jumlah node yang Anda tentukan akan selalu siap, dan Anda akan terus dikenai tagihan untuk node tersebut. Anda harus menghindari hal ini kecuali jika jumlah permintaan yang diterima model Anda secara inheren berfluktuasi lebih cepat daripada penskalaan otomatis yang dapat mengimbanginya. Anda menetapkan jumlah node yang akan digunakan dengan menetapkan manualScaling dalam objek Version yang Anda teruskan ke projects.models.versions.create.

Penskalaan multi-zona

Jika versi Anda menggunakan jenis mesin Compute Engine (N1) dan Anda menetapkan autoScaling.minNodes atau manualScaling.nodes ke 2 atau lebih tinggi (bergantung pada apakah Anda menggunakan penskalaan otomatis atau manual), node prediksi akan berjalan di beberapa zona di region yang sama. Hal ini memastikan ketersediaan berkelanjutan jika terjadi pemadaman layanan di salah satu zona.

Data input prediksi

Data yang Anda gunakan untuk mendapatkan prediksi adalah data baru yang memiliki bentuk yang sama dengan data yang Anda gunakan untuk pelatihan. Prediksi online dan batch menggunakan data yang sama (fitur model Anda), tetapi memerlukan format yang berbeda, bergantung pada jenis prediksi dan antarmuka yang Anda gunakan. Format ini diturukan dalam tabel berikut, dan dijelaskan secara lebih mendetail di bagian di bawah:

Jenis dan antarmuka prediksi Format input yang didukung
Batch dengan panggilan API File teks dengan string instance JSON atau file TFRecord (dapat dikompresi)
Batch dengan gcloud CLI File teks dengan string instance JSON atau file TFRecord (dapat dikompresi)
Online dengan panggilan API Pesan permintaan JSON
Online dengan gcloud CLI File teks dengan string instance JSON atau file CSV

String JSON instance

Format dasar untuk prediksi online dan batch adalah daftar tensor data instance. Ini dapat berupa daftar nilai biasa atau anggota objek JSON, bergantung pada cara Anda mengonfigurasi input dalam aplikasi pelatihan Anda:

Contoh ini menunjukkan tensor input dan kunci instance:

{"values": [1, 2, 3, 4], "key": 1}

Susunan string JSON bisa menjadi kompleks selama mengikuti aturan berikut:

  • Data instance tingkat teratas harus berupa objek JSON—kamus key-value pair.

  • Nilai individual dalam objek instance dapat berupa string, angka, atau daftar. Anda tidak dapat menyematkan objek JSON.

  • Daftar hanya boleh berisi item dari jenis yang sama (termasuk daftar lainnya). Anda tidak boleh mencampur nilai string dan numerik.

String berikut (diformat agar mudah dibaca) menunjukkan objek yang berisi label dan gambar, dengan gambar berupa array 3 dimensi dari bilangan bulat 8-bit:

{
  "tag": "beach",
  "image": [
    [
      [138, 30, 66],
      [130, 20, 56],
      ...
    ],
    [
      [126, 38, 61],
      [122, 24, 57],
      ...
    ],
        ...
  ]
}

Jika model hanya menggunakan satu input, Anda tidak perlu menggabungkannya dalam objek JSON. Misalnya, jika Anda mengirim satu tensor (vektor dalam hal ini) dengan empat nilai, Anda tidak perlu memformatnya seperti ini:

{"values": [1, 2, 3, 4]}

Anda cukup memformat setiap instance sebagai daftar:

[1, 2, 3, 4]
Data biner dalam input prediksi

Data biner tidak dapat diformat sebagai string berenkode UTF-8 yang didukung JSON. Jika Anda memiliki data biner dalam input, Anda harus menggunakan encoding base64 untuk merepresentasikannya. Diperlukan format khusus berikut:

  • String yang dienkode harus diformat sebagai objek JSON dengan satu kunci bernama b64. Contoh Python berikut mengenkode buffering data JPEG mentah menggunakan library base64 untuk membuat instance:

    {"image_bytes":{"b64": base64.b64encode(jpeg_data)}}
    
  • Dalam kode model TensorFlow, Anda harus memberi nama alias untuk tensor input dan output agar diakhiri dengan '_bytes'.

Data input prediksi online

Anda meneruskan instance input untuk prediksi online sebagai isi pesan untuk permintaan predict. Untuk pemformatan isi permintaan dan respons, lihat detail permintaan prediksi.

Singkatnya: Buat setiap instance menjadi item dalam daftar, dan beri nama anggota daftar instances. Jadi, contoh JSON instance data sederhana yang diberikan di atas menjadi:

{"instances": [{"values": [1, 2, 3, 4], "key": 1}]}

Saat menggunakan gcloud ai-platform projects predict untuk meminta prediksi online, Anda meneruskan file dengan format yang sama dengan yang Anda gunakan untuk prediksi batch.

Data input prediksi batch

Anda memberikan data input untuk prediksi batch dalam satu atau beberapa file teks yang berisi baris data instance JSON seperti yang dijelaskan di atas. File input tidak berisi header kolom atau format lain selain sintaksis JSON sederhana.

{"image": [0.0, 0.0, ... ], "key": 0}
{"image": [0.0, 0.0, ... ], "key": 1}
{"image": [0.0, 0.0, ... ], "key": 2}

Kunci instance

AI Platform Prediction menjalankan tugas prediksi batch Anda menggunakan pemrosesan terdistribusi. Artinya, data Anda didistribusikan di antara cluster virtual machine acak, dan diproses dalam urutan yang tidak dapat diprediksi. Agar dapat mencocokkan prediksi yang ditampilkan dengan instance input, Anda harus menentukan kunci instance. Kunci instance adalah nilai yang dimiliki setiap instance yang unik di antara instance dalam kumpulan data. Kunci yang paling sederhana adalah nomor indeks.

Anda harus meneruskan kunci melalui grafik tanpa diubah dalam aplikasi pelatihan. Jika data Anda belum memiliki kunci instance, Anda dapat menambahkannya sebagai bagian dari prapemrosesan data.

Versi runtime

Saat versi baru AI Platform Prediction dirilis, ada kemungkinan model yang dikembangkan untuk versi lama akan menjadi usang. Hal ini terutama relevan jika Anda mendapatkan versi model yang efektif yang tetap tidak berubah selama jangka waktu yang lama. Anda harus meninjau kebijakan pembuatan versi AI Platform Prediction dan memastikan bahwa Anda memahami versi runtime AI Platform Prediction yang digunakan untuk melatih versi model.

Versi dan prediksi runtime

Anda harus menentukan versi runtime AI Platform Prediction yang didukung saat membuat versi model. Tindakan ini akan menetapkan setelan default versi model.

Anda dapat menentukan versi runtime yang akan digunakan saat memulai tugas prediksi batch. Hal ini untuk mengakomodasi mendapatkan prediksi menggunakan model yang tidak di-deploy di AI Platform Prediction. Untuk model yang di-deploy, gunakan versi runtime default model dalam permintaan tugas Anda. Penggunaan versi runtime yang berbeda kemungkinan akan menyebabkan error yang tidak terduga.

Anda tidak dapat meminta prediksi online dari model di luar AI Platform Prediction, sehingga tidak ada opsi untuk mengganti versi runtime default dalam permintaan Anda.

Versi runtime default yang ditetapkan untuk versi model tidak dapat diubah. Untuk menentukan versi runtime yang berbeda untuk versi model, deploy versi baru menggunakan artefak pelatihan yang sama dengan yang Anda gunakan pada awalnya.

Wilayah dan prediksi

Google Cloud menggunakan region, yang dibagi menjadi zona, untuk menentukan lokasi geografis dari resource komputasi fisik. Saat men-deploy model untuk prediksi menggunakan AI Platform Prediction, Anda menentukan region default tempat prediksi akan dijalankan.

Saat memulai tugas prediksi batch, Anda dapat menentukan region tempat tugas tersebut dijalankan, yang akan menggantikan region default. Prediksi online selalu ditayangkan dari region default yang ditentukan untuk model.

Untuk melihat region yang tersedia untuk layanan AI Platform Prediction, termasuk pelatihan model dan prediksi online/batch, baca panduan region.

Logging prediksi

Prediksi batch menghasilkan log tugas yang dapat Anda lihat di Cloud Logging. Anda juga bisa mendapatkan log untuk permintaan prediksi online jika mengonfigurasi model untuk membuatnya saat membuatnya. Perhatikan bahwa Anda harus menentukan opsi ini saat membuat resource model di AI Platform Prediction; semua versi model menghasilkan log untuk prediksi online, atau tidak ada yang menghasilkan log.

Anda dapat menetapkan logging prediksi online untuk model dengan menetapkan onlinePredictionLogging ke true (True di Python) di Resource model yang Anda gunakan saat membuat model dengan projects.models.create. Jika Anda menggunakan Google Cloud CLI untuk membuat model, sertakan flag --enable-logging saat menjalankan gcloud ai-platform models create.

Mendapatkan prediksi dari model yang tidak di-deploy

Anda dapat meminta prediksi batch menggunakan model yang belum di-deploy ke layanan AI Platform Prediction. Daripada menentukan nama model atau versi, Anda dapat menggunakan URI lokasi Cloud Storage tempat model yang ingin dijalankan disimpan.

Karena model yang tidak di-deploy tidak memiliki versi runtime default yang ditetapkan, Anda harus menetapkannya secara eksplisit dalam permintaan tugas.

Dalam hal lain, tugas prediksi batch yang menggunakan model yang tidak di-deploy berperilaku seperti tugas batch lainnya.

Pengujian model

Anda dapat menggunakan layanan prediksi AI Platform Prediction untuk menghosting model yang sedang dalam produksi, tetapi Anda juga dapat menggunakannya untuk menguji model. Secara tradisional, pengujian model adalah langkah sebelum bersiap untuk men-deploy solusi machine learning. Tujuan lulus pengujian adalah untuk menguji model Anda di lingkungan yang sedekat mungkin dengan cara model tersebut akan digunakan dalam situasi dunia nyata.

Ingat bahwa Anda dapat memiliki beberapa versi model yang di-deploy secara bersamaan di layanan. Artinya, Anda dapat memiliki beberapa revisi model dalam pengujian sekaligus jika perlu. Hal ini juga memudahkan deployment versi produksi model saat menguji revisi berikutnya. Seperti halnya banyak pengembangan aplikasi machine learning, ketersediaan data baru sering kali menjadi faktor pembatas. Anda harus mengembangkan strategi untuk memisahkan data yang Anda miliki dan mengumpulkan data baru untuk digunakan dalam pengujian.

Langkah selanjutnya