vivo AI 计算平台的 ACK 混合云实践
作者|劉東陽、吳梓洋
2018 年底,vivo AI 研究院為了解決統(tǒng)一高性能訓(xùn)練環(huán)境、大規(guī)模分布式訓(xùn)練、計(jì)算資源的高效利用調(diào)度等痛點(diǎn),著手建設(shè) AI 計(jì)算平臺(tái)。經(jīng)過兩年多的持續(xù)迭代,平臺(tái)建設(shè)和落地取得了很大進(jìn)展,成為 vivo AI 領(lǐng)域的核心基礎(chǔ)平臺(tái)。平臺(tái)從當(dāng)初服務(wù)深度學(xué)習(xí)訓(xùn)練為主,到現(xiàn)在演進(jìn)成包含 VTraining、VServing、VContainer 三大模塊,對(duì)外提供模型訓(xùn)練、模型推理和容器化能力。平臺(tái)的容器集群有數(shù)千個(gè)節(jié)點(diǎn),擁有超過數(shù)百 PFLOPS 的 GPU 算力。集群里同時(shí)運(yùn)行著數(shù)千個(gè)訓(xùn)練任務(wù)和數(shù)百個(gè)在線服務(wù)。本文是vivo AI 計(jì)算平臺(tái)實(shí)戰(zhàn)系列文章之一,主要分享了平臺(tái)在混合云建設(shè)方面的實(shí)踐。
背景
混合云是近年來云原生領(lǐng)域關(guān)注的新方向之一,它是指將私有云和公有云服務(wù)結(jié)合起來使用的解決方案。目前幾大公有云廠商都提供了各自的混合云方案,如 AWS 的AWS Outpost、谷歌的 GEC Anthos 和阿里的 ACK 混合云。大部分廠商都是通過使用 Kubernetes 和容器來屏蔽底層基礎(chǔ)設(shè)施的差異,對(duì)上提供統(tǒng)一的服務(wù)。AI 計(jì)算平臺(tái)選擇建設(shè)混合云,主要是基于以下兩點(diǎn)原因。
公有云的彈性資源
平臺(tái)的集群使用公司自建機(jī)房內(nèi)的裸金屬服務(wù)器,新增資源的采購流程復(fù)雜、周期長,無法及時(shí)響應(yīng)業(yè)務(wù)臨時(shí)的大量的算力需求,如大規(guī)模參數(shù)模型的訓(xùn)練和在線服務(wù)的節(jié)假日活動(dòng)擴(kuò)容。同時(shí)由于今年服務(wù)器供應(yīng)鏈形勢嚴(yán)峻,網(wǎng)卡、硬盤、GPU 卡等硬件設(shè)備都缺貨,服務(wù)器采購交付存在較大風(fēng)險(xiǎn)。公有云的資源可以按需申請(qǐng)和釋放,通過混合云使用公有云資源,能夠滿足業(yè)務(wù)的臨時(shí)算力需求,又能有效降低成本。
公有云的高級(jí)特性
公有云有一些高級(jí)的特性,比如 AI 高性能存儲(chǔ) CPFS、高性能網(wǎng)絡(luò) RDMA、深度學(xué)習(xí)加速引擎 AIACC,這些方案或特性目前公司私有云尚不具備,而私有化落地的時(shí)間和金錢成本都很高,通過混合云可以快速和低成本的使用這些特性。
方案
方案選型
通過前期調(diào)研,以下三種方案可以實(shí)現(xiàn)混合云的需求:
方案一的實(shí)現(xiàn)成本低、不改變當(dāng)前資源申請(qǐng)流程,可快速落地。業(yè)務(wù)可以接受小時(shí)級(jí)的擴(kuò)容。因此我們選擇了方案一。
整體架構(gòu)
混合云的整體架構(gòu)如下圖所示。K8s 集群的管理平面部署在公司自建機(jī)房,工作平面包含了機(jī)房的物理機(jī)和阿里云的云主機(jī)。機(jī)房和阿里云間通過專線打通了網(wǎng)絡(luò),物理機(jī)和云主機(jī)可以相互訪問。方案對(duì)上層平臺(tái)透明,比如 VTraining 訓(xùn)練平臺(tái)不需要改動(dòng)即可使用云主機(jī)的算力。
落地實(shí)踐
注冊(cè)集群
首先需要將自建的集群注冊(cè)到阿里云。注意使用的 VPC 的網(wǎng)段不能和集群的 Service CIDR 沖突,否則無法注冊(cè)。VPC 的虛擬交換機(jī)和 Pod 虛擬交換機(jī)的 CIDR 也不能和機(jī)房內(nèi)使用的網(wǎng)段重合,否則會(huì)有路由沖突。注冊(cè)成功后,需要部署 ACK Agent。它的作用是主動(dòng)建立從機(jī)房到阿里云的長鏈接,接收控制臺(tái)的請(qǐng)求并轉(zhuǎn)發(fā)給 apiserver。對(duì)于沒有專線的環(huán)境,此機(jī)制可以避免將 apiserver 暴露在公網(wǎng)。控制臺(tái)到 apiserver 的鏈路如下:
阿里云 ACK 控制臺(tái) <<–>> ACK Stub(部署在阿里云) <<–>> ACK Agent(部署在 K8s) <<–>> K8s apiserver
控制臺(tái)到集群的請(qǐng)求是安全可控的。Agent 連接 Stub 時(shí),會(huì)帶上配置的 token 和證書;鏈接采用了 TLS 1.2 協(xié)議,保證數(shù)據(jù)加密;可以通過 ClusterRole 來配置控制臺(tái)對(duì) K8s 的訪問權(quán)限。
容器網(wǎng)絡(luò)配置
K8s 的容器網(wǎng)絡(luò)要求 Pod 和 Pod、Pod 和宿主機(jī)之間通訊正常,平臺(tái)采用了 Calico + Terway 的網(wǎng)絡(luò)方案。機(jī)房內(nèi)的工作節(jié)點(diǎn)采用 Calico BGP,Route Reflector 會(huì)將 Pod 的路由信息同步給交換機(jī),物理機(jī)和云主機(jī)都能正常訪問 Pod IP。阿里云上的工作節(jié)點(diǎn)會(huì)采用 Terway 共享網(wǎng)卡模式,Pod 會(huì)從 Pod 虛擬交換機(jī)配置的網(wǎng)段中分配到 IP,該 IP 在機(jī)房內(nèi)可以訪問。平臺(tái)給云主機(jī)打上標(biāo)簽,配置 calico-node 組件的 nodeAffinity,不調(diào)度到云主機(jī)上;同時(shí)配置 Terway 組件的 nodeAffinity,讓其只運(yùn)行在云主機(jī)上。這樣實(shí)現(xiàn)了物理機(jī)和云主機(jī)使用不同的網(wǎng)絡(luò)組件。在部署和使用 Terway 中,我們遇到并解決了以下三個(gè)問題:
1、terway 容器創(chuàng)建失敗,報(bào)/opt/cni/bin 目錄不存在。
通過修改 terway daemonset 中該路徑的 hostPath 的 type,從 Directory 改為 DirectoryOrCreate 可以解決上述問題。
2、業(yè)務(wù)容器創(chuàng)建失敗,報(bào)找不到 loopback 插件。
terway 沒有像 calico-node 一樣在/opt/cni/bin/目錄下部署 loopback 插件(創(chuàng)建回環(huán)網(wǎng)絡(luò)接口)。我們給 terway daemonset 添加了 InitContainer 來部署 loopback 插件,解決了問題。
3、業(yè)務(wù)容器分配的 IP 是屬于主機(jī)交換機(jī)網(wǎng)段。
這是因?yàn)樵谑褂弥?#xff0c;我們新增了一個(gè)可用區(qū),但是沒有把可用區(qū)的 Pod 虛擬交互機(jī)的信息配置給 terway。通過在 terway 配置的 vswitches 字段新增可用區(qū)的 Pod 虛擬交換機(jī)信息,可以解決問題。
云主機(jī)加入集群
將云主機(jī)加入集群的流程和物理機(jī)基本一致。首先通過公司云平臺(tái)申請(qǐng)?jiān)浦鳈C(jī),然后通過 VContainer 的自動(dòng)化平臺(tái)將云主機(jī)初始化并加到集群中。最后給云主機(jī)打上云主機(jī)專有的標(biāo)簽。關(guān)于自動(dòng)化平臺(tái)的介紹,可以參見vivo AI 計(jì)算平臺(tái)云原生自動(dòng)化實(shí)踐。
降低專線壓力
機(jī)房到阿里云的專線是公司所有業(yè)務(wù)共用的,如果平臺(tái)占用過多專線帶寬,會(huì)影響到其他業(yè)務(wù)的穩(wěn)定性。在落地時(shí)我們發(fā)現(xiàn)深度學(xué)習(xí)訓(xùn)練任務(wù)從機(jī)房的存儲(chǔ)集群拉取數(shù)據(jù),確實(shí)對(duì)專線造成壓力,為此平臺(tái)采取了以下措施:
1、監(jiān)控云主機(jī)的網(wǎng)絡(luò)使用情況,由網(wǎng)絡(luò)組協(xié)助監(jiān)控對(duì)專線的影響。
2、使用 tc 工具對(duì)云主機(jī) eth0 網(wǎng)卡的下行帶寬進(jìn)行限流。
3、支持業(yè)務(wù)使用云主機(jī)的數(shù)據(jù)盤,將訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)加載,避免反復(fù)從機(jī)房拉取數(shù)據(jù)。
落地效果
數(shù)個(gè)業(yè)務(wù)方臨時(shí)需要大量的算力用于深度學(xué)習(xí)模型的訓(xùn)練。通過混合云的能力,平臺(tái)將數(shù)十臺(tái) GPU 云主機(jī)加入到集群,提供給用戶在 VTraining 訓(xùn)練平臺(tái)上使用,及時(shí)滿足了業(yè)務(wù)的算力需求。用戶的使用體驗(yàn)和之前完全一致。這批資源根據(jù)不同業(yè)務(wù)的情況,使用周期在一個(gè)月到數(shù)個(gè)月。經(jīng)過估算,使用費(fèi)用大大低于自行采購物理機(jī)的費(fèi)用,有效降低了成本。
未來展望
混合云的建設(shè)和落地取得了階段性的成果,在未來我們會(huì)持續(xù)完善功能機(jī)制和探索新特性:
支持 AI 在線服務(wù)通過混合云能力部署到云主機(jī),滿足在線業(yè)務(wù)臨時(shí)算力需求。
建立一套簡單有效的資源申請(qǐng)、釋放、續(xù)期的流程機(jī)制,提升跨團(tuán)隊(duì)的溝通協(xié)作效率。
針對(duì)云主機(jī)的成本、利用率進(jìn)行度量和考核,促使業(yè)務(wù)方使用好資源。
將云主機(jī)申請(qǐng)、加入集群整個(gè)流程自動(dòng)化,減少人工操作,提高效率。
探索云上的高級(jí)特性,提升大規(guī)模分布式訓(xùn)練的性能。
致謝
感謝阿里云容器團(tuán)隊(duì)的華相、建明、流生等和公司基礎(chǔ)平臺(tái)一部的楊鑫、黃海廷、王偉等對(duì)混合云方案的設(shè)計(jì)和落地過程中提供的大力支持。
作者介紹:
劉東陽,vivo AI 研究院計(jì)算平臺(tái)組的資深工程師,曾就職于金蝶、螞蟻金服等公司;關(guān)注 k8s、容器等云原生技術(shù)。
吳梓洋,vivo AI 研究院計(jì)算平臺(tái)組的資深工程師,曾就職于 Oracle、Rancher 等公司;kube-batch, tf-operator 等項(xiàng)目的 contributor;關(guān)注云原生、機(jī)器學(xué)習(xí)系統(tǒng)等領(lǐng)域。
文內(nèi)相關(guān)鏈接:
1)vivo AI 計(jì)算平臺(tái)實(shí)戰(zhàn):
https://www.infoq.cn/theme/93
2)AWS Outpost:
https://aws.amazon.com/cn/outposts/
3)GEC Anthos:
https://cloud.google.com/anthos
4)ACK 混合云:
https://help.aliyun.com/document_detail/121609.html?spm=a2c4g.11186623.6.1038.6bfe3fd39IEFEt
5)AI 高性能存儲(chǔ)CPFS:
https://www.alibabacloud.com/help/zh/doc-detail/111755.htm
6)深度學(xué)習(xí)加速引擎AIACC:
https://market.aliyun.com/products/57742013/cmjj032323.html
7)vivo AI 計(jì)算平臺(tái)云原生自動(dòng)化實(shí)踐:
https://www.infoq.cn/article/9vB93vFIa9qHVMYOj6lD
點(diǎn)擊下方,深入了解阿里 ACK 混合云!
https://help.aliyun.com/document_detail/121609.html?spm=a2c4g.11186623.6.1038.6bfe3fd39IEFEt
總結(jié)
以上是生活随笔為你收集整理的vivo AI 计算平台的 ACK 混合云实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成本直降50%,下一代网关震撼发布
- 下一篇: 基于 RocketMQ 的基金数字化陪伴