مساعدة في حماية الحاجز المرجاني العظيم مع TensorFlow على Kaggle تاريخ التحدي

TFX للجوال

مقدمة

يوضح هذا الدليل كيف يمكن لـ Tensorflow Extended (TFX) إنشاء وتقييم نماذج التعلم الآلي التي سيتم نشرها على الجهاز. يوفر TFX الآن دعم أصلي ل TFLite ، مما يجعل من الممكن لأداء الاستدلال كفاءة عالية على الأجهزة النقالة.

يرشدك هذا الدليل خلال التغييرات التي يمكن إجراؤها على أي خط أنابيب لإنشاء نماذج TFLite وتقييمها. ونحن نقدم مثالا كاملا هنا ، يظهر كيف يمكن TFX تدريب وتقييم نماذج TFLite أن يتم تدريب الخروج من MNIST البيانات. وعلاوة على ذلك، وتبين لنا كيف أن نفس خط الأنابيب يمكن أن تستخدم لsimulataneously تصدير كل من معيار يستند Keras- SavedModel فضلا عن TFLite واحد، مما يسمح للمستخدمين لمقارنة جودة من الاثنين.

نفترض أنك على دراية بـ TFX ومكوناتنا وخطوط الأنابيب لدينا. إن لم يكن، ثم يرجى الاطلاع على هذا البرنامج التعليمي .

خطوات

مطلوب خطوتين فقط لإنشاء وتقييم نموذج TFLite في TFX. والخطوة الأولى هي يستشهد مصحح TFLite ضمن سياق TFX المدرب لتحويل نموذج TensorFlow تدريب في TFLite واحدة. الخطوة الثانية هي تكوين المقيم لتقييم نماذج TFLite. نناقش الآن كل على حدة.

استدعاء معيد كتابة TFLite داخل المدرب.

تتوقع TFX المدرب على المعرفة run_fn إلى أن تحدد في ملف وحدة. هذا run_fn يحدد نموذج للتدريب والقطارات ذلك لعدد معين من التكرارات، والصادرات نموذج المدربين.

في بقية هذا القسم ، نقدم مقتطفات من التعليمات البرمجية التي توضح التغييرات المطلوبة لاستدعاء آلة إعادة كتابة TFLite وتصدير نموذج TFLite. يقع كل من هذه التعليمات البرمجية في run_fn من حدة MNIST TFLite .

كما هو موضح في التعليمات البرمجية أدناه، يجب علينا أولا إنشاء التوقيع الذي يأخذ Tensor لكل ميزة كإدخال. لاحظ أن هذا يشكل خروجا عن معظم النماذج الموجودة في TFX، والتي تأخذ المتسلسلة tf.Example PROTOS كإدخال.

 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 سوف يكون بالضبط نفس الهيكل.

ومع ذلك، يرجى ملاحظة أن مقيم يفترض أن يتم حفظ نموذج TFLite في ملف يسمى tflite داخل trainer_lite.outputs [ 'نموذج'].