Rocket Money x Hugging Face:在生產環境中擴充套件不穩定的機器學習模型

釋出於 2023 年 9 月 19 日
在 GitHub 上更新

“我們發現他們不僅僅是服務提供商,更是與我們目標和成果共進退的合作伙伴” - Nicolas Kuzak, Rocket Money 高階機器學習工程師。

在沒有 MLOps 團隊的情況下擴充套件和維護生產中的機器學習模型

我們建立了 Rocket Money (一款個人理財應用,前身為 Truebill),旨在幫助使用者改善財務狀況。使用者將他們的銀行賬戶連結到該應用,應用隨後會對他們的交易進行分類和歸類,識別出重複出現的模式,從而為他們的個人財務生活提供一個整合、全面的檢視。交易處理的一個關鍵階段是檢測已知的商家和服務,Rocket Money 可以為會員取消其中一些服務並協商費用。這一檢測過程始於將簡短、常常被截斷且格式 cryptic 的交易字串轉換為可用於豐富我們產品體驗的類別。

新系統之路

我們最初使用基於正則表示式的規範化器從交易中提取品牌和產品。這些規範化器與一個日益複雜的決策表協同工作,該決策表將字串對映到相應的品牌。在公司成立的前四年,當類別僅與我們支援取消和協商的產品相關時,這個系統證明是有效的。然而,隨著使用者基數的增長、訂閱經濟的蓬勃發展以及我們產品範圍的擴大,我們需要跟上新類別增長的速度,同時還要調整正則表示式並防止衝突和重疊。為了解決這個問題,我們探索了各種傳統的機器學習 (ML) 解決方案,包括一個採用“每類一模型”架構的詞袋模型。但這個系統在維護和效能方面遇到了困難,最終被擱置了。

我們決定從零開始,組建了一個新團隊並賦予了新的使命。我們的首要任務是積累訓練資料並從頭開始構建一個內部系統。我們使用 Retool 構建了標註佇列、黃金標準驗證資料集和漂移檢測監控工具。我們探索了多種不同的模型拓撲結構,但最終選擇了 BERT 系列模型來解決我們的文字分類問題。最初的模型測試和評估大部分是在我們的 GCP 資料倉庫中離線進行的。在這裡,我們設計並構建了用於衡量一個擁有 4000 多個類別的模型效能的遙測和系統。

與 Hugging Face 合作解決領域挑戰和限制

在我們的領域內,我們面臨著許多獨特的挑戰,包括商家、處理/支付公司、機構差異以及使用者行為變化帶來的熵。設計和構建高效的模型效能警報以及現實的基準資料集一直是一個持續的挑戰。另一個重大障礙是確定我們系統的最佳類別數量——每個類別都代表著大量的建立和維護工作。因此,我們必須考慮它為使用者和我們的業務提供的價值。

當一個模型在離線測試中表現良好,而我們只有一個小型的機器學習工程師團隊時,我們面臨一個新的挑戰:將該模型無縫整合到我們的生產流水線中。現有的正則表示式系統每月處理超過 1 億筆交易,負載非常不穩定,因此,擁有一個能夠根據負載動態擴充套件並保持流水線整體低延遲的高可用性系統至關重要,同時該系統還需要針對我們所服務的模型進行計算最佳化。作為當時的一家小型初創公司,我們選擇購買而非自建模型服務解決方案。當時,我們沒有內部的模型運維專業知識,需要將機器學習工程師的精力集中在提升產品中模型的效能上。考慮到這一點,我們開始尋找解決方案。

起初,我們試用了一個我們一直在用於原型設計的自研內部模型託管解決方案,並將其與 AWS Sagemaker 和 Hugging Face 新推出的模型託管推理 API 進行了比較。鑑於我們使用 GCP 進行資料儲存,並使用 Google Vertex Pipelines 進行模型訓練,將模型匯出到 AWS Sagemaker 既笨拙又容易出錯。幸運的是,Hugging Face 的設定既快速又簡單,並且在一週內就能處理一小部分流量。Hugging Face 從一開始就執行良好,這種低摩擦讓我們決定沿著這條路走下去。

經過三個月的廣泛評估期,我們選擇 Hugging Face 來託管我們的模型。在此期間,我們逐漸增加了對其託管模型的交易量,並根據我們的最壞情況交易量進行了多次模擬負載測試。這個過程使我們能夠微調系統並監控效能,最終讓我們對推理 API 處理我們交易豐富化負載的能力充滿信心。

除了技術能力,我們還與 Hugging Face 的團隊建立了牢固的合作關係。我們發現他們不僅僅是服務提供商,更是與我們目標和成果共進退的合作伙伴。在我們合作的早期,我們建立了一個共享的 Slack 頻道,這被證明是非常寶貴的。他們對問題的迅速響應和主動解決問題的態度給我們留下了特別深刻的印象。他們的工程師和客戶成功經理 (CSM) 始終如一地展示了他們對我們成功的承諾和把事情做好的奉獻精神。這在我們做出最終選擇時給了我們額外的信心。

整合、評估和最終選擇

“總的來說,與 Hugging Face 在模型部署方面攜手合作的經歷豐富了我們團隊的經驗,並讓我們有信心去追求更大規模的擴充套件。”- Nicolas Kuzak, Rocket Money 高階機器學習工程師。

合同簽訂後,我們開始了遷移工作,從基於正則表示式的系統轉向將越來越多的關鍵路徑流量導向 Transformer 模型。在內部,我們必須為模型和生產資料監控構建一些新的遙測系統。鑑於該系統位於產品體驗的早期階段,模型結果的任何不準確都可能嚴重影響業務指標。我們進行了一項廣泛的實驗,將新使用者平均分配到舊系統和新模型。我們評估了模型效能以及更廣泛的業務指標,如付費使用者留存率和參與度。機器學習模型在留存率方面明顯表現更優,這讓我們充滿信心地做出了擴充套件該系統的決定——首先是針對新使用者,然後是現有使用者——在兩個月的時間裡逐步擴充套件到 100%。

隨著模型完全部署在交易處理流水線中,正常執行時間和延遲成為了主要關注點。我們的許多下游流程都依賴於分類結果,任何問題都可能導致資料延遲或資訊豐富不完整,這兩者都會降低使用者體驗。

Rocket Money 與 Hugging Face 合作的第一年並非沒有挑戰。然而,兩支團隊都表現出了卓越的韌性和共同解決問題的決心。其中一個例子是,當我們在第二個生產模型中擴充套件類別數量時,不幸導致了服務中斷。儘管有此挫折,團隊們堅持不懈,並且我們成功地避免了同樣問題的再次發生。另一個小插曲發生在我們切換到新模型時,由於 Hugging Face 端的快取問題,我們仍然收到了舊模型的結果。這個問題很快得到了解決,並且沒有再發生。總的來說,與 Hugging Face 在模型部署方面攜手合作的經歷豐富了我們團隊的經驗,並讓我們有信心去追求更大規模的擴充套件。

說到規模,當我們開始看到模型的流量顯著增加時,很明顯,推理成本將超出我們的預算。我們在推理呼叫之前使用了一個快取層,它顯著降低了交易的基數,並試圖從先前的推理中獲益。我們的問題在技術上可以達到 93% 的快取率,但在生產環境中我們只達到了 85%。隨著模型服務 100% 的預測,我們在 Rocket Money 方面取得了一些里程碑——我們的模型已經能夠擴充套件到每月處理超過十億筆交易的執行率,並在我們攀升至應用商店金融應用第一名和總榜第七名時管理流量激增,同時保持低延遲。

合作與未來計劃

“Hugging Face 推理 API 的高正常執行時間和我們對其的信心,使我們能夠將精力集中在模型產生的價值上,而不是管道和日常運營上” - Nicolas Kuzak, Rocket Money 高階機器學習工程師。

釋出後,Rocket Money 的內部團隊現在正專注於模型的類別和效能調優,以及更自動化的監控和訓練標籤系統。我們每天都在新增新的標籤,並面臨著模型生命週期管理的有趣挑戰,包括一些獨特的事情,比如公司品牌重塑,以及在 2021 年末 Rocket Companies 收購 Truebill 後出現的新公司和產品。

我們不斷審視我們是否為我們的問題選擇了正確的模型拓撲。雖然大型語言模型 (LLM) 最近備受關注,但目前我們仍然難以找到一種在速度和成本上都能超越我們專門的 Transformer 分類器的實現方案。我們看到在長尾服務(例如夫妻店)中使用它們有希望的早期結果——請在未來版本的 Rocket Money 中留意!Hugging Face 推理 API 的高正常執行時間和我們對其的信心,使我們能夠將精力集中在模型產生的價值上,而不是管道和日常運營上。在 Hugging Face 的幫助下,我們在模型的規模、複雜性以及其產生的價值型別方面都承擔了更多。他們的客戶服務和支援超出了我們的預期,他們是我們征途上真正的優秀合作伙伴。

如果您想了解 Hugging Face 如何管理您的機器學習推理工作負載,請在此處聯絡 Hugging Face 團隊。

社群

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.