機器之心發布
機器之心編輯部
快手商業化進程開始加速,這對底層計算能力提出挑戰。快手決定將 GPU 推理在商業化場景全量落地。
據官方披露,快手日活已超 3 億,直播日活達 1.7 億 +,快手之夜單場活動快手官方直播間累計觀看總人數就超過 9000 萬。隨著業務規模的不斷擴張,快手商業化進程也隨之加速,單場直播最高成交額 12.5 億,8 月電商訂單總量達 5 億。巨大的商業價值和潛力吸引越來越多的廣告主來到快手做營銷。為了應對日益激增的營銷素材,快手不斷提升底層計算能力,率先將 GPU 推理應用到大規模稀疏場景中,在提高機器性能、節約成本的同時,為廣告主提供了更加有效的營銷效果。
2019 年開始,快手商業化進程開始加快,底層計算能力持續面臨挑戰:
一方面,隨著業務的發展,業務形態越來越豐富,流量越來越高,廣告主對推薦質量的要求越來越高,模型變寬變深,算力的消耗急劇增加;
另一方面,在廣告推薦場景下主要使用 DNN 模型,涉及大量稀疏特徵 embedding 和神經網絡浮點運算。作為訪存和計算密集型的線上服務,在保證可用性的前提下,要滿足低延遲、高吞吐的要求,對單機算力也是一種挑戰。
上述算力資源需求和空間的矛盾,如果不解決好,對業務的發展會帶來很大的限制:在模型加寬加深前,純 CPU 推理服務能夠提供可觀的吞吐,但是在模型加寬加深後,計算複雜度上升,為了保證可用性,需要消耗大量機器資源,導致大模型無法大規模應用於線上。
目前行業比較通用的解決辦法是利用 GPU 來解決這個問題。GPU 本身比較適合高吞吐、對延遲不太敏感的計算任務,在業界應用中,主要用於圖像、語音或者離線訓練等場景。
對於推薦、廣告等場景使用的大規模稀疏模型,我們需要解決如下挑戰:如何在保證可用性、低延遲的前提下,儘可能做到高吞吐,同時還需要考慮易用性和通用性。
業內一般會使用 TensorFlow 進行訓練,在 GPU 場景推理時,則會選擇 TensorFlow 或 TensorRT。對於 TensorFlow 和 TensorRT 的結合,常見的做法是利用開源工具離線將 TensorFlow 模型轉換到 ONNX 模型,然後從 ONNX 模型加載,這引入了更多的中間環節,當 ONNX 不支持 TensorFlow 的某些 Op 時,轉換會失敗。這限制了模型的結構,也導致訓練好的 TensorFlow 模型無法直接以端到端的形式應用於線上。
快手借鑑業界經驗,從實際業務出發,圍繞大規模稀疏模型場景,針對發揮 GPU 算力和 TensorFlow 與 TensorRT 的結合易用性,進行了一系列技術上的探索和嘗試。
融合 CPU、GPU 各自硬體優勢
快手在硬體部署時就充分考慮了硬體特點,融合不同硬體的優勢。在廣告推理場景下,CPU 適合大規模稀疏特徵 embedding訪存密集型任務,GPU 適合進行 DNN 這種大規模浮點運算的計算密集型任務,以此實現 CPU 和 GPU 的高效率配合。
於是,快手從多個業務的推理服務中選取典型的服務,簡化場景,提煉出核心計算過程,嘗試不同的 GPU 卡進行壓測,綜合考慮硬體的特性、成本以及業務的發展情況,確定機型,對齊算力需求和硬體能力。
保證易用性,實現訓練到推理端到端
結合 Tensorflow 的高可擴展性和 TensorRT 的高性能,快手在線進行 TensorFlow 模型到 TensorRT 模型的轉換,基於 TensorRT 推理專用引擎的高性能,加速 DNN 計算,保持 TensorFlow 模型的訓練和在線推理以端到端方式進行。
圖 1. Predict Server 的模型加載和計算流程
計算流水優化,提升硬體利用率
快手利用多 cuda stream,同時運行多個 Compute Engine,增加 GPU 有效工作時間的佔比,使每個 Compute Engine 對應兩條 Cuda stream,優化了 H2D 數據傳輸到 GPU 計算的流水:
圖 2. 多 Cuda Stream、Compute Engine 和計算流水優化
自動對 TF graph 做裁剪,減少重複計算和內存拷貝,不斷優化 CPU 到 GPU 的流水(比如對 user 側 embedding 在卡上展開),達到算力均衡。
圖 3. User 特徵的 GPU 展開
靈活配置,降低成本提升集群算力
為了降低每塊卡的單機成本,快手採用單機雙卡的機型,基於容器化隔離硬體資源,實現靈活分配。為了提高資源的利用率,快手通過 docker 將一臺 GPU 伺服器虛擬化為 2 個實例,通過 cpu manager 降低跨核心調度導致的性能損耗,進而保障服務容器化後的穩定性和性能。
對於大規模稀疏場景,模型佔比中較大的是 EmbeddingTable,可能達到 TB 級規模,單機內存無法容納,所以一般會將部分的 EmbeddingTable 以哈希的形式打散並保存在其他分布式節點上,在線推理時再通過稀疏的特徵拉取參數。但帶寬放大明顯往往最先成為瓶頸,極大地限制了 Predict server(GPU 節點)算力的發揮。
結合場景和模型的特點,快手也進行了針對性的設計和優化。
在推薦廣告場景中,每次請求針對一個 User 和 N 個 Item 進行預估。如果將 Item 的特徵放在分布式節點上進行 embedding 計算,單次的數據通信量相較 User 特徵會被放大 N 倍,通信帶寬會成為 Predict Server 和 Emp Server(分布式計算節點)之間的瓶頸。
快手將 User 特徵的 EmbeddingTable 和 Reduce sum 運算放在 Emp server 上,一方面可以利用相對廉價的 CPU 資源分擔內存和算力需求,另一方面 User 特徵不存在網絡通信放大的問題,對帶寬的壓力要小得多。而將 DNN 等浮點數運算密集的邏輯保留在 PredictServer(GPU 節點)上,這能夠充分利用 CPU 節點,結合 CPU 和 GPU 的優勢,保證大規模模型的線上應用。
圖 4. 分布式 Predict Server
2020 年,GPU 在快手商業化在線服務中實現了 0-1 的突破,GPU 在商業化在線推理服務中全面落地,形成 CPU 和 GPU 的混合集群,根據算力需求匹配機器,實現機器成本優化約 20~30%,在成本不變的情況下,為廣告主提供更加高質量的營銷體驗和收益。
Amazon SageMaker1000元大禮包
ML訓練成本降90%,被全球上萬家公司使用,Amazon SageMaker是全託管機器學習平臺,支持絕大多數機器學習框架與算法,並且用 IDE 寫代碼、可視化、Debug一氣呵成。
現在,我們準備了1000元的免費額度,開發者可以親自上手體驗,讓開發高質量模型變得更加輕鬆。