انضم إلى مجتمع 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 داخل المدرب.

يتوقع مدرب 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 سيكون له نفس البنية تمامًا.