技術分享:人工智能時代Cyborg組件提供vGPU加速
隨著OpenStack社區對AI和邊緣計算的布局,而加速計算在邊緣比在數據中心更為普遍,所以這又會加強OpenStack的地位,因此OpenStack在第17個版本迎來了Cyborg項目。
Cyborg項目起源於NFV acceleration management以及ETSI NFV-IFA 004 document,和OPNFV DPACC項目。Cyborg(以前稱為Nomad)是用於管理硬件和軟件加速資源(如 GPU、FPGA、CryptoCards和DPDK / SPDK)的框架,在Queens發布中首次亮相。特別是對於有 NFV workload的運營商,計算加速已經成為雲虛擬機的必備功能。通過Cyborg,運維者可以列出、識別和發現加速器,連接和分離加速器實例,安裝和卸載驅動。它也可以單獨使用或與Nova或Ironic結合使用。Cyborg可以通過Nova計算控制器或Ironic裸機控制器來配置和取消配置這些設備。
在加速器方面,Nova計算控制器現在可以將Workload部署到Nvidia和Intel的虛擬化GPU(AMD GPU正在開發)。加速器可用於圖形處理的場景(如虛擬桌面和工作站),還可以應用於集群上的通過虛擬化GPU以運行HPC或AI Workload的場景。
Cyborg組件架構
Cyborg API---應該支持有關加速器的基本操作,API支持以下接口:
- attach:連接現有的物理加速器或創建新的虛擬加速器,然後分配給虛擬機
- detach:分離現有物理加速器或釋放虛擬機的虛擬加速器
- list:列出所有附加的加速器
- update:修改加速器(狀態或設備本身)
- admin:CRUD操作無關的某些配置
Cyborg Agent---Cyborg agent將存在於計算主機以及可能使用加速器的其他主機上,agent具體的作用:
- 檢查硬件以找到加速器
- 管理安裝驅動程序,依賴關系和卸載驅動
- 將實例連接到加速器
- 向Cyborg服務器報告有關可用加速器,狀態和利用率的數據
-
硬件發現:每隔數秒就會掃描實例的加速器和現有加速器的使用級別,並將這些信息通過心跳消息報告給Cyborg服務器,以幫助管理調度加速器
-
硬件管理:Ansible將用於管理每個加速器的配置文件和加速器的Driver。install和uninstall特定的ansible playbook適配Cyborg所支持的硬件。在管理的硬件上進行的配置更改將通過運行不同配置的playbook作為底層實現。
- 實例連接:一旦產生一個實例需要連接到主機上的特定加速器,Cyborg服務器將向Cyborg agent發送消息。由於不同加速器之間的連接方法不同,因此agent需要不同的driver提供連接功能。
Cyborg-Conductor---Cyborg-db的數據庫查詢更新操作都需要通過向Cyborg-conductor服務發送RPC請求來實現,conductor負責數據庫的訪問權限控制,避免直接訪問數據庫。
openstack-Cyborg-generic-driver功能:
- 識別和發現附加的加速器後端
- 列出在後端運行的服務
- 將加速器附加到通用後端
- 從通用後端分離加速器。
- 列出附加到通用後端的加速器。
- 修改附加到通用後端的加速器。
Quata---cyborg resource quota,Cyborg的配額管理用於在構建虛擬機時管理用戶或項目對加速器的訪問。目前,項目或用戶可能擁有無限數量的加速資源,應該有一個限制,限制是可配置的。
Cyborg調用加速器過程
1.ronic監控網絡並發現新資源
2.新的主機通過pXE啟動並用Hypervisor初始化
3.Agent更新Nova和Neutron DB
4.Ironic agent根據存儲在swift / glance / glare中的比特流加載靜態區域
5.Nova agent被通知存在新的PCIe設備(來自SR-IOV的VF)並更新Nova DB
6.Nova根據用戶指令需要孵化一臺虛擬機並配備PR(vFPGA)
7.Nova過濾器找到可用資源並執行虛擬機創建/配置
8.VM cloud_init使用本地文件或Swift中的比特流加載PR---VM請求Cyborg從Glare加載PR
9.VF註冊並分配給虛擬機
10.VM應用程序訪問VF
總體來說,Cyborg的出現,在雲主機中支持 vGPU( 虛擬圖形處理單元 )的功能,這對於圖形密集型工作負載以及許多科學性的、人工智能和機器學習的工作負載來說是一項重要的能力。
技術分享:人工智能時代Cyborg組件提供vGPU加速