Predicting the real-time availability of 200 million grocery items
Bài tóm tắt Instacart 2018 2. Tăng trưởng Độ khó: Trung bình
Instacart · 2018 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Thế hệ đầu của hệ dự đoán tình trạng còn hàng. Năm năm sau Instacart thay nó bằng kiến trúc mới: Instacart 2023 và Instacart 2023.
Bối cảnh
- Hơn 100.000 shopper quét hàng triệu món mỗi ngày ở 20.000 cửa hàng (2018). Instacart không sở hữu chuỗi cung ứng; đối tác bán lẻ gửi dữ liệu tồn kho khoảng một lần mỗi ngày, trong khi hàng có thể hết trong ngày. Hàng "không tìm thấy" do hết thật (availability) hoặc do shopper không tìm ra (find-ability).
Thay đổi chính
- Bài toán phân loại: mỗi món đã đặt là một mẫu, nhãn là shopper có tìm thấy không. Model XGBoost với feature theo món (tỉ lệ tìm thấy lịch sử, thời gian từ lần không tìm thấy gần nhất), theo thời gian, và mean encoding cho các mã có cardinality rất cao (sản phẩm hàng triệu, cửa hàng hàng chục nghìn): thay mã bằng tỉ lệ tìm thấy lịch sử của nhóm đó. Feature quan trọng nhất: tỉ lệ tìm thấy của sản phẩm gốc gộp theo vùng; nó cũng giúp món ít bán.
- Nút thắt là chấm điểm, không phải train: chấm 200 triệu món mỗi 60 phút, khoảng 130 feature mỗi món. Tối ưu: tính feature phức tạp trong warehouse Snowflake thay vì Python, cache feature ít đổi, tối ưu chuyển dữ liệu từ warehouse sang máy AWS, song song hoá code chấm điểm Python, ghi điểm vào bảng Postgres nhanh hơn.
- Điểm dùng để ẩn món khó còn hàng trong search và định tuyến shopper tới cửa hàng có hàng.
Vì sao
- Dữ liệu từ đối tác quá thưa theo thời gian; tín hiệu từ shopper là nguồn duy nhất cập nhật trong ngày.
Bài học cho SWE
- Với model chấm điểm toàn bộ danh mục định kỳ, chi phí nằm ở pipeline chấm điểm (feature, chuyển dữ liệu, ghi kết quả), không ở model.
- Đẩy phép tính feature về nơi dữ liệu nằm (warehouse) trước khi tối ưu code.
Liên quan
#item availability#not found#XGBoost#mean encoding#long tail#batch scoring#Snowflake#feature caching#Postgres
Được nhắc tới trong
Công ty (1)