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

إذا كنت تستخدم Firebase Machine Learning لاستضافة نماذج مخصّصة، عليك الانتقال إلى حلّ آخر قبل إيقاف خدمة استضافة Firebase ML نهائيًا في 15 حزيران (يونيو) 2027.

يمكنك بدلاً من ذلك استضافة نماذجك باستخدام Cloud Storage for Firebase. اتّبِع هذا الدليل لنقل نماذجك من Firebase ML إلى 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. أنشئ حزمة Storage: في وحدة تحكّم Firebase، انتقِل إلى قواعد البيانات ومساحة التخزين > Storage واتّبِع خطوات الإعداد لإنشاء حزمة إذا لم يسبق لك ذلك. يُرجى العِلم أنّ ذلك يتطلّب توفّر حساب فوترة. لمزيد من التفاصيل، يُرجى الاطّلاع على أسعار Firebase.
  2. في قسم مساحة التخزين، حمِّل ملفات نموذج .tflite إلى المسار المطلوب.

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

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

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

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

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

  2. أضِف خدمة Storage إلى تطبيقك باتّباع أدلة الإعداد الخاصة بمنصات Android أو Apple أو Flutter.

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

    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

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