MengeksporSavedModel untuk prediksi

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:

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:

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:

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) dari int64 menjadi int32.

  • 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.

  1. 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 menggunakan tf.placeholder. Kode contoh berikut berasal dari contoh Sensus kami:

    def json_serving_input_fn():
        """Build the serving inputs."""
        inputs = {}
        for feat in featurizer.INPUT_COLUMNS:
            inputs[feat.name] = tf.placeholder(shape=[None], dtype=feat.dtype)
    
        return tf.estimator.export.ServingInputReceiver(inputs, inputs)
    
    
  2. EksporSavedModel dari estimator menggunakan tf.estimator.Estimator.export_saved_model, dengan meneruskan jalur ke model Anda sebagai parameter export_dir_base, dan nama fungsi input penayangan Anda sebagai parameter serving_input_fn. Dalam contoh Sensus, jenis Validator yang digunakan adalah tf.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.

  1. Tentukan fungsi input penayangan dalam skrip Python Anda, mirip dengan cara Anda menentukannya dalam pelatihan:

    def json_serving_input_fn():
        """Build the serving inputs."""
        inputs = {}
        for feat in featurizer.INPUT_COLUMNS:
            inputs[feat.name] = tf.placeholder(shape=[None], dtype=feat.dtype)
    
        return tf.estimator.export.ServingInputReceiver(inputs, inputs)
    
    
  2. Saat membuat Estimator, pastikan untuk menetapkan parameter model_dir agar sama dengan yang digunakan dalam pelatihan. Hal ini membuat checkpoint dari model yang Anda simpan sebelumnya tersedia untuk Estimator.

  3. Terakhir, gunakan Estimator untuk memanggil tf.estimator.Estimator.export_saved_model yang meneruskan di jalur ke model Anda sebagai parameter export_dir_base, dan nama fungsi input penayangan sebagai parameter serving_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