1. מבוא
יצרתם מודל מותאם אישית של למידת מכונה באמצעות TensorFlow.js, אבל עכשיו אתם צריכים לארח אותו במקום כלשהו כדי להשתמש בו באתר לבחירתכם. יש הרבה אפשרויות לעשות את זה, אבל היום נראה כמה קל להשתמש באירוח ב-Firebase, שיכול גם לספק לכם כמה יתרונות נוספים כמו ניהול גרסאות, הצגת מודלים דרך חיבור מאובטח ועוד.
מה תפַתחו
בשיעור ה-Lab הזה תלמדו ליצור מערכת מקצה לקצה שיכולה לארח ולהפעיל מודל TensorFlow.js מותאם אישית שנשמר, יחד עם נכסים קשורים כמו HTML, CSS ו-JavaScript. אנחנו ניצור מודל פשוט מאוד וקל משקל שיכול לחזות ערך פלט מספרי בהינתן ערך קלט מסוים (לדוגמה, מה המחיר של בית בהינתן השטח שלו), ונארח אותו באמצעות אירוח ב-Firebase כדי שאפשר יהיה להשתמש בו בקנה מידה גדול.
מה תלמדו
- איך שומרים מודל TensorFlow.js בהתאמה אישית בפורמט הנכון
- איך מגדירים חשבון Firebase לאירוח
- איך פורסים את הנכסים ב-Firebase Hosting
- איך פורסים גרסאות חדשות של מודל.
הערה: המטרה של סדנת הקוד הזו היא להסביר איך לקחת מודל שאומן בהתאמה אישית ולארח אותו לצורך פריסה, ולא להסביר איך ליצור ארכיטקטורת מודל מושלמת. לכן, נתקדם במהירות בתהליך היצירה של מודל למידת המכונה באמצעות דוגמה פשוטה. העקרונות יהיו זהים לא משנה איזה מודל תיצרו בעצמכם.
שיתוף התוצרים עם Google
אם יצרתם משהו מגניב באמצעות חבילת הטכנולוגיות הזו, נשמח לשמוע על כך. נשמח לראות את היצירות שלכם.
תייגו אותנו ברשתות החברתיות באמצעות ההאשטאג #MadeWithTFJS כדי לקבל הזדמנות שהפרויקט שלכם יוצג בבלוג של TensorFlow או אפילו באירועים עתידיים כמו Show & Tells.
2. מה זה אירוח ב-Firebase?
אירוח ב-Firebase מספק אירוח מהיר ומאובטח ברמת ייצור לאפליקציות אינטרנט, לתוכן סטטי או דינמי ולמיקרו-שירותים
באמצעות פקודה אחת, אפשר לפרוס במהירות אפליקציות אינטרנט ולהציג תוכן ב-CDN (רשת להעברת תוכן) גלובלית, וכך לוודא שהתוכן זמין עם זמן אחזור נמוך כמעט בכל מקום. אפשר גם לשלב בין אירוח ב-Firebase לבין Cloud Functions או Cloud Run כדי ליצור ולארח מיקרו-שירותים, אבל זה כבר מעבר להיקף של ה-Codelab הזה.
יכולות מרכזיות של אירוח ב-Firebase
- הצגת תוכן דרך חיבור מאובטח – האינטרנט המודרני מאובטח. לרוב, כדי לגשת לחיישנים בצד הלקוח, האתר צריך להיות מועבר בהקשר מאובטח. SSL ללא הגדרה מובנה ב-Firebase Hosting, כך שהתוכן תמיד מועבר בצורה מאובטחת לכל הקבצים שמתארחים.
- אירוח תוכן סטטי ודינמי ומיקרו-שירותים עם תמיכה באימות, כך שרק משתמשים מחוברים יוכלו לטעון או להציג את הקבצים האלה, אם רוצים.
- העברת תוכן במהירות – כל קובץ שמעלים נשמר במטמון בכונני SSD בקצוות של רשתות CDN ברחבי העולם. לא משנה איפה המשתמשים שלכם נמצאים, התוכן מועבר במהירות.
- פריסת גרסאות חדשות באמצעות פקודה אחת – באמצעות ממשק שורת הפקודה של Firebase, אפשר להפעיל את האפליקציה תוך שניות.
- חזרה לגרסה קודמת בלחיצה אחת – פריסות מהירות הן נהדרות, אבל היכולת לבטל טעויות היא אפילו יותר טובה. אירוח ב-Firebase מספק ניהול מלא של גרסאות ושל פרסום, עם אפשרות לחזרה לגרסה קודמת בקליק אחד.
בין אם אתם פורסים דף נחיתה פשוט של אפליקציה או אפליקציית Progressive Web App (PWA) מורכבת, שירות Hosting מספק לכם את התשתית, התכונות והכלים שמותאמים לפריסה ולניהול של אתרים ואפליקציות.
כברירת מחדל, לכל פרויקט Firebase יש תתי-דומיינים חינמיים בדומיינים web.app ו-firebaseapp.com. שני האתרים האלה מציגים את אותו תוכן ואת אותה הגדרה. אם רוצים, אפשר גם לקשר שם דומיין משלכם לאתר שמארחים ב-Firebase.
שלבי ההטמעה
- הגדרת פרויקט
- התקנה והגדרה של ממשק שורת הפקודה של Firebase
- פריסת האתר
- קישור לאפליקציית אינטרנט ב-Firebase לצורך מעקב אחר ביצועים (אופציונלי)
אבל לפני שנוכל לעשות את כל זה, אנחנו צריכים מודל למידת מכונה ואפליקציית אינטרנט לפריסה. אז בואו ניצור אחד!
3. מודל פשוט של למידת מכונה לחיזוי מחירי בתים
לצורך התרגיל הזה, ניצור מודל ML פשוט מאוד שמנבא ערכים מספריים. לצורך המחשה בלבד, ננסה להשתמש בלמידת מכונה כדי לחזות את הערך של בית דמיוני בהתאם לגודל שלו ברגל רבוע. למעשה, בהדגמה הזו נכפיל את השטח של הבית ב-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 ש"ח, וכן הלאה. בעצם, המספר מוכפל ב-1,000. עם זאת, מודל ה-ML לא יודע על הקשר הפשוט הזה של 1,000 * 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 Hosting.
שמירת המודל
הוספת הקוד שלמטה לסוף הפונקציה evaluate (אחרי model.predict) שמופיעה למעלה מאפשרת לנו לייצא את המודל שמתקבל אחרי השלמת האימון ישירות מדפדפן האינטרנט ולשמור אותו בדיסק. כך נוכל לארח אותו במקום כלשהו ולהשתמש בו בעתיד בלי שנצטרך לאמן אותו מחדש בכל פעם שנטען את הדף.
model.js
await model.save('downloads://my-model');
אם עכשיו תיכנסו ל-train.html ותפעילו את הדף, המודל יתאמן (התהליך עשוי להימשך כמה שניות) ואז תופיע בקשה להוריד את המודל המאומן שנוצר.
4. הגדרת Firebase
כניסה ל-Firebase ויצירת פרויקט
אם אתם חדשים ב-Firebase, קל להירשם באמצעות חשבון Google. פשוט נכנסים לכתובת https://firebase.google.com/ ונכנסים באמצעות חשבון Google הרגיל שבו רוצים להשתמש. אחרי שהמערכת מעבירה אתכם לדף הבית, לוחצים על 'מעבר למסוף' בפינה השמאלית העליונה של הדף:

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

פשוט לוחצים על Add Project (הוספת פרויקט) כמו שמוצג כדי ליצור פרויקט חדש ב-Firebase, נותנים לפרויקט שם ייחודי, מאשרים את התנאים ולוחצים על Continue (המשך).
בשלב הבא תתבקשו להוסיף ניתוח לפרויקט. אם ברצונך לקבל גישה לניתוח נתונים כזה, אפשר להפעיל את האפשרות הזו וללחוץ על 'המשך' כמו שמוצג:

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

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

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

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

מעולה! עכשיו אפשר להעביר קבצים מהמחשב המקומי לפרויקט שיצרנו.
הפעלת הפרויקט כדי לפרוס אותו ב-Firebase Hosting
כדי לקשר את התיקייה המקומית לפרויקט Firebase, מריצים את הפקודה הבאה מהרמה הבסיסית (root) של ספריית הפרויקט המקומית (התיקייה שבה רוצים להשתמש להעלאת קבצים כשמבצעים פריסה).
טרמינל של שורת פקודה:
firebase init
אחרי שמריצים את הפקודה הזו, פשוט פועלים לפי ההוראות במסוף כדי להשלים את ההגדרה, כמו שמוצג בהמשך:

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

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

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

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

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

אפשר גם לראות ש-Firebase יצר בשבילנו את הקבצים index.html ו-404.html. נמשיך לערוך את 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();
אם ביצעתם את השלבים בצורה נכונה, עכשיו אמורים להופיע הקבצים הערוכים הבאים בתיקייה הציבורית שיצרנו:

עכשיו נשאר רק לפרוס את הקבצים כדי לבדוק שהכול עובד.
6. פריסת המודל והאתר
מעבר לשידור חי
חוזרים לחלון הטרמינל שפתחתם בתיקיית הפרויקט של Firebase במחשב המקומי (זו התיקייה שמכילה את התיקייה public שצוינה למעלה, יחד עם קובצי האתחול של Firebase).
כדי לפרוס את הקבצים בתיקייה הציבורית, פשוט מקלידים את הפקודה הבאה:
טרמינל של שורת פקודה:
firebase deploy
מחכים עד שפקודת הטרמינל תסתיים. בסיום התהליך, אמורה להתקבל הודעה על כך שהפריסה הושלמה בהצלחה, וכתובת ה-URL שאפשר להשתמש בה:

בדוגמה שלמעלה אפשר לראות שכתובת ה-URL הסופית לצפייה בפריסה שלנו היא:
https://tensorflow-js-demo.web.app (אבל כתובת ה-URL שלכם תהיה שם הפרויקט שיצרתם).
פותחים את כתובת ה-URL הזו בדפדפן אינטרנט כדי לבדוק שהיא פועלת. אם הבדיקה תצליח, אמור להיות פלט כזה במסוף הפיתוח של הדף שפותחים (מקישים על F12 כדי לפתוח את מסוף הפיתוח).

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


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

סיכום
בשיעור ה-Lab הזה:
- הגדיר ואימן מודל TensorFlow.js מותאם אישית מאפס כדי לחזות את מחירי הבתים.
- נרשמתם, הגדרתם והתקנתם את Firebase + Firebase CLI במחשב הפיתוח שלכם.
- הטמענו והשקנו אתר עובד שמעלה את המודל המאומן משלב 1 ומשתמש בו באפליקציית אינטרנט מהעולם האמיתי שאליה יכולים לגשת כל אחד, בכל מקום בעולם, בקנה מידה גדול.
מה השלב הבא?
עכשיו שיש לכם בסיס עבודה להתחיל ממנו, אילו רעיונות יצירתיים יכולים לעלות לכם כדי להרחיב את תבנית הפריסה הזו של מודל למידת מכונה?
נשמח לראות אותך משתמש בזה עם הנתונים שלך. כדאי לחשוב על התעשייה או התחום שבהם אתם גרים או עובדים. איך אפשר לאמן מודל על נתונים כאלה כדי ליצור תחזיות שיכולות להיות שימושיות לך (או לאחרים) בעתיד? נדל"ן הוא רק דוגמה אחת, ואנחנו ממליצים לכם ליישם את העקרונות האלה גם באתגרים אחרים שלכם. בהצלחה בפריצה!
אל תשכחו לתייג אותנו בכל תוכן שאתם יוצרים באמצעות התיוג #MadeWithTFJS (כאן תוכלו לראות דוגמאות לתוכן שאחרים יצרו). כך תהיה לכם הזדמנות להופיע ברשתות החברתיות או אפילו באירועי TensorFlow עתידיים! נשמח לראות מה תיצרו, ואם יש לכם משוב או שאלות, אתם מוזמנים לפנות אל היוצר של ה-codelab הזה.
עוד Codelabs של TensorFlow.js ללימוד מעמיק
- כתיבת רשת נוירונים מאפס ב-TensorFlow.js
- זיהוי אודיו באמצעות למידת העברה ב-TensorFlow.js
- סיווג תמונות בהתאמה אישית באמצעות למידת העברה ב-TensorFlow.js