שימוש במודל TensorFlow Lite בהתאמה אישית עם Flutter

אם האפליקציה שלכם משתמשת במודלים מותאמים אישית של TensorFlow Lite, אתם יכולים להשתמש ב-Firebase ML כדי לפרוס את המודלים. כשפורסים מודלים באמצעות Firebase, אפשר להקטין את גודל ההורדה הראשוני של האפליקציה ולעדכן את מודלי ה-ML של האפליקציה בלי לשחרר גרסה חדשה של האפליקציה. בנוסף, בעזרת הגדרת תצורה מרחוק ו-A/B Testing, אפשר להציג באופן דינמי מודלים שונים לקבוצות שונות של משתמשים.

מודלים של TensorFlow Lite

מודלים של TensorFlow Lite הם מודלים של למידת מכונה שעברו אופטימיזציה להפעלה במכשירים ניידים. כדי לקבל מודל TensorFlow Lite:

שימו לב: אם אין ספריית TensorFlow Lite מעודכנת ל-Dart, תצטרכו לשלב עם ספריית TensorFlow Lite המקורית לפלטפורמות שלכם. השילוב הזה לא מתועד כאן.

לפני שמתחילים

  1. אם עוד לא עשיתם זאת, מתקינים ומפעילים את Firebase SDKs for Flutter.

  2. מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין להורדת מודלים של למידת מכונה:

    flutter pub add firebase_ml_model_downloader
    
  3. בנייה מחדש של הפרויקט:

    flutter run
    

1. פריסת המודל

פורסים את מודלי TensorFlow המותאמים אישית באמצעות מסוף Firebase או Firebase Admin Python ו-Node.js SDKs. איך פורסים ומנהלים מודלים בהתאמה אישית

אחרי שמוסיפים מודל בהתאמה אישית לפרויקט Firebase, אפשר להפנות למודל באפליקציות באמצעות השם שצוין. בכל שלב, אפשר לפרוס מודל חדש של TensorFlow Lite ולהוריד את המודל החדש למכשירים של המשתמשים באמצעות קריאה ל-getModel() (ראו בהמשך).

2. הורדת המודל למכשיר ואתחול של מתורגמן TensorFlow Lite

כדי להשתמש במודל TensorFlow Lite באפליקציה, קודם צריך להשתמש בכלי להורדת מודלים כדי להוריד את הגרסה העדכנית של המודל למכשיר. לאחר מכן, יוצרים מופע של TensorFlow Lite interpreter עם המודל.

כדי להתחיל בהורדת המודל, קוראים לשיטה 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 interpreter כדי לבצע הסקה. בהיעדר ספריית TensorFlow Lite מתוחזקת ל-Dart, תצטרכו לבצע שילוב עם ספריות TensorFlow Lite מקוריות ל-iOS ול-Android.

נספח: אבטחת מודלים

לא משנה איך אתם מעמידים את מודלי TensorFlow Lite לרשות Firebase ML, ‏ Firebase ML מאחסן אותם בפורמט protobuf סטנדרטי בסדרות באחסון מקומי.

תיאורטית, המשמעות היא שכל אחד יכול להעתיק את המודל שלכם. עם זאת, בפועל, רוב המודלים הם ספציפיים לאפליקציה ומוסתרים על ידי אופטימיזציות, כך שהסיכון דומה לסיכון שמתחרים יפרקו את הקוד שלכם וישתמשו בו מחדש. עם זאת, חשוב להיות מודעים לסיכון הזה לפני שמשתמשים במודל מותאם אישית באפליקציה.