Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

TFX dla telefonów komórkowych

Wprowadzenie

W tym przewodniku pokazano, jak Tensorflow Extended (TFX) może tworzyć i oceniać modele uczenia maszynowego, które zostaną wdrożone na urządzeniu. TFX zapewnia teraz natywną obsługę TFLite , co umożliwia wykonywanie wysoce wydajnego wnioskowania na urządzeniach mobilnych.

Ten przewodnik przeprowadzi Cię przez zmiany, które można wprowadzić w dowolnym potoku w celu wygenerowania i oceny modeli TFLite. Zapewniamy pełny przykład tutaj , demonstrując jak TFX może trenować i oceniać TFLite modele, które są przeszkolone off z MNIST zbiorze. Ponadto pokazujemy, jak ten sam potok można wykorzystać do jednoczesnego eksportu zarówno standardowego SavedModel opartego na Keras, jak i TFLite, umożliwiając użytkownikom porównanie jakości obu.

Zakładamy, że znasz TFX, nasze komponenty i nasze rurociągi. Jeśli nie, zapoznaj się z tym samouczkiem .

Kroki

Do stworzenia i oceny modelu TFLite w TFX potrzebne są tylko dwa kroki. Pierwszym krokiem jest wywołanie rewriter TFLite w kontekście TFX Trainer w celu konwersji wytrenowanego modelu TensorFlow na model TFLite. Drugim krokiem jest skonfigurowanie Ewaluatora do oceny modeli TFLite. Omówimy teraz każdy po kolei.

Wywołanie przepisywania TFLite w Trainer.

TFX Trainer oczekuje, że zdefiniowany przez użytkownika run_fn zostanie określony w pliku modułu. Ten run_fn definiuje model do przeszkolenia, trenuje go dla określonej liczby iteracji i eksportuje wytrenowany model.

W pozostałej części tej sekcji udostępniamy fragmenty kodu, które pokazują zmiany wymagane do wywołania rewriter TFLite i wyeksportowania modelu TFLite. Wszystko to kod znajduje się na run_fn z modułem MNIST TFLite .

Jak pokazano w poniższym kodzie, musimy najpierw utworzyć podpis, który przyjmuje Tensor dla każdej funkcji jako dane wejściowe. Zauważ, że jest to odejście od większości istniejących modeli w TFX, które jako dane wejściowe przyjmują serializowane tf. Przykładowe protokoły .

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

Następnie model Keras jest zapisywany jako SavedModel w taki sam sposób, jak zwykle.

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

Na koniec tworzymy instancję rewriter TFLite ( tfrw ) i wywołujemy ją w SavedModel w celu uzyskania modelu TFLite. Przechowujemy ten model TFLite w serving_model_dir dostarczonym przez obiekt wywołujący run_fn . W ten sposób model TFLite jest przechowywany w miejscu, w którym wszystkie dalsze komponenty TFX będą oczekiwać, że znajdą model.

  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)

Ocena modelu TFLite.

Ewaluator TFX zapewnia możliwość analizowania wytrenowanych modeli w celu zrozumienia ich jakości w szerokim zakresie wskaźników. Oprócz analizowania SavedModels, TFX Evaluator jest teraz w stanie analizować również modele TFLite.

Poniższy fragment kodu (odtworzony z potoku MNIST ) pokazuje, jak skonfigurować oceniającego, który analizuje 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,
      instance_name='mnist_lite')

Jak wykazano powyżej, jedyną zmianą, że musimy zrobić to ustawić model_type pole do tf_lite . Do analizy modelu TFLite nie są wymagane żadne inne zmiany konfiguracji. Niezależnie od tego, czy analizowany jest model TFLite czy SavedModel, dane wyjściowe Evaluator będą miały dokładnie taką samą strukturę.