استخدام نموذج TensorFlow Lite المخصّص مع Flutter

إذا كان تطبيقك يستخدم نماذج TensorFlow Lite مخصّصة ، يمكنك استخدام Firebase ML لنشر نماذجك. من خلال نشر النماذج باستخدام Firebase، يمكنك تقليل حجم التنزيل الأولي لتطبيقك وتحديث نماذج تعلُّم الآلة في تطبيقك بدون إصدار إصدار جديد من تطبيقك. وباستخدام ميزتَي "الإعداد عن بُعد" و"اختبار A/B"، يمكنك عرض نماذج مختلفة بشكل ديناميكي لمجموعات مختلفة من المستخدمين.

نماذج TensorFlow Lite

نماذج TensorFlow Lite هي نماذج تعلُّم آلة تم تحسينها للتشغيل على الأجهزة الجوّالة. للحصول على نموذج TensorFlow Lite، يمكنك إجراء ما يلي:

يُرجى العِلم أنّه في حال عدم توفّر مكتبة TensorFlow Lite مُدارة للغة Dart، عليك إجراء عملية تكامل مع مكتبة TensorFlow Lite الأصلية لمنصّاتك. لا يتم توثيق عملية التكامل هذه هنا.

قبل البدء

  1. عليك تثبيت حِزم Firebase SDK لـ Flutter وتهيئتها إذا لم يسبق لك إجراء ذلك.

  2. من دليل جذر مشروع Flutter، نفِّذ الأمر التالي لتثبيت مكوّن تنزيل نماذج تعلُّم الآلة الإضافي:

    flutter pub add firebase_ml_model_downloader
    
  3. أعِد إنشاء مشروعك:

    flutter run
    

1. نشر النموذج

يمكنك نشر نماذج TensorFlow المخصّصة باستخدام إما وحدة تحكّم Firebase أو حِزم Firebase Admin SDK بلغتَي Python وNode.js. يُرجى الاطّلاع على مقالة نشر النماذج المخصّصة وإدارتها.

بعد إضافة نموذج مخصّص إلى مشروعك على Firebase، يمكنك الإشارة إلى النموذج في تطبيقاتك باستخدام الاسم الذي حدّدته. في أي وقت، يمكنك نشر نموذج TensorFlow Lite جديد وتنزيل النموذج الجديد على أجهزة المستخدمين من خلال استدعاء getModel() (راجِع أدناه).

2. تنزيل النموذج على الجهاز وتهيئة مفسّر TensorFlow Lite

لاستخدام نموذج TensorFlow Lite في تطبيقك، عليك أولاً استخدام أداة تنزيل النماذج لتنزيل أحدث إصدار من النموذج على الجهاز. بعد ذلك، عليك إنشاء مفسّر TensorFlow Lite باستخدام النموذج.

لبدء تنزيل النموذج، استدعِ طريقة getModel() في أداة تنزيل النماذج، مع تحديد الاسم الذي خصّصته للنموذج عند تحميله، وما إذا كنت تريد تنزيل أحدث نموذج دائمًا، والشروط التي تريد السماح بموجبها بالتنزيل.

يمكنك الاختيار من بين ثلاثة سلوكيات للتنزيل:

نوع التنزيل الوصف
localModel الحصول على النموذج المحلي من الجهاز إذا لم يكن هناك نموذج محلي متاح، سيتصرف هذا الخيار مثل latestModel. استخدِم هذا النوع من التنزيل إذا لم تكن مهتمًا بالتحقّق من توفّر تحديثات للنموذج. على سبيل المثال، أنت تستخدم ميزة "الإعداد عن بُعد" لاسترداد أسماء النماذج وتحمّل النماذج دائمًا بأسماء جديدة (ننصحك بذلك).
localModelUpdateInBackground الحصول على النموذج المحلي من الجهاز وبدء تحديث النموذج في الخلفية إذا لم يكن هناك نموذج محلي متاح، سيتصرف هذا الخيار مثل latestModel.
latestModel الحصول على أحدث نموذج إذا كان النموذج المحلي هو أحدث إصدار، سيتم عرض النموذج المحلي. وإلا، سيتم تنزيل أحدث نموذج. سيتم حظر هذا السلوك إلى أن يتم تنزيل أحدث إصدار (لا ننصحك بذلك). استخدِم هذا السلوك فقط في الحالات التي تحتاج فيها صراحةً إلى أحدث إصدار.

عليك إيقاف الوظائف المتعلقة بالنموذج، مثلاً، إخفاء جزء من واجهة المستخدم أو عرضه باللون الرمادي، إلى أن تؤكّد تنزيل النموذج.

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

تبدأ العديد من التطبيقات مهمة التنزيل في رمز التهيئة، ولكن يمكنك إجراء ذلك في أي وقت قبل أن تحتاج إلى استخدام النموذج.

3. إجراء الاستدلال على بيانات الإدخال

الآن بعد أن أصبح لديك ملف النموذج على الجهاز، يمكنك استخدامه مع مفسّر TensorFlow Lite لإجراء الاستدلال. في حال عدم توفّر مكتبة TensorFlow Lite مُدارة للغة Dart، عليك إجراء عملية تكامل مع مكتبات TensorFlow Lite الأصلية لنظامَي التشغيل iOS وAndroid.

الملحق: أمان النموذج

بغض النظر عن كيفية إتاحة نماذج TensorFlow Lite لخدمة Firebase ML، تخزّنها Firebase ML بتنسيق protobuf التسلسلي العادي في وحدة التخزين المحلية.

من الناحية النظرية، يعني ذلك أنّه يمكن لأي شخص نسخ نموذجك. ومع ذلك، من الناحية العملية، تكون معظم النماذج خاصة بالتطبيق إلى حد كبير ويتم إخفاؤها من خلال عمليات التحسين، ما يجعل المخاطر مماثلة لمخاطر تفكيك المنافسين لرمزك وإعادة استخدامه. ومع ذلك، عليك أن تكون على دراية بهذا الخطر قبل استخدام نموذج مخصّص في تطبيقك.