مقدمة
يوضح هذا الدليل كيف يمكن لـ 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
النموذج الذي سيتم تدريبه ، ويدربه على العدد المحدد من التكرارات ، ويصدر النموذج المدرب.
في بقية هذا القسم ، نقدم مقتطفات من التعليمات البرمجية التي توضح التغييرات المطلوبة لاستدعاء آلة إعادة كتابة 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,
).with_id('mnist_lite')
كما هو موضح أعلاه ، فإن التغيير الوحيد الذي نحتاج إلى إجرائه هو ضبط الحقل model_type
على tf_lite
. لا يلزم إجراء تغييرات تكوين أخرى لتحليل نموذج TFLite. بغض النظر عما إذا كان نموذج TFLite أو SavedModel قد تم تحليله ، فإن ناتج Evaluator
سيكون له نفس البنية تمامًا.
ومع ذلك ، يرجى ملاحظة أن المقيم يفترض أن نموذج TFLite محفوظ في ملف يسمى tflite
داخل trainer_lite.outputs ['model'].