Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

TFX für Handys

Einführung

Dieses Handbuch zeigt, wie Tensorflow Extended (TFX) maschinelle Lernmodelle erstellen und bewerten kann, die auf dem Gerät bereitgestellt werden. TFX bietet jetzt native Unterstützung für TFLite , wodurch hocheffiziente Inferenzen auf Mobilgeräten durchgeführt werden können.

Dieses Handbuch führt Sie durch die Änderungen, die an jeder Pipeline vorgenommen werden können, um TFLite-Modelle zu generieren und zu bewerten. Wir bieten ein komplettes Beispiel hier , die zeigen , wie TFX trainieren und zu bewerten TFLite Modelle , die aus der trainiert werden MNIST Dataset. Außerdem zeigen wir, wie dieselbe Pipeline verwendet werden kann, um sowohl das standardmäßige Keras-basierte SavedModel als auch das TFLite-Modell gleichzeitig zu exportieren, sodass Benutzer die Qualität der beiden vergleichen können.

Wir gehen davon aus, dass Sie mit TFX, unseren Komponenten und unseren Pipelines vertraut sind. Wenn nicht, lesen Sie bitte dieses Tutorial .

Schritte

Zum Erstellen und Auswerten eines TFLite-Modells in TFX sind nur zwei Schritte erforderlich. Der erste Schritt besteht darin, den TFLite-Umschreiber im Kontext des TFX-Trainers aufzurufen, um das trainierte TensorFlow-Modell in ein TFLite-Modell umzuwandeln. Der zweite Schritt ist die Konfiguration des Evaluators zur Evaluierung von TFLite-Modellen. Wir diskutieren nun nacheinander.

Aufrufen des TFLite-Umschreibers im Trainer.

Der TFX-Trainer erwartet, dass eine benutzerdefinierte run_fn in einer Moduldatei angegeben wird. Diese run_fn definiert das zu trainierende Modell, trainiert es für die angegebene Anzahl von Iterationen und exportiert das trainierte Modell.

Im Rest dieses Abschnitts stellen wir Codefragmente bereit, die die Änderungen anzeigen, die zum Aufrufen des TFLite-Umschreibers und zum Exportieren eines TFLite-Modells erforderlich sind. Der gesamte Code befindet sich in run_fn des MNIST TFLite-Moduls .

Wie im folgenden Code gezeigt, müssen wir zuerst eine Signatur erstellen, die für jedes Feature einen Tensor als Eingabe verwendet. Beachten Sie, dass dies eine Abweichung von den meisten in TFX vorhandenen Modellen ist, die serialisierte tf.Beispielprotokolle als Eingabe verwenden.

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

Anschließend wird das Keras-Modell wie gewohnt als SavedModel gespeichert.

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

Schließlich erstellen wir eine Instanz des TFLite-Umschreibers ( tfrw ) und rufen sie im SavedModel auf, um das TFLite-Modell zu erhalten. Wir speichern dieses TFLite Modell im serving_model_dir vom Anrufer des bereitgestellten run_fn . Auf diese Weise wird das TFLite-Modell an dem Ort gespeichert, an dem alle nachgeschalteten TFX-Komponenten das Modell voraussichtlich finden werden.

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

Bewertung des TFLite-Modells.

Der TFX Evaluator bietet die Möglichkeit, trainierte Modelle zu analysieren, um ihre Qualität über eine Vielzahl von Metriken hinweg zu verstehen. Neben der Analyse von SavedModels kann der TFX Evaluator jetzt auch TFLite-Modelle analysieren.

Das folgende Code-Snippet (aus der MNIST-Pipeline reproduziert) zeigt, wie Sie einen Evaluator konfigurieren, der ein TFLite-Modell analysiert.

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

Wie oben gezeigt, ist die einzige Änderung , die wir machen müssen , die festlegen model_type Feld tf_lite . Zur Analyse des TFLite-Modells sind keine weiteren Konfigurationsänderungen erforderlich. Unabhängig davon, ob ein TFLite-Modell oder ein SavedModel analysiert wird, hat die Ausgabe des Evaluator genau dieselbe Struktur.