148_通過部署NVIDIA Docker組件,實現在容器中使用vGPU/GPU設備

2021-12-21 vGPU

我們今天來看一下如何通過NVIDIA Docker組件來實現Docker容器對GPU使用。由於vGPU和物理GPU一樣提供了對容器的支持,所以此次的實驗環境是基於Ubuntu 20.04.3 LTS 虛擬機+ M60-8Q vGPU。

首先在帶有vGPU的虛擬機中安裝Ubuntu作業系統,我們這裡選擇的是安裝Server版本的Ubuntu(默認不會安裝圖形界面)。

下載地址:http://www.releases.ubuntu.com/20.04/

Ubuntu安裝完成以後,我們來對環境做一個基本的檢查。

1. 確認當前OS的版本以及內核版本信息

2. 檢查當前的vGPU設備是否被正常識別

從上圖我們可以看出,當前系統加載了nvidiafb和nouveau的驅動模塊。但是這兩個模塊並沒有被vGPU使用,也許是沒有安裝圖形界面的原因。所以這裡也不需要額外禁用nouveau模塊,直接安裝驅動即可。

3.基本信息確認正常以後,我們需要確保gcc和make已經安裝在系統中,因為安裝NVIDIA的vGPU驅動需要。如果沒有安裝則使用apt install gcc make 安裝即可。

4.驅動安裝完畢以後,執行nvidia-smi來確認驅動是否正常安裝

使用命令#./NVIDIA-Linux-x86_64-470.82.01-grid.run 進行驅動安裝

nvidia-smi信息輸出正常,則說明驅動已經正常安裝。

此外我們還可以再次用lspci命令確認當前vGPU使用的是否是剛才安裝的驅動。我們看到下圖中kernel driver in use: nvidia 字樣,說明剛才安裝的驅動已經加載並被使用中。

註:由於是vGPU的環境,所以還需要為vGPU配置License,以使得其驅動功能正常。具體配置vGPU License的步驟就不在此闡述,可以參考公眾號內的專門介紹License配置的文章。

在基礎環境配置完畢以後,接下來我們需要安裝docker,其實在安裝Ubuntu 20.04.3 Server版本的時候是可以選擇隨系統安裝docker的,我們這裡選擇單獨安裝docker。

5.安裝docker的方法很簡單,建議參考官方文檔的步驟即可。

https://docs.docker.com/engine/install/ubuntu/

步驟如截圖:

成功安裝後可以運行一個最簡單的hello world容器來確認docker是否正常工作。看到下圖的界面則說明docker已經成功安裝。

6.最後我們來安裝NVIDIA Docker組件,和安裝docker類似我們只需要複製官網的相關命令即可完成安裝,步驟截圖如下:

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

成功安裝nvidia-docker組件以後,我們同樣來運行一個容器來確認是否可以調用vGPU。

1.     首先我們通過命令建立一個名為test的容器

# docker run -it --gpus all --name testnvidia/cuda:11.4.2-base-ubuntu20.04

其中—gpus all 代表此容器使用當前環境的所有GPU資源

2.     成功建立容器以後,會直接進入到此容器中,我們在容器內執行nvidia-smi可以成功輸出GPU信息,則表明容器內已經可以正常使用到GPU資源了。

相關焦點

  • 一鍵搭建深度學習平臺,基於Docker/Mesos和NVIDIA GPU詳細教程
    docker run `curl -s http://localhost:3476/docker/cli` --rm nvidia/cuda:7.5  nvidia-smi          或者:docker run --volume-driver=nvidia-docker --volume=nvidia_driver_352.39:/usr/local
  • Docker中部署TensorFlow GPU
    Docker中部署TensorFlow GPUDocker 是在 Linux 上啟用 TensorFlow GPU 支持的最簡單方法,因為只需在主機上安裝
  • 巧用 Docker Compose 管理 GPU 資源
    在容器中使用 GPU 一直是使用 Compose 的一個痛點!在面向 AI 開發的大趨勢下,容器化可以將環境無縫遷移,將配置環境的成本無限降低。但是,在容器中配置 CUDA 並運行 TensorFlow 一段時間內確實是個比較麻煩的時候,所以我們這裡就介紹和使用它。
  • Docker容器中使用GPU
    背景容器封裝了應用程式的依賴項,以提供可重複和可靠的應用程式和服務執行,而無需整個虛擬機的開銷。
  • 踢掉Docker 後,Kubernetes 還能歡快地跑 GPU?
    Kubernetes 集群中 Docker 如何使用 GPU 早就被說爛了,那麼以 Containerd 作為容器運行時的集群是如何使用 GPU的,有人知道嗎?
  • 教程 | Docker Compose + GPU + TensorFlow 所產生的奇妙火花
    我們實際上想要達到的:通過一個指令管理我們的應用程式狀態(運行、停止、移除)把所有的運行標誌保存到我們能夠提交到 git repo 的單個配置文件忘記 GPU 驅動程序版本不匹配和共享在生產工具比如 Kubernetes 或 Rancher 中使用 GPU-ready 的容器因此,這裡是我們強烈推薦給每個深度學習者的工具清單
  • 【長篇博文】Docker學習筆記與深度學習環境的搭建和部署(二)
    1.5、Rancher與Rancher的安裝和部署本文將使用此Rancher工具,其他圖形化界面請選擇適合自己的進行開發。Rancher是一個開源的企業級全棧化容器部署及管理平臺。Rancher為容器提供一攬子基礎架構服務:CNI兼容的網絡服務、存儲服務、主機管理、負載均衡、防護牆Rancher讓上述服務跨越公有雲、私有雲、虛擬機、物理機環境運行,真正實現一鍵式應用部署和管理。
  • 基於 Kubernetes 的 GPU 類型調度實現
    同時,由於我們採用了多調度器的實現方式,所以方案中對於 Scheduler 組件的修改不影響現有集群和之後的版本升級,而 Kubelet 組件採用了向後兼容式修改,不影響已經在集群中運行的應用。Scheduler Extender 利用 Scheduler 組件的擴展性,負責調度容器中使用了 ResourceClass 資源對象的 Pod。
  • 如何使用 Docker 部署容器
    而不是安裝作業系統,然後安裝伺服器軟體,然後部署精心設計的應用程式或站點,您可以簡單地在一個獨立的包中開發所有內容,並使用單個命令將其推出。這是使用容器的眾多好處之一。它們使開發和部署周期變得異常高效。但是你如何部署這些容器?我想在這裡指導你完成這個過程。我們將專注於在Ubuntu Server 18.04上部署基本的NGINX Web伺服器作為容器。
  • docker日常使用指南
    這一些坑,大部分情況下都能通過docker這個工具幫我們方便的解決。因此學習docker是比較有價值的,同時,docker的使用也非常的簡單,核心的命令比較少。本文對自己使用中用到的一些方式進行總結,一些理解可能不完全正確,更詳細的可以去看官方文檔。1.基礎知識1.1 docker是什麼docker是一種容器技術,是一種沙盒技術。
  • 實驗室GPU管理神器Determined
    安裝nvidia-container-toolkit用於Docker容器內調用GPU(注意需要科學上網)curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -distribution=$(.
  • docker容器的啟動方式
    .更快速的啟動時間:傳統的虛擬機技術啟動應用服務往往需要數分鐘,而Docker 容器應用,由於直接運行於宿主內核,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。    .一致的運行環境:開發過程中一個常見的問題是環境一致性問題。
  • 誰是容器中的「戰鬥機」?Docker與Chef、LXC等容器對比
    雖然所有的軟體都可以安裝在由 LXC 或者 docker 管理的容器中,但是 docker 更傾向於在一個容器中運行一個應用。 自動構建 Docker 的容器是根據 dockerfile 構建的,你可以在構建 image 的過程根據需要中運行任何命令和程序。
  • PyCharm+Docker:打造最舒適的深度學習煉丹爐
    首先你需要滿足以下兩個必備條件: 使用PyCharm 專業版,記住一定是專業版(社區版不提供遠程服務) 在伺服器上安裝 docker 和 nvidia-docker 1.新建 docker container
  • Docker簡介與簡單使用
    至於給Docker的定義,我覺得還是直接引用吧,Docker是一個用Go語言開發的一個開源容器引擎,Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化
  • 容器到底是個啥?(附Docker學習資源匯總)
    Docker的構想是要實現「Build,Ship and Run Any App, Anywhere」,即通過對應用的封裝(Packaging)、分發 (Distribution)、部署(Deployment)、運行(Runtime)生命周期進行管理,達到應用組件「一次封裝,到處運行」的目的。
  • 基於VMware Bitfusion的GPU共享技術使用場景討論
    測試用例在本次測試中,我們驗證了以下用例:使用編輯器編寫python代碼,通過python命令直接運行運行python之後進入到交互命令行,運行相關命令使用Jupyter Notebook打開ipynb文件,並運行相關notebook使用Docker啟動Nvidia提供的容器鏡像,並進入容器內執行相應的python腳本
  • 通過容器化一個Python Web應用學習Docker容器技術
    Do not use it in a production deployment. Use a production WSGI server instead.比如以後臺方式運行上面的Web容器:$ docker run -d -p 8082:8082 --name flasky2 helloworldcc733dd4310d40a10fe8093411abb002dfe18e7737e58c047910a4836424f746如果想進入到一個正在運行的容器中做一些操作,可以通過docker exec指令:
  • GPU Mounter - 支持 GPU 熱掛載的 Kubernetes 插件
    GPU 容器化與 GPU 掛載GPU 掛載很好理解,即為容器或 Pod 掛載 GPU 資源,允許容器中的應用程式使用。在容器化的趨勢席捲各個領域的今天,深度學習也同樣無法 「倖免」。談到深度學習的容器化,GPU 掛載是一個繞不開的話題,為此 Docker、Kubernetes、Nvidia 都做出了很多貢獻:Nvidia 貢獻了 nvidia-docker、nvidia-container-runtime、k8s-deivice-plugin 等,支持在 Docker 和 Kubernetes 環境下使用
  • Docker+Kubernetes是容器創建與編排調度的利器
    部署虛擬伺服器的目的之一在於快速創建新的虛擬機實例。然而從網絡存儲當中複製鏡像需要花費大量時間,這些操作會延長啟動過程,無疑會限制系統靈活性。因此我們可以選擇使用容器技術,只需要通過簡單的觀察我們便能夠發現容器技術的出現是為了解決多作業系統/應用程式堆棧的問題。