نقل نماذج TensorFlow Lite من Firebase ML إلى Cloud Storage

إذا كنت تستخدم تعلُّم الآلة من Firebase لاستضافة نماذج مخصّصة، عليك نقل البيانات إلى حلّ آخر قبل إيقاف خدمة استضافة نماذج تعلُّم الآلة من Firebase في 15 يونيو 2027.

أحد البدائل التي يمكنك استخدامها هو استضافة نماذجك باستخدام Cloud Storage for Firebase بدلاً من ذلك. اتّبِع هذا الدليل لنقل نماذجك من تعلُّم الآلة من Firebase إلى Cloud Storage.

تنزيل نماذج TensorFlow Lite

إذا لم تكن نماذجك مخزّنة محليًا، نزِّلها من مشروع Firebase. أمامك خياران لإجراء ذلك:

تنزيل النماذج واحدًا تلو الآخر من وحدة تحكُّم Firebase

  1. افتح قسم صفحة تعلُّم الآلة في وحدة تحكُّم Firebase.
  2. لكل نموذج تريد نقله، انقر على القائمة الكاملة (رمز النقاط الثلاث) الخاصة به، ثم انقر على تنزيل النموذج.

تنزيل جميع نماذجك المستضافة بشكل مجمّع

  1. افتح صفحة تعلُّم الآلة في وحدة تحكُّم Firebase.
  2. انقر على الزر الحصول على أمر التنزيل المجمّع للحصول على أمر curl الذي ينزِّل جميع النماذج في المشروع. ستنتهي صلاحية عناوين URL هذه بعد 7 أيام.
  3. نفِّذ الأمر في الوحدة الطرفية المحلية أو في Cloud Shell. إذا كنت تستخدم Cloud Shell، يُرجى العِلم أنّ الحدّ الأقصى لمساحة التخزين على القرص هو 5 غيغابايت. سينزِّل الأمر نماذجك إلى مجلد محلي باسم hosted_models.

استضافة نماذجك باستخدام Cloud Storage

بعد تخزين نماذجك محليًا، عليك تحميلها إلى حزمة Cloud Storage.

اختَر طريقة التحميل التي تناسب احتياجاتك:

تحميل النماذج واحدًا تلو الآخر

  1. أنشئ حزمة تخزين: في وحدة تحكُّم Firebase، انتقِل إلى قواعد البيانات والتخزين > التخزين واتّبِع خطوات الإعداد لإنشاء حزمة إذا لم يسبق لك إجراء ذلك. يُرجى العِلم أنّ هذا الإجراء يتطلّب حساب فوترة. يمكنك الاطّلاع على أسعار Firebase لمزيد من التفاصيل.
  2. في قسم التخزين ، حمِّل ملفات نموذج .tflite إلى المسار المطلوب.

تحميل النماذج بشكل مجمّع

  1. أنشئ حزمة تخزين: في وحدة تحكُّم Firebase، انتقِل إلى قواعد البيانات والتخزين > التخزين واتّبِع خطوات الإعداد لإنشاء حزمة إذا لم يسبق لك إجراء ذلك. يُرجى العِلم أنّ هذا الإجراء يتطلّب حساب فوترة. يمكنك الاطّلاع على أسعار Firebase لمزيد من التفاصيل.
  2. استخدِم أمر gcloud التالي لتحميل جميع النماذج من مجلد hosted_models المحلي:

    gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/

ضبط الأمان ودمج التطبيق

  1. تأكَّد من أنّ قواعد الأمان في Storage تسمح لتطبيقك بقراءة ملفات النموذج. على سبيل المثال، يمكنك حصر الوصول على المستخدمين الذين تم التحقّق من هويتهم.

  2. أضِف Storage إلى تطبيقك: اتّبِع أدلة الإعداد لـ Android، Apple، أو Flutter.

  3. عدِّل الرمز البرمجي لتطبيقك لتنزيل ملفات .tflite من حزمة Storage الجديدة.

    Android

    modelRef = storage.getReferenceFromUrl("gs://YOUR_BUCKET/path/to/model.tflite")
    
    val localFile = File.createTempFile("models", "tflite")
    
    modelRef.getFile(localFile).addOnSuccessListener {
        // Local temp file has been created
    }.addOnFailureListener {
        // Handle any errors
    }
    

    Apple

    let gsReference = storage.reference(forURL: "gs://YOUR_BUCKET/path/to/model.tflite")
    
    // Create local filesystem URL
    let localURL = URL(string: "path/to/model.tflite")!
    
    // Download to the local filesystem
    let downloadTask = gsReference.write(toFile: localURL) { url, error in
      if let error = error {
        // Uh-oh, an error occurred!
      } else {
        // Local file URL for "model.tflite" is returned
      }
    }
    

    Flutter

    final modelRef = FirebaseStorage.instance.refFromURL("gs://YOUR_BUCKET/path/to/model.tflite");
    
    final appDocDir = await getApplicationDocumentsDirectory();
    final filePath = "${appDocDir.absolute}/models/model.tflite";
    final file = File(filePath);
    
    final downloadTask = modelRef.writeToFile(file);
    downloadTask.snapshotEvents.listen((taskSnapshot) {
      switch (taskSnapshot.state) {
        case TaskState.running:
          // TODO: Handle this case.
          break;
        case TaskState.paused:
          // TODO: Handle this case.
          break;
        case TaskState.success:
          // TODO: Handle this case.
          break;
        case TaskState.canceled:
          // TODO: Handle this case.
          break;
        case TaskState.error:
          // TODO: Handle this case.
          break;
      }
    });
    

    بعد تنزيل النموذج، يمكنك استخدام مكتبة Tensorflow Lite الحالية لتحميل النموذج واستخدامه.

  4. (اختياري) ننصحك باستخدام الإعداد عن بُعد عبر Firebase لتعديل مسارات النماذج في تطبيقك ديناميكيًا بدون الحاجة إلى إصدار جديد.

اختياري: نقل البيانات إلى LiteRT CompiledModel API

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