Bergabunglah dengan kami di DevFest untuk Ukraina 14-15 Juni Daftar Online sekarang

TFX untuk Seluler

pengantar

Panduan ini menunjukkan bagaimana Tensorflow Extended (TFX) dapat membuat dan mengevaluasi model machine learning yang akan diterapkan di perangkat. TFX sekarang menyediakan dukungan asli untuk TFLite , yang memungkinkan untuk melakukan inferensi yang sangat efisien pada perangkat seluler.

Panduan ini memandu Anda melalui perubahan yang dapat dilakukan pada saluran apa pun untuk menghasilkan dan mengevaluasi model TFLite. Kami memberikan contoh lengkap di sini , menunjukkan bagaimana TFX dapat melatih dan mengevaluasi model TFLite yang dilatih dari dataset MNIST . Lebih lanjut, kami menunjukkan bagaimana pipeline yang sama dapat digunakan untuk mengekspor secara simultan baik SavedModel standar berbasis Keras maupun TFLite, yang memungkinkan pengguna untuk membandingkan kualitas keduanya.

Kami berasumsi Anda sudah familiar dengan TFX, komponen kami, dan saluran pipa kami. Jika tidak, silakan lihat tutorial ini.

Langkah

Hanya dua langkah yang diperlukan untuk membuat dan mengevaluasi model TFLite di TFX. Langkah pertama adalah memanggil penulis ulang TFLite dalam konteks Pelatih TFX untuk mengonversi model TensorFlow terlatih menjadi model TFLite. Langkah kedua adalah mengkonfigurasi Evaluator untuk mengevaluasi model TFLite. Kami sekarang membahas masing-masing secara bergantian.

Memanggil penulis ulang TFLite dalam Pelatih.

Pelatih TFX mengharapkan run_fn yang ditentukan pengguna untuk ditentukan dalam file modul. run_fn ini mendefinisikan model yang akan dilatih, melatihnya untuk jumlah iterasi yang ditentukan, dan mengekspor model yang dilatih.

Di sisa bagian ini, kami menyediakan cuplikan kode yang menunjukkan perubahan yang diperlukan untuk memanggil penulis ulang TFLite dan mengekspor model TFLite. Semua kode ini terletak di run_fn modul MNIST TFLite .

Seperti yang ditunjukkan pada kode di bawah ini, pertama-tama kita harus membuat tanda tangan yang menggunakan Tensor untuk setiap fitur sebagai input. Perhatikan bahwa ini adalah penyimpangan dari kebanyakan model yang ada di TFX, yang mengambil proto tf.Contoh serial sebagai input.

 signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(
              model, tf_transform_output).get_concrete_function(
                  tf.TensorSpec(
                      shape=[None, 784],
                      dtype=tf.float32,
                      name='image_floats'))
  }

Kemudian model Keras disimpan sebagai SavedModel dengan cara yang sama seperti biasanya.

  temp_saving_model_dir = os.path.join(fn_args.serving_model_dir, 'temp')
  model.save(temp_saving_model_dir, save_format='tf', signatures=signatures)

Terakhir, kita membuat instance dari TFLite rewriter ( tfrw ), dan memanggilnya di SavedModel untuk mendapatkan model TFLite. Kami menyimpan model TFLite ini di serving_model_dir yang disediakan oleh pemanggil run_fn . Dengan cara ini, model TFLite disimpan di lokasi di mana semua komponen TFX hilir diharapkan untuk menemukan model tersebut.

  tfrw = rewriter_factory.create_rewriter(
      rewriter_factory.TFLITE_REWRITER, name='tflite_rewriter')
  converters.rewrite_saved_model(temp_saving_model_dir,
                                 fn_args.serving_model_dir,
                                 tfrw,
                                 rewriter.ModelType.TFLITE_MODEL)

Mengevaluasi model TFLite.

TFX Evaluator memberikan kemampuan untuk menganalisis model terlatih untuk memahami kualitasnya di berbagai metrik. Selain menganalisis SavedModels, Evaluator TFX sekarang juga dapat menganalisis model TFLite.

Cuplikan kode berikut (direproduksi dari pipeline MNIST ), menunjukkan cara mengonfigurasi Evaluator yang menganalisis model TFLite.

  # Informs the evaluator that the model is a TFLite model.
  eval_config_lite.model_specs[0].model_type = 'tf_lite'

  ...

  # Uses TFMA to compute the evaluation statistics over features of a TFLite
  # model.
  model_analyzer_lite = Evaluator(
      examples=example_gen.outputs['examples'],
      model=trainer_lite.outputs['model'],
      eval_config=eval_config_lite,
  ).with_id('mnist_lite')

Seperti yang ditunjukkan di atas, satu-satunya perubahan yang perlu kita lakukan adalah menyetel bidang model_type ke tf_lite . Tidak ada perubahan konfigurasi lain yang diperlukan untuk menganalisis model TFLite. Terlepas dari apakah model TFLite atau SavedModel dianalisis, output dari Evaluator akan memiliki struktur yang persis sama.

Namun, harap dicatat bahwa Evaluator mengasumsikan bahwa model TFLite disimpan dalam file bernama tflite di dalam trainer_lite.outputs['model'].