به انجمن SIG TFX-Addons بپیوندید و به پیشرفت TFX کمک کنید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

TFX برای موبایل

مقدمه

این راهنما نشان می دهد که چگونه Tensorflow Extended (TFX) می تواند مدل های یادگیری ماشین را که روی دستگاه مستقر می شوند ، ایجاد و ارزیابی کند. TFX اکنون پشتیبانی محلی از TFLite را فراهم می کند ، که انجام استنباط بسیار کارآمد در دستگاه های تلفن همراه را امکان پذیر می کند.

این راهنما شما را از طریق تغییراتی که می تواند در هر خط لوله برای تولید و ارزیابی مدلهای TFLite ایجاد کند ، راهنمایی می کند. ما در اینجا مثالی کامل ارائه می دهیم ، نشان می دهد که چگونه TFX می تواند مدل های TFLite را که از مجموعه داده های MNIST آموزش دیده اند ، ارزیابی و ارزیابی کند. علاوه بر این ، ما نشان می دهیم که چگونه می توان از همان خط لوله برای صادرات شبیه ساز هم استاندارد SavedModel مبتنی بر Keras و هم TFLite استفاده کرد ، که به کاربران امکان مقایسه کیفیت این دو را می دهد.

فرض می کنیم شما با TFX ، اجزای سازنده و خطوط لوله ما آشنا هستید. اگر اینگونه نیست ، لطفاً این آموزش را ببینید.

مراحل

برای ایجاد و ارزیابی مدل TFLite در TFX فقط دو مرحله لازم است. اولین قدم استناد به بازنویسی TFLite در متن TFX Trainer برای تبدیل مدل آموزش دیده TensorFlow به یک TFLite است. مرحله دوم پیکربندی ارزیاب برای ارزیابی مدل های TFLite است. اکنون هر یک به نوبت بحث می کنیم.

فراخوانی بازنویسی TFLite در مربی.

مربی TFX انتظار دارد یک run_fn تعریف شده توسط کاربر در یک پرونده ماژول مشخص شود. این run_fn مدل مورد آموزش را تعریف می کند ، آن را به تعداد مشخص تکرار آموزش می دهد و مدل آموزش دیده را صادر می کند.

در ادامه این بخش ، ما قطعه کد ارائه می دهیم که تغییرات مورد نیاز برای فراخوانی بازنویسی TFLite و صادرات یک مدل TFLite را نشان می دهد. همه از این کد در واقع run_fn از ماژول MNIST TFLite .

همانطور که در کد زیر نشان داده شده است ، ابتدا باید امضایی ایجاد کنیم که برای هر ویژگی Tensor به عنوان ورودی در نظر بگیرد. توجه داشته باشید که این یک فرار از بیشتر مدلهای موجود در TFX است که از tf استفاده می شود. به عنوان مثال نمونه اولیه به عنوان ورودی می باشد.

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

سپس مدل Keras به همان روشی که در حالت عادی است به عنوان SavedModel ذخیره می شود.

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

سرانجام ، ما نمونه ای از بازنویسی TFLite ( tfrw ) ایجاد کرده و آن را در SavedModel فراخوانی می کنیم تا مدل TFLite را بدست آوریم. ما این مدل TFLite را در serving_model_dir ارائه شده توسط تماس گیرنده run_fn . به این ترتیب ، مدل TFLite در مکانی ذخیره می شود که تمام اجزای پایین دست TFX انتظار پیدا کردن مدل را دارند.

  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)

ارزیابی مدل TFLite.

ارزیابی کننده TFX توانایی تجزیه و تحلیل مدل های آموزش دیده برای درک کیفیت آنها را در طیف گسترده ای از معیارها فراهم می کند. علاوه بر تجزیه و تحلیل SavedModels ، ارزیابی کننده TFX اکنون قادر است مدل های TFLite را نیز تجزیه و تحلیل کند.

قطعه کد زیر (که از خط لوله MNIST بازتولید می شود) ، نحوه پیکربندی ارزیاب را نشان می دهد که مدل 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')

همانطور که در بالا نشان داده شده است، تنها تغییر که ما به نیاز این است که مجموعه model_type زمینه به tf_lite . برای تجزیه و تحلیل مدل TFLite نیازی به تغییر تنظیمات دیگری نیست. صرف نظر از اینکه یک مدل TFLite یا یک مدل SavedModel تجزیه و تحلیل شود ، خروجی Evaluator دقیقاً همان ساختار را دارد.