- vừa được xem lúc

[ML System Design] Tổng quan về Machine Learning System Design

0 0 16

Người đăng: Đinh Trọng Huy

Theo Viblo Asia

1. Machine Learning (ML) System Design là gì?

a) Khái niệm

ML System Design là quá trình xác định giao diện, thuật toán, dữ liệu, phần cứng, hạ tầng... cho một hệ thống ML nhằm đạt được các yêu cầu nhất định.

Lấy ví dụ 1 hệ thống ML đơn giản: phần mềm chấm công bằng khuôn mặt. Bạn cần gì, ngoài 1 cái model tốt? Đầu tiên là cái server với database lưu thông tin nhân viên, đương nhiên cả khuôn mặt. Bạn lại còn cần thêm cả giao diện dễ dùng, nhân viên dễ thao tác này nọ nữa. À, model phải update liên tục, vì công ty có thể tuyển nhân viên mới nữa mà.

Yêu cầu cho hệ thống gồm tất cả các thứ trên là gì?

  • Reliable - đáng tin cậy: đương nhiên, vì nó nghĩa là đủ tốt. Nhưng đủ tốt trong thực tế và trong lý thuyết là rất khác nhau
  • Scalable - có thể mở rộng: Hệ thống phải đảm bảo vẫn hoạt động tốt khi công ty thêm nhân viên, tăng quy mô, hay phần mềm được thêm các chức năng mới
  • Maintainable - có thể bảo trì: Bảo trì là bước tốn kém nhất cả về công sức và tiền bạc khi tạo ra 1 sản phẩm, nên nếu code của hệ thống không đủ tốt, việc bảo trì sẽ tốn kém và khó khăn hơn rất nhiều
  • Adaptable - dễ thích ứng: Hệ thống cần có khả năng phản ứng tốt với các thay đổi không mong muốn từ bên ngoài.

b) Tại sao cần biết về ML System Design?

  • Trên thực tế, với tốc độ phát triển vũ bão của các mô hình Deep Learning và sự phức tạp của chúng, vấn đề thuật toán có lẽ đã trở nên dễ dàng hơn rất nhiều
  • Thay vào đó, việc làm thế nào để thuật toán đó có thể hoạt động với các phần khác trong hệ thống nhằm giải quyết bài toán thực tế đã trở nên khó khăn hơn
  • Khoảng hơn 60% lỗi xuất hiện trong các ML system đến từ các yếu tố không phải ML

Nguồn: https://www.youtube.com/watch?v=hBMHohkRgAA

2. Sự khác biệt của ML trong reseach (nghiên cứu) và production (sản phẩm thực tế)

Một hệ thống ML trong thực tế không chỉ khác trong nghiên cứu về các vấn đề Non-ML, mà ngay cả bản thân ML model được tạo ra phục vụ production cũng sẽ khác với model được tạo ra trong quá trình research.

Mục đích tạo ra model: trong nghiên cứu, điều tối quan trọng là performance, có thể thể hiện bằng accuracy, iou,... Còn trong thực tế, mục đích tạo ra model thường để phục vụ một vấn đề định ra từ trước, nên đôi khi model được đánh giá dựa trên việc đóng góp thực hiện các yêu cầu cụ thể nào đó của khách hàng.

Accuracy-Latency tradeoff: bạn có thể hiểu đó là sự đánh đổi giữa độ chính xác và độ trễ. Model càng tốt thì thường sẽ phức tạp, mà phức tạp thì có xu hướng chạy chậm hơn. Chính xác cao đương nhiên tốt, nhưng nếu model chạy chậm, khách hàng sẽ quay lưng với bạn. Model cần chạy vừa đủ tốt để đạt được sự tin tưởng của khách hàng, vừa phải đủ nhanh để không có chuyện họ bỏ đi trong khi nút loading vẫn quay.
Latency là vấn đề cần cân nhắc trong mọi sản phẩm IT, không phải chỉ ML. Bạn có thể tìm hiểu thêm về sự quan trọng của low latency tại đây. Thống kê của Google năm 2016 cho biết 53% người dùng smartphone sẽ thoát khỏi trang web nếu nó mất hơn 3s để load.

Dữ liệu: Dữ liệu trên Kaggle có thể tiêu biểu cho dữ liệu trong quá trình nghiên cứu: sạch, bất biến, và thường là dữ liệu cũ. Trong production? Hệ thống có thể thu thập dữ liệu bằng nhiều cách khác nhau, dưới nhiều định dạng khác nhau (ví dụ như cách Google thu thập dữ liệu chúng ta trên thanh tìm kiếm, drive, youtube, mua của bên thứ 3,...) vậy nên nảy sinh khá nhiều vấn đề:

  • Data lộn xộn, nhiều định dạng => Phải xử lý nhiều để có thể sử dụng
  • Data tăng lên liên tục, lẫn lộn cũ mới => Phải huấn luyện lại, update model liên tục, cân nhắc các yếu tố khác (data nên dùng mới hay cũ hay cả 2, hiện tượng Dataset Shift,...)
  • Data Biases
  • Các vấn đề liên quan đến quyền riêng tư khi sử dụng các data mới

Phụ thuộc vào hệ thống phần mềm: Bạn không thể viết một model bằng Julia trong môi trường sản phẩm sử dụng Python, Javascript đúng không? Hơn nữa, dữ liệu thường được thu thập qua các hệ thống Non-ML, và sẽ là vấn đề không nhỏ nếu ngôn ngữ viết model khác với ngôn ngữ của các hệ thống thu thập dữ liệu. Nói thế chứ hiện tại vấn đề này đã được Docker giải quyết kha khá

Giới hạn thời gian: nếu sản phẩm được yêu cầu làm trong thời gian nhất định, vậy việc chọn, xây dựng và huấn luyện model cũng chỉ được trong khoảng thời gian giới hạn

3. Thử thách về mặt kỹ thuật với các mô hình lớn

Một mô hình trong các hệ thống ML thực tế thường khá lớn, và đi kèm với đó sẽ là các vấn đề kỹ thuật cần được cân nhắc kỹ lưỡng

  • Mô hình quá lớn so với các thiết bị có bộ nhớ nhỏ
  • Model chạy tiêu tốn quá nhiều năng lượng
  • Với các real-time model, việc chạy chậm sẽ khiến nó trở nên vô dụng (ví dụ các hệ thống gợi ý từ tiếp theo - nếu nó dự đoán chậm hơn tốc độ gõ thì có tác dụng gì không?)

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 131

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 204

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 272

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 244

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 55

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 303