אם האפליקציה שלכם משתמשת במודלים מותאמים אישית של TensorFlow Lite, אתם יכולים להשתמש ב-Firebase ML כדי לפרוס את המודלים. כשפורסים מודלים באמצעות Firebase, אפשר להקטין את גודל ההורדה הראשוני של האפליקציה ולעדכן את המודלים של ה-ML באפליקציה בלי לשחרר גרסה חדשה של האפליקציה. בנוסף, בעזרת הגדרת תצורה מרחוק ו-A/B Testing, אפשר להציג באופן דינמי מודלים שונים לקבוצות שונות של משתמשים.
מודלים של TensorFlow Lite
מודלים של TensorFlow Lite הם מודלים של למידת מכונה שעברו אופטימיזציה להפעלה במכשירים ניידים. כדי לקבל מודל TensorFlow Lite:
- שימוש במודל מוכן מראש, כמו אחד מהמודלים הרשמיים של TensorFlow Lite
- המרת מודל TensorFlow, מודל Keras או פונקציה קונקרטית ל-TensorFlow Lite
שימו לב: אם אין ספריית TensorFlow Lite מתוחזקת ל-Dart, תצטרכו לשלב עם ספריית TensorFlow Lite המקורית לפלטפורמות שלכם. השילוב הזה לא מתועד כאן.
לפני שמתחילים
אם עוד לא עשיתם זאת, מתקינים ומפעילים את Firebase SDKs for Flutter.
מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין להורדת מודלים של למידת מכונה:
flutter pub add firebase_ml_model_downloaderבנייה מחדש של הפרויקט:
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 סדרתי רגיל באחסון המקומי.
תיאורטית, המשמעות היא שכל אחד יכול להעתיק את המודל שלכם. עם זאת, בפועל, רוב המודלים הם ספציפיים לאפליקציה ומוסתרים על ידי אופטימיזציות, כך שהסיכון דומה לסיכון שמתחרים יפרקו את הקוד שלכם וישתמשו בו מחדש. עם זאת, חשוב להיות מודעים לסיכון הזה לפני שמשתמשים במודל מותאם אישית באפליקציה.