Near real-time features for near real-time personalization
Bài tóm tắt LinkedIn 2022 3. Quy mô lớn Độ khó: Trung bình
LinkedIn · 2022 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Pipeline feature thông thường: event Kafka được ETL vào HDFS, job Spark định kỳ tính feature rồi đẩy tới recommender. Trễ từ vài giờ tới vài ngày giữa hành động và lúc recommendation phản ánh nó.
- Mô phỏng trên model gợi ý việc làm (lấy 1 phút làm mốc): trễ 1 giờ làm ROC-AUC giảm 3,51%, 6 giờ giảm 4,27%, 24 giờ giảm 4,45%.
Thay đổi chính
- Hai ý chính: chỉ giữ hành động vài ngày gần nhất ở kho online (phần cũ hơn vẫn lấy từ pipeline batch), và tính feature lúc cần thay vì tính sẵn, vì lượng dữ liệu mỗi lần nhỏ.
- Khảo sát các team AI thấy đa số feature theo ba bước: lấy hành động của member trong một khoảng → tra thuộc tính của đối tượng (ví dụ embedding của job) → tóm tắt (trung bình, đếm theo địa điểm).
- Schema hành động chuẩn: actor, verb, object kèm thuộc tính từng phần (kiểu JsonObject để linh hoạt), timestamp.
- Samza đọc event từ Kafka, viết bằng Samza SQL để giới hạn ở lọc, join stream-table (thuộc tính lấy từ Venice), projection, nên processor luôn nhẹ. Kết quả qua Kafka vào Pinot, giữ 96 giờ, khoá chính là actor để lấy nhanh theo member. Recommender query Pinot lúc chấm điểm; thuộc tính lớn (embedding 800 chiều) thì tra kho thuộc tính sau. Feature đã tính được log vào HDFS để train đúng giá trị đã dùng.
- Kết quả: hành động vào Pinot sau 0,1–15 giây; lấy hành động dưới 50 ms ở hơn 20.000 QPS; onboard use case mới trong vài ngày. Gợi ý việc làm: job apply +0,66%, bỏ qua gợi ý −20%, WAU +0,03%; feed và typeahead cũng tăng.
- Giới hạn: feature của item dựa trên hành động của mọi member (độ hot của bài) quá đắt khi phải tính cho hàng nghìn ứng viên.
Vì sao
- Ý định ngắn hạn (vừa apply một job) mất giá trị nhanh; với member mới, đó gần như là dữ liệu duy nhất.
Bài học cho SWE
- Không cần thay pipeline batch: thêm một lớp ngắn hạn tính lúc cần để bổ sung.
- Giới hạn ngôn ngữ của stream processor (SQL lọc/join) giúp nó dễ bảo trì và dùng chung.
- Log feature tại thời điểm phục vụ để train khớp với lúc chạy.
Liên quan
- LinkedIn 2018 (cùng hướng batch → nearline) · LinkedIn 2017 · LinkedIn 2013
- Nền tảng ML (feature, training, serving, giám sát model) · Stream processing
#Near real-time features#batch feature pipeline delay#standard action schema#Samza SQL#stream-table join#Venice#Pinot 96h retention#on-demand feature computation#feature logging#recommender
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)