TensorFlow.js: שימוש באירוח ב-Firebase כדי לפרוס ולארח מודל למידת מכונה בקנה מידה רחב

1. מבוא

יצרתם מודל מותאם אישית של למידת מכונה באמצעות TensorFlow.js, אבל עכשיו אתם צריכים לארח אותו במקום כלשהו כדי להשתמש בו באתר לבחירתכם. יש הרבה אפשרויות לעשות זאת, אבל היום נראה עד כמה קל להשתמש באירוח ב-Firebase וליהנות מיתרונות נוספים כמו ניהול גרסאות, הצגת מודלים בחיבור מאובטח ועוד.

מה תפַתחו

בשיעור ה-Lab הזה תיצרו מערכת מקצה לקצה שיכולה לארח ולהריץ מודל TensorFlow.js שמור בהתאמה אישית יחד עם הנכסים הקשורים אליו כמו HTML, CSS ו-JavaScript. אנחנו ניצור מודל פשוט מאוד שיכול לחזות ערך פלט מספרי בהינתן ערך קלט מסוים (למשל, מחיר הבית בהינתן השטח המרובע שלו), ולארח אותו באמצעות אירוח ב-Firebase כדי שניתן יהיה להשתמש בו בקנה מידה נרחב.

מה תלמדו

  • איך שומרים מודל TensorFlow.js מותאם אישית בפורמט הנכון
  • איך להגדיר חשבון Firebase לאירוח
  • איך לפרוס את הנכסים באירוח ב-Firebase
  • איך לפרוס גרסאות חדשות של מודל.

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

משתפים את היצירות שלכם איתנו

אם יצרתם משהו מגניב בעזרת המקבץ הזה, נשמח לדעת! נשמח לראות את היצירות שלך.

אפשר לתייג אותנו ברשתות החברתיות באמצעות ה-hashtag הבא: #MadeWithTFJS כדי להראות שהפרויקט שלך יוצג בבלוג של TensorFlow או אפילו באירועים עתידיים כמו Show & אומרת.

2. מה זה אירוח ב-Firebase?

אירוח ב-Firebase מספק אירוח מהיר ומאובטח ברמת הייצור לאפליקציית האינטרנט, לתוכן סטטי / דינמי ולמיקרו-שירותים (microservices)

באמצעות פקודה אחת, ניתן לפרוס במהירות אפליקציות אינטרנט ולהציג תוכן ב-CDN גלובלי (רשת להעברת תוכן), שמבטיח שהתוכן יהיה זמין עם זמן אחזור קצר כמעט בכל מקום. אפשר גם להתאים בין אירוח ב-Firebase ל-Cloud Functions או ל-Cloud Run כדי ליצור ולארח מיקרו-שירותים (microservices) ב-Firebase, אבל זה לא נכלל בקורס הזה.

יכולות של מפתחות אירוח ב-Firebase

  • מגישים תוכן בחיבור מאובטח – האינטרנט המודרני מאובטח. לעיתים קרובות כדי לגשת לחיישנים בצד הלקוח, האתר צריך להישלח בהקשר מאובטח. SSL ללא הגדרות אישיות מובנה באירוח ב-Firebase, כך שהתוכן תמיד מועבר באופן מאובטח לכל הקבצים המתארחים.
  • אירוח תוכן סטטי ודינמי וגם מיקרו-שירותים (microservices) עם תמיכה באימות, כך שרק משתמשים שמחוברים לחשבון יוכלו לטעון או לצפות בקבצים האלה אם ירצו.
  • העברה מהירה של תוכן – כל קובץ שמעלים נשמר במטמון ב-SSD בקצוות CDN ברחבי העולם. התוכן מועבר במהירות, לא משנה היכן המשתמשים נמצאים.
  • פריסת גרסאות חדשות באמצעות פקודה אחת – באמצעות ממשק שורת הפקודה של Firebase, אפשר ליצור ולהפעיל את האפליקציה תוך שניות.
  • חזרה למצב קודם בלחיצה אחת – פריסות מהירות הן דבר נהדר, אבל עוד יותר טוב להיות מסוגלים לבטל טעויות. אירוח ב-Firebase מספק ניהול גרסאות מלא וניהול גרסאות עם חזרה למצב קודם בלחיצה אחת.

בין אם אתם פורסים דף נחיתה פשוט לאפליקציה או Progressive Web App (PWA) מורכבות, האירוח מספק לכם תשתית, תכונות וכלים שמותאמים לפריסה ולניהול של אתרים ואפליקציות.

כברירת מחדל, לכל פרויקט ב-Firebase יש תתי-דומיינים חינמיים בדומיינים מסוג web.app ו-firebaseapp.com. שני האתרים האלה מציגים תוכן פרוס ואותו תצורה. אם תרצו, תוכלו גם לקשר שם דומיין משלכם לאתר שמתארח ב-Firebase.

שלבים להטמעה

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

3. מודל פשוט של למידת מכונה לחיזוי מחירי בתים

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

בפועל, נתונים מהעולם האמיתי עשויים להיות מורכבים יותר (למשל, כשמדובר בבתים קטנים יותר, כדי להעריך את הערך הדולרי רק פי 500 מגודלו, אבל לאחר סף מסוים הערך הופך בהדרגה ל-1,000 פעמים וכו') ייתכן שתצטרכו מודל מתקדם יותר כדי ללמוד מהי הדרך הטובה ביותר לחזות את הערכים האלה.

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

הדרכה ו נתוני הבדיקה

כל המודלים של למידת מכונה מתחילים בהשגת נתוני אימון לדוגמה שבהם נוכל להשתמש כדי ללמד את המודל לחזות ערכים בעתיד. בדרך כלל אפשר לקחת נתונים כאלה ממסד נתונים, תיקייה של קבצים, קובץ CSV או פריטים נוספים, אבל כאן נציג ישירות דוגמאות בתוך הקוד של 20 כמערך ב-JavaScript, כמו שמוצג בהמשך. מומלץ לשכפל את הקוד הזה בסביבה שמתאימה לך בינתיים, כמו Glitch.com, או להשתמש בעורך הטקסט שלך באופן מקומי, אם יש לך אפשרות להריץ שרת ב-localhost.

model.js

// House square footage.
const data =    [800, 850, 900, 950, 980, 1000, 1050, 1075, 1100, 1150, 1200, 1250, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000];

// Estimated dollar cost of house for each piece of data above (1000x square footage).
const answers = [800000, 850000, 900000, 950000, 980000, 1000000, 1050000, 1075000, 1100000, 1150000, 1200000,  1250000 , 1300000, 1400000, 1500000, 1600000, 1700000, 1800000, 1900000, 2000000];

// Testing data separate from training data.
const dataTest =     [886, 1225, 500];
const answersTest =  [886000, 1225000, 500000];

כמו שאפשר לראות לכל נתון, יש לנו ערך תשובה מתאים, שהוא הערך שננסה לחזות בעתיד (אפשר לדמיין את הערכים האלה כערכי x ו-y בתרשים דו-ממדי פשוט).

לכן, עבור הערך 800, אנחנו רוצים להפיק תשובה משוערת של 800,000$. לערך 900 נוסיף 900,000 $וכן הלאה. בעיקרון, המספר מוכפל ב-1000. עם זאת, המודל של למידת המכונה לא יודע על הקשר הפשוט הזה של 1000 * N, והוא חייב ללמוד אותו בעצמו מהדוגמאות האלה.

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

אנחנו נטענו את הסקריפט הזה יחד עם ספריית TensorFlow.js באמצעות ה-HTML הבא:

train.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Training Model</title>
    <meta charset="utf-8">
  </head>  
  <body>   
    <!-- Import TensorFlow.js library -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js" type="text/javascript"></script>
    <!-- Import our JS code to train the model -->
    <script src="/model.js" defer></script>
  </body>
</html>

אימון המודל

בשלב הבא צריך לאמן את המודל על ידי הוספת הקוד שבהמשך לקוד ה-JS הקיים שלמעלה בסוף הקובץ.

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

model.js

// Create Tensor representations of our vanilla JS arrays above 
// so can be used to train our model.
const trainTensors = {
  data: tf.tensor2d(data, [data.length, 1]),
  answer: tf.tensor2d(answers, [answers.length, 1])
};

const testTensors = {
  data: tf.tensor2d(dataTest, [dataTest.length, 1]),
  answer: tf.tensor2d(answersTest, [answersTest.length, 1])
};


// Now actually create and define model architecture.
const model = tf.sequential();

// We will use one dense layer with 1 neuron and an input of 
// a single value.
model.add(tf.layers.dense({inputShape: [1], units: 1}));

// Choose a learning rate that is suitable for the data we are using.
const LEARNING_RATE = 0.0001;

train();

async function train() {
  // Compile the model with the defined learning rate and specify
  // our loss function to use.
  model.compile({
    optimizer: tf.train.sgd(LEARNING_RATE),
    loss: 'meanAbsoluteError'
  });

  // Finally do the training itself over 500 iterations of the data.
  // As we have so little training data we use batch size of 1.
  // We also set for the data to be shuffled each time we try 
  // and learn from it.
  let results = await model.fit(trainTensors.data, trainTensors.answer, {epochs: 500, batchSize: 1, shuffle: true});
  
  // Once trained we can evaluate the model.
  evaluate();
}

async function evaluate(stuff) {
  // Predict answer for a single piece of data.
  model.predict(tf.tensor2d([[768]])).print();
}

באמצעות הקוד שלמעלה הצלחנו לאמן מודל שיכול לחזות ערך פלט בהינתן ערך הקלט. בהרצת הקוד שלמעלה מתקבלת חיזוי של 768,073 עבור ערך הקלט 768 שמודפס במסוף המפתחים של הדפדפן (יש להקיש על F12 כדי לפתוח אותו אם הוא עדיין לא פתוח). זו הערכה די טובה של מחיר הבית, כי נתנו דוגמאות שהיו גבוהות פי 1,000 ממחיר הבית. הערה: הערך הצפוי עשוי להיות שונה מעט, וזה נורמלי לחלוטין.

אם אנחנו מרוצים מהביצועים, כל מה שאנחנו צריכים לעשות עכשיו הוא לשמור את המודל הזה בדיסק כדי שנוכל להעלות אותו לאירוח ב-Firebase!

שמירת המודל

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

model.js

await model.save('downloads://my-model');

אם תבקרו עכשיו ב-train.html ותריצו את הדף, תצטרכו לאמן את המודל (שעשוי להימשך כמה שניות) ואז תוצג בקשה להוריד את המודל שעבר אימון.

4. הגדרת Firebase

כניסה ל-Firebase ויצירת פרויקט

אם אתם חדשים ב-Firebase, קל להירשם דרך חשבון Google. פשוט עוברים אל https://firebase.google.com/ ונכנסים באמצעות חשבון Google הרגיל שבו רוצים להשתמש. אחרי שמופנים לדף הבית, צריך ללחוץ על 'go to console' בפינה השמאלית העליונה של הדף:

ea7ff3f08e4019b0.png

אחרי שתפנו למסוף, אתם אמורים לראות דף נחיתה בערך כך:

166d9408ad46599b.png

פשוט לוחצים על 'הוספת פרויקט' כפי שמוצג כדי ליצור פרויקט Firebase חדש, נותנים לפרויקט שם ייחודי, מאשרים את התנאים ולוחצים על 'המשך'.

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

a34c2be47b26e6b5.png

אם הכול בסדר, אמור להופיע דף מוכן לפרויקט:

1306dc803ad22338.png

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

התקנה וחיבור של ה-CLI

Firebase זמינה כחבילת Node NPM שאפשר להתקין ולהשתמש בה דרך ממשק שורת הפקודה (CLI) שמאפשר לפרוס בקלות את הקבצים והתיקיות המקומיים באירוח Firebase. במדריך של היום נשתמש בסביבת Linux, אבל אם יש לכם Windows או Mac, תוכלו לבצע את ההוראות שכאן כדי להגדיר את הכלים של CLI במכשיר.

עם זאת, ב-Linux, תחילה נתקין את NPM ואת Node.js אם הם עדיין לא מותקנים (אם אתם משתמשים בסביבות אחרות, צריך לבצע את ההוראות האלה) באמצעות 3 הפקודות הבאות בחלון טרמינל:

טרמינל שורת הפקודה:

sudo apt update

טרמינל שורת הפקודה:

sudo apt install nodejs

טרמינל שורת הפקודה:

sudo apt install npm

עכשיו, אם מתקינים את Node.js ו-NPM, אתם צריכים רק להריץ את הפקודה הבאה בחלון טרמינל כדי להתקין את כלי שורת הפקודה של Firebase:

טרמינל שורת הפקודה:

sudo npm install -g firebase-tools

נהדר! עכשיו אנחנו מוכנים לחבר את פרויקט firebase שלנו למערכת שלנו כדי שנוכל להעביר אליו קבצים ועוד.

התחברות ל-Firebase

נכנסים ל-Firebase באמצעות חשבון Google, על ידי הרצת הפקודה הבאה:

טרמינל שורת הפקודה:

firebase login

תתבקשו להעניק גישה לחשבון Google Firebase באופן הבא:

4dc28589bef2ff5d.png

כדאי לאפשר זאת, ובסוף התהליך אמור להופיע חיבור מוצלח של כלי שורת הפקודה לחשבון firebase שלכם:

df397ec7a555e8de.png

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

67a3ff39d3c0f3e4.png

מעולה! עכשיו אנחנו מוכנים לדחוף קבצים לפרויקט שיצרנו מהמכונה המקומית.

הפעלת הפרויקט באירוח ב-Firebase

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

טרמינל שורת הפקודה:

firebase init

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

61e0f6d92ef3e1c4.png

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

עכשיו אנחנו יכולים לבחור את הפרויקט הקיים שיצרנו קודם, ולהשתמש בו:

4f2a1696d5cfd72f.png

מקישים על Enter בקטע 'שימוש בפרויקט קיים'. ולאחר מכן בוחרים אותו באמצעות מקש החץ למטה, כפי שמוצג בהמשך:

4dfcf2dff745f2c.png

לסיום, יש להקיש על Enter כדי להשתמש בו ואז לאשר את הגדרות ברירת המחדל במסך האחרון שקופץ ולומר "לא" כדי להגדיר כאפליקציה בדף יחיד:

7668a2175b624af2.png

כך תוכלו לארח דפי HTML מרובים, אם תבחרו לעשות זאת.

עכשיו האתחול הושלם, תוכלו לראות את קובץ firebase.json ואת הכיתוב 'public' נוצרה בספרייה שממנה ביצענו את הפקודות שלמעלה.

cd7724b92f3d507.png

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

5. יצירת דף האינטרנט של TensorFlow.js

המערכת טוענת את המודל השמור

קודם כל נוודא שמעתיקים את מודל למידת המכונה ששמרנו קודם ב-Codelab אל התיקייה הציבורית שיצרנו עכשיו באמצעות Firebase. פשוט גוררים ומשחררים את הקבצים השמורים בתיקייה הזו, כמו שמוצג:

cd6f565189e23705.png

יופיעו גם קובצי index.html ו-404.html שנוצרו ב-Firebase עבורנו. בואו נערוך את index.html באמצעות עורך הטקסט המועדף עליכם במחשב כדי שנוכל להוסיף קוד מותאם אישית משלנו, כפי שמוצג כאן:

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Hello World - TensorFlow.js</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- Import the webpage's stylesheet -->
    <link rel="stylesheet" href="style.css">
  </head>  
  <body>
    <h1>TensorFlow.js Hello World</h1>
    <p>Check the console (Press F12) to see predictions!</p>
    <!-- Import TensorFlow.js library -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js" type="text/javascript"></script>

    <!-- Import the page's JavaScript to do some stuff -->
    <script src="script.js" defer></script>
  </body>
</html>

בקוד החדש שלנו index.html שלמעלה, ציינתם גיליון סגנונות כדי שנוכל להוסיף סגנון לדף שלנו מאוחר יותר אם נבחר לעשות זאת, וגם את script.js שיארח את הקוד שאנחנו צריכים לכתוב כדי להשתמש במודל השמור של TensorFlow.js.

קדימה וניצור את הקבצים האלה עכשיו ואכלס אותם באופן הבא, כדי שהם יעשו משהו מועיל:

style.css

/** Leave blank for now **/

script.js

// Load our saved model from current directory (which will be 
// hosted via Firebase Hosting)
async function predict() {
  // Relative URL provided for my-model.json.
  const model = await tf.loadLayersModel('my-model.json');
  // Once model is loaded, let's try using it to make a prediction!
  // Print to developer console for now.
  model.predict(tf.tensor2d([[1337]])).print();
}

predict();

אם ביצעת את השלבים בצורה נכונה, עכשיו אמורים להופיע הקבצים הערוך הבאים בתיקייה הציבורית שיצרנו:

253498c703c04ee.png

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

6. פריסת המודל והאתר

התחלת סטרימינג בשידור חי

חוזרים לחלון הטרמינל שפתחתם בתיקיית פרויקט firebase במחשב המקומי שלכם (זו התיקייה שמכילה את התיקייה 'ציבורית' למעלה יחד עם קובצי firebase init).

כדי לפרוס את הקבצים שבתיקייה הציבורית, מקלידים את הטקסט הבא:

טרמינל שורת הפקודה:

firebase deploy

משלימים את הפקודה בטרמינל, והגרסה צריכה להיות תקינה, יחד עם כתובת ה-URL שבה אפשר להשתמש כדי להשתמש בה:

c5795cae85ed82a5.png

בדוגמה שלנו למעלה ניתן לראות את כתובת ה-URL הסופית כדי לראות את הפריסה שלנו:

https://tensorflow-js-demo.web.app (כתובת ה-URL תהיה שם הפרויקט שיצרתם).

פותחים את כתובת ה-URL הזו בדפדפן אינטרנט כדי לבדוק אם היא פועלת. אם הפעולה מצליחה, היא אמורה להדפיס משהו כזה במסוף המפתחים של הדף שאתם פותחים (לוחצים על F12 כדי לפתוח את מסוף המפתחים).

182aee0acfa7c41e.png

כמו שאפשר לראות שהדף נטען בדומיין שנפרס, ואנחנו יכולים לראות נכון את התחזית של המודל שלנו לשטח של 1,337 רגל רבוע, כלומר 1,336,999.25$, וזהו אומדן טוב מאוד, כי ציפינו שהוא יהיה גדול פי 1,000 מ"ר. כמובן שנוכל לבצע חיזויים רבים ככל האפשר, אם יהיה לנו ממשק משתמש טוב לקריאה למודל במקום זאת, וכל החיזויים פועלים אך ורק ב-JavaScript, כך שהשאילתות יהיו פרטיות ומאובטחות.

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

מעקב אחרי השימוש

בנוסף לכל ניתוח נתונים של Google Analytics שאפשר להוסיף לקוד האתר, ב-Firebase יש גם נתונים סטטיסטיים לגבי ניהול גרסאות ושימוש דרך המסוף של הפרויקט. לאחר הפריסה תראו משהו כזה, שתוכלו לבדוק מדי פעם לפי הצורך:

42b1cb8f7c10016.png

fbdd6504bec7c3d.png

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

7. מזל טוב

כל הכבוד! עשית את הצעדים הראשונים בשימוש ב-TensorFlow.js עם Firebase כדי ליצור ולפרוס מודל למידת מכונה מותאם אישית, כדי שאפשר יהיה לשתף אותו עם העולם. דמיינו את כל הדברים האחרים שאפשר לעשות בעזרת הגישה הזו, שהיא עוצמתית וניתנת להתאמה, שמתאימה לתרחישים לדוגמה בסביבת הייצור. כשאתם רוצים, פלטפורמת Firebase מתעדכנת באופן אוטומטי לפי הביקוש. כך, לא משנה אם 10 או 10,000 משתמשים ירצו להשתמש בה, זה פשוט יעבוד.

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

b1e4c1bf304a4869.png

סיכום

בשיעור ה-Lab הזה בקוד:

  1. הוגדר ואימון מודל TensorFlow.js מותאם אישית לחלוטין כדי לחזות את מחירי הבית.
  2. נרשמתם, הגדרתם והתקנתם את הכלים של Firebase + Firebase CLI במכונת הפיתוח.
  3. פרסנו והשקנו אתר פעיל שטוען את המודל המאומן שלנו משלב 1 ומשתמש בו באפליקציית אינטרנט בעולם האמיתי שאליה כל אחד יכול לגשת בכל מקום בעולם, בקנה מידה רחב.

מה השלב הבא?

עכשיו, אחרי שיש לכם בסיס עבודה שאפשר להתחיל ממנו, אילו רעיונות יצירתיים תוכלו לחשוב עליהם כדי להרחיב את התבנית הזו לפריסת מודל למידת מכונה?

נשמח לראות אותך עושה שימוש בנתונים שלך. נסו לחשוב על הענף או התעשייה שבהם אתם גרים או עובדים. איך אפשר להתאמן על נתונים כאלה כדי לקבל תחזיות שיוכלו להועיל לך (או לאחרים) בעתיד? הנדל"ן הוא לא הדוגמה היחידה במקרה הזה, ואנחנו ממליצים ליישם זאת גם באתגרים האישיים שלכם. פריצה מהנה!

אל תשכחו לתייג אותנו בכל דבר שאתם יוצרים באמצעות #MadeWithTFJS (לוחצים על הקישור הזה כדי לקבל השראה ממה שעשו אחרים) כדי שתהיה לך הזדמנות להופיע ברשתות החברתיות או אפילו להופיע באירועים עתידיים של TensorFlow! נשמח לראות מה אתם יוצרים וכמובן, לפנות למחבר של Codelab זה אם יש לך משוב או שאלות.

כדי להעמיק עוד את ה-codelabs ב-TensorFlow.js

אתרים שאפשר לשלם עליהם