Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

TFX para dispositivos móviles

Introducción

Esta guía demuestra cómo Tensorflow Extended (TFX) puede crear y evaluar modelos de aprendizaje automático que se implementarán en el dispositivo. TFX ahora ofrece soporte nativo para TFLite , lo que hace posible la realización de la inferencia altamente eficiente en dispositivos móviles.

Esta guía lo guía a través de los cambios que se pueden realizar en cualquier tubería para generar y evaluar modelos TFLite. Proporcionamos un ejemplo completo aquí , lo que demuestra cómo TFX puede entrenar y evaluar modelos TFLite que están capacitados fuera de la MNIST conjunto de datos. Además, se muestra cómo la misma tubería se puede utilizar para exportar condiciones simultáneamente tanto el estándar basado en Keras SavedModel así como la TFLite uno, lo que permite a los usuarios comparar la calidad de los dos.

Asumimos que está familiarizado con TFX, nuestros componentes y nuestras canalizaciones. Si no es así, consulte este tutorial .

Pasos

Solo se requieren dos pasos para crear y evaluar un modelo TFLite en TFX. El primer paso está invocando la regrabadora TFLite dentro del contexto de la TFX Trainer para convertir el modelo TensorFlow entrenado en uno TFLite. El segundo paso es configurar el Evaluador para evaluar modelos TFLite. Ahora discutimos cada uno a su vez.

Invocando el reescritor TFLite dentro del Entrenador.

El TFX entrenador espera una definida por el usuario run_fn a ser especificado en un archivo de módulo. Este run_fn define el modelo a ser entrenado, los trenes de TI para el número especificado de iteraciones, y exporta el modelo entrenado.

En el resto de esta sección, proporcionamos fragmentos de código que muestran los cambios necesarios para invocar la reescritura de TFLite y exportar un modelo de TFLite. Todo este código se encuentra en el run_fn del módulo MNIST TFLite .

Como se muestra en el código siguiente, primero debemos crear una firma que lleva un Tensor para cada función como entrada. Tenga en cuenta que se trata de una salida de la mayoría de los modelos existentes en TFX, que tienen serializados tf.Example Protos como entrada.

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

Luego, el modelo de Keras se guarda como un modelo guardado de la misma manera que lo hace normalmente.

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

Por último, se crea una instancia de la regrabadora TFLite ( tfrw ), y la invocan en la SavedModel para obtener el modelo TFLite. Almacenamos este modelo TFLite en el serving_model_dir proporcionado por el llamador de la run_fn . De esta manera, el modelo TFLite se almacena en la ubicación donde todos los componentes TFX posteriores esperan encontrar el modelo.

  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)

Evaluación del modelo TFLite.

El TFX Evaluador ofrece la posibilidad de analizar los modelos de formación para entender su calidad en una amplia gama de métricas. Además de analizar modelos guardados, TFX Evaluator ahora también puede analizar modelos TFLite.

El siguiente fragmento de código (que se reproduce desde la tubería MNIST ), muestra cómo configurar un evaluador que analiza un modelo 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')

Como puede observarse, el único cambio que tenemos que hacer es fijar el model_type campo para tf_lite . No se requieren otros cambios de configuración para analizar el modelo TFLite. Independientemente de si se analiza un modelo TFLite o la una SavedModel, la salida del Evaluator tendrá exactamente la misma estructura.

Sin embargo, tenga en cuenta que el evaluador asume que el modelo TFLite se guarda en un archivo llamado tflite dentro trainer_lite.outputs [ 'modelo'].