1. Giới thiệu
Bạn đã tạo một mô hình học máy tuỳ chỉnh bằng TensorFlow.js, nhưng giờ bạn cần lưu trữ mô hình đó ở một nơi nào đó để sử dụng trên trang web mà bạn chọn. Có nhiều lựa chọn để thực hiện việc này, nhưng hôm nay chúng ta sẽ xem việc sử dụng Lưu trữ Firebase dễ dàng như thế nào. Lưu trữ Firebase cũng có thể mang lại cho bạn một số lợi ích bổ sung như kiểm soát phiên bản, phân phát các mô hình qua một kết nối bảo mật và nhiều lợi ích khác.
Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ tạo một hệ thống hoàn chỉnh có khả năng lưu trữ và chạy một mô hình TensorFlow.js tuỳ chỉnh đã lưu cùng với các thành phần liên quan như HTML, CSS và JavaScript. Chúng ta sẽ tạo một mô hình rất đơn giản và gọn nhẹ có thể dự đoán giá trị đầu ra bằng số dựa trên một số giá trị đầu vào (ví dụ: giá của một ngôi nhà dựa trên diện tích sàn) và lưu trữ mô hình đó thông qua Lưu trữ Firebase để có thể sử dụng ở quy mô lớn.
Kiến thức bạn sẽ học được
- Cách lưu mô hình TensorFlow.js tuỳ chỉnh ở định dạng phù hợp
- Cách thiết lập tài khoản Firebase để lưu trữ
- Cách triển khai các thành phần của bạn vào Lưu trữ Firebase
- Cách triển khai các phiên bản mới của một mô hình.
Xin lưu ý: Mục tiêu của lớp học lập trình này là cách lấy một mô hình được huấn luyện tuỳ chỉnh và lưu trữ mô hình đó để triển khai, thay vì một khoá học về cách tạo kiến trúc mô hình hoàn hảo. Vì vậy, chúng ta sẽ nhanh chóng chuyển sang phần tạo mô hình học máy bằng một ví dụ đơn giản. Các nguyên tắc này sẽ giống nhau bất kể bạn tạo ra mô hình nào.
Chia sẻ những nội dung bạn tạo với chúng tôi
Nếu bạn đã tạo ra một thứ gì đó thú vị bằng ngăn xếp này, hãy cho chúng tôi biết! Chúng tôi rất mong được xem những tác phẩm của bạn.
Hãy gắn thẻ chúng tôi trên mạng xã hội bằng hashtag #MadeWithTFJS để có cơ hội xuất hiện trên blog TensorFlow hoặc thậm chí là các sự kiện trong tương lai như Show & Tell (Trình bày và chia sẻ) của chúng tôi.
2. Lưu trữ Firebase là gì?
Lưu trữ Firebase cung cấp dịch vụ lưu trữ cấp sản xuất nhanh chóng và an toàn cho ứng dụng web, nội dung tĩnh / động và các vi dịch vụ của bạn
Chỉ với một lệnh, bạn có thể nhanh chóng triển khai các ứng dụng web và phân phát nội dung đến một CDN (mạng phân phối nội dung) toàn cầu, đảm bảo nội dung của bạn có độ trễ thấp ở hầu hết mọi nơi. Bạn cũng có thể kết hợp Lưu trữ Firebase với Cloud Functions hoặc Cloud Run để tạo và lưu trữ các vi dịch vụ, nhưng điều đó nằm ngoài phạm vi của lớp học lập trình này.
Các chức năng chính của Lưu trữ Firebase
- Phân phát nội dung qua một kết nối an toàn – web hiện đại là một web an toàn. Thường thì để truy cập vào các cảm biến ở phía máy khách, trang web phải được phân phối trong một bối cảnh an toàn. SSL không cần cấu hình được tích hợp vào tính năng Lưu trữ Firebase, vì vậy, nội dung luôn được phân phối một cách an toàn cho tất cả các tệp được lưu trữ.
- Lưu trữ nội dung tĩnh và động cùng với các vi dịch vụ có hỗ trợ xác thực để chỉ những người dùng đã đăng nhập mới có thể tải / xem các tệp đó nếu muốn.
- Phân phối nội dung nhanh chóng – Mỗi tệp bạn tải lên đều được lưu vào bộ nhớ đệm trên ổ SSD tại các cạnh CDN trên toàn thế giới. Bất kể người dùng ở đâu, nội dung vẫn được phân phối nhanh chóng.
- Triển khai các phiên bản mới bằng một lệnh – Bằng cách sử dụng giao diện dòng lệnh của Firebase, bạn có thể thiết lập và chạy ứng dụng của mình trong vài giây.
- Khôi phục chỉ bằng một cú nhấp chuột – Việc triển khai nhanh rất hữu ích, nhưng khả năng huỷ bỏ các lỗi còn hữu ích hơn nữa. Lưu trữ Firebase cung cấp tính năng quản lý bản phát hành và kiểm soát phiên bản đầy đủ với khả năng khôi phục chỉ bằng một lần nhấp.
Cho dù bạn đang triển khai một trang đích đơn giản cho ứng dụng hay một Ứng dụng web tiến bộ (PWA) phức tạp, thì dịch vụ lưu trữ sẽ cung cấp cho bạn cơ sở hạ tầng, các tính năng và công cụ phù hợp để triển khai và quản lý các trang web và ứng dụng.
Theo mặc định, mọi dự án Firebase đều có các miền phụ miễn phí trên các miền web.app và firebaseapp.com. Hai trang web này phân phát cùng một nội dung và cấu hình được triển khai. Bạn cũng có thể kết nối tên miền của riêng mình với một trang web được lưu trữ trên Firebase nếu muốn.
Các bước triển khai
- Thiết lập dự án
- Cài đặt và thiết lập giao diện dòng lệnh Firebase
- Triển khai trang web của bạn
- Liên kết đến ứng dụng web Firebase để giám sát hiệu suất (không bắt buộc)
Nhưng trước khi làm được bất kỳ điều nào trong số này, chúng ta cần có một mô hình học máy và ứng dụng web để triển khai. Hãy tạo một bức ảnh!
3. Một mô hình học máy đơn giản để dự đoán giá nhà
Trong bài tập này, chúng ta sẽ tạo một Mô hình học máy rất đơn giản để dự đoán các giá trị bằng số. Chúng tôi sẽ cố gắng sử dụng công nghệ học máy để dự đoán giá trị của một ngôi nhà hư cấu dựa trên diện tích tính bằng feet vuông chỉ nhằm mục đích minh hoạ. Trên thực tế, đối với bản minh hoạ này, chúng ta sẽ chỉ cần nhân diện tích của ngôi nhà lên 1000 lần để có được giá trị dự đoán cho dữ liệu huấn luyện của mình, nhưng học máy sẽ cần tự học điều này.
Trên thực tế, bạn sẽ chọn sử dụng dữ liệu thực tế có thể có các mối quan hệ phức tạp hơn (ví dụ: có thể đối với những ngôi nhà nhỏ hơn, kích thước chỉ gấp 500 lần để ước tính giá trị bằng đô la, nhưng sau một ngưỡng nhất định, kích thước sẽ tăng dần lên 1000 lần, v.v.) và bạn có thể cần một mô hình nâng cao hơn để tìm hiểu cách tốt nhất để dự đoán những giá trị đó.
Mô hình mà chúng ta sẽ tạo hôm nay (hồi quy tuyến tính) có thể được dùng để dự đoán nhiều thứ khác nếu có đủ dữ liệu thực tế và rất dễ bắt đầu với trường hợp sử dụng giả định ở trên. Tuy nhiên, trọng tâm của chúng ta hôm nay là tìm hiểu cách lưu và triển khai một mô hình so với việc thiết kế và tối ưu hoá một mô hình cho một trường hợp sử dụng nhất định. Hãy cùng bắt đầu nhé!
Dữ liệu huấn luyện và kiểm thử
Tất cả các mô hình học máy đều bắt đầu bằng việc thu thập một số dữ liệu huấn luyện mẫu mà chúng ta có thể dùng để dạy mô hình dự đoán các giá trị trong tương lai. Thông thường, bạn có thể lấy dữ liệu như vậy từ cơ sở dữ liệu, thư mục tệp, CSV hoặc nhiều nguồn khác, nhưng ở đây, chúng ta sẽ trực tiếp mã hoá cứng 20 ví dụ dưới dạng một mảng trong JavaScript như minh hoạ bên dưới. Bạn nên sao chép mã này trong một môi trường mà bạn hài lòng khi viết mã, chẳng hạn như Glitch.com hoặc trình chỉnh sửa văn bản của riêng bạn trên máy tính nếu có thể chạy một máy chủ trên 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];
Như bạn có thể thấy, đối với mỗi phần dữ liệu, chúng ta có một giá trị câu trả lời tương ứng. Đây là giá trị mà chúng ta sẽ cố gắng dự đoán trong tương lai (bạn có thể hình dung đây là các giá trị x và y trên một biểu đồ 2D đơn giản).
Vì vậy, đối với giá trị 800,chúng ta muốn tạo ra một câu trả lời ước tính là 800.000 USD. Đối với giá trị 900,chúng ta sẽ xuất ra 900.000 USD, v.v. Về cơ bản, số này được nhân với 1.000. Tuy nhiên, mô hình học máy không biết về mối quan hệ đơn giản này là 1000 * N và mô hình phải tự học từ những ví dụ mà chúng ta cung cấp.
Lưu ý rằng chúng ta cũng có một số dữ liệu kiểm thử hoàn toàn tách biệt với dữ liệu huấn luyện. Điều này cho phép chúng tôi đánh giá mô hình đã được huấn luyện để xem mô hình hoạt động hiệu quả như thế nào trên dữ liệu mà mô hình chưa từng thấy trước đây.
Chúng ta sẽ tải tập lệnh này cùng với thư viện TensorFlow.js bằng cách sử dụng HTML sau:
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>
Huấn luyện mô hình
Tiếp theo, bạn cần huấn luyện mô hình bằng cách thêm mã bên dưới vào mã JS hiện có ở trên vào cuối tệp.
Chúng tôi đã thêm các nhận xét cho những người tò mò, nhưng như đã đề cập, lớp học lập trình này chủ yếu là về việc lấy một mô hình đã lưu và lưu trữ mô hình đó. Có các lớp học lập trình khác được liên kết ở cuối nếu bạn muốn tìm hiểu chi tiết hơn về cách tạo mô hình. Hiện tại, bạn có thể sao chép và dán mã vào dự án của mình.
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();
}
Bằng cách sử dụng mã ở trên, chúng ta có thể huấn luyện một mô hình có khả năng dự đoán giá trị đầu ra dựa trên giá trị đầu vào. Khi chạy đoạn mã trên,tôi nhận được dự đoán là 768.073 cho giá trị đầu vào 768. Giá trị này được in vào bảng điều khiển dành cho nhà phát triển của trình duyệt (nhấn F12 để mở bảng điều khiển đó nếu bạn chưa mở). Đây là một mức ước tính khá chính xác về giá nhà, vì chúng tôi đã đưa ra các ví dụ cao hơn 1.000 lần so với dữ liệu đầu vào. Lưu ý: Giá trị dự đoán của bạn có thể khác một chút và điều này là bình thường.
Nếu hài lòng với hiệu suất này, tất cả những gì chúng ta cần làm bây giờ là lưu mô hình này vào ổ đĩa để có thể tải mô hình lên Lưu trữ Firebase!
Lưu mô hình
Việc thêm mã bên dưới vào cuối hàm đánh giá (sau model.predict) ở trên cho phép chúng ta xuất mô hình kết quả sau khi quá trình huấn luyện hoàn tất ngay từ trình duyệt web và lưu vào ổ đĩa để sau đó chúng ta có thể lưu trữ ở đâu đó và sử dụng trong tương lai mà không cần phải huấn luyện lại mỗi khi tải trang.
model.js
await model.save('downloads://my-model');
Nếu bạn truy cập vào train.html và chạy trang này, trang sẽ huấn luyện mô hình (có thể mất vài giây) rồi nhắc bạn tải mô hình đã huấn luyện xuống sau khi hoàn tất.
4. Thiết lập Firebase
Đăng nhập vào Firebase rồi tạo một dự án
Nếu bạn mới sử dụng Firebase, bạn có thể dễ dàng đăng ký bằng Tài khoản Google của mình. Bạn chỉ cần truy cập vào https://firebase.google.com/ rồi đăng nhập bằng Tài khoản Google thông thường mà bạn muốn sử dụng. Sau khi được chuyển hướng đến trang chủ, hãy nhấp vào "truy cập vào bảng điều khiển" ở trên cùng bên phải của trang:

Sau khi được chuyển hướng đến bảng điều khiển, bạn sẽ thấy một trang đích có dạng như sau:

Chỉ cần nhấp vào Thêm dự án như minh hoạ để tạo một dự án Firebase mới, đặt tên riêng cho dự án, chấp nhận các điều khoản rồi nhấp vào Tiếp tục.
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn thêm số liệu phân tích vào dự án của mình hay không. Nếu bạn muốn có quyền truy cập vào những số liệu phân tích như vậy, hãy bật lựa chọn này rồi nhấp vào Tiếp tục như minh hoạ:

Nếu mọi thứ diễn ra suôn sẻ, bạn sẽ thấy một trang dự án đã sẵn sàng như hình dưới đây:

Thật tuyệt vời! Chúng tôi có một dự án. Nhấp vào tiếp tục để chuyển đến bảng điều khiển của dự án mới tạo. Giữ trang này mở để sử dụng sau, nhưng hiện tại chúng ta phải cài đặt một số công cụ.
Cài đặt và kết nối CLI
Firebase có sẵn dưới dạng một gói Node NPM mà bạn có thể cài đặt và sử dụng thông qua giao diện dòng lệnh (CLI). Nhờ đó, bạn có thể dễ dàng triển khai các tệp và thư mục cục bộ của mình lên Lưu trữ Firebase. Trong hướng dẫn hôm nay, chúng ta sẽ sử dụng môi trường Linux. Tuy nhiên, nếu có Windows hoặc Mac, bạn có thể làm theo hướng dẫn tại đây để thiết lập công cụ CLI trên thiết bị của mình.
Tuy nhiên, trên Linux, trước tiên, chúng ta sẽ cài đặt NPM và Node.js nếu chưa có (hãy làm theo các hướng dẫn này nếu sử dụng các môi trường khác) bằng cách sử dụng 3 lệnh sau trong cửa sổ thiết bị đầu cuối:
Thiết bị đầu cuối dòng lệnh:
sudo apt update
Thiết bị đầu cuối dòng lệnh:
sudo apt install nodejs
Thiết bị đầu cuối dòng lệnh:
sudo apt install npm
Giờ đây, khi đã cài đặt Node.js và NPM, bạn chỉ cần chạy lệnh sau trong cửa sổ dòng lệnh để cài đặt công cụ dòng lệnh Firebase:
Thiết bị đầu cuối dòng lệnh:
sudo npm install -g firebase-tools
Tuyệt vời! Giờ đây, chúng ta đã sẵn sàng kết nối dự án Firebase với hệ thống của mình để có thể đẩy tệp vào dự án đó và làm nhiều việc khác.
Đăng nhập vào Firebase
Đăng nhập vào Firebase bằng Tài khoản Google của bạn bằng cách chạy lệnh sau:
Thiết bị đầu cuối dòng lệnh:
firebase login
Bạn sẽ được yêu cầu cấp quyền truy cập vào Tài khoản Google Firebase của mình như hình dưới đây:

Cho phép thao tác này và cuối cùng bạn sẽ thấy các công cụ dòng lệnh được kết nối thành công với tài khoản Firebase của mình:

Đóng cửa sổ này và quay lại cửa sổ dòng lệnh mà bạn đang nhập. Giờ đây, cửa sổ này sẽ sẵn sàng chấp nhận các lệnh mới như minh hoạ (chúng tôi đã ẩn mọi thông tin riêng tư trong ảnh chụp màn hình):

Xin chúc mừng! Giờ đây, chúng ta đã sẵn sàng chuyển các tệp từ máy cục bộ sang dự án đã tạo.
Khởi chạy dự án để triển khai lên Lưu trữ Firebase
Để kết nối thư mục cục bộ với dự án Firebase, hãy chạy lệnh sau từ gốc của thư mục dự án cục bộ (thư mục mà bạn muốn dùng để tải tệp lên khi triển khai).
Thiết bị đầu cuối dòng lệnh:
firebase init
Sau khi thực thi lệnh này, bạn chỉ cần làm theo hướng dẫn trong thiết bị đầu cuối để hoàn tất quá trình thiết lập như minh hoạ bên dưới:

Tại đây, bạn chỉ cần chọn Hosting using (Lưu trữ bằng) bằng cách nhấn mũi tên xuống trên bàn phím, sau đó nhấn phím cách để chọn rồi nhấn Enter để xác nhận.
Bây giờ, chúng ta có thể chọn dự án hiện có mà chúng ta đã tạo trước đó để sử dụng:

Nhấn phím Enter vào "use an existing project" (sử dụng một dự án hiện có), rồi chọn dự án đó bằng phím mũi tên xuống như minh hoạ bên dưới:

Cuối cùng, hãy nhấn Enter để sử dụng và chấp nhận các giá trị mặc định trên màn hình cuối cùng xuất hiện, đồng thời nói "Không" để định cấu hình dưới dạng ứng dụng trang đơn:

Điều này sẽ cho phép bạn lưu trữ nhiều trang HTML nếu muốn.
Giờ đây, quá trình khởi tạo đã hoàn tất, bạn sẽ thấy một tệp firebase.json và một thư mục "public" đã được tạo trong thư mục mà chúng ta đã thực thi các lệnh ở trên.

Bây giờ, chúng ta chỉ cần di chuyển các tệp muốn triển khai vào thư mục công khai mà chúng ta đã tạo là có thể triển khai! Hãy thực hiện ngay.
5. Tạo trang web TensorFlow.js
Đang tải mô hình đã lưu
Trước tiên, hãy đảm bảo rằng chúng ta sao chép mô hình Học máy mà chúng ta đã lưu trước đó trong lớp học lập trình vào thư mục công khai mà chúng ta vừa tạo bằng Firebase. Chỉ cần kéo và thả các tệp đã lưu vào thư mục này như minh hoạ:

Bạn cũng sẽ thấy Firebase đã tạo các tệp index.html và 404.html cho chúng ta. Hãy tiếp tục chỉnh sửa index.html bằng trình chỉnh sửa văn bản mà bạn yêu thích trên máy tính để có thể thêm mã tuỳ chỉnh của riêng mình như minh hoạ:
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>
Trong mã mới cho index.html ở trên, chúng ta chỉ định một biểu định kiểu để có thể thêm kiểu vào trang sau này nếu muốn, đồng thời chỉ định script.js để lưu trữ mã mà chúng ta cần viết để sử dụng mô hình đã lưu TensorFlow.js.
Bây giờ, hãy tạo các tệp đó và điền nội dung như sau để chúng làm được việc gì đó hữu ích:
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();
Nếu đã làm theo đúng các bước, thì giờ đây, bạn sẽ thấy các tệp đã chỉnh sửa sau đây trong thư mục công khai mà chúng ta đã tạo:

Giờ đây, chúng ta chỉ cần triển khai các tệp để có thể kiểm tra xem chúng có hoạt động hay không!
6. Triển khai mô hình và trang web
Phát trực tiếp
Quay lại cửa sổ dòng lệnh mà bạn đã mở trong thư mục dự án firebase trên máy cục bộ (đây là thư mục chứa thư mục "public" ở trên cùng với các tệp firebase init).
Bạn chỉ cần nhập nội dung sau để triển khai các tệp trong thư mục công khai:
Thiết bị đầu cuối dòng lệnh:
firebase deploy
Hãy để lệnh trên thiết bị đầu cuối hoàn tất. Sau đó, bạn sẽ có một bản phát hành hoàn chỉnh thành công cùng với URL mà bạn có thể sử dụng:

Trong ví dụ ở trên, bạn có thể thấy URL cuối cùng để xem quá trình triển khai của chúng tôi là:
https://tensorflow-js-demo.web.app (nhưng URL của bạn sẽ là tên của dự án mà bạn đã tạo).
Mở URL này trong trình duyệt web để kiểm tra xem URL có hoạt động hay không. Nếu thành công, URL sẽ in nội dung tương tự như sau vào bảng điều khiển dành cho nhà phát triển của trang mà bạn mở (nhấn F12 để mở bảng điều khiển dành cho nhà phát triển).

Như bạn có thể thấy, trang này tải trên miền đã triển khai và chúng ta có thể thấy chính xác dự đoán của mô hình cho 1337 sqft, tức là $1.336.999,25. Đây thực sự là một mức ước tính rất tốt vì chúng ta đã dự kiến mức này sẽ gấp 1000 lần sqft. Tất nhiên, chúng ta có thể đưa ra bao nhiêu dự đoán tuỳ thích nếu tạo một giao diện người dùng đẹp để gọi mô hình. Tất cả những điều này sẽ chạy hoàn toàn bằng JavaScript, giúp các cụm từ tìm kiếm của bạn luôn riêng tư và an toàn.
Giờ đây, khi mô hình của bạn đã được triển khai và lưu trữ, bạn có thể chia sẻ trang web này với bất kỳ ai trên thế giới và họ sẽ có thể sử dụng ứng dụng của bạn trên máy của họ. Rõ ràng là bạn có thể muốn thêm một giao diện người dùng tốt hơn và làm cho giao diện đó trông đẹp mắt, nhưng điều đó nằm ngoài phạm vi của hướng dẫn này. Không có giới hạn về số lượng ứng dụng web mà bạn có thể lưu trữ theo cách này nhờ công nghệ học máy. Các ứng dụng này có thể hoạt động chỉ bằng một cú nhấp chuột mà không cần cài đặt. Chúng tôi khuyến khích bạn nghĩ đến những tình huống khác có thể hưởng lợi từ một mô hình học máy trong trình duyệt.
Theo dõi mức sử dụng
Ngoài mọi số liệu phân tích của Google mà bạn có thể thêm vào mã trang web, Firebase cũng cung cấp số liệu thống kê về mức sử dụng và phiên bản thông qua bảng điều khiển cho dự án của bạn. Sau khi triển khai, bạn sẽ thấy nội dung như sau. Bạn có thể kiểm tra nội dung này bất cứ lúc nào nếu cần:


Như bạn thấy, theo mặc định, ở cấp miễn phí, bạn sẽ nhận được 10 GB băng thông mỗi tháng cho các tệp được lưu trữ. Nếu trang web của bạn phổ biến hơn, bạn có thể cần thêm một tài khoản thanh toán để sử dụng nhiều hơn mức này trong một tháng nhất định. Bạn có thể xem các gói Firebase cho các dự án lớn hơn tại đây. Tuy nhiên, hầu hết người dùng thông thường cho các nguyên mẫu có thể sẽ không vượt quá cấp miễn phí nếu mô hình của bạn nhỏ và mức sử dụng thấp. Vì vậy, đây là một cách tuyệt vời để kiểm tra và xem liệu nó có đáp ứng nhu cầu của bạn hay không trước khi bạn cam kết sử dụng gói trả phí khi phát triển doanh nghiệp hoặc ý tưởng của mình.
7. Xin chúc mừng
Chúc mừng bạn đã thực hiện những bước đầu tiên trong việc sử dụng TensorFlow.js với Firebase để xây dựng và triển khai một mô hình học máy tuỳ chỉnh, nhờ đó bạn có thể chia sẻ mô hình này với mọi người. Hãy tưởng tượng tất cả những điều khác mà bạn có thể làm bằng cách sử dụng phương pháp mạnh mẽ và có khả năng mở rộng này. Phương pháp này sẵn sàng cho các trường hợp sử dụng trong quá trình sản xuất nếu bạn muốn, vì Firebase tự động mở rộng quy mô theo nhu cầu, vì vậy,dù có 10 hay 10.000 người dùng muốn sử dụng, thì phương pháp này vẫn sẽ hoạt động.
Nếu bạn thay đổi bất kỳ tệp nào, chỉ cần triển khai lại ứng dụng bằng firebase deploy như trước đây và nhớ xoá bộ nhớ đệm của trình duyệt để đảm bảo bạn nhận được phiên bản mới của các tệp khi tải trang vào lần tiếp theo. Nếu đang mở công cụ cho nhà phát triển, bạn có thể buộc thực hiện việc này trong thẻ mạng trong khi kiểm thử để dễ dàng hơn bằng cách chọn hộp đánh dấu "vô hiệu hoá bộ nhớ đệm" ở gần đầu thẻ này:

Tóm tắt
Trong lớp học lập trình này, chúng ta sẽ:
- Xác định và huấn luyện một mô hình TensorFlow.js tuỳ chỉnh hoàn toàn từ đầu để dự đoán giá nhà.
- Đã đăng ký, định cấu hình và cài đặt Firebase cùng các công cụ Firebase CLI trên máy phát triển.
- Triển khai và ra mắt một trang web hoạt động, tải mô hình đã huấn luyện của chúng tôi từ bước 1 và sử dụng mô hình đó trong một ứng dụng web thực tế mà mọi người có thể truy cập ở bất kỳ đâu trên thế giới, ở quy mô lớn.
Tiếp theo là gì?
Giờ đây, khi đã có một cơ sở hoạt động để bắt đầu, bạn có thể nghĩ ra những ý tưởng sáng tạo nào để mở rộng mẫu triển khai mô hình học máy này?
Chúng tôi rất mong bạn sử dụng công cụ này với dữ liệu của riêng mình. Hãy nghĩ về ngành hoặc lĩnh vực mà bạn đang sinh sống hoặc làm việc. Bạn có thể huấn luyện dựa trên dữ liệu đó như thế nào để đưa ra những dự đoán hữu ích cho bạn (hoặc người khác) trong tương lai? Bất động sản không phải là ví dụ duy nhất ở đây, và bạn nên áp dụng điều này cho những thách thức của riêng mình. Chúc bạn có những trải nghiệm thú vị!
Đừng quên gắn thẻ chúng tôi vào mọi nội dung bạn tạo bằng #MadeWithTFJS (hãy nhấp vào đường liên kết này để xem những nội dung mà người khác đã tạo) để có cơ hội xuất hiện trên mạng xã hội hoặc thậm chí được giới thiệu tại các sự kiện TensorFlow trong tương lai! Chúng tôi rất mong được xem những gì bạn tạo ra và tất nhiên, hãy liên hệ với tác giả của lớp học lập trình này nếu bạn có ý kiến phản hồi hoặc câu hỏi.
Các lớp học lập trình khác về TensorFlow.js để tìm hiểu sâu hơn
- Viết một mạng nơ-ron từ đầu trong TensorFlow.js
- Nhận dạng âm thanh bằng cách sử dụng phương pháp học chuyển giao trong TensorFlow.js
- Phân loại hình ảnh tuỳ chỉnh bằng cách sử dụng phương pháp học chuyển giao trong TensorFlow.js