انضم إلى مجتمع SIG TFX-Addons وساعد في جعل TFX أفضل! انضم إلى SIG TFX-Addons

TFX للجوال

مقدمة

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

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

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

خطوات

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

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

يتوقع مدرب run_fn أن يتم تحديد 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 على tf_lite . لا يلزم إجراء تغييرات تكوين أخرى لتحليل نموذج TFLite. بغض النظر عما إذا كان نموذج TFLite أو SavedModel قد تم تحليله ، فإن ناتج Evaluator سيكون له نفس البنية تمامًا.