【第五期】AI Talk:AI 計算,從單機到集群(下)

【第五期】AI Talk:AI 計算,從單機到集群(下)

  • 引言
  • 整體架構
  • 平台基礎層
    • 分散式文件存儲系統
  • 控制中心
    • 平台日誌與實時監控系統
    • 鏡像管理系統
  • 總結
  • 參考

引言

在 AI 計算:從單機到集群(上)和 AI 計算:從單機到集群(中)介紹基礎上,大家了解了 AI 計算容器化和集群調度的相關知識。那麼本篇作為 AI 計算系列的收尾篇,指導大家如何打造一個完備高效的計算平台。

本篇首先介紹一個完備高效計算平台的整體架構,然後選擇架構中一些分系統作為切入點,詳細介紹這些系統的組成和特點,希望能夠為大家構建平台時提供有益的參考。


整體架構

AI 計算任務和傳統的雲服務有顯著不同,其具有如下特點:

  • 業務流程長,邏輯複雜:從數據的採集、存儲、分析、挖掘到最終提供數據服務,需要把多種數據源融合以及關聯分析。
  • 場景多樣化,不確定性強:需要與業務緊密結合,很多場景都是探索性質,並且要隨著業務變化和反饋持續的調整。
  • 技術門檻高,對使用者要求高:多種計算引擎,多種計算模型,大規模機器學習的組合使用,以及多種計算資源(GPU/CPU) 協調計算。

針對以上特點,我們需要一個對使用者友好的計算平台,能夠解決不同場景下對 AI 計算的不同需求,降低使用者的門檻。所以,作為一個完備高效的計算平台,只具有計算任務的管理和調度是不夠的,還需要其他分系統和組件的協同配合。下圖展示的是平台整體架構邏輯圖。從下往上分別是:

  • 平台基礎層:提供平台的底層支撐,除了我們在中篇已經介紹的計算調度系統,還包括計算所需要的分散式存儲系統。
  • 平台計算層:提供平台與 AI 具體演算法相關的計算實現,與平台緊密配合併深度優化定製,完成任務演算法的具體實現。
  • 平台控制中心:提供平台支撐和管理系統。
  • 平台業務層:支持多種業務領域的應用。

基於以上架構的平台具有如下優勢:

  • 友好的可視化界面:友好的使用介面,支持拖拽交互,無需編程
  • 豐富的機器學習演算法:內置支持豐富多樣的機器學習演算法和模塊
  • 完整的數據處理流程:兼容支持多種數據格式與完整的數據處理流程
  • 高效的異構計算集群:高效的 GPU/CPU 異構計算平台和分散式存儲系統
  • 一站式服務體驗:一站式服務,易用,惠及更多用戶

從平台整體框架圖看,平台的構成子系統眾多,由於篇幅限制,不能一一介紹。本文挑選部分子系統向大家介紹。


平台基礎層

在 AI 計算:從單機到集群(上)和 AI 計算:從單機到集群(中)中我們主要介紹了基於 GPU 和 CPU 的容器任務調度系統。容器任務在生命周期結束時,所有的生成數據都會隨著任務刪除而消失,為了保存任務的輸出結果,需要將外部存儲掛載到容器中保存訓練結果。除此之外,計算任務讀取外部數據進行模型訓練,也需要外部存儲支持。

分散式文件存儲系統

分散式文件存儲系統是計算平台的重要部分,我們實現了連續空間的大規模分散式存儲系統,可擴展支持 PB 量級容量的存儲空間,兼容 POSIX 標準,無縫對接現有多種深度學習框架的讀寫介面,具有多重數據冗餘能力,保證數據的安全可靠。同時提供高吞吐量的數據讀寫操作 ,滿足任務對數據的高速讀寫要求,此外,系統具有良好的擴展性,根據平台需求對存儲容量自由擴展。

AI 計算任務需要海量數據支撐,對存儲的需求具有如下特點:

  • 大容量:能夠支持大容量的數據存儲。
  • 高 IO:具有高 IO 的數據讀寫操作。
  • 兼容 POSIX 協議。

這寫特點決定了,與 AI 計算匹配的存儲系統必須是分散式存儲系統,才能滿足計算的要求。由於我們使用基於 Kubernetes 的計算任務調度系統,要求外部存儲首先能夠和 Kubernetes 結合,才能在計算任務中使用。Kubernetes 支持的外部存儲包括很多類型,包括本地目錄 hostPath、網路存儲 NFS、塊存儲 RBD、以及其他第三方雲平台存儲格式等。我們構建基於 Lustre 的分散式文件系統,為計算任務提供大容量和高 IO 的存儲方案。

Lustre 分散式文件系統歷史悠久,廣泛應用在各個國家的高性能計算中心。Lustre 是開放源代碼的集群文件系統, 提供與 POSIX 兼容的文件系統介面。Lustre 兩個最大特徵是高擴展性和高性能,能夠支持數萬客戶端系統、很容易擴展到 PB 級存儲容量、並具有數百 GB 每秒的 I/O 吞吐量。

下圖是 Lustre 的組成架構圖,描述的是存儲整體邏輯框。左側為 Metadata Servers ( MDS, 媒體結構數據伺服器),存儲數據的結構性信息,右側是 Object Storage Servers (OSS,對象存儲伺服器)。存儲實際的數據信息。存儲節點間的網路連接分為兩層,一種是用於數據傳輸的高性能網路,採用萬兆網路配置。一種是節點管理網路,利用 Intel Manager for Lustre 軟體監控整個存儲集群的實時運行狀態和配置存儲集群。存儲系統組成分為三部分:OSS陣列,MDS陣列,存儲運行狀態實時監控伺服器。OSS 和 MDS 直接通過高速和低延時的高性能網路連接。監控伺服器通過專用監控網路連接 OSS 和 MDS。MDS 伺服器負責管理 OSS 伺服器上的數據,並處理來自客戶端的數據請求。每個 OSS 伺服器的本地存儲器,比如硬碟,被劃分為多個 RAID 陣列,每個陣列被虛擬為 OST 數據類型。

  • OSS(對象存儲伺服器),存儲實際的數據信息,採用 Dell 高密度陣列存儲。
  • MDS(媒體結構數據伺服器),提供數據的描述和結構信息,通過陣列實現高可用的 MDS。
  • 監控伺服器,實時監控存儲系統運行狀態,具有管理和配置存儲系統的功能。


控制中心

如果說計算系統和存儲系統是平台的雙引擎,那麼控制中心就是平台的駕駛艙。控制中心直接面向用戶,為用戶提供圖形化的任務交互,為平台提供監控和健康檢查,為任務提供鏡像分發等服務。我們選擇其中兩個分系統:平台日誌與實時監控系統和鏡像管理系統,向大家作簡單介紹。

平台日誌與實時監控系統

計算平台的硬體涉及眾多功能不一的伺服器,但作為管理和使用人員來說,希望整個系統能夠像一台計算機那樣進行運行與管理。平台日誌與實時監控系統是平台不可或缺的重要組件之一,保證平台的穩定運行和監控實時資源的使用,所以在平台中是至關重要的。我們獨自開發了一套圖形化的平台任務和節點狀態監控系統,對整個計算集群中的計算資源進行管理。此系統是一套非常完備的用於監控和管理機群的解決方案,簡化了機群管理工作的複雜度,使管理員通過統一的操作就可以非常容易的管理與監控集群中的多種計算資源。

下圖展示的是實時監控系統邏輯框圖,在計算節點上通過 Node Exporter 和 GPU Exporter 等信息採集器收集節點運行狀態,包括計算資源,存儲,網路帶寬佔用情況,以及節點健康狀態。cAdvisor 監控節點上運行的多個任務的實時狀態和對 GPU 、內存等相關資源的使用情況,上述平台運行信息定期發給 Prometheus 收集匯總。Grafana 查詢 Prometheus 存儲的信息,並通過圖像化方式展示。監控系統中的警告和通知管理子系統,會根據相應配置觸發郵件、簡訊或者即時通訊工具發送警告和通知信息給管理員,以保證平台的正常運轉。

平台日誌與實時監控系統軟體具有如下優勢:

  • 多種功能有效集中在一起,高效便捷便,於管理維護
  • 同時支持圖形化界面操作與命令行方式操作,為系統管理員提供多種選擇
  • 分級授權管理,為系統管理員和普通用戶提供不同許可權的訪問,保證系統的安全性
  • 全面的可定製的系統監控及報警功能
  • 實時顯示節點 GPU、CPU、內存等資源使用信息
  • 自動通知與報警
  • 自動對監控結果進行篩選過濾,方便用戶使用

下圖顯示的是監控系統顯示節點 CPU 運行狀態、內存使用情況以及節點負載情況的示例:

鏡像管理系統

平台中運行著各種計算任務,需要利用鏡像管理系統對所有的任務鏡像提供統一的管理。Docker 官方維護的 Docker Registry 能夠提供簡單的鏡像倉庫功能,但不足以支撐企業級的應用,尤其在高可用,用戶管理和安全方面。

Harbor 是由 VMWare 開發和維護的企業級 Registry 伺服器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了 Docker Registry 的實現。作為一個企業級私有 Registry 伺服器,Harbor 提供了更好的性能和安全,提升用戶構建和傳輸鏡像的效率。Harbor 在架構上如下圖所示,主要包括:

  • Nginx Proxy:提供 Harbor 的圖形界面等服務,通過一個前置的反向代理統一接收瀏覽器、Docker 命令的請求,並將請求轉發給後端不同的服務。
  • Admin Server:提供用戶認證和授權,賦予用戶不同的角色。
  • Registry: 負責儲存 Docker 鏡像,並處理 Docker push/pull 命令。由於我們要對用戶進行訪問控制,即不同用戶對鏡像有不同的許可權,Registry 會指向一個 Token 服務,強制用戶的每次 docker pull/push 請求都要攜帶一個合法的 Token,Registry 會通過公鑰對 Token 進行解密驗證。
  • Project: 這是Harbor的核心功能,主要提供以項目為基礎的鏡像管理。

圖中給出了四種角色,在 Harbor 工作流程中具有不同的許可權:

  • Admin :具有所有許可權
  • Developers:具有 push 與 pull 公開和私有項目鏡像的許可權
  • Guests:具有 pull 公開和私有項目鏡像的許可權
  • Anonymous:具有 pull 公開項目鏡像的許可權

Harbor 具有如下特性:

  • 基於角色的訪問控制 :用戶與 Docker 鏡像倉庫通過項目進行組織管理,一個用戶在不同的項目里具有不同的許可權。
  • 鏡像複製 : 支持在多個 Registry 實例中複製(同步)鏡像,尤其適合於負載均衡,高可用的場景。
  • 圖形化用戶界面 : 支持通過瀏覽器來瀏覽,檢索 Docker 鏡像倉庫,管理項目。
  • AD/LDAP 支持 : 支持集成企業內部已有的 AD/LDAP,用於鑒權認證管理。也提供了高級的安全特性,諸如用戶管理,訪問控制和活動日誌等。
  • RESTful API : RESTful API 實現對 Harbor 更多操控的介面,與其它管理軟體集成變得更容易。
  • 部署簡單 : 提供在線和離線兩種安裝方式。

總結

本文是 AI 計算系列的收尾篇,在 AI 計算:從單機到集群(上)和 AI 計算:從單機到集群(中)基礎上,擴展介紹平台的整體架構實現,並選擇架構中的部分子系統做詳細的描述。在本文介紹完成之後,大家應該具有這樣一個概念:一個高效完備的平台僅僅具有計算調度系統的功能是不夠的,需要有相應的高 IO 和高可靠性的分散式存儲平台與之相匹配。除此之外,還需要用戶友好的平台控制中心,包括各種提供平台支撐的管理系統和監控系統等。

AI 計算系列三篇文章分享暫時告一段落,由於篇幅限制,很多內容沒有機會詳細展開和闡述,但是希望大家能夠通過這三篇介紹,窺一斑而見全豹,了解面向 AI 計算的高效平台的基本概念,進而能夠幫助大家實現從單機到集群,再到完備高效計算平台的目標。後續有機會我們會再次為大家介紹 AI 計算平台相關內容。


參考

  • github.com/prometheus/p
  • github.com/vmware/harbo
  • http://lustre.org
  • github.com/google/cadvi
  • github.com/grafana/graf

推薦閱讀:

TAG:科技 | 計算理論 | 人工智慧 |