快如閃電的決策:加速數據處理的開放函式庫如何提升 Snapchat 的 A/B 測試效能
Snap 在 Google Cloud 服務上採用了 NVIDIA 的開放數據處理函式庫來加速開發。Snapchat 每月運行數千次實驗並處理超過 10 PB 的數據,透過導入由 NVIDIA cuDF 加速的 Apache Spark,該公司在相同機器數量下實現了 4 倍的運行速度提升,並節省了 76% 的日常成本。
Snapchat 等社交媒體應用程式的功能演進速度幾乎與流行趨勢一樣快。為了跟上步伐,其母公司 Snap 採用了 Google Cloud 服務上來自 NVIDIA 的開源數據處理庫,以加速開發進程。
Snapchat 每月擁有超過 9.4 億活躍用戶,每一項推出的新功能在發布前都會經過一系列受控實驗。在這種 A/B 測試週期中,開發團隊會針對一部分用戶研究不同的變量,測量近 6,000 個指標,以分析參與度、應用程式性能和獲利能力。
Snap 每月進行數千次此類實驗——每天早晨在三小時的窗口期內,使用 Apache Spark 分布式框架處理超過 10 PB 的數據。透過採用 由 NVIDIA cuDF 加速的 Apache Spark,該公司正在 NVIDIA GPU 上提升這些數據處理工作負載,在機器數量相同的情況下實現了 4 倍的運行速度提升,為擴展提供了一條具成本效益的途徑。
透過將 NVIDIA 的 GPU 優化軟體(包括 NVIDIA CUDA-X 庫)與 Google 的基礎設施管理服務(如 Google Kubernetes Engine)相結合,Snap 正在利用一個全棧平台進行大規模數據處理。
「實驗是我們公司的核心。將我們的數據基礎設施從 CPU 轉向 GPU,使我們能夠隨著時間推移,有效地將這種實驗擴展到更多功能、更多指標和更多用戶,」Snap 高級工程經理 Prudhvi Vatala 表示。「我們能運行的實驗越多,就能為 Snapchat 用戶提供更多創新體驗。」
一種可持續的擴展方式
Snapchat 粉絲經常在應用程式中看到新功能——從到達通知到 AI 生成的貼紙——但 Snap 也在持續推出幕後更新,例如性能優化和針對新作業系統版本的兼容性更新。
所有這些新功能的 A/B 測試現在都在 cuDF 上運行,這允許開發人員在不更改代碼的情況下,在 NVIDIA GPU 上運行現有的 Apache Spark 應用程式,實現輕鬆部署。這個用於加速數據處理的開源庫建立在 NVIDIA cuDF GPU DataFrame 庫的強大功能之上,同時將其擴展到 Apache Spark 分布式計算框架。
透過這次遷移,根據 Snap 在 1 月 1 日至 2 月 28 日期間收集的內部數據,該團隊在使用 Google Kubernetes Engine 上的 NVIDIA GPU 時,與僅使用 CPU 的工作流相比,實現了 76% 的每日成本節省。
「我們曾規劃了一個雄心勃勃的擴展實驗藍圖,如果基於現有的基礎設施,這將使我們的計算成本爆炸式增長,」Vatala 說。「轉向使用 cuDF 的 GPU 加速流水線為我們提供了一種平緩擴展曲線的方法,結果非常顯著。」
*為了支持工作負載遷移,該團隊還利用了 cuDF 微服務套件,該套件可自動鑑定、測試、配置和優化大規模 GPU 加速的 Spark 工作負載。
根據 Snap 在 1 月 1 日至 3 月 13 日期間收集的數據,Snap 團隊與 NVIDIA 專家合作,在由 NVIDIA L4 GPU 驅動的 Google Cloud G2 虛擬機上優化了其流水線,因此僅需 2,100 個 GPU 同時運行——而最初預計需要約 5,500 個 GPU 同時運行。
「當我看到最初的實驗結果時,簡直太瘋狂了——我們看到的成本節省遠高於預期,」A/B 測試團隊的後端工程師 Joshua Sambasivam 說。「Spark 加速器與我們的工作負載是絕配。」
展望未來,Snap 團隊計劃將 Spark 加速器從 A/B 團隊整合到更廣泛的生產工作負載中。
「我們之前沒意識到自己正坐在一座金礦上,」Vatala 說。「到目前為止,我們已經遷移了兩個最大的流水線,但未來還有很多機會。」
欲了解更多信息,請收看 Vatala 在 NVIDIA GTC 的演講,該演講將於太平洋時間 3 月 17 日星期二下午 1 點舉行。
閱讀更多關於 NVIDIA cuDF 的資訊,並開始使用 Apache Spark 的 GPU 加速。
上方主圖由 Snap 提供,描繪了其地圖功能的 A/B 測試。