TFX cho thiết bị di động

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ợ riêng 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 hướng dẫn bạn những thay đổi có thể được thực hiện đối với bất kỳ quy trình nào để tạo và đánh giá các mô hình TFLite. Chúng tôi cung cấp một ví dụ hoàn chỉnh ở đâ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 từ 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 dẫn để xuất đồng thời cả SavingModel 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à quy trình của chúng tôi. Nếu chưa thì hãy xem hướng dẫn này.

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 bối cảnh của TFX Trainer để chuyển đổi mô hình TensorFlow đã được huấn luyện thành mô hình TFLite. Bước thứ hai là định cấu hình Bộ đánh giá để đánh giá các mô hình TFLite. Bây giờ chúng ta lần lượt thảo luận từng vấn đề.

Gọi trình ghi lại TFLite trong Trainer.

Huấn luyện viên TFX mong muốn run_fn do 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 sẽ được đào tạo, huấn luyện mô hình đó với số lần lặp được chỉ định và xuất mô hình đã đà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ị những 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ã bên dưới, 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à sự 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 nguyên mẫu tf.Example được xê-ri 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 SavingModel giống như cách thông 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 SavingModel để 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 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 xuôi dòng sẽ 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 chỉ số. Ngoài việc phân tích các mô hình đã lưu, Trình đánh giá TFX hiện còn có thể phân tích các mô hình TFLite.

Đoạn mã sau (được sao chép từ quy trình MNIST ), hiển thị cách định cấu hình Bộ đá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 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 SavingModel được phân tích hay không, đầu ra của Evaluator sẽ có cấu trúc giống hệt nhau.

Tuy nhiên, xin lưu ý rằng Người đá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'].