06

Kỹ sư ML · Bước 6/8 · 9 phút

Triển khai và giám sát model

Bạn bọc được model trong một API, đóng gói nó, và biết cần giám sát gì khi người dùng thật phụ thuộc vào nó.

Từ notebook thành dịch vụ

Notebook chỉ là bản phác thảo. Để triển khai, hãy chuyển code sang các file Python thông thường: một file chuẩn bị dữ liệu, một file huấn luyện, một file dự đoán. Lưu model đã huấn luyện ra file, kèm đúng các bước tiền xử lý. Pipeline của scikit-learn giữ cả hai đi cùng nhau, nên lúc huấn luyện và lúc phục vụ không thể lệch nhau.

Rồi đặt nó sau một API. FastAPI là lựa chọn phổ biến: vài dòng code biến hàm predict thành một endpoint web nhận JSON và trả về dự đoán. Không phải lúc nào cũng cần chạy trực tiếp. Một job chạy hằng đêm ghi điểm số vào một bảng thường đơn giản hơn và đủ dùng.

Đóng gói để chạy ở đâu cũng được

Docker gói code, file model và đúng phiên bản thư viện vào một container. Chạy được trên laptop thì cũng chạy y hệt trên server cloud. Hãy cố định phiên bản; một bản cập nhật thư viện âm thầm có thể làm thay đổi kết quả dự đoán.

MLOps là tên gọi cho các thói quen giúp việc này lặp lại được: code và dữ liệu có quản lý phiên bản, kiểm thử tự động, một pipeline huấn luyện lại và kiểm tra model trước khi thay model cũ, và ghi lại phiên bản model nào đang chạy.

Model xuống cấp. Hãy giám sát chúng.

Thế giới thay đổi sau khi bạn huấn luyện. Giá tăng, người dùng đổi thói quen, một sản phẩm mới ra mắt. Khi dữ liệu đầu vào thay đổi, đó là data drift (trôi dữ liệu). Khi mối liên hệ giữa đầu vào và đáp án đúng thay đổi, đó là concept drift. Cả hai khiến một model tốt sai dần, mà không có thông báo lỗi nào.

Vì thế hãy theo dõi ba thứ: hệ thống (tốc độ, lỗi, chi phí), đầu vào (còn giống dữ liệu huấn luyện không?) và kết quả (khi có đáp án thật, độ chính xác có giữ được không?). Đặt cảnh báo, và lên kế hoạch khi nào, bằng cách nào sẽ huấn luyện lại.

Phát hành cẩn thận

Đừng thay model một lần cho tất cả. Hãy chạy model mới ở chế độ shadow, tức nó dự đoán nhưng không ai thấy kết quả, hoặc cho nó nhận một phần nhỏ lưu lượng trước. Giữ sẵn phiên bản cũ để có thể quay lại trong vài phút.

Thử ngay

Viết API đầu tiên cho model

  1. 1.Nhờ chatbot viết code theo prompt bên dưới.
  2. 2.Chạy nó trên GitHub Codespace miễn phí hoặc trên máy bạn đã cài Python.
  3. 3.Mở trang /docs mà FastAPI tự tạo và gửi thử một dự đoán từ trình duyệt.
Hãy cho tôi một ứng dụng FastAPI tối giản, nạp model scikit-learn đã lưu bằng joblib và mở endpoint POST /predict nhận feature dạng JSON rồi trả về dự đoán. Kèm theo một script huấn luyện ngắn để lưu model, một file requirements.txt có cố định phiên bản, và một Dockerfile đơn giản. Giải thích mỗi file bằng một câu.
Độ chính xác của model giảm dần trong sáu tháng, log không có lỗi nào. Nguyên nhân khả dĩ nhất là gì?

Tự kiểm tra

Độ chính xác của model giảm dần trong sáu tháng, log không có lỗi nào. Nguyên nhân khả dĩ nhất là gì?