SIG TFX-Addons topluluğuna katılın ve TFX'in daha da iyi olmasına yardımcı olun! SIG TFX Eklentilerine Katılın

Mobil için TFX

Giriş

Bu kılavuz, Tensorflow Extended (TFX) 'in cihazda devreye alınacak makine öğrenimi modellerini nasıl oluşturup değerlendirebileceğini göstermektedir. TFX artık TFLite için yerel destek sağlıyor ve bu da mobil cihazlarda yüksek verimli çıkarımlar yapmayı mümkün kılıyor.

Bu kılavuz, TFLite modellerini oluşturmak ve değerlendirmek için herhangi bir işlem hattında yapılabilecek değişiklikler konusunda size yol gösterir. Burada , TFX'in MNIST veri kümesinden eğitilmiş TFLite modellerini nasıl eğitip değerlendirebileceğini gösteren eksiksiz bir örnek sunuyoruz . Ayrıca, hem standart Keras tabanlı SavedModel hem de TFLite olanı aynı anda dışa aktarmak için aynı işlem hattının nasıl kullanılabileceğini göstererek kullanıcıların ikisinin kalitesini karşılaştırmasına olanak tanıyoruz.

TFX, bileşenlerimiz ve ardışık düzenlerimize aşina olduğunuzu varsayıyoruz. Değilse, lütfen bu eğiticiye bakın.

Adımlar

TFX'te bir TFLite modeli oluşturmak ve değerlendirmek için yalnızca iki adım gerekir. İlk adım, eğitilmiş TensorFlow modelini bir TFLite modeline dönüştürmek için TFX Trainer bağlamında TFLite yeniden yazıcısını çağırmaktır. İkinci adım, Değerlendiriciyi TFLite modellerini değerlendirecek şekilde yapılandırmaktır. Şimdi her birini sırayla tartışıyoruz.

Eğitmen içindeki TFLite yeniden yazıcısını çağırmak.

TFX Trainer, kullanıcı tanımlı bir run_fn bir modül dosyasında belirtilmesini bekler. Bu run_fn , eğitilecek modeli tanımlar, belirli sayıda yineleme için onu eğitir ve eğitilen modeli dışa aktarır.

Bu bölümün geri kalanında, TFLite yeniden yazıcısını çağırmak ve bir TFLite modelini dışa aktarmak için gerekli değişiklikleri gösteren kod parçacıkları sağlıyoruz. Bu kodun tamamı yer almaktadır run_fn ait MNIST TFLite modülü .

Aşağıdaki kodda gösterildiği gibi, öncelikle her özellik için girdi olarak bir Tensor alan bir imza oluşturmalıyız. Bunun, giriş olarak serileştirilmiş tf.Örnek protoları alan TFX'teki mevcut modellerin çoğundan bir sapma olduğuna dikkat edin.

 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'))
  }

Daha sonra Keras modeli, normalde olduğu gibi bir SavedModel olarak kaydedilir.

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

Son olarak, TFLite yeniden yazıcısının ( tfrw ) bir örneğini oluşturuyoruz ve TFLite modelini elde etmek için bunu SavedModel'de çağırıyoruz. Bu TFLite modelini serving_model_dir tarafından sağlanan run_fn . Bu şekilde, TFLite modeli, tüm aşağı akış TFX bileşenlerinin modeli bulmayı bekleyeceği yerde depolanır.

  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)

TFLite modelinin değerlendirilmesi.

TFX Değerlendiricisi , çok çeşitli ölçümlerde kalitelerini anlamak için eğitimli modelleri analiz etme yeteneği sağlar. SavedModels'i analiz etmenin yanı sıra, TFX Değerlendiricisi artık TFLite modellerini de analiz edebilmektedir.

Aşağıdaki kod parçacığı ( MNIST ardışık düzeninden çoğaltılır), bir TFLite modelini analiz eden bir Değerlendiricinin nasıl yapılandırılacağını gösterir.

  # 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,
      instance_name='mnist_lite')

Yukarıda gösterildiği gibi, biz marka gerektiğini tek değişiklik ayarlamaktır model_type alanını tf_lite . TFLite modelini analiz etmek için başka hiçbir yapılandırma değişikliği gerekmez. Bir TFLite modelinin mi yoksa bir SavedModel'in mi analiz edildiğine bakılmaksızın, Evaluator çıktısı tam olarak aynı yapıya sahip olacaktır.