亞馬遜、阿里雲等提供的GPU計算服務,底層是個什麼樣的原理?
問題1:虛擬機有辦法使用cuda,從而加速tensorflow、caffe等框架嗎?
目前只知道docker可以,虛擬機好像不行吧?他們用的不是虛擬機嗎?問題2:多個人動態共享多個GPU資源,是什麼樣的分配方案?怎樣分配?
用的是虛擬機,可參考 Xen - Wikipedia
虛擬化的話,常見的有Xen和VMware EXSI。不知是什麼原因,伺服器大多選了Xen。(也許是vmware報價太高?
Linux系統下一切皆文件,顯卡驅動也不例外。因此不虛擬化只隔離的方案也是有的。
nvidia-docker的話,更適合於部署應用。資源分離上,LXC是一個不錯的選擇。 @陳樂群 有一篇博文介紹了這個,https://abcdabcd987.com/setup-shared-gpu-server-for-labs/ ,細緻的介紹了實踐過程。「亞馬遜、阿里雲等提供的GPU計算服務,底層是個什麼樣的原理?」
單純虛擬化技術的話,建議看看 Xen (虛擬機體驗之 Xen 篇 -- 令人腦洞大開的奇異架構)和 KVM(KVM虛擬化學習總結之簡介 - 符方春的個人頁面)介紹。
GPU 虛擬化屬於 PCIe 設備虛擬化,有多種多樣的實現。
先看亞麻的 G2 實例(Amazon EC2實例類型-EC2虛擬雲伺服器託管-AWS雲服務):
這裡用的 GPU 為 Grid K2,是 Nvidia 專門面向虛擬化推出的,詳細資料看 http://www.nvidia.cn/content/grid/pdf/GRID_K2_BD-06580-001_v02.pdf 。
亞麻後續推出的 P2 實例
使用了 K80 GPU,這個只能是 pass through 方式。
為什麼 Nvidia 面向虛擬化的 K2 會被面向計算的 K80 取代?有待真相帝解密。
阿里雲最早是物理機,看下 G2 和 G4 的情況(高性能計算HPC_數據預測_數據分析-阿里雲):
物理機沒有多用戶共享,若是小白用戶,程序跑不滿計算資源,錢就嘩嘩溜走了。
後來看到阿里雲又推出了帶 GPU 的 ECS 實例(阿里雲 - 彈性計算)
看上去就是把上面的 G4 物理機做了虛擬化之後的產物。(G2 虛擬化的產物是啥?)。由於 M40 也是 Nvidia 面向計算的產品,虛擬化也只能走 pass through 了。
除了 Nvidia GPU,阿里雲也有 AMD GPU,即 GA1 實例:
A 卡在虛擬化支持方面貌似比 N 卡更進一步:
http://cms-bucket.nosdn.127.net/catchpic/2/2f/2f2f6febb4daecc6e51e9c5f7fea7e7b.png?imageViewthumbnail=550x0
支持 SR-IOV 虛擬化,就能真正實現多用戶共享同一塊 GPU 了。網上找了一張 pass through 和 SR-IOV 的區別圖,以網卡作為例子:
圖片來源:KVM 介紹(4):I/O設備直接分配和 SRIOV [KVM PCI/PCIe PassThrough SRIOV]
「問題1:虛擬機有辦法使用cuda,從而加速tensorflow、caffe等框架嗎?」
如前所述,虛擬機可以通過 pass through 或 SR-IOV 使用 host GPU 資源,看到的設備與你在 host 上看到的是相同型號設備,所以可以像在 host 物理機上一樣安裝驅動、CUDA Toolkit、Caffe/TensorFlow……。
pass through 是簡單粗暴的解法,不支持多用戶共享,也不支持 host 和 vm 共享,即,一旦 pass through 到 vm,你 host 上一切 GPU 使用必須停止(拔掉 pass through GPU 外接顯示器,卸載驅動),否則會引起宕機。
「目前只知道docker可以,虛擬機好像不行吧?他們用的不是虛擬機嗎?」
docker 裡面 GPU 用的也是 pass through,和虛擬機 pass through 類似,不支持多用戶共享。
「問題2:多個人動態共享多個GPU資源,是什麼樣的分配方案?怎樣分配?」
多個人動態共享單個 GPU 資源就是 SR-IOV 要做的事情。目前顯卡對 SR-IOV 的支持還比較初級,估計分配方案也是固定的,有待進一步技術文檔核實。
多個人動態共享多個 GPU 資源就是 MR-IOV 技術,目前 GPU 還不支持。
更正一下@李沐
的太簡潔的回答。AWS 是 XEN。ALIYUN 是 KVM 虛擬化+ pci-e透傳,也有物理機。AWS 是 xen. 因為resource 有限,如果你需要開給support 開ticket 申請。大概三天能下來。
回答第二個問題,阿里亞馬遜和英偉達有合作,基於英偉達GRID解決方案提供基於英偉達GPU的顯卡虛擬化方案,GRID代理VM和GPU的對話。 GRID請見:GRID GPU | GPU 虛擬化 | NVIDIA GRID | NVIDIA
pcie 設備可以從物理機到虛擬機內透傳 passthrough
虛擬機不可以使用CUDA
肯定是虛擬機吧。
推薦閱讀:
※如何配一台深度學習工作站,主要用於CNN圖像分類,預算2W以下。
?
※有沒有雙顯卡筆記本在Ubuntu下使用cuda的解決方案?
※有哪些適用於個人或小型團隊開發者的物理引擎?
※IOS 並行編程 是學習 OpenCL還是 CUDA?
※你有什麼特別的GPU編程debug技巧?
TAG:雲計算 | CUDA | 深度學習DeepLearning |