Untuk men-deploy model terlatih ke AI Platform Prediction dan menggunakannya untuk menyajikan prediksi, Anda harus mengekspornya terlebih dahulu dalam format TensorFlowSavedModel.
Halaman ini menguraikan beberapa hal penting yang perlu dipertimbangkan saat Anda membuat SavedModel. Untuk mengetahui informasi selengkapnya tentang cara mengekspor keSavedModel, baca panduan TensorFlow untukSavedModels dan Panduan TensorFlow untuk menyimpan model Keras. Untuk detail tentang cara men-deploy SaveModel ke Prediksi AI Platform untuk memberikan prediksi, baca panduan untuk men-deploy model. Untuk mengetahui informasi latar belakang umum tentang proses prediksi, lihat halaman ringkasan prediksi.
Rutinitas prediksi kustom
Sebagai alternatif untuk men-deploySavedModel, Anda juga dapat membuat dan men-deploy rutinitas prediksi kustom. Rutinitas prediksi kustom dapat menggabungkan SaveModel (atau model terlatih yang disimpan dengan cara berbeda) dengan artefak pelatihan dan kode Python yang Anda berikan untuk menyesuaikan cara AI Platform Prediction menangani permintaan prediksi. Misalnya, Anda dapat menggunakan fleksibilitas ini untuk melakukan pra-pemrosesan input prediksi sebelum model membuat prediksi.
Untuk mempelajari lebih lanjut, baca panduan rutinitas prediksi kustom.
Memahami grafik pelatihan dan grafik penayangan
Setelah melatih model dan mengekspornya sebagaiSavedModel, ada beberapa langkah penting yang harus Anda lakukan sebelum siap mendapatkan prediksi.
Ada beberapa perbedaan utama antara grafik pelatihan dan grafik penayangan. Grafik pelatihan berisi fitur yang tidak sesuai untuk penayangan, seperti:
- pembaca file
- antrean input
- lapisan dropout
- fungsi loss
- pengoptimal
Karena proses penyajian prediksi memiliki kebutuhan yang berbeda dengan proses pelatihan, praktik terbaiknya adalah mengekspor grafik terpisah yang khusus untuk menyalurkan prediksi.
MemahamiSavedModel
SaveModel adalah format yang direkomendasikan TensorFlow untuk menyimpan model, dan merupakan format yang diperlukan untuk men-deploy model TensorFlow terlatih di AI Platform Prediction. Mengekspor model terlatih sebagaiSavedModel akan menyimpan grafik pelatihan Anda beserta aset, variabel, dan metadatanya dalam format yang dapat digunakan dan dipulihkan oleh AI Platform Prediction.
Setelah mengeksporSavedModel, Anda memiliki direktoriSavedModel yang berisi hal berikut:
- grafik pelatihan Anda, yang disimpan di buffering protokol TersimpanModel
- file eksternal, yang disebut aset
- variabel, yang disimpan sebagai file checkpoint
Saat men-deploySavedModel ke Prediksi AI Platform, Anda harus menyertakan seluruh direktoriSavedModel, bukan hanya file buffering protokol SaveModel yang berisi grafik dan metadatanya. File ini biasanya memiliki ekstensi
.pb
atau .pbtxt
.
TersimpanModel memungkinkan Anda menyimpan beberapa versi grafik yang memiliki aset dan variabel (atau titik pemeriksaan) yang sama. Misalnya, Anda mungkin ingin mengembangkan dua versi grafik yang sama: satu untuk berjalan di CPU, dan satu lagi untuk dijalankan di GPU.
Pelajari struktur direktoriSavedModel lebih lanjut.
Mengekspor dari berbagai TensorFlow API
Ada beberapa cara untuk mengekspor SaveModels dari kode pelatihan TensorFlow. Daftar berikut menjelaskan beberapa cara berbeda yang dapat digunakan untuk berbagai TensorFlow API:
- Jika Anda telah menggunakan Keras untuk pelatihan, gunakan
tf.keras.Model.save
untuk mengekspor SavedModel - Jika Anda menggunakan Estimator untuk pelatihan, gunakan
tf.estimator.Estimator.export_saved_model
untuk mengekspor SavedModel. - Jika tidak, gunakan
tf.saved_model.save
atau gunakantf.saved_model.SavedModelBuilder
(tf.compat.v1.saved_model.Builder
di TensorFlow 2).
Kompatibilitas dengan AI Explanations
Jika Anda ingin menggunakan AI Explanations dengan model Anda, pelajari persyaratan tambahan untuk SavedModel Anda.
Memeriksa dan menyesuaikan ukuran model
TersimpanModel Anda harus 500 MB atau lebih kecil jika ingin men-deploy-nya ke versi model yang menggunakan jenis mesin (MLS1) lama. Dapat mencapai 10 GB jika Anda menggunakan jenis mesin Compute Engine (N1). Pelajari jenis mesin untuk prediksi online lebih lanjut.
Batas ukuran ini mencakup semua aset dan variabel di direktoriSavedModel Anda, bukan hanya file buffering protokol SaveModel itu sendiri (yaitu, saved_model.pb
atau saved_model.pbtxt
).
Untuk memeriksa ukuran model Anda selama pengembangan, eksporSavedModel dan periksa ukuran file direktori.
JikaSavedModel Anda melebihi batas 500 MB:
- Pastikan Anda hanya menyertakan hal yang diperlukan untuk prediksi dalam grafik yang diekspor.
- Kurangi ukuran model dengan mengurangi presisi bobot dan data.
Mengikuti langkah-langkah ini dapat membuat SaveModel berada di bawah batas 500 MB dan mengurangi latensi prediksi. Manfaatnya meliputi performa yang lebih baik dan tidak perlu meminta dan menunggu peningkatan kuota.
Jika Anda masih memerlukan kuota tambahan, pelajari cara meminta peningkatan kuota.
Membuat grafik prediksi yang optimal
Pelatihan menghasilkan beberapa checkpoint yang tidak digunakan untuk menyajikan prediksi. Pastikan untuk mengupload direktori yang bebas dari artefak tersebut, yang hanya berisi model yang akan di-deploy.
Misalnya, jika Anda mengekspor ringkasan selama proses pelatihan untuk visualisasi di TensorBoard, Anda pasti ingin memastikan ringkasan tersebut tidak disertakan dalamSavedModel. Ringkasan TensorBoard ini tidak diperlukan untuk grafik prediksi.
Mengurangi presisi untuk mengurangi ukuran file
Mengurangi presisi variabel dan data input adalah kompromi yang akan mengurangi ukuran model Anda secara signifikan dengan mengurangi beberapa biaya akurasi prediksi. Data presisi tinggi disimpan secara kurang efisien daripada data presisi rendah. Meskipun data presisi rendah merupakan sumber derau, jaringan neural dapat "mengabaikan" derau ini dan masih menghasilkan prediksi yang cukup akurat.
Jika penggunaan metode ini mengakibatkan kerugian akurasi prediksi yang terlalu besar untuk kasus penggunaan Anda, coba minta penambahan kuota.
Perkecil ukuran file dengan mengurangi ukuran bobot, yang secara default menggunakan angka floating point yang sulit disimpan secara efisien. Bobot yang tidak disimpan secara efisien ini merupakan kontributor terbesar terhadap ukuran file model secara keseluruhan.
Hitung data berkelanjutan untuk mengurangi ukuran model hingga 75% tanpa mengorbankan sejumlah besar akurasi.
Menggunakan variabel yang kurang akurat. Misalnya, ubah jenis data (
dtype
) dariint64
menjadiint32
.Kurangi ukuran fitur input lainnya di folder
assets
pada direktoriSavedModel Anda. Misalnya, gunakan ukuran kosakata yang lebih kecil untuk data teks.Baca tentang teknik untuk mengoptimalkan model TensorFlow untuk penyajian secara lebih mendetail, dan pelajari contoh penerapan teknik ini. Teknik tertaut hanya berlaku jika Anda menggunakan TensorFlow 1.
Alat untuk memeriksaSavedModels dan grafik
TensorFlow menyediakan antarmuka command line yang dapat Anda gunakan untuk memeriksa aspek SaveModel Anda, seperti pemformatan input dan SignatureDefs
.
Pelajari SavedModel CLI lebih lanjut.
Alat Transformasi Grafik di TensorFlow dapat digunakan untuk mengoptimalkan model Anda untuk deployment. Meskipun penggunaannya dijelaskan dalam konteks deployment seluler, alat ini juga dapat digunakan untuk mengoptimalkan model bagi deployment non-seluler.
Membuat fungsi input penayangan
Jika mengekspor SaveModel menggunakan
tf.keras.Model.save
,
Anda tidak perlu menentukan fungsi input penayangan.
Jika tidak, tentukan fungsi input penayangan saat mengeksporSavedModel. Anda dapat melakukannya pada langkah-langkah berikut sehubungan dengan proses pelatihan secara keseluruhan:
- Selama akhir proses pelatihan.
- Sebagai proses terpisah setelah pelatihan selesai.
Contoh berikut menunjukkan cara melakukannya untuk Assessment terlatih. Lihat informasi selengkapnya tentang menayangkan fungsi input untuk Assessment.
Membuat grafik penayangan selama pelatihan
Hal ini biasanya terjadi pada akhir proses pelatihan, tetapi masih terikat dengan pelatihan.
Menentukan fungsi input penayangan. Dalam fungsi Anda, pastikan dimensi terluar fitur Anda adalah
None
. Hal ini sesuai dengan ukuran tumpukan Anda, dan ditunjukkan di bawah saat menentukan nilai item dalam dikte fitur Anda menggunakantf.placeholder
. Kode contoh berikut berasal dari contoh Sensus kami:EksporSavedModel dari estimator menggunakan
tf.estimator.Estimator.export_saved_model
, dengan meneruskan jalur ke model Anda sebagai parameterexport_dir_base
, dan nama fungsi input penayangan Anda sebagai parameterserving_input_fn
. Dalam contoh Sensus, jenis Validator yang digunakan adalahtf.estimator.DNNLinearCombinedClassifier
.
Membuat grafik penayangan secara terpisah dari pelatihan
Jika telah melatih model, Anda bisa mendapatkan prediksi tanpa melatih ulang. Proses ini sangat mirip dengan membuat grafik penyaluran selama pelatihan. Perbedaan utamanya adalah Anda membuat grafik penayangan dalam skrip Python terpisah yang dijalankan setelah pelatihan selesai. Ide dasarnya adalah
membuat Estimator
dengan model_dir
yang sama dengan yang digunakan dalam pelatihan, lalu
memanggil
tf.estimator.Estimator.export_saved_model
seperti yang dijelaskan di bagian sebelumnya.
Tentukan fungsi input penayangan dalam skrip Python Anda, mirip dengan cara Anda menentukannya dalam pelatihan:
Saat membuat
Estimator
, pastikan untuk menetapkan parametermodel_dir
agar sama dengan yang digunakan dalam pelatihan. Hal ini membuat checkpoint dari model yang Anda simpan sebelumnya tersedia untukEstimator
.Terakhir, gunakan
Estimator
untuk memanggiltf.estimator.Estimator.export_saved_model
yang meneruskan di jalur ke model Anda sebagai parameterexport_dir_base
, dan nama fungsi input penayangan sebagai parameterserving_input_fn
.
Tag dan tanda tangan TensorFlow
Jika Anda mengekspor SaveModel dari
tf.keras
atau dari pengestimasi TensorFlow,
grafik yang diekspor akan siap untuk ditayangkan secara default.
Dalam kasus lain, saat membuat grafik prediksi TensorFlow, Anda harus menentukan nilai yang benar untuk tag dan tanda tangan grafik Anda. TensorFlow menyediakan konstanta untuk nilai tag dan tanda tangan ini, yang digunakan untuk tujuan berikut:
- Untuk memilih grafik diSavedModel Anda untuk menyajikan prediksi
- Untuk menunjukkan bahwa Anda sedang membuat tanda tangan prediksi untuk grafik prediksi
Tanda tangan menentukan input dan output untuk grafik Anda. Saat membuat tanda tangan untuk grafik prediksi, Anda harus menentukan konstanta tanda tangan yang valid sebagai parameter method_name
di build_signature_def
.
Untuk prediksi, pilihan terbaik biasanya adalah PREDICT_METHOD_NAME
.
Anda harus menggunakan tag untuk menentukan grafik mana dalamSavedModel yang digunakan untuk memberikan prediksi. Di add_meta_graph_and_variables
, tambahkan
tag_constants.SERVING
ke daftar tags
Anda.
Lihat contoh cara membuat grafik prediksi menggunakan konstanta yang benar untuk tag dan tanda tangan.
Langkah selanjutnya
- Pelajari cara men-deploy model yang diekspor ke AI Platform Prediction untuk menayangkan prediksi.