مقدمة
يوضح هذا الدليل كيف يمكن لـ Tensorflow Extended (TFX) إنشاء وتقييم نماذج التعلم الآلي التي سيتم نشرها على الجهاز. توفر TFX الآن دعمًا أصليًا لـ TFLite ، مما يجعل من الممكن إجراء استدلال عالي الكفاءة على الأجهزة المحمولة.
يرشدك هذا الدليل خلال التغييرات التي يمكن إجراؤها على أي مسار لإنشاء نماذج TFLite وتقييمها. نقدم مثالاً كاملاً هنا ، يوضح كيف يمكن لـ TFX تدريب وتقييم نماذج TFLite التي تم تدريبها من مجموعة بيانات MNIST . علاوة على ذلك، نعرض كيف يمكن استخدام نفس المسار لتصدير كل من SavedModel القياسي المستند إلى Keras بالإضافة إلى TFLite، مما يسمح للمستخدمين بمقارنة جودة الاثنين.
نفترض أنك على دراية بـ TFX ومكوناتنا وخطوط الأنابيب الخاصة بنا. إذا لم يكن الأمر كذلك، يرجى الاطلاع على هذا البرنامج التعليمي .
خطوات
مطلوب خطوتين فقط لإنشاء وتقييم نموذج TFLite في TFX. الخطوة الأولى هي استدعاء أداة إعادة كتابة TFLite في سياق TFX Trainer لتحويل نموذج TensorFlow المدرب إلى نموذج TFLite. الخطوة الثانية هي تكوين المقيم لتقييم نماذج TFLite. والآن نناقش كل منها على حدة.
استدعاء أداة إعادة كتابة TFLite داخل المدرب.
يتوقع TFX Trainer تحديد 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 كنموذج محفوظ بنفس الطريقة المعتادة.
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 Evaluator الآن تحليل نماذج 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'].