Rocket Money x Hugging Face: 在生產環境中擴展波動的 ML 模型
Rocket Money 從舊版正則表達式(regex)系統轉移到託管在 Hugging Face Inference API 的 transformer 架構機器學習模型,使應用能夠擴展至每月超過十億筆交易,同時提升用戶留存率。
用 Transformer 模型取代舊版 regex
Rocket Money 使用交易處理管道來對銀行交易進行分類和 categorise,這對於識別週期性模式和偵測用於成本談判的商家至關重要。公司最初依賴基於 regex 的正規化工具和一個複雜的決策表來將字串映射到品牌。隨著訂閱經濟增長和產品範圍擴大,該系統因需要持續調整以及衝突和重疊的風險而變得不可持續。
在探索了不成功的傳統 ML 方案(如 bag-of-words 模型)後,Rocket Money 開發了一個新系統,使用 BERT 系列模型進行文本分類。為此,他們使用 Retool 構建了內部工具,用於標記隊列、金標準驗證數據集和漂移檢測監控。
使用 Hugging Face 克服生產挑戰
Rocket Money 在將擁有 4,000+ 個類別的模型移入生產時面臨重大的基礎設施挑戰。該系統需要高可用性和動態擴展,以低延遲處理每月超過 1 億筆交易的「突發」負載。
為了避免建立內部 MLOps 團隊的額外開銷,Rocket Money 評估了三種託管方案:
- 內部原型解決方案: 一個手工打造的託管系統。
- AWS SageMaker: 被發現「笨拙且易出錯」,因為 Rocket Money 使用 GCP 進行數據存儲,並使用 Google Vertex Pipelines 進行訓練。
- Hugging Face Inference API: 因其設置簡單且能快速處理流量而被選中。
在進行為期三個月的評估期間,並模擬最糟情況下的負載測試後,Rocket Money 正式採用 Hugging Face 進行模型託管。
整合與業務影響
Rocket Money 實施了從 regex 系統到 transformer 模型的分階段遷移。他們進行了 A/B 測試,新用戶在兩個系統之間平均分配,結果顯示 ML 模型在付費用戶留存和參與度方面明顯優於舊版系統。這導致在兩個月內對 100% 的用戶進行全面推出。
擴展與性能優化
隨著流量增加,Rocket Money 在推理調用之前實施了緩存層以控制成雖理論上最大緩存率為 93%,他們達成了生產緩存率 85%,顯著降低了發送至 Inference API 的交易基數。
儘管存在一些初始挑戰——包括由於擴展第二個生產模型的類別數量導致的中斷,以及模型過渡期間的緩存問題——該系統最終擴展到每月超過十億筆交易的運行速率。此基礎設施支援 Rocket Money 應用商店中排名第一的理財應用的崛起。
未來方向與模型拓撲
Rocket Money 繼續專注於類別和性能調整、自動監控以及管理模型生命週期(例如處理公司重新品牌)。
關於模型選擇,Rocket Money 發現專門的 transformer 分類器目前在速度和成本方面對其主要分類任務優於大型語言模型(LLM)。然而,他們正在探索針對服務的「長尾」使用 LLM,例如小型本地企業(「媽媽和爸爸商店」),在那些情況下專門的分類器可能效果較差。