TFX cho điện thoại di động

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Giới thiệu

Hướng dẫn này trình bày cách Tensorflow Extended (TFX) có thể tạo và đánh giá các mô hình học máy sẽ được triển khai trên thiết bị. TFX hiện cung cấp hỗ trợ gốc cho TFLite , giúp thực hiện suy luận hiệu quả cao trên thiết bị di động.

Hướng dẫn này sẽ hướng dẫn bạn những thay đổi có thể được thực hiện đối với bất kỳ đường ống nào để tạo và đánh giá các mô hình TFLite. Chúng tôi cung cấp một ví dụ đầy đủ ở đây , minh họa cách TFX có thể đào tạo và đánh giá các mô hình TFLite được đào tạo dựa trên tập dữ liệu MNIST . Hơn nữa, chúng tôi cho thấy cách sử dụng cùng một đường ống để xuất đồng thời cả SavedModel dựa trên Keras tiêu chuẩn cũng như TFLite, cho phép người dùng so sánh chất lượng của cả hai.

Chúng tôi cho rằng bạn đã quen thuộc với TFX, các thành phần và đường ống dẫn của chúng tôi. Nếu không, hãy xem hướng dẫn này.

Các bước

Chỉ cần hai bước để tạo và đánh giá mô hình TFLite trong TFX. Bước đầu tiên là gọi trình ghi lại TFLite trong ngữ cảnh của TFX Trainer để chuyển đổi mô hình TensorFlow đã đào tạo thành mô hình TFLite. Bước thứ hai là định cấu hình Trình đánh giá để đánh giá các mô hình TFLite. Bây giờ chúng ta thảo luận lần lượt từng vấn đề.

Gọi người viết lại TFLite trong Trainer.

TFX Trainer yêu cầu run_fn người dùng xác định sẽ được chỉ định trong tệp mô-đun. run_fn này xác định mô hình được đào tạo, đào tạo nó cho số lần lặp được chỉ định và xuất mô hình được đào tạo.

Trong phần còn lại của phần này, chúng tôi cung cấp các đoạn mã hiển thị các thay đổi cần thiết để gọi trình ghi lại TFLite và xuất mô hình TFLite. Tất cả mã này nằm trong run_fn của mô-đun MNIST TFLite .

Như được hiển thị trong đoạn mã dưới đây, trước tiên chúng ta phải tạo một chữ ký lấy Tensor cho mọi tính năng làm đầu vào. Lưu ý rằng đây là điểm khác biệt so với hầu hết các mô hình hiện có trong TFX, lấy các giao thức tf.Example được tuần tự hóa làm đầu vào.

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

Sau đó, mô hình Keras được lưu dưới dạng SavedModel theo cách giống như bình thường.

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

Cuối cùng, chúng tôi tạo một phiên bản của trình ghi lại TFLite ( tfrw ) và gọi nó trên SavedModel để lấy mô hình TFLite. Chúng tôi lưu trữ mô hình TFLite này trong serving_model_dir do người gọi của run_fn cung cấp. Bằng cách này, mô hình TFLite được lưu trữ ở vị trí mà tất cả các thành phần TFX hạ lưu sẽ mong đợi tìm thấy mô hình.

  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)

Đánh giá mô hình TFLite.

Công cụ đánh giá TFX cung cấp khả năng phân tích các mô hình được đào tạo để hiểu chất lượng của chúng trên nhiều loại chỉ số. Ngoài việc phân tích Mô hình đã lưu, Trình đánh giá TFX giờ đây cũng có thể phân tích các mô hình TFLite.

Đoạn mã sau (được sao chép từ đường dẫn MNIST ), cho biết cách định cấu hình Trình đánh giá phân tích mô hình 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')

Như được hiển thị ở trên, thay đổi duy nhất mà chúng ta cần thực hiện là đặt trường model_type thành tf_lite . Không cần thay đổi cấu hình nào khác để phân tích mô hình TFLite. Bất kể mô hình TFLite hay SavedModel được phân tích, đầu ra của Trình Evaluator sẽ có cấu trúc giống hệt nhau.

Tuy nhiên, xin lưu ý rằng Trình đánh giá giả định rằng mô hình TFLite được lưu trong tệp có tên tflite trong trainer_lite.outputs ['model'].