Skip to content

AI Engineer 面試日練 — 2026-09-02:ML System Design

2026年9月2日 1 分鐘
TL;DR ML System Design 面試考的不是你會不會畫架構圖,而是你能不能把每一層的取捨講清楚。今天聚焦四個高頻考點:feature store 如何保證 training/serving 一致性、部署策略要怎麼分層選擇並設計 rollback 觸發條件、監控要拆成 system/data/model 三層並用 PSI/KS test 抓 drift,以及線上推論的 latency 預算怎麼分配。練習題是「設計一個電商即時推薦服務」,走一遍從釐清需求、估算流量、到 feature store 與部署策略的完整設計。
目錄
  1. 今日主題
  2. 核心概念速記
    1. Feature Store 解決的是「同一個特徵,兩次算出不同答案」
    2. 部署策略要分層,不是「上線」二選一
    3. 監控要拆成三層,不能只看模型準確率
    4. Latency 預算要拆到毫秒,不能只講「要快」
  3. 今日練習題
    1. 題目
    2. 拆解思路
    3. 範例回答(面試時可以這樣講)
    4. 自我核對清單
  4. 延伸閱讀
  5. 參考資料

🌏 English version

今日主題

ML System Design 是 AI Engineer 面試裡最考驗「systems thinking」的一塊——題目通常從一句「設計一個推薦系統」開始,但面試官真正想看的是你會不會把資料怎麼進來、特徵怎麼算、模型怎麼上線、上線後怎麼知道它還在正常運作,這四件事串成一個完整、能自我修復的系統,而不是只講模型架構。

今天不重複「選 XGBoost 還是神經網路」這種模型選型的老問題,而是練面試官真正在意的骨架:feature store 怎麼解決 training-serving skew、部署要分幾個階段降低風險、監控要看哪三層指標。這種題型常出現在 onsite 的 ML infra system design 環節,通常給 45-60 分鐘。

核心概念速記

Feature Store 解決的是「同一個特徵,兩次算出不同答案」

Training-serving skew 是 ML 系統最常見也最隱蔽的故障來源:同一個特徵,離線訓練時用一種邏輯算,線上推論時用另一種邏輯算,模型收到的輸入分佈跟訓練時看到的不一樣,預測品質就悄悄崩壞而不會報錯。Feature store 的核心價值是把特徵定義集中管理,線上(Redis/DynamoDB,低延遲)跟離線(Parquet/資料倉儲,可回溯歷史)共用同一套 transformation 邏輯與 schema,面試時要能講出「我會怎麼驗證兩邊算出來的值一致」,而不是只講「我會用一個 feature store」。

部署策略要分層,不是「上線」二選一

Canary(小比例流量、監控後才擴大)、Shadow mode(新模型跑在背景、只記錄不影響線上結果)、A/B testing(不同流量段跑不同模型、用業務指標判定勝負)、Blue-green(整套環境切換、可秒級回滾)四種策略解決的問題不一樣——shadow 用來驗證新模型「跑不跑得動」而不冒業務風險,canary 用來驗證「有沒有負面影響」,A/B 用來驗證「真的比較好嗎」。面試時的加分句是講出 rollback 的觸發條件是自動化的(latency 超標、關鍵指標下滑就自動退回舊模型),而不是「人工觀察覺得不對就切回去」。

監控要拆成三層,不能只看模型準確率

Infra 層(QPS、latency、error rate、GPU/CPU 使用率)、資料層(feature availability、ingestion lag、輸入分佈 drift)、模型層(prediction distribution、線上準確率、feedback loop 延遲)是三個獨立會壞的地方,分開監控才抓得到問題出在哪一層。Drift 偵測的具體做法是拿最新輸入分佈跟訓練時的 reference 分佈做統計檢定,常用 PSI(population stability index)或 KS test 量化偏移程度,超過門檻就觸發告警或自動 retrain——講出這兩個具體檢定方法的名字,比籠統講「監控資料漂移」更有說服力。

Latency 預算要拆到毫秒,不能只講「要快」

一個 sub-100ms 的線上推論請求,面試時要能把預算拆給每一段:feature 查詢(Redis,1-5ms)、模型 inference(10-30ms,視模型大小)、網路來回(10-20ms)、序列化(5-10ms)。這個拆解能力展現的是你有沒有真的想過瓶頸在哪——通常不是模型本身慢,而是 feature fetch 或 serialization 這些「看起來不重要」的環節吃掉大半預算,優化方向也因此不同(model compilation vs. caching vs. 減少 payload)。

今日練習題

題目

「設計一個電商平台的即時商品推薦服務:使用者瀏覽或購買行為要能即時反映在推薦結果上,系統要支援千萬級月活使用者,推薦延遲要壓在 100 毫秒內,並且要符合 GDPR 對個人資料的限制。」

來源:自擬(改編自 System Design Handbook 的 ML System Design 教學範例) 難度:進階 環節:onsite system design(ML infra)

拆解思路

  1. 先釐清問題:不要急著畫架構圖,先問清楚功能性需求(是排序既有商品清單、還是生成個人化文案?新使用者的 cold start 怎麼處理?)跟非功能性需求(延遲門檻是多少?流量規模多大?precision 還是 recall 優先?GDPR 對資料保存跟刪除有什麼硬性限制?)。面試官故意把「要即時反映」「要合規」這兩個約束放進題目,就是要看你會不會主動把它們變成量化的設計輸入,而不是說完「收到」就跳過。

  2. 建立框架:用「先估算規模、再分層畫架構、再深挖高風險元件」這個順序組織回答。估算階段給出具體數字(例如千萬 MAU、每人每天 20 次推薦請求 → 換算成尖峰 QPS),讓面試官知道你的架構決策是有依據的,不是憑空選 tech stack。

  3. 深入核心:整個設計最關鍵的三個 trade-off 都藏在細節裡。第一,feature store 要同時撐起「線上低延遲讀取」跟「離線可回溯訓練」兩種完全不同的存取模式,online/offline 兩邊的 schema 跟 transformation 邏輯必須共用同一套定義,否則就會出現 training-serving skew。第二,部署新模型不能一步到位,要先 shadow mode 驗證系統穩定性,再 canary 驗證沒有負面影響,最後才 A/B 驗證業務指標,每一步都要有自動 rollback 的觸發條件。第三,GDPR 合規不是事後補的檢查清單,而是要影響存儲設計本身——使用者要求刪除資料時,系統要能追蹤這筆資料流過哪些 feature、哪些訓練快照,才刪得乾淨。

  4. 收尾:用一句話收斂全場——「這個系統的核心不是選哪個推薦演算法,而是讓 offline 訓練跟 online 服務共用同一套特徵定義,並且每次模型更新都經過 shadow → canary → A/B 三階段驗證,任何一階段指標異常都能自動退回上一個穩定版本」。這句話點出面試官真正在評分的是系統思維,不是模型準確率。

範例回答(面試時可以這樣講)

在開始畫架構之前,我想先確認幾個需求:推薦是針對既有商品排序,還是要即時生成個人化清單?新使用者沒有歷史行為時怎麼處理冷啟動?延遲門檻我假設是結帳頁面等級的 100 毫秒內,流量規模先假設千萬月活、每人每天約 20 次請求,換算下來尖峰大概落在幾千 QPS 這個量級。GDPR 的部分,我會假設使用者有權要求刪除個人資料,這代表我的 feature store 設計要能追蹤每一筆特徵的資料來源,刪除請求才能真正生效,而不是只刪主資料庫。

架構上我會分成三層:即時事件(點擊、購買)透過 Kafka 進來,經過 streaming 處理算出近即時特徵(例如近五分鐘瀏覽的商品類別),寫進 Redis 這種低延遲的 online feature store;同時批次流程把同樣的事件算成歷史特徵(例如使用者近三十天的品類偏好),存進可回溯查詢的 offline warehouse 供訓練使用。這兩條路徑共用同一套特徵定義,是避免 training-serving skew 最關鍵的一步——如果線上線下用不同邏輯算「近期購買次數」,模型收到的輸入分佈跟訓練時看到的就不一樣,預測品質會悄悄下降卻查不出原因。

部署新模型時我不會直接切流量,而是先跑 shadow mode 確認系統在真實流量下不會出錯,接著用 canary 把 5% 流量導過去看有沒有負面訊號,最後才用 A/B testing 拿轉換率這類業務指標判定是否全量上線,每一步都設自動化的 rollback 條件,例如 latency 超過門檻或錯誤率異常就自動切回舊模型。監控我會拆成三層來看:infra 層看 QPS 跟 latency,資料層看 feature availability 跟輸入分佈有沒有 drift(用 PSI 這類統計量化),模型層看預測分佈跟線上準確率有沒有隨時間下滑——這三層分開看,才不會把「資料管線壞了」誤判成「模型不準」。

自我核對清單

用這張表檢查你的回答有沒有漏掉關鍵點:

核對項目有提到?
主動釐清功能性與非功能性需求,並給出具體數字(QPS、延遲門檻)
Feature store 講出 online/offline 共用同一套 transformation 邏輯,避免 training-serving skew
部署策略分層(shadow → canary → A/B),並講出自動 rollback 觸發條件
監控拆成 infra / 資料 / 模型三層,drift 偵測講出具體統計方法(PSI/KS test)
GDPR 或資料合規影響了存儲設計本身,不是事後補的檢查清單
加分:latency 預算拆到每一段(feature fetch / inference / 網路 / 序列化)

延伸閱讀

參考資料