在 AI 計(jì)算:AI 計(jì)算:從單機(jī)到集群(上)和 AI 計(jì)算:從單機(jī)到集群(中)介紹基礎(chǔ)上,大家了解了 AI 計(jì)算容器化和集群調(diào)度的相關(guān)知識(shí)。那么本篇作為 AI 計(jì)算系列的收尾篇,指導(dǎo)大家如何打造一個(gè)完備高效的計(jì)算平臺(tái)。
本篇首先介紹一個(gè)完備高效計(jì)算平臺(tái)的整體架構(gòu),然后選擇架構(gòu)中一些分系統(tǒng)作為切入點(diǎn),詳細(xì)介紹這些系統(tǒng)的組成和特點(diǎn),希望能夠?yàn)榇蠹覙?gòu)建平臺(tái)時(shí)提供有益的參考。
— 整體架構(gòu) —
AI 計(jì)算任務(wù)和傳統(tǒng)的云服務(wù)有顯著不同,其具有如下特點(diǎn):
業(yè)務(wù)流程長(zhǎng),邏輯復(fù)雜:從數(shù)據(jù)的采集、存儲(chǔ)、分析、挖掘到最終提供數(shù)據(jù)服務(wù),需要把多種數(shù)據(jù)源融合以及關(guān)聯(lián)分析。
場(chǎng)景多樣化,不確定性強(qiáng):需要與業(yè)務(wù)緊密結(jié)合,很多場(chǎng)景都是探索性質(zhì),并且要隨著業(yè)務(wù)變化和反饋持續(xù)的調(diào)整。
技術(shù)門檻高,對(duì)使用者要求高:多種計(jì)算引擎,多種計(jì)算模型,大規(guī)模機(jī)器學(xué)習(xí)的組合使用,以及多種計(jì)算資源(GPU/CPU) 協(xié)調(diào)計(jì)算。
針對(duì)以上特點(diǎn),我們需要一個(gè)對(duì)使用者友好的計(jì)算平臺(tái),能夠解決不同場(chǎng)景下對(duì) AI 計(jì)算的不同需求,降低使用者的門檻。所以,作為一個(gè)完備高效的計(jì)算平臺(tái),只具有計(jì)算任務(wù)的管理和調(diào)度是不夠的,還需要其他分系統(tǒng)和組件的協(xié)同配合。下圖展示的是平臺(tái)整體架構(gòu)邏輯圖。從下往上分別是:
平臺(tái)基礎(chǔ)層:提供平臺(tái)的底層支撐,除了我們?cè)谥衅呀?jīng)介紹的計(jì)算調(diào)度系統(tǒng),還包括計(jì)算所需要的分布式存儲(chǔ)系統(tǒng)。
平臺(tái)計(jì)算層:提供平臺(tái)與 AI 具體算法相關(guān)的計(jì)算實(shí)現(xiàn),與平臺(tái)緊密配合并深度優(yōu)化定制,完成任務(wù)算法的具體實(shí)現(xiàn)。
平臺(tái)控制中心:提供平臺(tái)支撐和管理系統(tǒng)。
平臺(tái)業(yè)務(wù)層:支持多種業(yè)務(wù)領(lǐng)域的應(yīng)用。
基于以上架構(gòu)的平臺(tái)具有如下優(yōu)勢(shì):
豐富的機(jī)器學(xué)習(xí)算法:內(nèi)置支持豐富多樣的機(jī)器學(xué)習(xí)算法和模塊
完整的數(shù)據(jù)處理流程:兼容支持多種數(shù)據(jù)格式與完整的數(shù)據(jù)處理流程
高效的異構(gòu)計(jì)算集群:高效的 GPU/CPU 異構(gòu)計(jì)算平臺(tái)和分布式存儲(chǔ)系統(tǒng)
一站式服務(wù)體驗(yàn):一站式服務(wù),易用,惠及更多用戶
從平臺(tái)整體框架圖看,平臺(tái)的構(gòu)成子系統(tǒng)眾多,由于篇幅限制,不能一一介紹。本文挑選部分子系統(tǒng)向大家介紹。
— 平臺(tái)基礎(chǔ)層 —
在 AI 計(jì)算:從單機(jī)到集群(上)和 AI 計(jì)算:從單機(jī)到集群(中)中我們主要介紹了基于 GPU 和 CPU 的容器任務(wù)調(diào)度系統(tǒng)。容器任務(wù)在生命周期結(jié)束時(shí),所有的生成數(shù)據(jù)都會(huì)隨著任務(wù)刪除而消失,為了保存任務(wù)的輸出結(jié)果,需要將外部存儲(chǔ)掛載到容器中保存訓(xùn)練結(jié)果。除此之外,計(jì)算任務(wù)讀取外部數(shù)據(jù)進(jìn)行模型訓(xùn)練,也需要外部存儲(chǔ)支持。
分布式文件存儲(chǔ)系統(tǒng)
分布式文件存儲(chǔ)系統(tǒng)是計(jì)算平臺(tái)的重要部分,我們實(shí)現(xiàn)了連續(xù)空間的大規(guī)模分布式存儲(chǔ)系統(tǒng),可擴(kuò)展支持 PB 量級(jí)容量的存儲(chǔ)空間,兼容 POSIX 標(biāo)準(zhǔn),無縫對(duì)接現(xiàn)有多種深度學(xué)習(xí)框架的讀寫接口,具有多重?cái)?shù)據(jù)冗余能力,保證數(shù)據(jù)的安全可靠。同時(shí)提供高吞吐量的數(shù)據(jù)讀寫操作 ,滿足任務(wù)對(duì)數(shù)據(jù)的高速讀寫要求,此外,系統(tǒng)具有良好的擴(kuò)展性,根據(jù)平臺(tái)需求對(duì)存儲(chǔ)容量自由擴(kuò)展。
AI 計(jì)算任務(wù)需要海量數(shù)據(jù)支撐,對(duì)存儲(chǔ)的需求具有如下特點(diǎn):
大容量:能夠支持大容量的數(shù)據(jù)存儲(chǔ)。
高 IO:具有高 IO 的數(shù)據(jù)讀寫操作。
兼容 POSIX 協(xié)議。
這寫特點(diǎn)決定了,與 AI 計(jì)算匹配的存儲(chǔ)系統(tǒng)必須是分布式存儲(chǔ)系統(tǒng),才能滿足計(jì)算的要求。由于我們使用基于 Kubernetes 的計(jì)算任務(wù)調(diào)度系統(tǒng),要求外部存儲(chǔ)首先能夠和 Kubernetes 結(jié)合,才能在計(jì)算任務(wù)中使用。Kubernetes 支持的外部存儲(chǔ)(https://link.zhihu.com/?target=https%3A//kubernetes.io/docs/concepts/storage/volumes/)包括很多類型,包括本地目錄 hostPath、網(wǎng)絡(luò)存儲(chǔ) NFS、塊存儲(chǔ) RBD、以及其他第三方云平臺(tái)存儲(chǔ)格式等。我們構(gòu)建基于 Lustre 的分布式文件系統(tǒng),為計(jì)算任務(wù)提供大容量和高 IO 的存儲(chǔ)方案。
Lustre 分布式文件系統(tǒng)歷史悠久,廣泛應(yīng)用在各個(gè)國(guó)家的高性能計(jì)算中心。Lustre 是開放源代碼的集群文件系統(tǒng), 提供與 POSIX 兼容的文件系統(tǒng)接口。Lustre 兩個(gè)最大特征是高擴(kuò)展性和高性能,能夠支持?jǐn)?shù)萬客戶端系統(tǒng)、很容易擴(kuò)展到 PB 級(jí)存儲(chǔ)容量、并具有數(shù)百 GB 每秒的 I/O 吞吐量。
下圖是 Lustre 的組成架構(gòu)圖,描述的是存儲(chǔ)整體邏輯框。左側(cè)為 Metadata Servers ( MDS, 媒體結(jié)構(gòu)數(shù)據(jù)服務(wù)器),存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)性信息,右側(cè)是 Object Storage Servers (OSS,對(duì)象存儲(chǔ)服務(wù)器)。存儲(chǔ)實(shí)際的數(shù)據(jù)信息。存儲(chǔ)節(jié)點(diǎn)間的網(wǎng)絡(luò)連接分為兩層,一種是用于數(shù)據(jù)傳輸?shù)母咝阅芫W(wǎng)絡(luò),采用萬兆網(wǎng)絡(luò)配置。一種是節(jié)點(diǎn)管理網(wǎng)絡(luò),利用 Intel Manager for Lustre 軟件監(jiān)控整個(gè)存儲(chǔ)集群的實(shí)時(shí)運(yùn)行狀態(tài)和配置存儲(chǔ)集群。存儲(chǔ)系統(tǒng)組成分為三部分:OSS陣列,MDS陣列,存儲(chǔ)運(yùn)行狀態(tài)實(shí)時(shí)監(jiān)控服務(wù)器。OSS 和 MDS 直接通過高速和低延時(shí)的高性能網(wǎng)絡(luò)連接。監(jiān)控服務(wù)器通過專用監(jiān)控網(wǎng)絡(luò)連接 OSS 和 MDS。MDS 服務(wù)器負(fù)責(zé)管理 OSS 服務(wù)器上的數(shù)據(jù),并處理來自客戶端的數(shù)據(jù)請(qǐng)求。每個(gè) OSS 服務(wù)器的本地存儲(chǔ)器,比如硬盤,被劃分為多個(gè) RAID 陣列,每個(gè)陣列被虛擬為 OST 數(shù)據(jù)類型。
OSS(對(duì)象存儲(chǔ)服務(wù)器),存儲(chǔ)實(shí)際的數(shù)據(jù)信息,采用 Dell 高密度陣列存儲(chǔ)。
MDS(媒體結(jié)構(gòu)數(shù)據(jù)服務(wù)器),提供數(shù)據(jù)的描述和結(jié)構(gòu)信息,通過陣列實(shí)現(xiàn)高可用的 MDS。
監(jiān)控服務(wù)器,實(shí)時(shí)監(jiān)控存儲(chǔ)系統(tǒng)運(yùn)行狀態(tài),具有管理和配置存儲(chǔ)系統(tǒng)的功能。
— 控制中心 —
如果說計(jì)算系統(tǒng)和存儲(chǔ)系統(tǒng)是平臺(tái)的雙引擎,那么控制中心就是平臺(tái)的駕駛艙。控制中心直接面向用戶,為用戶提供圖形化的任務(wù)交互,為平臺(tái)提供監(jiān)控和健康檢查,為任務(wù)提供鏡像分發(fā)等服務(wù)。我們選擇其中兩個(gè)分系統(tǒng):平臺(tái)日志與實(shí)時(shí)監(jiān)控系統(tǒng)和鏡像管理系統(tǒng),向大家作簡(jiǎn)單介紹。
平臺(tái)日志與實(shí)時(shí)監(jiān)控系統(tǒng)
計(jì)算平臺(tái)的硬件涉及眾多功能不一的服務(wù)器,但作為管理和使用人員來說,希望整個(gè)系統(tǒng)能夠像一臺(tái)計(jì)算機(jī)那樣進(jìn)行運(yùn)行與管理。平臺(tái)日志與實(shí)時(shí)監(jiān)控系統(tǒng)是平臺(tái)不可或缺的重要組件之一,保證平臺(tái)的穩(wěn)定運(yùn)行和監(jiān)控實(shí)時(shí)資源的使用,所以在平臺(tái)中是至關(guān)重要的。我們獨(dú)自開發(fā)了一套圖形化的平臺(tái)任務(wù)和節(jié)點(diǎn)狀態(tài)監(jiān)控系統(tǒng),對(duì)整個(gè)計(jì)算集群中的計(jì)算資源進(jìn)行管理。此系統(tǒng)是一套非常完備的用于監(jiān)控和管理機(jī)群的解決方案,簡(jiǎn)化了機(jī)群管理工作的復(fù)雜度,使管理員通過統(tǒng)一的操作就可以非常容易的管理與監(jiān)控集群中的多種計(jì)算資源。
下圖展示的是實(shí)時(shí)監(jiān)控系統(tǒng)邏輯框圖,在計(jì)算節(jié)點(diǎn)上通過 Node Exporter 和 GPU Exporter 等信息采集器收集節(jié)點(diǎn)運(yùn)行狀態(tài),包括計(jì)算資源,存儲(chǔ),網(wǎng)絡(luò)帶寬占用情況,以及節(jié)點(diǎn)健康狀態(tài)。cAdvisor 監(jiān)控節(jié)點(diǎn)上運(yùn)行的多個(gè)任務(wù)的實(shí)時(shí)狀態(tài)和對(duì) GPU 、內(nèi)存等相關(guān)資源的使用情況,上述平臺(tái)運(yùn)行信息定期發(fā)給 Prometheus 收集匯總。Grafana 查詢 Prometheus 存儲(chǔ)的信息,并通過圖像化方式展示。監(jiān)控系統(tǒng)中的警告和通知管理子系統(tǒng),會(huì)根據(jù)相應(yīng)配置觸發(fā)郵件、短信或者即時(shí)通訊工具發(fā)送警告和通知信息給管理員,以保證平臺(tái)的正常運(yùn)轉(zhuǎn)。
平臺(tái)日志與實(shí)時(shí)監(jiān)控系統(tǒng)軟件具有如下優(yōu)勢(shì):
多種功能有效集中在一起,高效便捷便,于管理維護(hù)
同時(shí)支持圖形化界面操作與命令行方式操作,為系統(tǒng)管理員提供多種選擇
分級(jí)授權(quán)管理,為系統(tǒng)管理員和普通用戶提供不同權(quán)限的訪問,保證系統(tǒng)的安全性
全面的可定制的系統(tǒng)監(jiān)控及報(bào)警功能
實(shí)時(shí)顯示節(jié)點(diǎn) GPU、CPU、內(nèi)存等資源使用信息
自動(dòng)通知與報(bào)警
自動(dòng)對(duì)監(jiān)控結(jié)果進(jìn)行篩選過濾,方便用戶使用
下圖顯示的是監(jiān)控系統(tǒng)顯示節(jié)點(diǎn) CPU 運(yùn)行狀態(tài)、內(nèi)存使用情況以及節(jié)點(diǎn)負(fù)載情況的示例:
鏡像管理系統(tǒng)
平臺(tái)中運(yùn)行著各種計(jì)算任務(wù),需要利用鏡像管理系統(tǒng)對(duì)所有的任務(wù)鏡像提供統(tǒng)一的管理。Docker 官方維護(hù)的Docker Registry(https://link.zhihu.com/?target=https%3A//docs.docker.com/registry)能夠提供簡(jiǎn)單的鏡像倉(cāng)庫(kù)功能,但不足以支撐企業(yè)級(jí)的應(yīng)用,尤其在高可用,用戶管理和安全方面。Harbor 是由 VMWare 開發(fā)和維護(hù)的企業(yè)級(jí) Registry 服務(wù)器,通過添加一些企業(yè)必需的功能特性,例如安全、標(biāo)識(shí)和管理等,擴(kuò)展了 Docker Registry 的實(shí)現(xiàn)。作為一個(gè)企業(yè)級(jí)私有 Registry 服務(wù)器,Harbor 提供了更好的性能和安全,提升用戶構(gòu)建和傳輸鏡像的效率。Harbor 在架構(gòu)上如下圖所示,主要包括:
Nginx Proxy:提供 Harbor 的圖形界面等服務(wù),通過一個(gè)前置的反向代理統(tǒng)一接收瀏覽器、Docker 命令的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。
Admin Server:提供用戶認(rèn)證和授權(quán),賦予用戶不同的角色。
Registry: 負(fù)責(zé)儲(chǔ)存 Docker 鏡像,并處理 Docker push/pull 命令。由于我們要對(duì)用戶進(jìn)行訪問控制,即不同用戶對(duì)鏡像有不同的權(quán)限,Registry 會(huì)指向一個(gè) Token 服務(wù),強(qiáng)制用戶的每次 docker pull/push 請(qǐng)求都要攜帶一個(gè)合法的 Token,Registry 會(huì)通過公鑰對(duì) Token 進(jìn)行解密驗(yàn)證。
Project: 這是Harbor的核心功能,主要提供以項(xiàng)目為基礎(chǔ)的鏡像管理。
圖中給出了四種角色,在 Harbor 工作流程中具有不同的權(quán)限:
Admin :具有所有權(quán)限
Developers:具有 push 與 pull 公開和私有項(xiàng)目鏡像的權(quán)限
Guests:具有 pull 公開和私有項(xiàng)目鏡像的權(quán)限
Anonymous:具有 pull 公開項(xiàng)目鏡像的權(quán)限
Harbor 具有如下特性:
基于角色的訪問控制 :用戶與 Docker 鏡像倉(cāng)庫(kù)通過項(xiàng)目進(jìn)行組織管理,一個(gè)用戶在不同的項(xiàng)目里具有不同的權(quán)限。
鏡像復(fù)制 : 支持在多個(gè) Registry 實(shí)例中復(fù)制(同步)鏡像,尤其適合于負(fù)載均衡,高可用的場(chǎng)景。
圖形化用戶界面 : 支持通過瀏覽器來瀏覽,檢索 Docker 鏡像倉(cāng)庫(kù),管理項(xiàng)目。
AD/LDAP 支持 : 支持集成企業(yè)內(nèi)部已有的 AD/LDAP,用于鑒權(quán)認(rèn)證管理。也提供了高級(jí)的安全特性,諸如用戶管理,訪問控制和活動(dòng)日志等。
RESTful API : RESTful API 實(shí)現(xiàn)對(duì) Harbor 更多操控的接口,與其它管理軟件集成變得更容易。
部署簡(jiǎn)單 : 提供在線和離線兩種安裝方式。
— 總結(jié) —
本文是 AI 計(jì)算系列的收尾篇,在 AI 計(jì)算:從單機(jī)到集群(上)和 AI 計(jì)算:從單機(jī)到集群(中)基礎(chǔ)上,擴(kuò)展介紹平臺(tái)的整體架構(gòu)實(shí)現(xiàn),并選擇架構(gòu)中的部分子系統(tǒng)做詳細(xì)的描述。在本文介紹完成之后,大家應(yīng)該具有這樣一個(gè)概念:一個(gè)高效完備的平臺(tái)僅僅具有計(jì)算調(diào)度系統(tǒng)的功能是不夠的,需要有相應(yīng)的高 IO 和高可靠性的分布式存儲(chǔ)平臺(tái)與之相匹配。除此之外,還需要用戶友好的平臺(tái)控制中心,包括各種提供平臺(tái)支撐的管理系統(tǒng)和監(jiān)控系統(tǒng)等。
AI 計(jì)算系列三篇文章分享暫時(shí)告一段落,由于篇幅限制,很多內(nèi)容沒有機(jī)會(huì)詳細(xì)展開和闡述,但是希望大家能夠通過這三篇介紹,窺一斑而見全豹,了解面向 AI 計(jì)算的高效平臺(tái)的基本概念,進(jìn)而能夠幫助大家實(shí)現(xiàn)從單機(jī)到集群,再到完備高效計(jì)算平臺(tái)的目標(biāo)。后續(xù)有機(jī)會(huì)我們會(huì)再次為大家介紹 AI 計(jì)算平臺(tái)相關(guān)內(nèi)容。
-
存儲(chǔ)系統(tǒng)
+關(guān)注
關(guān)注
2文章
413瀏覽量
40886 -
人工智能
+關(guān)注
關(guān)注
1792文章
47477瀏覽量
239155 -
計(jì)算平臺(tái)
+關(guān)注
關(guān)注
0文章
52瀏覽量
9674
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論