Skip to content

Tổng quan MLOps

Sculley, et al. 2015. Hidden technical debt in machine learning systems. Proceedings of the 28th International Conference on Neural Information Processing Systems, Volume 2 (NIPS 2015)

Giới thiệu

Trong các dự án Machine Learning (ML) thực tế không chỉ nhằm mục đích nghiên cứu phát triển, mà còn hướng đến đích cuối là nhanh chóng triển khai hệ thống ML ra thực tiễn (production). Ở thời điểm hiện tại, có nhiều thách thức mà các kĩ sư gặp phải để tự động hoá các quy trình trong quá trình phát triển và triển khai hệ thống ML. MLOps ra đời như một thuật ngữ để mô tả các vấn đề và hướng tiếp cận để giải quyết các vấn đề đó trong một dự án phát triển và triển khai ML.

Trong bài này, dựa trên kiến thức từ bài báo Machine Learning Operations (MLOps): Overview, Definition, and Architecture, chúng ta sẽ tìm hiểu sơ lược về lý thuyết, các nguyên tắc (principles) và quy trình (workflows) điển hình trong MLOps.

Warning

Khái niệm về MLOps và các lý thuyết liên quan được nhiều nguồn khác nhau định nghĩa khác nhau. Chúng ta sẽ duy trì sự cởi mở về sự khác nhau giữa các nguồn tài liệu này.

Định nghĩa

Theo bài báo trên, định nghĩa về MLOps có thể được hiểu và tóm gọn lại vào các ý sau:

  • MLOps là một mô hình, bao gồm các cách thực thi tốt nhất (best practices), khái niệm, văn hoá làm việc, trong quá trình phát triển, triển khai và theo dõi một hệ thống ML.
  • MLOps gồm các kĩ thuật hội tụ bởi 3 mảng: machine learning, software engineering (đặc biệt là DevOps) và data engineering.
  • MLOps tạo điều kiện thuật lợi cho quá trình phát triển và triển khai các hệ thống ML ra production hiệu quả hơn, thông qua các nguyên tắc mà chúng ta sẽ xem xét ngay sau đây.

Nguyên Tắc (Principles)

Photo by Austin Distel on Unsplash

Nguyên tắc được xem như là một phần của best practices hay nói cách khác đó là sự hướng dẫn, gợi ý cho các quyết định được đưa ra trong quá trình phát triển hệ thống ML. Các nguyên tắc (principles) trong MLOps bao gồm:

1. Tự động hoá trong tích hợp và triển khai (Continuous Integration/Continuous Delivery - CI/CD automation)

Nguyên tắc này đảm bảo việc tích hợp và triển khai code diễn ra tự động.

2. Hợp phối quy trinh (Workflow orchestration)

Trong quá trình phát triển hệ thống ML, có nhiều luồng (pipeline) cần được chạy vào những thời điểm nhất định, với các bước trong luồng phụ thuộc lẫn nhau. Ngoài ra, thư viện, môi trường chạy cũng khác nhau. Nguyên tắc này đảm bảo việc tự động hoá điều phối các bước trong một luồng chạy đúng thứ tự và thời gian được chỉ định.

3. Khả năng được tái lập lại (Reproducibility)

Khả năng tái lập lại (reproduce) một kết quả hay một lần thử nghiệm là một yêu cầu thường thấy khi phát triển một hệ thống ML. Yêu cầu này đảm bảo việc chạy suy diễn mô hình (model inference) ở production ổn định và debug quá trình phát triển model hiệu quả hơn.

4. Quản lý phiên bản mã nguồn, dữ liệu và mô hình (Versioning code, data, model)

Nguyên tắc này đảm bảo mã nguồn (code), dữ liệu (data) và mô hình (model) được quản lý theo các phiên bản (versions). Điều này làm thuận tiện cho việc phát triển, kiểm tra phiên bản model được huấn luyện (train) với phiên bản data nào và sử dụng code ở phiên bản nào để train.

5. Hợp tác trong phát triển (Collaboration)

Trong một dự án ML, nhiều kĩ sư với chuyên môn khác nhau cùng tham gia vào phát triển hệ thống. Nguyên tắc này đảm bảo việc thiết lập một bộ các quy tắc, công cụ và văn hoá làm việc để quá trình cộng tác giữa các cá nhân, ở các vai trò, trách nhiệm khác nhau, diễn ra hiệu quả.

6. Huấn luyện và đánh giá ML liên tục (Continuous ML training & evaluation)

Ở môi trường production, việc dữ liệu thay đổi liên tục khiến hiệu năng của mô hình giảm nhanh chóng. Nguyên tắc này đảm bảo việc xây dựng một luồng để huấn luyện và đánh giá mô hình một cách tự động định kì hoặc ngay khi cần thiết.

7. Theo dấu metadata trong ML (ML metadata tracking)

Trong một hệ thống ML, các cấu hình hay data đầu vào/đầu ra được yêu cầu cụ thể, ở mỗi bước của một luồng. Nguyên tắc này được đặt ra nhằm theo dõi và ghi lại các đầu vào và đầu ra đó, kèm theo thông tin về những lần chạy của các luồng, ví dụ như:

  • Ngày, tháng, thời gian chạy
  • Phiên bản của data đang chạy
  • Hyperparameter dùng để train model
  • Nơi lưu trữ model sau khi train xong
  • v.v.

8. Theo dõi liên tục (Continuous monitoring)

Nguyên tắc này đảm bảo việc theo dõi liên tục các thông số liên quan tới dữ liệu, mô hình, hạ tầng (infrastructure), để phát hiện và giải quyết các lỗi kịp thời. Một vài thông số điển hình bao gồm:

  • Các tính chất thống kê của data ở production
  • Model performance
  • Lượng request được gửi đến server
  • Thời gian xử lý một request
  • v.v.

9. Vòng lặp ý kiến phản hồi (Feedback loops)

Khi phát triển một hệ thống ML, sự phản hồi từ phần đánh giá ngược về phần phát triển thường xuyên xảy ra, ví dụ:

  • Phản hồi từ quá trình thử nghiệm data và model ngược về quá trình xử lý dữ liệu thô (raw data)
  • Phản hồi từ quá trình đánh giá model performance ở production ngược về quá trình thử nghiệm model
  • v.v.

Xuyên suốt khoá học, các nguyên tắc này sẽ được ngầm hiểu và sử dụng trong quá trình phát triển hệ thống. Để biết thêm chi tiết, bạn có thể đọc kĩ hơn ở bài báo trên.

Các thành phần của MLOps (MLOps Components)

Photo by Jorge Ramirez on Unsplash

Các thành phần trong MLOps bao gồm các cấu phần trong một hệ thống ML. Các thành phần được liệt kê như sau.

  1. CI/CD component
  2. Source code repository
  3. Workflow orchestration
  4. Feature store
  5. Model training infrastructure
  6. Model registry
  7. ML metadata store
  8. Model serving component
  9. Monitoring component

Tên các components đã giải thích ý nghĩa và công việc của các components đó, đồng thời chúng cũng thực hiện nhiệm vụ của một hoặc nhiều principle ở phần trước, nên chúng ta sẽ không đề cập chi tiết ở đây. Để hiểu rõ hơn về mối quan hệ của các components với principles trong MLOps, bạn có thể đọc kĩ hơn ở bài báo trên.

Các workflows

Trong phần này, chúng ta sẽ tìm hiểu về các workflows điển hình trong quá trình phát triển một hệ thống ML. Các workflows được mô tả ở bảng dưới đây.

# Workflow Mô tả
1 Phân tích vấn đề Phân tích vấn đề kinh doanh, thiết kế hệ thống phần mềm, quyết định giải pháp về công nghệ sẽ dùng, định nghĩa vấn đề ML cần giải quyết, tìm kiếm data có thể sử dụng, thu thập data và phân tích data
2 Định nghĩa quy luật biến đổi data Định nghĩa các quy luật để biến đổi data thành dạng có thể sử dụng được để thử nghiệm
3 Xây dựng data pipeline Quy luật biến đổi data sẽ được sử dụng để xây dựng data pipeline
4 Thử nghiệm model Thử nghiệm data và model, train model tốt nhất
5 Tự động hoá ML pipeline Code từ quá trình thử nghiệm data và model sẽ được tự động vào ML pipeline. Model sau khi train xong sẽ được triển khai tự động lên Model serving component và tích hợp với Monitoring component

Các workflows trên không phải là thứ tự chính xác về các công việc khi xây dựng một hệ thống ML. Hình dưới đây là một ví dụ về thứ tự trong thực tế.

flowchart TD
    n1[Khởi động dự án] --> n2[Định nghĩa vấn đề] --> n3[POC 1] --> n4[POC 2] --> n5[Xây dựng các pipelines] --> n6[Tự động hoá các pipelines] --> n7[Production]
    n3 --Định nghĩa lại<br>vấn đề--> n2
    n4 --Cập nhật cách<br>biến đổi data--> n2
    n7 --Cập nhật cách<br>train model--> n2

Đầu tiên, chúng ta cần định nghĩa và phân tích vấn đề kinh doanh để hiểu rõ yêu cầu về các chức năng của hệ thống ML. Sau đó, dự án Proof Of Concept (POC) sẽ được thực hiện để chứng minh rằng giải pháp đề ra là khả thi, trước khi bắt tay vào xây dựng chi tiết các chức năng phức tạp.

Có thể có nhiều dự án POC ở các mức độ khác nhau. Trong quá trình thực hiện dự án POC, các data engineer, software engineer, ML engineer hay MLOps engineer cũng thực hiện song song việc xây dựng data pipeline, training pipeline, model serving component, monitoring component và CI/CD cho tất cả pipeline, components đó. Dựa trên các bước xây dựng một hệ thống ML trong thực tế, khoá học này sẽ bao gồm các bài học lần lượt như sau:

  1. Phân tích vấn đề
  2. POC
  3. Data pipeline
  4. Training pipeline
  5. Model serving
  6. Monitoring
  7. CI/CD

Tổng kết

Trong bài này, chúng ta đã tìm hiểu khá nhiều vấn đề cũng như việc đưa ra được phương pháp giải quyết dựa trên các quy tắc (principles), thành phần (components), quy trình (workflows) được định nghĩa trong MLOps. Tuy nhiên, MLOps vẫn còn là một mảng khá mới, còn tồn tại khá nhiều thử thách dành cho các kĩ sư. Hy vọng rằng khoá học MLOps Crash Course sẽ là một bước nền tảng giúp cho cộng đồng AI/ML tại Việt Nam phát triển mạnh mẽ, góp phần vào sự phát triển chung của AI/ML trên thế giới.

Trong bài tiếp theo, chúng ta sẽ bắt đầu các bước đầu tiên khi xây dựng một dự án ML, đó là bước Phân tích vấn đề.