אם האפליקציה שלכם משתמשת במודלים מותאמים אישית של 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 עם המודל.
כדי להתחיל בהורדת המודל, קוראים לשיטת 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 סדרתי רגיל באחסון המקומי.
תיאורטית, המשמעות היא שכל אחד יכול להעתיק את המודל שלכם. עם זאת, בפועל, רוב המודלים הם ספציפיים לאפליקציה ומוסתרים על ידי אופטימיזציות, כך שהסיכון דומה לסיכון שמתחרים יפרקו את הקוד שלכם וישתמשו בו מחדש. עם זאת, חשוב להיות מודעים לסיכון הזה לפני שמשתמשים במודל מותאם אישית באפליקציה.