Rutinitas prediksi kustom memungkinkan Anda menentukan kode yang dijalankan saat Anda mengirim permintaan prediksi online ke AI Platform Prediction.
Saat Anda men-deploy resource versi ke AI Platform Prediction tanpa menggunakan rutinitas prediksi kustom, resource tersebut akan menangani permintaan prediksi dengan menjalankan operasi prediksi framework machine learning yang Anda gunakan untuk pelatihan.
Namun, saat men-deploy rutinitas prediksi kustom sebagai resource versi, Anda dapat memberi tahu AI Platform Prediction untuk menjalankan kode Python kustom sebagai respons terhadap setiap permintaan prediksi yang diterima. Anda dapat melakukan prapemrosesan input prediksi sebelum model yang dilatih menjalankan prediksi, atau Anda dapat melakukan pascapemrosesan prediksi model sebelum mengirim hasil prediksi.
Untuk membuat rutinitas prediksi kustom, Anda harus menyediakan dua bagian pada AI Platform Prediction saat membuat versi model:
Direktori model di Cloud Storage, yang berisi artefak yang perlu digunakan untuk prediksi.
Paket distribusi sumber Python
.tar.gz
di Cloud Storage yang berisi implementasi antarmuka Predictor dan kode kustom lainnya yang Anda inginkan untuk digunakan oleh AI Platform Prediction pada waktu prediksi.
Anda hanya dapat men-deploy rutinitas prediksi kustom saat menggunakan jenis mesin lama (MLS1) untuk versi model Anda.
Mengupload artefak model ke direktori model
Ikuti panduan untuk men-deploy model guna mengupload model terlatih ke Cloud Storage, beserta file lain yang menyediakan data atau stateful untuk digunakan Prediksi AI Platform selama prediksi.
Total ukuran file artefak model yang Anda deploy ke AI Platform Prediction harus 500 MB atau kurang.
Anda dapat mengupload model machine learning terlatih ke direktori model sebagai
TensorFlow SavedModel
, file model.joblib
, file model.pkl
, atau
file model.bst
, tetapi Anda juga dapat
memberikan model Anda sebagai file HDF5 yang berisi tf.keras
model
terlatih atau dalam format serial yang berbeda.
Anda juga dapat menyertakan file acar dengan instance class praprosesor kustom yang menyimpan status serial dari pelatihan.
Misalnya, pertimbangkan praprosesor berikut, yang ditentukan dalam file bernama
preprocess.py
:
Selama pelatihan pada set data numerik, praprosesor memusatkan data di sekitar
0 dengan mengurangi rata-rata setiap kolom dari setiap nilai dalam kolom. Kemudian, Anda dapat mengekspor instance preprosesor sebagai file acar, preprocessor.pkl
, yang mempertahankan rata-rata setiap kolom yang dihitung dari data pelatihan.
Selama prediksi, rutinitas prediksi kustom dapat memuat preprosesor dari file ini untuk melakukan transformasi yang identik pada input prediksi.
Untuk mempelajari cara menggunakan praprosesor stateful seperti ini dalam rutinitas prediksi kustom, baca bagian selanjutnya yang menjelaskan cara mengimplementasikan antarmuka Predictor.
Untuk mendapatkan contoh lengkap penggunaan praprosesor stateful selama pelatihan dan prediksi, baca Membuat rutinitas prediksi kustom dengan Keras atau Membuat rutinitas prediksi kustom dengan scikit-learn.
Membuat Predictor Anda
Memberi tahu AI Platform Prediction cara menangani permintaan prediksi dengan menyediakannya dengan class Predictor. Ini adalah class yang mengimplementasikan antarmuka berikut:
Node prediksi AI Platform Prediction menggunakan metode class from_path
untuk memuat instance Predictor Anda. Metode ini akan memuat artefak yang Anda simpan di direktori model, yang isinya disalin dari Cloud Storage ke lokasi yang ditampilkan oleh argumen model_dir
.
Setiap kali deployment Anda menerima permintaan prediksi online, instance class Predictor yang ditampilkan oleh from_path
menggunakan metode predict
untuk menghasilkan
prediksi. AI Platform Prediction menserialisasi nilai hasil metode ini ke JSON dan mengirimkannya sebagai respons terhadap permintaan prediksi.
Perhatikan bahwa metode predict
tidak perlu mengonversi input dari JSON menjadi objek Python atau mengonversi output ke JSON; AI Platform Prediction menangani hal ini di luar metode predict
.
AI Platform Prediction menyediakan argumen instances
dengan menguraikan kolom instances
dari isi permintaan predict
ke AI Platform Training and Prediction API. Fungsi ini menguraikan kolom
lain dari isi permintaan dan memberikannya ke metode predict
sebagai entri
dalam kamus **kwargs
. Untuk mempelajari lebih lanjut, baca cara membuat struktur permintaan predict
ke AI Platform Training and Prediction API.
Melanjutkan contoh dari bagian sebelumnya, anggaplah direktori model Anda berisi preprocessor.pkl
(instance acar class ZeroCenterer
) dan model tf.keras
terlatih yang diekspor sebagai model.h5
atau model scikit-learn terlatih yang diekspor sebagai model.joblib
.
Bergantung pada framework machine learning yang Anda gunakan, terapkan salah satu class Predictor berikut dalam file bernama predictor.py
:
TensorFlow
scikit-learn
Perhatikan bahwa metode predict
mengonversi hasil prediksi menjadi daftar dengan metode tolist
sebelum menampilkannya. Array NumPy tidak dapat diserialisasi JSON, jadi Anda harus
mengonversinya menjadi daftar angka (yang dapat diserialisasi JSON). Jika tidak, AI Platform Prediction akan gagal mengirim respons prediksi.
Mengemas Predictor Anda dan dependensinya
Anda harus mengemas Predictor sebagai paket distribusi sumber .tar.gz
.
Karena NumPy, TensorFlow, dan scikit-learn disertakan dalam image runtime AI Platform Prediction, Anda tidak perlu menyertakan dependensi ini dalam tarball. Namun, pastikan untuk
menyertakan semua dependensi Predictor yang belum diinstal sebelumnya di
AI Platform Prediction.
Untuk contoh di atas, Anda harus menyertakan preprocess.py
dalam paket distribusi sumber, meskipun Predictor Anda tidak mengimpornya secara eksplisit.
Jika tidak, preprocessor = pickle.load(f)
akan gagal karena Python tidak akan
mengenali class instance ZeroCenterer
dalam file acar.
setup.py
berikut menunjukkan satu cara untuk memaketkan skrip ini:
Untuk mengemas dan mengupload contoh kode kustom yang dijelaskan di halaman ini, lakukan hal berikut:
Buat file
preprocess.py
,predictor.py
, dansetup.py
yang dijelaskan di bagian sebelumnya, semuanya di direktori yang sama. Arahkan ke direktori itu di {i>shell<i} Anda.Jalankan
python setup.py sdist --formats=gztar
untuk membuatdist/my_custom_code-0.1.tar.gz
.Upload tarball ini ke lokasi staging di Cloud Storage.
Direktori ini tidak harus sama dengan direktori model Anda. Jika Anda berencana untuk melakukan iterasi dan men-deploy beberapa versi rutinitas prediksi kustom, Anda dapat mengupload paket kode kustom dalam direktori staging yang ditetapkan. Anda dapat menambahkan argumen
version
disetup.py
saat mengupdate kode untuk melacak versi yang berbeda.Perintah berikut menunjukkan satu cara untuk mengupload paket distribusi sumber Anda ke Cloud Storage:
gsutil cp dist/my_custom_code-0.1.tar.gz gs://YOUR_BUCKET/PATH_TO_STAGING_DIR/
Anda dapat menyediakan kode untuk rutinitas prediksi kustom Anda dalam satu atau beberapa paket.
Men-deploy rutinitas prediksi kustom Anda
Pertama, pilih region tempat prediksi online tersedia dan gunakan gcloud
untuk membuat resource model:
gcloud ai-platform models create MODEL_NAME{"</var>"}} \
--regions CHOSEN_REGION
Pastikan komponen gcloud beta
Anda diupdate, lalu buat resource versi
dengan perhatian khusus pada flag gcloud
berikut:
--origin
: Jalur ke direktori model Anda di Cloud Storage.--package-uris
: Daftar tarball kode pengguna yang dipisahkan koma di Cloud Storage, termasuk yang berisi class Predictor Anda.--prediction-class
: Nama class Predictor Anda yang sepenuhnya memenuhi syarat (MODULE_NAME.CLASS_NAME).--framework
: Jangan tentukan framework saat men-deploy rutinitas prediksi kustom.--runtime-version
: Rutinitas prediksi kustom tersedia di versi runtime 1.4 hingga 2.11.
Perintah berikut menunjukkan cara membuat resource versi berdasarkan file contoh yang dijelaskan di bagian sebelumnya:
gcloud components install beta
gcloud beta ai-platform versions create VERSION_NAME \
--model MODEL_NAME{"</var>"}} \
--runtime-version 2.11 \
--python-version 3.7 \
--origin gs://YOUR_BUCKET/PATH_TO_MODEL_DIR \
--package-uris gs://YOUR_BUCKET/PATH_TO_STAGING_DIR/my_custom_code-0.1.tar.gz \
--prediction-class predictor.MyPredictor
Untuk mempelajari lebih lanjut cara membuat model dan versi secara mendetail, atau mempelajari cara membuatnya dengan menggunakan Konsol Google Cloud bukan gcloud CLI, lihat panduan untuk men-deploy model.
Menentukan akun layanan
Saat membuat resource versi, Anda dapat menentukan akun layanan untuk digunakan oleh rutinitas prediksi kustom selama prediksi. Dengan demikian, Anda dapat menyesuaikan izinnya untuk mengakses resource Google Cloud lainnya. Pelajari lebih lanjut cara menentukan akun layanan untuk rutinitas prediksi kustom.
Langkah selanjutnya
- Selesaikan tutorial tentang penggunaan rutinitas prediksi kustom dengan Keras atau dengan scikit-learn untuk melihat contoh yang lebih lengkap tentang cara melatih dan men-deploy model menggunakan rutinitas prediksi kustom.
- Baca panduan mengekspor model guna mempelajari cara mengekspor artefak untuk prediksi tanpa menggunakan rutinitas prediksi kustom.
- Baca panduan men-deploy model untuk mempelajari detail lebih lanjut tentang cara men-deploy resource
model
danversion
ke Prediksi AI Platform untuk menyajikan prediksi.