Maintaining Machine Learning Model Accuracy Through Monitoring
Bài tóm tắt DoorDash 2021 3. Quy mô lớn Độ khó: Trung bình
DoorDash · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Model của DoorDash ước thời gian nấu, thời gian giao, quyết định giao đơn nào cho Dasher. Theo DoorDash, model bắt đầu xuống cấp ngay khi lên production (model drift) vì dữ liệu đổi: thêm khách, thêm sản phẩm, hay sự kiện lớn như COVID-19. Đã có lần model lỗi thời dự đoán sai mà mất lâu mới phát hiện vì không có cách giám sát.
- Prediction service Sibyl đã ghi log mọi dự đoán (kết quả, ID, giá trị feature, model) vào data warehouse: đủ để đào sâu một ca, không đủ để thấy bức tranh chung.
Thay đổi chính
- Hai hướng được cân nhắc: "unit test" cho dữ liệu (người làm model tự khai báo kỳ vọng, như thời gian giao không quá một giờ; kết quả qua/không qua; phải tự đăng ký; giả định dữ liệu train khớp production) và "monitoring" (sinh metric tự động, xem xu hướng; không giả định khớp). Khảo sát nội bộ cho thấy data scientist muốn thấy xu hướng phân phối, muốn giải pháp nền tảng, và không tin dữ liệu production khớp dữ liệu train ngay từ ngày đầu, nên unit test sẽ báo giả ngay lúc launch. Chọn monitoring.
- Dùng lại công cụ của đội Observability: template SQL (avg, stddev, min, max, percentile P5–P95) chạy trên prediction log trong warehouse theo cấu hình YAML, mỗi giờ và mỗi ngày, kết quả phát thành metric Prometheus, xem trên Grafana, alert khai báo bằng PromQL trong repo Terraform sẵn có, gửi tới Slack hoặc PagerDuty của team.
- Thêm trường
default_values_usedvào log: Sibyl dùng giá trị mặc định khi thiếu feature (ví dụ thời gian nấu trung bình khi không biết của nhà hàng đó); tỉ lệ dự đoán dùng giá trị mặc định là chỉ báo sớm của độ phủ feature thấp, điều mà data scientist lo nhất. - Log có
predictor_nameánh xạ tới model mặc định và các shadow model: shadow cũng chấm và được ghi log, đúng kỳ vọng thì được nâng thành mặc định. - Bản thứ hai, sau phản hồi: bản đầu cho tự chọn metric cho từng feature, nhưng thành bước onboarding; bản hai giám sát mọi model, mọi feature, mọi metric không cần đăng ký. Tổng hợp theo giờ hữu ích hơn theo ngày (đỉnh trưa và tối), nên bỏ theo ngày và dựng lại trên pipeline real-time. Thêm metric đánh giá tự chọn (sai số so với giá trị thật, nối theo prediction ID với bảng có giá trị thật), khó ở chỗ dữ liệu bị kiểm duyệt (censored) hoặc nhãn đến muộn hàng tuần (gian lận chờ ngân hàng điều tra).
- Đã onboard Logistics, Fraud, Supply and Demand, ETA ở bản đầu.
Vì sao
- Theo DoorDash, giám sát mặc định cho mọi model, bằng công cụ mọi người đã biết, mở rộng được theo số model và số người dùng mà không cần đội nền tảng giúp từng ca.
Bài học cho SWE
- Tín hiệu tốt nhất thường phải được ghi ra từ chỗ ra quyết định (đã dùng giá trị mặc định), vì lúc tổng hợp sau đó không còn biết.
- Giám sát cần đăng ký thì sẽ có phần không được giám sát; mặc định phủ hết rồi cho tinh chỉnh.
- Chọn độ phân giải theo nhịp thật của tải (giờ chứ không phải ngày khi có đỉnh bữa ăn).
- Nhãn đến muộn thì metric chất lượng cũng đến muộn; cần chỉ báo dẫn trước như phân phối input/output.
Liên quan
- Nền tảng ML (feature, training, serving, giám sát model) · Observability và monitoring
- Cùng công ty: DoorDash 2022 · DoorDash 2022
- Cùng bài toán: Nubank 2022 · PayPal 2021
#Model drift#model monitoring#Sibyl#prediction logs#default values used#Prometheus#Grafana#Terraform alerts#shadow model#evaluation metrics#hourly aggregation
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)