本網站內容使用人工智慧(AI)或機器翻譯技術翻譯,可能存在錯誤。

Skip to content

在混合雲環境中大規模執行 AI 推論

  • 過去幾年來,Roblox 運用人工智慧(尤其是生成式人工智慧)的領域已迅速擴展。  
  • 我們正處於一個三階段流程的最後階段,旨在建置並優化支援此等級 AI 工具所需的基础設施。 
  • 我們將分享為建構能支援大規模機器學習推論的混合雲基礎架構所採取的步驟。

在上週的 RDC 大會上,我們宣布了最新的 AI 孵化計畫:開發一款多模態 3D 基礎模型,以驅動生成式創作。要為數百萬人使用的全天候沉浸式 3D 全球平台提供 AI 支援,需要龐大的運算能力。2023 年初,我們支援的機器學習(ML)推論管道還不到 50 條。 如今,我們的基礎設施已支援約 250 條此類管道。我們在兩個資料中心及混合雲基礎設施中,維護著數萬顆 CPU 和超過一千顆 GPU,以運行所有這些模型。而我們的進程尚未止步。

我們先前曾分享過,我們如何為創作者構思生成式 AI如何運用 AI 保障 Roblox 用戶的安全,以及 AI 翻譯如何協助世界各地的人們溝通。 但這些僅是冰山一角:隨著約 250 個模型投入生產環境,Roblox 上幾乎每項互動背後,都有一種形式的 AI 在驅動。當使用者初次造訪 Roblox 並瀏覽要加入哪個體驗時,AI 便透過我們的推薦與搜尋系統發揮作用。而當使用者選擇體驗並按下播放按鈕時,我們的配對演算法會識別出最適合加入的伺服器。

數百萬創作者已能運用我們生成式 AI 工具的強大功能。透過「Assistant」,他們能使用簡單的提示語來生成腳本和動作,從而加速體驗創作。借助我們的「Texture」「Material Generator」工具,他們可以快速變更並迭代物件的外觀與風格。 隨著近期「虛擬角色自動設定」功能的推出,我們正邁入 4D 生成式 AI 時代,該功能簡化了虛擬角色的製作流程,為創作者節省數小時的工作時間。截至 2024 年 8 月,Roblox 上發布的用戶生成內容(UGC)虛擬角色身體中,約有 8% 是透過「虛擬角色自動設定」產製的。

我們正邁入這項歷時數年的三階段計畫的最後衝刺階段。這段旅程始於2021年底。當時,由於缺乏統一的 Roblox AI 平台,工程團隊只能各自搭建小型平台並選用不同的框架。 我們觀察到各團隊在開發關鍵組件時,例如虛擬角色市集、首頁及搜尋功能,都各自建構了專屬的特徵工程系統。團隊們並未利用集中式的特徵儲存庫,而是拼湊出臨時性的解決方案。此外,在缺乏核心平台支援的情況下,每個團隊都必須獨立開發專屬的優化方案,並自行應對推論擴展的挑戰。這種分散式做法凸顯了建立一個整合且集中化的平台的迫切需求,以簡化流程並全面提升效率。

第一階段:為機器學習奠定堅實基礎

我們在早期便採用了 Kubeflow,以善用其整合的機器學習核心組件,包括筆記本、管道、離線實驗及模型服務。由於仍需功能儲存庫,我們起初採用了第三方解決方案。為了讓 Roblox 的工程師更容易接觸機器學習,我們開發了 roblox-ml,這是一個 Python 函式庫,進一步降低了將模型部署到生產環境的複雜性。

我們使用 Jupyter 筆記本來提供一個針對模型迭代進行優化的開發環境,並配置了伺服器以確保必要的資料存取和 GPU 資源。若要擴展訓練工作負載或定期執行以重新訓練模型,通常需要我們編寫一個管線。 我們的 roblox-ml 函式庫讓工程師能輕鬆將筆記本程式碼轉換為 Kubeflow 管線,方法是透過快照擷取執行環境與原始碼(無需建立 Docker 映像檔),並能依優先順序選取運算資源、設定通知以及處理驗證。

模型唯有在適當時機具備正確的特徵,才能發揮效用。我們的特徵儲存庫簡化了定義新特徵的流程,同時促進了 100 多個特徵服務間超過 900 項特徵的共享。隨著特徵集合不斷擴充,這使團隊能夠更快速地建立並部署新模型。

隨著我們的 ML 管道平台運作順暢且穩定,我們觀察到對線上推論支援的需求日益增加,其中個人化、搜尋和市集(Marketplace)更是需求的主力。雖然我們建議將批次推論作為邁向成熟 ML 運維的過渡階段,但我們仍開發了模型註冊表和服務平台,以支援即時推論。 透過模型註冊表,Roblox 工程師可使用 roblox-ml 上傳與下載模型;這些模型皆經過標記並自動版本化,以利追蹤、回滾及 A/B 測試。舉例而言,我們的個人化模型每天都會進行訓練與部署,且通常會並行執行約 20 項 A/B 測試。 在服務平台方面,我們選用 KServe 並以 Triton Inference Server 作為底層模型服務執行環境,因其具備強大效能,且支援多種同時使用 GPU 與 CPU 的機器學習框架。

無論是批次處理還是線上運作,Roblox 的模型在發布前都會經過廣泛的測試。這包括離線實驗、影子測試和 A/B 測試。 模型發布後,我們會持續監控其運作,以確保其在運作層面(例如推論延遲)及準確性方面均符合預期。作為我們對安全與文明承諾的一部分,人工審核員也會評估任何被回報的推論分歧,這有助於確保關鍵決策的正確性,並協助改善模型的訓練資料集。

第二階段:準備擴展推論能力 

2023 年初,我們發現生成式 AI 擁有巨大的潛力,能夠加速 Roblox 上的創作。為了充分發揮這項潛力,我們在 2023 年的大部分時間裡,致力於優化機器學習訓練與推論基礎架構的效能與效率。 得益於這些優化,我們已大幅降低 CLIP 嵌入向量生成的運算成本。首先,我們擴展了分散式訓練系統,使其能夠在大型資料集上進行訓練,並在多個工作節點上運行擁有數十億參數的模型。 

在構建分散式工作流程的過程中,我們意識到現有的離線推論架構無法長期支撐當前的成長速度。 我們的初始架構是為即時推論設計的,其中輸入和輸出資料是順序的。雖然它在我們早期的努力中運作良好,但無法輕鬆支援任務並行或多階段處理,資源效率也不足以支援我們現在所需的規模。此外,工程師必須自行編寫資料分塊和錯誤處理邏輯,隨著推論需求的擴大,這變得越來越耗時。 

為解決這些挑戰,我們引入了 Ray 的支援——這是一個能輕鬆擴展批次推論工作負載的開源運算框架。透過建構基於 Ray 的批次推論分散式任務管線,我們成功優化了資源利用率,實現了多階段處理,並提供了強健的任務並行處理能力與更高的容錯能力。此外,Ray Data 函式庫讓工程師僅需幾行程式碼即可定義具備串流執行能力的管線,這有助於提升開發者的開發速度與效率。 迄今為止,我們在批次推論中採用 Ray 已獲得顯著的效率提升。

隨著推論需求持續增長,我們將所有 CPU 推論作業遷移至自有資料中心,從而能更直接地控制延遲與隱私設定。我們每日為 7,950 萬名日活躍用戶(截至 2024 年 6 月 30 日)處理約 10 億次個人化請求。 將這項工作負載移至自有資料中心,讓我們得以維持效率,同時不影響使用者體驗。為節省推論成本,許多系統會將請求進行快取——但由於許多使用者每天會多次造訪 Roblox 首頁,這將導致推薦內容過時。此舉也提升了我們的效率,讓我們能更精準地優化推論執行位置,並透過工作負載分佈來減少所需的運算資源。

隨著規模持續擴大,我們意識到需要一套能支援高吞吐量、低延遲且具成本效益的自訂特徵庫解決方案,同時還能讓各類服務快速迭代。現有的第三方解決方案無法滿足這些需求,因此我們基於開源專案 Feast 開發了專屬的自訂特徵庫。 我們的特徵庫提供了一種自訂的領域特定語言,用於定義批次與串流特徵的轉換邏輯。我們採用 Flink 作為串流處理引擎,以實現即時特徵的生成——這對於需要整合最新資訊的模型至關重要。與此相對的是另一類特徵,它們需要透過在分散式環境中重新執行 Roblox 遊戲引擎,批次處理大量 3D 資產來衍生。 我們的特徵庫目前每日處理約 300 億筆資料,並提供約 700 億筆資料,P99 延遲為 50 毫秒,同時支援超過 100 項特徵服務。

隨著對語義理解的需求日益增長(無論是透過自然語言處理、電腦視覺或推薦系統),模型對嵌入向量的使用也迅速增加。這促使我們建置了一個向量資料庫,用以高效儲存和檢索作為高維度點的向量。該向量資料庫實現了快速的最近鄰查找,從而驅動多模態搜尋和內容違規檢測等功能。

隨著越來越多團隊開始運用機器學習模型,我們希望實現規模效益並協助工程師更快取得成功,因此我們成立了專屬的「 ground truth」團隊。該團隊協助工程師設計專屬的資料集建置流程,透過人工評鑑員進行資料訓練與驗證,並交付高品質的資料。這有助於我們標準化資料管線的建置流程、資料集的驗證流程,以及資料交付、追蹤與監控的格式規範。

第三階段:大規模推論的實務應用

隨著 Roblox Assistant 的推出,我們處理的週代幣量已增至 15 億。 我們同時推出了多項新功能,包括即時 AI 聊天翻譯以及我們的語音安全模型(現已開源),這些功能大幅提升了對推論容量的需求。為加速 AI 應用開發,我們啟動了兩項核心專案:ML 閘道,以及基於 vLLM 專案的大型語言模型運維(LLMOps)平台。這兩項專案將共同成為 Roblox 下一代 ML 的基礎。

我們建置了統一的 ML 閘道,旨在集中管理所有大型模型(無論是開源或內部開發)的存取權限,涵蓋雲端與本地端的 CPU 及 GPU 等多種環境。我們的目標是建立一套高效且簡化的系統,用以管理公司全體的 AI 資源。在後端,此閘道提供共通的 API 介面、使用者友善的配置選項,並實現已部署所有模型間的高效資源共享。

該閘道透過針對生成式 AI 工作負載實施基於令牌數量的集中式流量控制,以及跨區域的延遲感知負載平衡,提升了我們推論服務的韌性。此外,它透過集中管理 API 金鑰來增強安全性,支援全面的使用追蹤與潛在的權限管理機制,並整合監控工具以提升可觀察性。所有這些功能將協助我們優化大型模型的使用效率、降低成本,並為 Roblox 全體工程師提供寶貴的洞察。 

此外,我們已採用 vLLM 作為大型語言模型(LLM)的主要推論引擎,利用 vLLM 的高效能特性來驅動 Roblox 平台上的 AI 應用。自遷移至 vLLM 以來,我們在延遲與吞吐量方面均獲得近兩倍的提升,目前每週處理約 40 億個令牌。

選擇 vLLM 符合我們致力於運用開源與尖端技術的承諾,這些技術能高效擴展以滿足龐大用戶群及多元體驗的需求。Roblox 是開源 vLLM 專案的積極貢獻者,並主導 vLLM 多模態支援的開發,使該引擎不僅能處理文字,未來還能處理圖像以及其他類型的資料。 我們還導入了預測性解碼技術以進一步提升推論效能,使語言任務的處理速度更快、效率更高。 

透過 ML Gateway 和 vLLM,我們能有效支援 Roblox 平台上數百條正在運行的 ML 管道,並隨著對 AI 驅動功能的需求持續增長,持續擴展推論能力。而這項工作遠未完成,我們對 Roblox 未來的人工智慧發展有著宏大的規劃。 我們正致力開發新的 AI 驅動工具,讓初學者和資深創作者都能更高效地進行創作。一如既往,我們持續探索提升基礎架構效能與效率的方法,以更好地支援我們與創作者日常使用的 AI 工具。 

我們對開源的承諾

我們能走到今天,全仰賴多個成功的開源專案所奠定的基礎。我們的技術堆疊中,有很大一部分是建構於上述開源技術之上。

我們致力於成為開源 AI 社群中堅實的夥伴,並貢獻我們自身的開源技術。我們最近發布了首個開源模型——語音安全分類器——目前正著手開發機器學習閘道(ML gateway),並期望未來也能將其開源。我們相信 AI 的未來應具備開放與透明的特質,並期待能成為這個社群中積極的一員。