騰訊廣告模型基於'太極'的訓練成本優化實踐
近年來,大數據加大模型成為了 AI 領域建模的標準範式。在廣告場景,大模型由於使用了更多的模型參數,利用更多的訓練數據,模型具備了更強的記憶能力和泛化能力,為廣告效果向上提升打開了更大的空間。但是大模型在訓練過程中所需要的資源也是成倍的成長,儲存以及運算上的壓力對機器學習平台都是巨大的挑戰。
騰訊太極機器學習平台持續探索降本增效方案,在廣告離線訓練場景利用混合部署資源大大降低了資源成本,每天為騰訊廣告提供 50W 核心廉價混合部署資源,幫助騰訊廣告離線模型訓練資源成本降低 30%,同時透過一系列最佳化手段使得混部資源穩定度和正常資源持平。
1、引言
近年來, 隨著大模型在NLP 領域橫掃各種大數據磅單取得巨大成功之後,大數據加大模型成為了AI 領域建模的標準範式。搜尋、廣告、推薦的建模也不例外,動輒千億參數,上 T 大小的模型成為各大預估場景的標配,大模型能力也成為各大科技公司軍備競賽的焦點。
在廣告場景,大模型由於使用了更多的模型參數,利用更多的訓練數據,模型具備了更強的記憶能力和泛化能力,為廣告效果向上提升打開了更大的空間。但是大模型在訓練過程中所需要的資源也是成倍的成長,儲存以及運算上的壓力對機器學習平台都是巨大的挑戰。同時平台能夠支撐的試驗數量直接影響演算法迭代效率,如何用更小的成本,提供更多的試驗資源,是平台努力的重點方向。
騰訊太極機器學習平台持續探索降本增效方案,在廣告離線訓練場景利用混合部署資源大大降低了資源成本,每天為騰訊廣告提供50W 核心廉價混合部署資源,幫助騰訊廣告離線模型訓練資源成本降低30%,同時透過一系列最佳化手段使得混部資源穩定性和正常資源持平。
2、太極機器學習平台介紹
太極機器學習平台,致力於讓使用者更聚焦業務AI問題解決與應用,一站式的解決演算法工程師在AI 應用過程中特徵處理,模型訓練,模型服務等工程問題。目前支援公司內廣告,搜索,遊戲,騰訊會議,騰訊雲等重點業務。
太極廣告平台是太極為廣告系統設計的集模型訓練和線上推理的高效能機器學習平台,平台具備萬億參數模型的訓練和推理能力。目前該平台支援騰訊廣告召回,粗排,精排數十個模型訓練和線上推理;同時太極平台提供一站式特徵註冊,樣本補錄,模型訓練,模型評估以及上線試驗的能力,極大提升了開發者效率。
- 訓練平台:目前模型訓練支援CPU 與GPU 兩種訓練模式,利用自研高效算子,混合精準度訓練, 3D 並行等技術,訓練速度與業界開源系統相比提升1 個量級。
- 推理架構:太極自研的HCF(Heterogeneous Computing Framework) 異質運算框架,透過硬體層,編譯層與軟體層聯合優化,提供極致效能優化。
3、成本最佳化具體實作
(1)整體方案介紹
隨著太極平台的不斷發展,任務數和任務類型日益增多,資源需求也隨之增多。為了降本增效,太極平台一方面提昇平台效能,提升訓練速度;另一方面,我們也尋找更廉價的資源,以滿足不斷成長的資源需求。
峰巒-騰訊公司內部雲端原生大數據平台,利用雲端原生技術,升級公司整個大數據架構。為滿足大數據業務持續成長的資源需求,峰巒引入混部資源,在滿足資源需求的同時,可大幅降低資源成本。峰巒針對不同場景下的混部資源,提供了一系列的解決方案,把不穩定的混部資源變成對業務透明的穩定資源。峰巒混部能力支援3類混部資源:
- #重複使用線上空閒資源。線上資源因波峰波谷現象、資源使用預估過高和群聚資源碎片等原因,導致群集資源利用率不高,有大量的空閒資源。峰巒挖掘這部分臨時空閒資源,來運行大數據任務,目前已在線上廣告、儲存、社交娛樂和遊戲等場景混部。
- 離線資源彈性借出。大數據平台有些任務也具有潮汐現象,在白天大數據集群資源使用率低的時候,峰巒支持把部分資源臨時彈性借出,待大數據集群高峰到來之前,再拿回這部分資源。這種場景非常適合解決假日和大促期間在線任務臨時需要大量資源問題,峰巒目前已支援春節和 618 等重大節假日。
- 復用算力資源。算力資源是以低優 CVM 方式挖掘雲母機的空閒資源,所謂低優 CVM 是指在雲母機上啟動具有更低 CPU 優先權的 CVM 虛擬機,該虛擬機可即時被其他的虛擬機搶佔資源。峰巒基於底層算力提供的資源訊息,在調度、過載保護、算力遷移等方面做了大量的最佳化,目前已有百萬核心的大數據任務在算力資源上穩定運作。
同時,峰巒引入雲原生虛擬叢集技術,屏蔽底層混部資源來自不同的城市和地理所導致的分散性特性。太極平台直接對接峰巒租戶集群,該租戶集群對應底層多種混部資源,且租戶集群擁有獨立且完整的集群視角,太極平台也可無縫對接。
(2)資源混部方案
線上空閒資源
峰巒自研了Caelus 全場景在離線混部方案,透過將線上作業和離線作業混部的方式,充分挖掘線上機器的空閒資源,提升線上機器資源利用率,同時降低離線作業的資源成本。
如下圖所示,是 Caelus 的基本架構,各個元件和模組相互配合,從多方面保證了混部的品質。
首先,Caelus 全方位保證了線上作業的服務質量,這也是混部的重要前提之一,例如:透過快速的干擾檢測與處理機制,主動感知線上服務質量,及時進行處理,並且支援插件化的擴展方式支援業務的特定乾擾檢測需求;透過全維度的資源隔離、靈活的資源管理策略等,保證線上服務的高優先級。
其次,Caelus 從多方面保證了離線作業的SLO,例如:透過混部資源與離線作業畫像,為作業匹配合適的資源,避免資源競爭;優化離線作業驅逐策略,優先排序驅逐,支援優雅退出,策略靈活可控。與大數據離線作業大多是短作業(分鐘級甚至秒級)的特徵不同的是,太極作業的運行時間大多較長(小時級甚至天級)。透過長週期的資源預測與作業畫像更好地指導調度,為不同運行時長、不同資源需求的作業找到合適的資源,避免作業運行幾小時甚至幾天后被驅逐,導致作業狀態丟失,浪費資源與時間。當出現需要驅逐離線作業的情況時,會優先通過運行時熱遷移,將作業實例從一個機器遷移到另一個機器,並且保持內存狀態和IP等不變,作業幾乎無影響,極大地提升了作業的SLO。為了更好地把混部資源利用好,Caelus 還具備其他更多的能力,詳見Caelus 全場景在離線混部方案( https://www.php.cn/link/caaeb10544b465034f389991efc90877)。
潮汐資源
大資料任務一般是白天任務量相對少,晚上任務量多,峰巒把白天部分空閒的大數據資源出讓給太極平台,夜間再回收這部分資源,我們把這種資源稱為潮汐資源。潮汐資源的特徵是節點上的大數據任務幾乎是完全退出的,但節點上還保留著大數據的儲存服務 HDFS,運行太極作業時不能影響到 HDFS 服務。太極平台使用潮汐資源時需要和峰巒平台協商一致,峰巒平台在固定時間點提前根據歷史數據篩選一批節點,待大數據任務優雅退出後,通知太極平台有新的節點加入,太極平台開始在峰巒租戶集群提交更多的任務。借用時間到達前,峰巒通知太極平台部分節點要回收,太極平台有序歸還節點。
如下圖所示,潮汐資源的挖掘、管理和使用涉及多個系統的分工配合:
- 大數據資源出讓系統:該系統會根據各個機器上不同的作業運行情況以及集群過去一段時間的運行數據,基於機器學習演算法,找到最合適的待下線的機器節點,以滿足特定的資源需求並且對正在運行的作業影響最小,然後禁止調度新的作業到這些節點上,等待節點上正在運行的作業運行完畢,最大限度地降低對大數據作業的影響。
- Caelus 混部系統:雖然出讓系統騰挪出來的機器資源上沒有運行大數據作業了,但上面還運行著HDFS 服務,也提供資料讀寫服務。為了保護 HDFS 服務,引入Caelus混部系統,將 HDFS 作為線上服務,透過 Caelus 一系列的線上服務保證手段(如:透過 HDFS 關鍵指標檢測其是否受到影響)保證 HDFS 服務品質不受影響。
- 透過虛擬叢集的方式使用潮汐資源#:這些出讓的機器資源會由峰巒統一管理和調度,並以虛擬集群的方式提供給太極平台使用,提供K8S 原生接口,這樣做到了對上層平台屏蔽底層資源的差異性,保證應用使通過相同的使用方式使用資源。
- 與應用層斷點續訓打通:潮汐資源在晚上會被回收以用於運行大數據作業,為了減少回收的影響,峰巒和應用層的斷點續訓功能進行了打通,實現資源切換不中斷訓練,切換後不影響業務的繼續運作。
算力資源
#算力資源的特徵是給業務呈現的是一個獨佔的CVM,對業務方使用來說比較友善。然而,使用算力資源的挑戰在於雲母機層面低優CVM 的CPU 資源會隨時被線上CVM 壓制,導致算力資源非常不穩定:
- ##算力機器不穩定:算力機器會因為碎片資源盤整、機房電力不足等原因而下線。
- 算力資源優先順序低:為了確保正常CVM 機器的服務品質不受影響,算力資源上的作業優先權最低,會無條件為高優資源上的作業讓步,導致性能極不穩定。
- 驅逐頻率高:多種原因(算力資源效能不足、磁碟空間不足、磁碟卡住等)會觸發主動驅逐 pod,增加了 pod 的失敗機率。
為了解決算力資源的不穩定性問題,透過峰巒主控層擴展各項能力,從多面向對算力資源優化,提升算力穩定性:
#① 資源畫像與預測:探索與蒐集各種機器效能指標,生成聚合指標,預測低優CVM 未來一段時間的可用資源狀況,這些資訊用於調度器調度pod 和驅逐元件驅逐pod,滿足pod 的資源需求。
② 調度最佳化:為保證太極作業的服務質量,針對作業的需求和資源的特點,在調度策略上有較多的最佳化,將作業效能提升了2 倍以上。
- 同城調度:將PST 和訓練作業調度到同城同機房,將作業實例之間的網路延遲降到最低,並且同城內的網路頻寬成本也更低,起到了降低成本的作用。
- 單機調度最佳化:結合資源預測的結果以及CPU stealtime 等指標,為作業選擇表現較佳的CPU 進行綁核,以更好地提升作業性能。
- 分級排程:對所有管理的資源做自動打標和分級,把Job Manager 等對容災需求比較高的作業自動調度到相對穩定的資源上。
- 調度參數:根據資源資源畫像和預測數據,調度器為作業優先挑選效能更優和更穩定的節點。另外為了解決步調不一致導致的梯隊過期問題,將同一個作業的實例調度到性能接近的機器
#③ 運行時服務品質保證
- 主動驅逐階段引入運行時熱遷移,做到業務基本無感知:為了應對資源不穩定以及pod 被驅逐導致應用被kill的問題,實現了運行時熱遷移,並且提供了多種熱遷移策略滿足不同場景的需求。目前從線上資料來看,使用遷移優先策略時,對於大記憶體的容器來說,熱遷移的中斷時間是 10 秒以上。我們也實作了與記憶體大小無關的常數中斷時間(恢復優先的策略)。目前每天成功主動遷移 pod 數 2 萬多次,且支援跨集群熱遷移,大大降低了驅逐的影響。
- 優化驅逐策略,將驅逐造成的影響降到最低:每台機器每次驅逐時,優先驅逐後啟動的pod,避免影響已啟動任;每個任務每次只驅逐一個節點,避免單任務上下游一起被驅逐,造成任務級重啟;pod 被驅逐時,和上層Flink 框架聯動,主動告知Flink,快速單點恢復。
④ 自回饋優化:透過資源畫像,週期性的替換掉性能差的機器,並且與底層平台打通,實現對CVM 的平滑抽離,讓峰巒有機會以對業務無影響的方式逐一遷移應用實例,降低對實例的影響。
⑤ 提升Flink 層的容災能力,支援單點重啟和層級式調度
TM(Task Manager)單點重啟能力避免Task 失敗導致整個DAG 失敗,可以更好適配算力搶佔式特性;分層調度避免gang scheduling 造成過長的作業等待,並且可以避免TM Pod 過度申請的浪費。
(3)應用層優化方案
業務容錯
離線訓練任務要使用廉價資源一個大前提就是不能影響資源上原有任務的正常運行,所以混部資源有以下幾個關鍵挑戰:
- 混部資源大多是臨時資源,會頻繁下線;
- 混部資源會無條件為高優資源讓步,導致機器效能極不穩定;
- ##混部資源的自動驅逐機制也極大加大了節點和pod 的失敗機率。
為了確保在混部資源上任務可以穩定運行,平台使用三級容錯策略,具體解決方案如下:
- 熱遷移技術:在Task Manager 將要發生驅逐前,提前感知,把相應的Task Manager 遷移到另外一個pod 上;同時利用內存壓縮,流式並發,跨集群熱遷移等能力持續優化熱遷移成功率。
- Task Manager 重新啟動:當任務當中一個Task Manager 由於異常或驅逐等原因導致運行失敗之後,整個任務不會直接失敗退出,而是先保存該Task Manager 的狀態,然後重新啟動該Task Manager,從而降低整個任務失敗的機率。
- 任務Full Recovery: 當一個任務的由於Flink 狀態異常,處於無法恢復狀態時,會觸發Job Manager 的重啟,為了確保Job Manager 的穩定性,平台把Job Manager部署在穩定性較好的獨立資源上,確保任務狀態正常。
- 斷點續訓:如果前面幾個容錯策略都失敗了,平台會基於歷史的某一個 ckpt 重新啟動任務。
透過業務層的容錯,運作在混部資源上的任務穩定性從最初的不到90% 提升到最終的99.5%,基本和普通獨佔資源上任務穩定性持平。
任務潮汐調度
針對潮汐資源要求離線訓練任務只能在白天使用,晚上需要提供給線上業務使用,所以太極平台需要在白天時依資源到位狀況,自動啟動訓練任務;在晚上對任務做冷備,同時停止對應的訓練任務。同時透過任務管理佇列來管理每個任務排程的優先級,對於晚上新啟動的任務會自動進入排隊狀態,等到隔天早上再啟動新的任務。
核心挑戰:
- 潮汐現象:資源白天的時候可以提供給離線任務使用,晚上的時間需要回收。
- 資源動態變化:在白天時,資源也是不穩定的,資源會隨時發生變化,一般是早上的時候資源比較少,然後資源逐漸增加,到晚上的時候資源到達高點。
解決方案:
- #資源感知的調度策略:早上在資源逐步增加的過程中,潮汐調度服務需要感知資源變化,同時跟進資源狀況來啟動待繼續訓練的任務。
- 模型自動備份能力:在晚上資源回收前,需要把目前平台上執行的所有任務逐步做備份,這對於平台的儲存和頻寬壓力非常大,因為平台上有幾百個任務,每個任務冷備大小從幾百G 到數T 大小不等,如果在同一時間做冷備的話需要在短時間傳輸和存儲數百T的數據,對於儲存和網路都是巨大的挑戰;所以我們需要有一套合理的調度策略,逐步做模型的儲存。
- 智慧資源調度能力:潮汐調度和傳統訓練相比,每個任務在晚上資源回收時的模型備份和每天早上任務新啟動的時候的開銷是額外開銷,為了降低這部分額外開銷,我們調度時需要評估哪些任務在當天就能跑完,哪些任務需要跑多天,對於當天能跑完的任務,我們優先給它分配更多資源,保證當天任務運作完成。
透過這些優化能夠保證任務能穩定在潮汐資源上運行,對於業務層基本上是無感知。同時任務的運作速度不會受太大影響,由於任務啟動停止調度所帶來的額外開銷控制在 10% 以內。
4、線上成效與未來展望
太極在離線混佈最佳化方案在騰訊廣告場景落地,每天為騰訊廣告離線模型研究訓練提供30W 核全天候的混合部署資源,20W 核子潮汐資源,支援廣告召回,粗排,精排多場景模型訓練。在資源成本上,相同運算量任務上,混合部署資源成本是普通資源的 70%。經過優化系統穩定性和實體集群任務成功率基本持平。
後續一方面我們會繼續加大混合算力資源的使用,尤其會加大混合算力資源的應用;另一方面,公司在線業務在GPU 化,所以在混合資源應用上,除了傳統的CPU 資源之外,也會嘗試對線上GPU 資源在離線訓練時使用。
今天的分享就到這裡,謝謝大家。
以上是騰訊廣告模型基於'太極'的訓練成本優化實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

大數據結構處理技巧:分塊:分解資料集並分塊處理,減少記憶體消耗。生成器:逐一產生資料項,無需載入整個資料集,適用於無限資料集。流:逐行讀取檔案或查詢結果,適用於大檔案或遠端資料。外部儲存:對於超大資料集,將資料儲存在資料庫或NoSQL中。

AEC/O(Architecture,Engineering&Construction/Operation)指在建築業中提供建築設計、工程設計、施工及營運的綜合服務。 2024年,AEC/O產業在技術進步中面臨不斷變化的挑戰。今年預計將整合先進技術,預示著設計、建造和營運的典範轉移。為了因應這些變化,業界正在重新定義工作流程,調整優先級,增強合作,以適應快速變化世界的需求。 AEC/O產業以下五大趨勢將成為2024年的關鍵主題,推薦其邁向更整合、反應迅速且永續的未來:一體化供應鏈、智慧工

在網路時代,大數據成為了一種新的資源,伴隨著大數據分析技術的不斷提升,大數據程式設計需求也愈發迫切。而C++作為一種廣泛應用的程式語言,其在大數據程式設計上的獨特優勢也日益凸顯。以下將分享我在C++大數據程式設計的實作經驗。一、選擇合適的資料結構選擇合適的資料結構是編寫高效大數據程式的重要環節。 C++中有多種資料結構可以供我們使用,如陣列、鍊錶、樹、雜湊表等

一、58畫像平台建置背景首先和大家分享下58畫像平台的建造背景。 1.傳統的畫像平台傳統的想法已經不夠,建立用戶畫像平台依賴數據倉儲建模能力,整合多業務線數據,建構準確的用戶畫像;還需要數據挖掘,理解用戶行為、興趣和需求,提供演算法側的能力;最後,還需要具備數據平台能力,有效率地儲存、查詢和共享用戶畫像數據,提供畫像服務。業務自建畫像平台和中台類型畫像平台主要區別在於,業務自建畫像平台服務單條業務線,按需定制;中台平台服務多條業務線,建模複雜,提供更為通用的能力。 2.58中台畫像建構的背景58的使用者畫像

在當今大數據時代,數據處理和分析已成為各行業發展的重要支持。而Go語言作為一種開發效率高、效能優越的程式語言,也逐漸被大數據領域所關注。然而,相較於其他語言如Java、Python等,Go語言在大數據框架上的支援相對不足,這給一些開發者帶來了困擾。本文將探討Go語言大數據框架缺失的主要原因,並提出對應的解決方案,同時結合具體的程式碼範例進行說明。一、Go語

Go語言作為一種開源程式語言,在近年來逐漸受到了廣泛的關注和使用。它以其簡潔、高效的特性,以及強大的並發處理能力而備受程式設計師青睞。在大數據處理領域中,Go語言也具有很強的潛力,可以用來處理大量資料、最佳化效能,並且可以很好地與各種大數據處理工具和框架進行整合。在本文中,我們將介紹一些Go語言大數據處理的基本概念和技巧,並透過具體的程式碼範例來展示如何利用Go語言

易知微2023年秋季產品發表會已經圓滿結束了!讓我們一起回顧一下發表會的精彩亮點吧!一、智能普惠開放,讓數位孿生成為生產力袋鼠雲端聯合創辦人、易知微CEO寧海元開場致詞提出:在今年公司的戰略會上,我們把產品研發的主要方向定位成「智能普惠開放「三大核心能力,圍繞著「智慧普惠開放」這三大核心關鍵字,我們進一步提出「讓數位孿生成為生產力」的發展目標。二、EasyTwin:探索更易用的數位孿生新引擎1、從0.1到1.0,持續探索數位孿生融合渲染引擎有更優解以成熟的3D編輯模式、便捷的交互藍圖、海量的模型資產

Golang與大數據:完美搭配還是相反?隨著大數據技術的快速發展,越來越多的企業開始透過數據分析來優化業務和決策。對於大數據處理來說,高效率的程式語言是至關重要的。而在眾多程式語言中,Golang(Go語言)因其並發、高效、簡潔等特點,成為了大數據處理的熱門選擇之一。那麼,Golang與大數據究竟是完美搭配還是相悖呢?本文將從Golang在大數據處理上的應用、
