Untuk men-deploy model terlatih ke AI Platform Prediction dan menggunakannya untuk menayangkan prediksi, Anda harus mengekspornya terlebih dahulu dalam format SavedModel TensorFlow.
Halaman ini menguraikan beberapa hal penting yang perlu dipertimbangkan saat Anda membuat SavedModel. Untuk informasi yang lebih mendetail tentang cara mengekspor ke SavedModel, baca panduan TensorFlow untuk SavedModel dan panduan TensorFlow untuk menyimpan model Keras. Untuk mengetahui detail tentang cara men-deploy SavedModel ke AI Platform Prediction untuk menayangkan prediksi, baca panduan men-deploy model. Untuk informasi latar belakang umum tentang proses prediksi, lihat halaman ringkasan prediksi.
Rutinitas prediksi kustom
Sebagai alternatif untuk men-deploy SavedModel, Anda juga dapat membuat dan men-deploy rutinitas prediksi kustom. Rutinitas prediksi kustom dapat menggabungkan SavedModel (atau model terlatih yang disimpan dengan cara lain) dengan artefak pelatihan lain 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 sebagai SavedModel, ada beberapa langkah penting yang harus dilakukan sebelum Anda siap mendapatkan prediksi.
Ada beberapa perbedaan utama antara grafik pelatihan dan grafik penayangan. Grafik pelatihan berisi fitur yang tidak sesuai untuk ditayangkan, seperti:
- pembaca file
- antrean input
- lapisan dropout
- fungsi loss
- pengoptimal
Karena proses penayangan prediksi memiliki kebutuhan yang berbeda dengan proses pelatihan, praktik terbaiknya adalah mengekspor grafik terpisah khusus untuk menayangkan prediksi.
Memahami SavedModel
SavedModel adalah format yang direkomendasikan TensorFlow untuk menyimpan model, dan merupakan format yang diperlukan untuk men-deploy model TensorFlow yang telah dilatih di AI Platform Prediction. Mengekspor model terlatih sebagai SavedModel akan menyimpan grafik pelatihan dengan aset, variabel, dan metadatanya dalam format yang dapat digunakan dan dipulihkan oleh AI Platform Prediction untuk prediksi.
Setelah mengekspor SavedModel, Anda memiliki direktori SavedModel yang berisi hal berikut:
- grafik pelatihan Anda, yang disimpan dalam buffer protokol SavedModel
- file eksternal, yang disebut aset
- variabel, yang disimpan sebagai file checkpoint
Saat men-deploy SavedModel ke AI Platform Prediction, Anda harus menyertakan
seluruh direktori SavedModel, bukan hanya file buffering protokol SavedModel
yang berisi grafik dan metadatanya. File ini biasanya memiliki ekstensi
.pb
atau .pbtxt
.
SavedModel 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 dijalankan di CPU, dan satu lagi untuk dijalankan di GPU.
Pelajari lebih lanjut struktur direktori SavedModel.
Mengekspor dari berbagai TensorFlow API
Ada beberapa cara untuk mengekspor SavedModels dari kode pelatihan TensorFlow Anda. Daftar berikut menjelaskan beberapa cara yang sesuai untuk berbagai API TensorFlow:
- 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 Penjelasan AI dengan model Anda, pelajari persyaratan tambahan untuk SavedModel Anda.
Memeriksa dan menyesuaikan ukuran model
SavedModel Anda harus berukuran 500 MB atau lebih kecil jika Anda ingin men-deploynya ke versi model yang menggunakan jenis mesin lama (MLS1). Jumlahnya dapat mencapai 10 GB jika Anda menggunakan jenis mesin Compute Engine (N1). Pelajari lebih lanjut jenis mesin untuk prediksi online.
Batas ukuran ini mencakup semua aset dan variabel di direktori
SavedModel Anda, bukan hanya file buffering protokol SavedModel itu sendiri (yaitu,
saved_model.pb
atau saved_model.pbtxt
).
Untuk memeriksa ukuran model selama pengembangan, ekspor SavedModel dan periksa ukuran file direktori.
Jika SavedModel Anda melebihi batas 500 MB:
- Pastikan Anda hanya menyertakan hal-hal yang diperlukan untuk prediksi dalam grafik yang diekspor.
- Kurangi ukuran model dengan mengurangi presisi bobot dan data.
Dengan mengikuti langkah-langkah ini, SavedModel dapat berada di bawah batas 500 MB dan mengurangi latensi prediksi. Manfaatnya mencakup performa yang lebih baik dan tidak perlu meminta serta menunggu penambahan kuota.
Jika Anda masih memerlukan kuota tambahan, pelajari cara meminta penambahan kuota.
Membuat grafik prediksi yang optimal
Pelatihan menghasilkan beberapa titik pemeriksaan yang tidak digunakan untuk menyalurkan 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, pastikan ringkasan tersebut tidak disertakan dalam SavedModel Anda. Ringkasan TensorBoard ini tidak diperlukan untuk grafik prediksi.
Mengurangi presisi untuk mengurangi ukuran file
Mengurangi presisi variabel dan data input adalah kompromi yang mengurangi ukuran model Anda secara signifikan dengan beberapa biaya akurasi prediksi. Data presisi tinggi disimpan dengan kurang efisien dibandingkan data presisi rendah. Meskipun data presisi rendah adalah sumber derau, jaringan saraf dapat "mengabaikan" derau ini dan tetap menghasilkan prediksi yang cukup akurat.
Jika penggunaan metode ini menyebabkan penurunan akurasi prediksi yang terlalu besar untuk kasus penggunaan Anda, coba minta peningkatan kuota.
Perkecil ukuran file dengan mengurangi ukuran bobot, yang secara default menggunakan bilangan floating point yang sulit disimpan secara efisien. Bobot yang disimpan secara tidak efisien ini adalah kontributor terbesar untuk keseluruhan ukuran file model.
Kuantisasi data berkelanjutan untuk mengurangi ukuran model hingga 75% tanpa mengorbankan akurasi dalam jumlah yang signifikan.
Menggunakan variabel yang kurang akurat. Misalnya, ubah jenis data (
dtype
) dariint64
menjadiint32
.Kurangi ukuran fitur input lainnya di folder
assets
di direktori SavedModel Anda. Misalnya, gunakan ukuran kosakata yang lebih kecil untuk data teks.Baca teknik untuk mengoptimalkan model TensorFlow untuk penayangan secara lebih mendetail, dan pelajari contoh penerapan teknik ini. Teknik tertaut hanya berlaku jika Anda menggunakan TensorFlow 1.
Alat untuk memeriksa SavedModel dan grafik
TensorFlow menyediakan antarmuka command line yang dapat Anda gunakan untuk memeriksa aspek
SavedModel, seperti pemformatan input dan SignatureDefs
.
Pelajari lebih lanjut CLI
SavedModel.
Alat Transformasi Grafik di TensorFlow dapat digunakan untuk mengoptimalkan model Anda untuk deployment. Meskipun penggunaan alat ini dijelaskan dalam konteks deployment seluler, alat ini juga dapat digunakan untuk mengoptimalkan model untuk deployment non-seluler.
Membuat fungsi input inferensi
Jika mengekspor SavedModel menggunakan tf.keras.Model.save
, Anda tidak perlu menentukan fungsi input inferensi.
Jika tidak, tentukan fungsi input penayangan saat Anda mengekspor SavedModel. Anda dapat melakukannya pada poin berikut sehubungan dengan keseluruhan proses pelatihan:
- Selama akhir proses pelatihan.
- Sebagai proses terpisah setelah pelatihan selesai.
Contoh berikut menunjukkan cara melakukannya untuk Estimator terlatih. Lihat informasi selengkapnya tentang menayangkan fungsi input untuk Estimator.
Membuat grafik penayangan selama pelatihan
Hal ini biasanya terjadi di akhir proses pelatihan, tetapi masih terkait dengan pelatihan.
Tentukan fungsi input penayangan. Dalam fungsi Anda, pastikan dimensi terluar fitur Anda adalah
None
. Ini sesuai dengan ukuran batch Anda, dan ditunjukkan di bawah saat menentukan nilai item dalam dict fitur menggunakantf.placeholder
. Kode contoh berikut berasal dari contoh Sensus kami:Mengekspor SavedModel dari estimator menggunakan
tf.estimator.Estimator.export_saved_model
, meneruskan jalur ke model sebagai parameterexport_dir_base
, dan nama fungsi input penayangan sebagai parameterserving_input_fn
. Dalam contoh Sensus, jenis Estimator yang digunakan adalahtf.estimator.DNNLinearCombinedClassifier
.
Membuat grafik penayangan secara terpisah dari pelatihan
Jika sudah melatih model, Anda bisa mendapatkan prediksi tanpa
melatih ulang. Proses ini sangat mirip dengan membuat grafik penayangan selama
pelatihan. Perbedaan utamanya adalah Anda membuat grafik penayangan dalam skrip
Python terpisah yang Anda jalankan setelah pelatihan selesai. Ide dasarnya adalah
membuat Estimator
dengan model_dir
yang sama 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, mirip dengan cara Anda menentukannya dalam pelatihan:
Saat membuat
Estimator
, pastikan untuk menetapkan parametermodel_dir
yang sama dengan yang digunakan dalam pelatihan. Tindakan ini akan membuat checkpoint dari model yang sebelumnya Anda simpan tersedia untukEstimator
.Terakhir, gunakan
Estimator
untuk memanggiltf.estimator.Estimator.export_saved_model
yang meneruskan 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 SavedModel dari
tf.keras
atau dari estimator
TensorFlow,
grafik yang diekspor siap ditayangkan secara default.
Dalam kasus lain, saat mem-build grafik prediksi TensorFlow, Anda harus menentukan nilai yang benar untuk tag dan tanda tangan grafik. TensorFlow menyediakan konstanta untuk nilai tag dan tanda tangan ini, yang digunakan untuk tujuan berikut:
- Untuk memilih grafik di SavedModel Anda guna menayangkan prediksi
- Untuk menunjukkan bahwa Anda membuat tanda tangan prediksi untuk grafik prediksi
Tanda tangan menentukan input dan output untuk grafik Anda. Saat mem-build
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 di SavedModel yang digunakan untuk menayangkan
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.