TensorFlow.js: از میزبانی Firebase برای استقرار و میزبانی مدل یادگیری ماشین در مقیاس استفاده کنید

1. مقدمه

بنابراین شما یک مدل یادگیری ماشین سفارشی با TensorFlow.js ایجاد کرده اید، اما اکنون باید آن را در جایی میزبانی کنید تا در وب سایت مورد نظر خود از آن استفاده کنید. گزینه‌های زیادی برای انجام این کار وجود دارد، اما امروز خواهیم دید که استفاده از میزبانی Firebase چقدر آسان است که می‌تواند مزایای اضافی مانند نسخه‌سازی، ارائه مدل‌ها از طریق یک اتصال امن و موارد دیگر را در اختیار شما قرار دهد.

چیزی که خواهی ساخت

در این لابراتوار کد، یک سیستم کامل به پایان می‌سازید که قادر به میزبانی و اجرای یک مدل ذخیره‌شده TensorFlow.js به همراه دارایی‌های مرتبط با آن مانند HTML، CSS و جاوا اسکریپت است. ما یک مدل سبک وزن بسیار ساده می‌سازیم که می‌تواند یک مقدار خروجی عددی را با توجه به مقدار ورودی پیش‌بینی کند (مثلاً قیمت یک خانه با توجه به متراژ مربع آن چقدر است)، و آن را از طریق میزبانی Firebase میزبانی می‌کند تا بتوان از آن در مقیاس استفاده کرد.

چیزی که یاد خواهید گرفت

  • چگونه یک مدل سفارشی TensorFlow.js را در قالب مناسب ذخیره کنیم
  • چگونه یک حساب Firebase برای میزبانی راه اندازی کنیم
  • نحوه استقرار دارایی های خود در میزبانی Firebase
  • نحوه استقرار نسخه های جدید یک مدل

لطفاً توجه داشته باشید: تمرکز این آزمایشگاه کد این است که چگونه یک مدل آموزش‌دیده سفارشی را انتخاب کنیم و آن را برای استقرار میزبانی کنیم، نه یک دوره آموزشی در ساخت معماری مدل کامل، بنابراین ما به سرعت از طریق ایجاد خود مدل یادگیری ماشین با یک مثال بی اهمیت صرف نظر از اینکه خودتان چه مدلی را خلق کنید، اصول یکسان خواهند بود.

آنچه را که می سازید با ما به اشتراک بگذارید

اگر با استفاده از این پشته چیز جالبی ساخته اید، به ما اطلاع دهید! ما دوست داریم خلاقیت های شما را ببینیم.

ما را در رسانه های اجتماعی با استفاده از هشتگ #MadeWithTFJS تگ کنید تا فرصتی برای نمایش پروژه شما در وبلاگ TensorFlow یا حتی رویدادهای آینده مانند Show & Tells ما وجود داشته باشد.

2. میزبانی Firebase چیست؟

میزبانی Firebase میزبانی سریع و ایمن درجه تولید را برای برنامه وب، محتوای استاتیک / پویا و میکروسرویس‌های شما فراهم می‌کند.

با یک فرمان، می‌توانید به سرعت برنامه‌های وب را مستقر کنید و محتوا را در یک CDN جهانی (شبکه تحویل محتوا) ارائه دهید و اطمینان حاصل کنید که محتوای شما تقریباً در همه جا با تأخیر کم در دسترس است. همچنین می‌توانید میزبانی Firebase را با توابع ابری Firebase یا Cloud Run جفت کنید تا میکروسرویس‌ها را نیز بسازید و میزبانی کنید، اما این فراتر از محدوده این Codelab است.

قابلیت های کلیدی میزبانی Firebase

  • ارائه محتوا از طریق یک اتصال ایمن - وب مدرن امن است. اغلب برای دسترسی به حسگرها در سمت مشتری، سایت باید در یک زمینه امن ارائه شود. SSL با پیکربندی صفر در میزبانی Firebase تعبیه شده است، بنابراین محتوا همیشه به صورت ایمن برای همه فایل های میزبانی شده ارائه می شود.
  • میزبانی محتوای ایستا و پویا به همراه ریزسرویس ها با پشتیبانی از احراز هویت، بنابراین فقط کاربرانی که وارد سیستم شده اند می توانند در صورت تمایل آن فایل ها را بارگیری یا مشاهده کنند.
  • ارائه سریع محتوا - هر فایلی که آپلود می کنید در حافظه های SSD در لبه های CDN در سراسر جهان ذخیره می شود. مهم نیست کاربران شما کجا هستند، محتوا به سرعت ارائه می شود.
  • استقرار نسخه های جدید با یک دستور - با استفاده از رابط خط فرمان Firebase، می توانید برنامه خود را در عرض چند ثانیه راه اندازی و اجرا کنید.
  • بازگشت با یک کلیک - استقرار سریع عالی است، اما قادر به لغو اشتباهات حتی بهتر است. میزبانی Firebase مدیریت نسخه و انتشار کامل را با بازگرداندن یک کلیک فراهم می کند.

چه در حال استقرار یک صفحه فرود برنامه ساده یا یک برنامه وب پیشرفته پیشرفته (PWA) باشید، میزبانی زیرساخت، ویژگی‌ها و ابزارهای متناسب با استقرار و مدیریت وب‌سایت‌ها و برنامه‌ها را در اختیار شما قرار می‌دهد.

به طور پیش فرض، هر پروژه Firebase دارای زیر دامنه رایگان در دامنه web.app و firebaseapp.com است. این دو سایت محتوای مستقر شده و پیکربندی یکسانی را ارائه می دهند. در صورت تمایل می توانید نام دامنه خود را به یک سایت میزبانی شده توسط Firebase نیز متصل کنید.

مراحل اجرا

اما قبل از اینکه بتوانیم هر یک از این کارها را انجام دهیم، به یک مدل یادگیری ماشین و برنامه وب برای استقرار نیاز داریم. پس بیایید یکی بسازیم!

3. یک مدل یادگیری ماشینی ساده برای پیش بینی قیمت خانه

برای هدف این تمرین ما یک مدل ML بسیار ساده خواهیم ساخت که مقادیر عددی را پیش‌بینی می‌کند. ما سعی خواهیم کرد و از یادگیری ماشینی برای پیش‌بینی ارزش یک خانه خیالی با توجه به اندازه آن بر حسب فوت مربع استفاده می‌کنیم و فقط برای اهداف تصویری. در واقع برای این نسخه ی نمایشی، ما به سادگی 1000 برابر متر مربع خانه خواهیم داشت تا مقدار پیش بینی شده آن را برای داده های آموزشی خود به دست آوریم، اما یادگیری ماشینی باید این را خودش یاد بگیرد.

در واقع شما انتخاب می کنید که از داده های دنیای واقعی استفاده کنید که ممکن است روابط پیچیده تری داشته باشند (مثلاً برای خانه های کوچکتر اندازه آن فقط 500 برابر برای تخمین ارزش دلار است، اما پس از یک آستانه مشخص به تدریج به 1000x و غیره تبدیل می شود) و ممکن است به یک سیستم پیشرفته تر نیاز داشته باشید. مدل سازی کنید تا بهترین راه برای پیش بینی آن مقادیر را بیاموزید.

مدلی که امروز ایجاد خواهیم کرد (رگرسیون خطی) می تواند برای پیش بینی بسیاری از چیزهای دیگر با توجه به داده های دنیای واقعی به اندازه کافی استفاده شود و برای استفاده فرضی ما در بالا ساده است. با این حال تمرکز امروز ما یادگیری نحوه ذخیره و استقرار یک مدل در مقابل طراحی و بهینه سازی یک مدل برای یک مورد خاص است. پس بیایید به آن برسیم!

داده های آموزش و آزمایش

همه مدل‌های ML با بدست آوردن نمونه‌ای از داده‌های آموزشی شروع می‌شوند که می‌توانیم از آنها برای آموزش مدل استفاده کنیم تا بتوانیم مقادیر را در آینده پیش‌بینی کنیم. معمولاً می‌توانید چنین داده‌هایی را از یک پایگاه داده، پوشه فایل‌ها، CSV یا بیشتر بگیرید، اما در اینجا ما مستقیماً 20 نمونه را به عنوان یک آرایه در جاوا اسکریپت همانطور که در زیر نشان داده شده است، کدگذاری می‌کنیم. توصیه می کنیم این کد را در محیطی که در حال حاضر از کدنویسی در آن لذت می برید مانند Glitch.com یا ویرایشگر متن خود به صورت محلی اگر می توانید یک سرور را روی لوکال هاست اجرا کنید، تکرار کنید.

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، می‌خواهیم برآورد پاسخ خروجی 800000 دلار را تولید کنیم. برای مقدار 900 ما 900000 دلار خروجی خواهیم داشت و غیره. اساساً عدد در 1000 ضرب می شود. با این حال مدل ML از این رابطه ساده 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 موجود در بالا در انتهای فایل است.

نظرات برای کنجکاوها اضافه شده است، اما همانطور که گفته شد این کد لبه بیشتر در مورد گرفتن یک مدل ذخیره شده و میزبانی آن است. اگر می‌خواهید ایجاد مدل را با جزئیات بیشتر درک کنید، کدهای بیشتری در پایان پیوند داده شده‌اند. در حال حاضر می توانید کد را در پروژه خود کپی و جایگذاری کنید.

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();
}

با استفاده از کد بالا توانسته ایم مدلی را آموزش دهیم که قادر به پیش بینی مقدار خروجی با توجه به مقدار ورودی است. با اجرای کد بالا، پیش‌بینی 768073 برای مقدار ورودی 768 دریافت می‌کنم که در کنسول توسعه‌دهنده مرورگر شما چاپ می‌شود (F12 را فشار دهید تا باز شود، اگر قبلاً آن را باز نکرده‌اید). با توجه به اینکه ما نمونه هایی را ارائه کردیم که 1000 برابر بیشتر از ورودی بودند، این تخمین بسیار خوبی از قیمت خانه است. توجه: مقدار پیش بینی شده شما ممکن است کمی متفاوت باشد و این طبیعی است.

اگر از این عملکرد راضی بودیم، اکنون تنها کاری که باید انجام دهیم این است که این مدل را روی دیسک ذخیره کنیم تا بتوانیم آن را در میزبانی 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 جدید، به سادگی روی Add Project کلیک کنید، همانطور که نشان داده شده است، نام منحصر به فرد را به پروژه خود بدهید، شرایط را بپذیرید و روی ادامه کلیک کنید.

در مرحله بعد از شما پرسیده می شود که آیا می خواهید تجزیه و تحلیل را به پروژه خود اضافه کنید. اگر می‌خواهید به چنین تحلیل‌هایی دسترسی داشته باشید، می‌توانید این گزینه را فعال کنید و مطابق شکل روی ادامه کلیک کنید:

a34c2be47b26e6b5.png

اگر همه چیز به خوبی پیش رفت، باید با صفحه آماده پروژه مطابق شکل روبرو شوید:

1306dc803ad22338.png

وووووو ما یک پروژه داریم. روی ادامه کلیک کنید تا به کنسول پروژه جدید ایجاد شده منتقل شوید. صفحه را برای استفاده در آینده باز نگه دارید اما در حال حاضر باید ابزاری را نصب کنیم.

نصب و اتصال CLI

Firebase به عنوان یک بسته Node NPM در دسترس است که می توانید آن را از طریق رابط خط فرمان (CLI) نصب و استفاده کنید که استقرار فایل ها و پوشه های محلی خود را در میزبانی Firebase آسان می کند. برای آموزش امروز از یک محیط لینوکس استفاده خواهیم کرد، اما اگر ویندوز یا مک دارید، می‌توانید دستورالعمل‌های اینجا را دنبال کنید تا ابزار CLI را در دستگاه خود تنظیم کنید.

با این حال، در لینوکس، ابتدا 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

با اجرای دستور زیر با استفاده از حساب Google خود وارد Firebase شوید:

ترمینال خط فرمان:

firebase login

از شما خواسته می شود تا به حساب Google Firebase خود مطابق شکل دسترسی پیدا کنید:

4dc28589bef2ff5d.png

به این اجازه دهید و در نهایت باید اتصال موفقیت آمیز ابزارهای خط فرمان خود را به حساب firebase خود مشاهده کنید:

df397ec7a555e8de.png

پنجره را ببندید و به ترمینال خط فرمانی که قبلاً در آن تایپ می‌کردید برگردید و اکنون باید آماده پذیرش دستورات جدید مطابق شکل باشد (ما هر گونه اطلاعات خصوصی را در اسکرین شات خود پنهان کرده‌ایم):

67a3ff39d3c0f3e4.png

تبریک می گویم! ما اکنون آماده هستیم تا فایل ها را از دستگاه محلی خود به پروژه ایجاد شده خود فشار دهیم.

راه اندازی پروژه خود برای استقرار در میزبانی Firebase

برای اتصال پوشه محلی خود به پروژه Firebase خود، دستور زیر را از ریشه دایرکتوری پروژه محلی خود (پوشه ای که می خواهید برای آپلود فایل ها از هنگام استقرار استفاده کنید) اجرا کنید.

ترمینال خط فرمان:

firebase init

پس از اجرای این دستور، به سادگی دستورالعمل های موجود در ترمینال را دنبال کنید تا تنظیمات را به صورت زیر انجام دهید:

61e0f6d92ef3e1c4.png

در اینجا می‌توانیم به سادگی Hosting را با استفاده از فلش رو به پایین روی صفحه‌کلید خود انتخاب کنیم و سپس کلید فاصله را برای انتخاب فشار دهیم و سپس برای تأیید اینتر را وارد کنیم.

اکنون می‌توانیم پروژه موجودی را که قبلاً ایجاد کرده‌ایم برای استفاده انتخاب کنیم:

4f2a1696d5cfd72f.png

اینتر را روی "استفاده از یک پروژه موجود" فشار دهید و سپس با استفاده از کلید فلش پایین مانند زیر آن را انتخاب کنید:

4dfcf2dff745f2c.png

در نهایت اینتر را فشار دهید تا از آن استفاده کنید و سپس پیش‌فرض‌ها را در صفحه آخری که ظاهر می‌شود بپذیرید و برای پیکربندی به‌عنوان برنامه تک صفحه‌ای بگویید «نه»:

7668a2175b624af2.png

اگر بخواهید این کار را انجام دهید، به شما امکان می دهد چندین صفحه html را میزبانی کنید.

اکنون مقداردهی اولیه کامل شده است، متوجه یک فایل firebase.json خواهید شد و یک پوشه "public" در دایرکتوری که دستورات بالا را از آن اجرا کردیم ایجاد شده است.

cd7724b92f3d507.png

اکنون تنها کاری که باید انجام دهیم این است که فایل‌هایی را که می‌خواهیم استقرار دهیم به پوشه عمومی که ایجاد کرده‌ایم منتقل کنیم و برای استقرار خوب است! حالا این کار را بکنیم.

5. ایجاد صفحه وب TensorFlow.js

در حال بارگیری مدل ذخیره شده شما

ابتدا بیایید مطمئن شویم که مدل یادگیری ماشینی را که قبلاً در کد لبه ذخیره کرده بودیم در پوشه عمومی خود که به تازگی با Firebase ایجاد کردیم کپی می کنیم. به سادگی فایل های ذخیره شده خود را مانند تصویر در این پوشه بکشید و رها کنید:

cd6f565189e23705.png

همچنین متوجه خواهید شد که 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();

اگر مراحل را به درستی دنبال کرده اید، اکنون باید فایل های ویرایش شده زیر را در پوشه عمومی که ایجاد کرده ایم مشاهده کنید:

253498c703c04ee.png

تنها کاری که اکنون باید انجام دهیم این است که فایل های خود را مستقر کنیم تا بتوانیم بررسی کنیم که کار می کند!

6. استقرار مدل و وب سایت شما

پخش زنده

به پنجره ترمینالی که در پوشه پروژه firebase دستگاه محلی خود باز کرده بودید برگردید (این پوشه ای است که شامل پوشه "عمومی" ما در بالا به همراه فایل های init firebase است).

برای استقرار فایل های پوشه عمومی خود به سادگی موارد زیر را تایپ کنید:

ترمینال خط فرمان:

firebase deploy

اجازه دهید دستور ترمینال کامل شود و باید یک نسخه موفقیت آمیز به همراه URL که می توانید برای استفاده از آن استفاده کنید، کامل شود:

c5795cae85ed82a5.png

در مثال بالا ما می توانید آدرس نهایی برای مشاهده استقرار ما را ببینید:

https://tensorflow-js-demo.web.app (اما URL شما نام پروژه ای است که ایجاد کرده اید).

این URL را در یک مرورگر وب باز کنید تا بررسی کنید کار می کند که در صورت موفقیت باید چیزی شبیه به این را در کنسول برنامه نویس صفحه ای که باز می کنید چاپ کنید (F12 را فشار دهید تا کنسول توسعه دهنده باز شود).

182aee0acfa7c41e.png

همانطور که می بینید صفحه در دامنه مستقر بارگیری می شود و ما به درستی می توانیم پیش بینی مدل خود را برای 1337 فوت مربع مشاهده کنیم که به مبلغ 1,336,999.25 دلار است که در واقع تخمین بسیار خوبی است زیرا ما انتظار داشتیم این مقدار 1000 برابر فوت مربع باشد. البته اگر یک رابط کاربری خوب برای فراخوانی مدل ایجاد کنیم، می‌توانیم به همان اندازه پیش‌بینی کنیم که به‌جای آن مدل را فراخوانی کنیم و همه اینها به طور کامل در جاوا اسکریپت اجرا شود و درخواست‌های شما خصوصی و ایمن باشد.

اکنون که مدل شما مستقر و میزبانی شده است، می توانید وب سایت را با هر کسی در جهان به اشتراک بگذارید و آنها می توانند از برنامه شما در دستگاه خود استفاده کنند. واضح است که ممکن است بخواهید یک رابط کاربری بهتر اضافه کنید و آن را عالی جلوه دهید، اما این فراتر از محدوده این آموزش است. هیچ محدودیتی برای برنامه های وب ممکنی که می توانید مانند این میزبانی کنید با استفاده از یادگیری ماشینی که می توانند با یک کلیک و بدون نیاز به نصب کار کنند وجود ندارد و ما شما را تشویق می کنیم به موقعیت های دیگری فکر کنید که می تواند از یک مدل یادگیری ماشینی در مرورگر بهره مند شود.

نظارت بر استفاده

علاوه بر هر تجزیه و تحلیل Google که ممکن است به کد وب سایت خود اضافه کنید، Firebase همچنین آمار نسخه و استفاده را از طریق کنسول برای پروژه شما ارائه می دهد. پس از استقرار، چیزی شبیه به این را مشاهده خواهید کرد که می توانید هر از گاهی در صورت نیاز آن را بررسی کنید:

42b1cb8f7c10016.png

fbdd6504bec7c3d.png

همانطور که می بینید، به طور پیش فرض، در لایه رایگان، 10 گیگابایت پهنای باند در ماه برای فایل های میزبان خود دریافت می کنید. اگر سایت شما محبوب‌تر است، ممکن است لازم باشد یک حساب صورت‌حساب اضافه کنید تا در یک ماه معین از آن استفاده کنید. می‌توانید برنامه‌های firebase برای پروژه‌های بزرگ‌تر را در اینجا بررسی کنید، اگرچه اکثر کاربران معمولی برای نمونه‌های اولیه احتمالاً اگر مدل شما کوچک است و استفاده کم است، از سطح رایگان فراتر نخواهند رفت، بنابراین این یک راه عالی برای آزمایش و بررسی است که نیازهای شما را قبل از تعهد برآورده می‌کند. با رشد کسب و کار یا ایده خود، به یک طرح پولی بروید.

7. تبریک می گویم

تبریک می‌گوییم، شما اولین گام‌های خود را در استفاده از TensorFlow.js با Firebase برای ساخت و استقرار یک مدل یادگیری ماشینی سفارشی برداشته‌اید تا بتوانید آن را با جهان به اشتراک بگذارید. فقط تصور کنید همه چیزهای دیگری را که می توانید با استفاده از این رویکرد قدرتمند و مقیاس پذیر انجام دهید که برای موارد استفاده تولید آماده است، اگر بخواهید Firebase به طور خودکار با تقاضا مقیاس می شود، بنابراین مهم نیست که 10 یا 10000 کاربر بخواهند از این استفاده کنند، فقط کار خواهد کرد. .

اگر هر یک از فایل‌های خود را تغییر دهید، به سادگی برنامه خود را با استفاده از firebase deploy مانند قبل مجدداً راه‌اندازی کنید و مطمئن شوید که کش مرورگر خود را پاک کنید تا مطمئن شوید که نسخه جدید فایل‌ها را در زمان بارگذاری بعدی صفحه دریافت می‌کنید. اگر ابزارهای برنامه‌نویس را باز دارید، می‌توانید در حالی که در حال آزمایش کارها برای آسان‌تر کردن آن هستید، با انتخاب کادر انتخاب «غیرفعال کردن کش» در بالای این برگه، این مورد را در زبانه شبکه مجبور کنید:

b1e4c1bf304a4869.png

خلاصه

در این آزمایشگاه کد ما:

  1. یک مدل سفارشی TensorFlow.js را کاملاً از ابتدا برای پیش‌بینی قیمت خانه تعریف و آموزش داد.
  2. ابزار Firebase + Firebase CLI را در دستگاه توسعه خود ثبت نام کنید، پیکربندی کنید و نصب کنید.
  3. یک وب‌سایت کارآمد را راه‌اندازی و راه‌اندازی کرد که مدل آموزش‌دیده ما را از مرحله 1 بارگیری می‌کند و از آن در یک برنامه وب دنیای واقعی استفاده می‌کند که برای هر کسی، در هر کجای دنیا، در مقیاس قابل دسترسی است.

بعدش چی؟

اکنون که پایه کاری برای شروع دارید، چه ایده های خلاقانه ای می توانید برای گسترش این دیگ بخار استقرار مدل یادگیری ماشین داشته باشید؟

ما دوست داریم ببینیم شما از این با داده های خود استفاده می کنید. به صنعت یا منطقه ای که در آن زندگی یا کار می کنید فکر کنید. چگونه می توانید بر روی چنین داده هایی آموزش ببینید تا پیش بینی هایی انجام دهید که می تواند برای شما (یا دیگران) در آینده مفید باشد؟ املاک و مستغلات تنها نمونه در اینجا نیست، و ما شما را تشویق می کنیم که این را در چالش های خود نیز اعمال کنید. هک مبارک!

به خاطر داشته باشید که ما را در هر چیزی که با استفاده از #MadeWithTFJS ایجاد می کنید برچسب بزنید (برای الهام گرفتن از آنچه دیگران ساخته اند روی این پیوند کلیک کنید) تا فرصتی برای نمایش در رسانه های اجتماعی یا حتی نمایش در رویدادهای آینده TensorFlow داشته باشید! ما دوست داریم ببینیم شما چه می‌سازید و البته اگر بازخورد یا سؤالی داشتید با نویسنده این نرم‌افزار ارتباط برقرار کنیم.

کدهای TensorFlow.js بیشتر برای عمیق تر شدن

وب سایت هایی برای بررسی