NVIDIA 使用容器來開發、測試、基準測試和部署深度學習( DL )框架和 HPC 應用程序。大約兩年前,我們用 NVIDIA -Docker 大規模地寫了 構建和部署 GPU 容器 。從那時起, NVIDIA -Docker 被下載了近 200 萬次。許多客戶使用 NVIDIA -Docker 將 NVIDIA 集裝箱化并運行 GPU 加速的工作負載。
NVIDIA 通過 NVIDIA GPU 云( NGC )提供 GPU 加速容器,用于 DGX 系統、公共云基礎設施,甚至是帶有 GPUs 的本地工作站。 NVIDIA -Docker 是這些計劃的關鍵基礎技術。
除了 Docker 之外,容器技術被用于 DL 和 HPC 工作負載的不斷發展的用例集,這使得我們從根本上重新思考我們現有的 NVIDIA -Docker 架構。我們的主要目標不僅追求不同容器運行時的可擴展性,而且還追求容器編排系統的可擴展性。
這里介紹的 NVIDIA 容器運行時是我們的下一代 GPU 感知容器運行時。它與 Docker 使用的 Open Containers Initiative ( OCI )規范和其他流行的容器技術兼容。
您將了解到 NVIDIA 容器運行時組件,以及如何擴展它以支持多個容器技術。讓我們檢查一下新運行時的體系結構和優點,展示一些新特性,并介紹一些使用 Docker 和 LXC 部署 GPU 加速應用程序的示例。
NVIDIA 集裝箱運行時間
NVIDIA 在 2016 年設計了 NVIDIA -Docker ,以實現 Docker 映像中的可移植性,利用 NVIDIA GPUs 。它允許與驅動程序無關的 CUDA 映像,并提供一個 Docker 命令行包裝器,在啟動時將驅動程序的用戶模式組件和 GPU 設備文件裝入容器中。
在 NVIDIA -Docker 的生命周期中,我們意識到架構缺乏靈活性,原因如下:
與 Docker 的緊密集成不允許將來支持其他容器技術,如 LXC 、 CRI-O 和其他運行時
我們希望利用 Docker 生態系統中的其他工具–例如 撰寫 (用于管理由多個容器組成的應用程序)
在 Kubernetes 和 Swarm 等編排器中支持 GPUs 作為一級資源
改進對 GPUs 的容器運行時支持,特別是自動檢測用戶級 NVIDIA 驅動程序庫, NVIDIA 內核模塊、設備排序、兼容性檢查和 GPU 功能,如圖形、視頻加速
因此,重新設計的 NVIDIA -Docker 將對 GPUs 的核心運行時支持轉移到一個名為 libnvidia-container 的庫中。該庫依賴于 Linux 內核原語,并且相對于更高的容器運行時層是不可知的。這使得 GPU 支持很容易擴展到不同的容器運行時,如 Docker 、 LXC 和 CRI-O 。該庫包括一個命令行實用程序,還提供了一個 API ,以便將來集成到其他運行時中。我們構建的用于集成到各種運行時的庫、工具和層統稱為 NVIDIA 容器運行時。
在接下來的幾節中,您將了解到 Docker 和 LXC 的集成。
Docker 支持
在深入研究 NVIDIA 容器運行時與 Docker 的集成之前,讓我們簡單看看 Docker 平臺是如何演變的。
自 2015 年以來, Docker 一直在捐贈其容器平臺的關鍵組件,首先是開放容器倡議( OCI )規范和一個名為 runc 的輕量級容器運行時規范的實現。 2016 年末, Docker 還捐贈了一個管理容器生命周期和包裝 OCI / runc 的守護程序 containerd 。 containerd 守護進程處理圖像的傳輸、容器的執行(使用 runc )、存儲和網絡管理。它被設計成嵌入到更大的系統中,比如 Docker 。關于這個項目的更多信息可以在官方網站 網站 上找到。
圖 1 顯示了 libnvidia-container 如何集成到 Docker 中,特別是在 GPU 層。為了在 Docker 中啟用 nvidia-container-runtime-hook 容器,我們使用了一個名為 nvidia-container-runtime-hook 到 runc 的定制 OCI 預啟動鉤子(有關鉤子的更多信息可以在 OCI 運行規范 中找到)。在 runc 中添加預啟動鉤子需要我們用 Docker 注冊一個新的與 OCI 兼容的運行時(使用– runtime 選項 )。在創建容器時,預啟動鉤子檢查容器是否啟用了 GPU (使用環境變量),并使用容器運行庫向容器公開 NVIDIA GPUs 。
圖 1 NVIDIA 容器運行時與 Docker 的集成
runc 層的集成還允許靈活地支持其他 OCI 運行時,如 CRI-O 。 containerd 的 1 。 1 版增加了對 Kubernetes 中容器運行時接口( CRI )的支持;上周 Kubernetes 宣布 通過 CRI 插件實現了 containerd 集成的普遍可用性。 NVIDIA 運行時的新架構可以很容易地支持 Kubernetes 運行時的任何一種選擇。這種靈活性非常重要,因為我們與社區密切合作,使 Kubernetes 的 GPU 支持 成為一流的。
環境變量
NVIDIA 容器運行時使用容器映像中的環境變量指定 GPU 加速容器。
NVIDIA _可視設備:可在容器內訪問 GPUs 的控件。默認情況下,容器可以訪問所有 GPUs 。
NVIDIA _驅動程序功能:控制哪些驅動程序特性(例如計算、圖形)暴露到容器中。
NVIDIA U 需要 u *:邏輯表達式,用于定義容器支持的配置上的約束(例如最小 CUDA 、驅動程序或計算能力)。
如果沒有檢測到環境變量(在 Docker 命令行或圖像中),則使用默認的 runc 。您可以在 NVIDIA 容器運行時 文檔 中找到有關這些環境變量的更多信息。這些環境變量已經在 NVIDIA 的 官方的 CUDA 容器中設置。
安裝
您的系統必須滿足以下先決條件,才能在 Docker 中開始使用 NVIDIA 容器運行時。
支持 您的發行版的 Docker 版本。跟隨 Docker 的官方 說明書 。
最新的 NVIDIA 驅動程序。使用 程序包管理器 安裝 cuda-drivers 包,或者使用驅動程序下載 網站 中的安裝程序。請注意,使用 cuda-drivers 包可能無法在 Ubuntu 18.04 LTS 系統上運行。
要開始使用帶有 Docker 的 NVIDIA 容器運行時,可以使用 NVIDIA -docker2 安裝程序包,也可以手動使用 設置 運行時和 Docker 引擎。 nvidia-docker2 軟件包包括一個自定義的 daemon.json 文件,用于將 NVIDIA 運行時注冊為 Docker 的默認運行時,以及一個向后兼容 NVIDIA -Docker 1. 0 的腳本。
如果安裝了 NVIDIA -docker 1.0 ,則需要在安裝 NVIDIA 運行時之前刪除它和任何現有的 GPU 容器。請注意,以下安裝步驟適用于 Debian 發行版及其衍生產品。
$ docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f $ sudo apt-get purge -y nvidia-docker
現在,讓我們添加包存儲庫并刷新包索引。
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update
然后使用nvidia-docker2
包安裝各個組件并重新加載 Docker 守護程序配置。
$ sudo apt-get install -y nvidia-docker2 $ sudo pkill -SIGHUP dockerd
運行以下命令行實用程序( CLI )以驗證 NVIDIA 驅動程序和運行時是否已正確安裝在您的系統上(作為安裝程序包的一部分提供)。運行時 CLI 提供有關系統中檢測到的驅動程序和設備的信息。在本例中,運行庫已正確檢測并枚舉了系統中的 4 個 NVIDIA Tesla v100 。
$ sudo nvidia-container-cli--load-kmods info NVRM version: 396.26 CUDA version: 9.2 Device Index: 0 Device Minor: 2 Model: Tesla V100-SXM2-16GB GPU UUID: GPU-e354d47d-0b3e-4128-74bf-f1583d34af0e Bus Location: 00000000:00:1b.0 Architecture: 7.0 Device Index: 1 Device Minor: 0 Model: Tesla V100-SXM2-16GB GPU UUID: GPU-716346f4-da29-392a-c4ee-b9840ec2f2e9 Bus Location: 00000000:00:1c.0 Architecture: 7.0 Device Index: 2 Device Minor: 3 Model: Tesla V100-SXM2-16GB GPU UUID: GPU-9676587f-b418-ee6b-15ac-38470e1278fb Bus Location: 00000000:00:1d.0 Architecture: 7.0 Device Index: 3 Device Minor: 2 Model: Tesla V100-SXM2-16GB GPU UUID: GPU-2370332b-9181-d6f5-1f24-59d66fc7a87e Bus Location: 00000000:00:1e.0 Architecture: 7.0
nvidia-container-cli 檢測到的 CUDA 版本驗證主機上安裝的 NVIDIA 驅動程序是否足以運行基于特定 CUDA 版本的容器。如果存在不兼容,運行時將不啟動容器。有關 CUDA 兼容性和最低驅動程序要求的更多信息,請參見 在這里 。
現在,讓我們嘗試用 Docker 運行一個 GPU 容器。這個例子提取 Docker Hub 存儲庫 上可用的 NVIDIA CUDA 容器,并在容器內運行 nvidia-smi 命令。
$ sudo docker run --rm --runtime=nvidia -ti nvidia/cuda root@d6c41b66c3b4:/# nvidia-smi Sun May 20 22:06:13 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.26 Driver Version: 396.26 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1B.0 Off | Off | | N/A 41C P0 34W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | Off | | N/A 39C P0 35W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-SXM2... On | 00000000:00:1D.0 Off | Off | | N/A 39C P0 38W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 | | N/A 42C P0 38W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
運行 GPU 集裝箱
現在讓我們看一些運行更復雜的 GPU 應用程序的例子。 NVIDIA 為 深度學習 和 NGC 注冊 上的 HPC 提供了多種預制容器。
深度學習框架容器
這個例子使用 NGC 提供的 PyTorch 深度學習框架容器來訓練一個 deep 神經網絡 。您需要打開一個免費的 NGC 帳戶才能訪問最新的深度學習框架和 HPC 容器。 NGC 文件 概述了開始所需的步驟。
本例使用了 NVIDIA_VISIBLE_DEVICES 變量,僅向容器公開兩個 GPUs 。
$ sudo docker run -it --runtime=nvidia --shm-size=1g -e NVIDIA_VISIBLE_DEVICES=0,1 --rm nvcr.io/nvidia/pytorch:18.05-py3 Copyright (c) 2006 Idiap Research Institute (Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz) All rights reserved. Various files include modifications (c) NVIDIA CORPORATION. All rights reserved. NVIDIA modifications are covered by the license terms that apply to the underlying project or file.
在容器中運行nvidia-smi
命令,驗證只有兩個 GPUs 可見。
root@45cebefa1480:/workspace# nvidia-smi Mon May 28 07:15:39 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.26 Driver Version: 396.26 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1B.0 Off | 0 | | N/A 39C P0 36W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 | | N/A 38C P0 35W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ root@45cebefa1480:/workspace#
嘗試運行容器附帶的 MNIST 培訓示例:
root@45cebefa1480:/workspace/examples/mnist# python main.py Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz Processing... Done! main.py:68: UserWarning: Implicit dimension choice for log_softmax has been deprecated. Change the call to include dim=X as an argument. return F.log_softmax(x) main.py:90: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number 100. * batch_idx / len(train_loader), loss.data[0])) Train Epoch: 1 [0/60000 (0%)] Loss: 2.373651 Train Epoch: 1 [640/60000 (1%)] Loss: 2.310517 Train Epoch: 1 [1280/60000 (2%)] Loss: 2.281828 Train Epoch: 1 [1920/60000 (3%)] Loss: 2.315808 Train Epoch: 1 [2560/60000 (4%)] Loss: 2.235439 Train Epoch: 1 [3200/60000 (5%)] Loss: 2.234249 Train Epoch: 1 [3840/60000 (6%)] Loss: 2.226109 Train Epoch: 1 [4480/60000 (7%)] Loss: 2.228646 Train Epoch: 1 [5120/60000 (9%)] Loss: 2.132811
OpenGL 圖形容器
如前幾節所述, NVIDIA 容器運行時現在為運行 OpenGL 和 EGL 應用程序提供了支持。下一個例子使用 OpenGL 構建并運行 多體問題 模擬。使用 NVIDIA 吉特實驗室 上提供的示例 Dockerfile 來構建容器。
復制 Dockerfile 并構建 多體問題 示例
$ docker build -t nbody .
允許 root 用戶訪問正在運行的 X 服務器
$ xhost +si:localuser:root
運行[VZX129 連續樣本
$ sudo docker run --runtime=nvidia -ti --rm -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix nbody
圖 2 用 Docker 運行 N-bodyCUDA / OpenGL 示例
編寫 Docker
最后一個例子使用 Docker Compose 展示了使用 NVIDIA 容器運行時啟動多個 GPU 容器是多么容易。這個例子將啟動 3 個容器—— OpenGL 的 多體問題 示例、一個 EGL 示例( 釘 來自 Mesa )和一個運行 NVIDIA -smi 公司 命令的簡單容器。
安裝 Docker Compose
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
從 NVIDIA Gitlab 克隆可用的樣本
$ git clone https://gitlab.com/nvidia/samples.git
寫一個docker-compose.yml
來指定三個容器和環境。使用您選擇的文本編輯器復制以下內容:
version: '2.3' services: nbody: build: samples/cudagl/ubuntu16.04/nbody runtime: nvidia environment: - DISPLAY volumes: - /tmp/.X11-unix:/tmp/.X11-unix peglgears: build: samples/opengl/ubuntu16.04/peglgears runtime: nvidia nvsmi: image: ubuntu:18.04 runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all command: nvidia-smi
允許 root 用戶訪問正在運行的 X 服務器(對于多體問題示例)
$ xhost +si:localuser:root
最后,啟動容器
$ sudo docker-compose up
您的控制臺輸出可能如下所示
Building nbody Step 1/6 : FROM nvidia/cudagl:9.0-base-ubuntu16.04 ---> b6055709073e Step 2/6 : ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES},display ---> Using cache ---> ebd1c003a592 Step 3/6 : RUN apt-get update && apt-get install -y --no-install-recommends cuda-samples-$CUDA_PKG_VERSION && rm -rf /var/lib/apt/lists/* ---> Using cache ---> 1987dc2c1bbc Step 4/6 : WORKDIR /usr/local/cuda/samples/5_Simulations/nbody ---> Using cache ---> de7af4fbb03e Step 5/6 : RUN make ---> Using cache ---> a6bcfb9a4958 Step 6/6 : CMD ./nbody ---> Using cache ---> 9c11a1e93ef2 Successfully built 9c11a1e93ef2 Successfully tagged ubuntu_nbody:latest WARNING: Image for service nbody was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. Starting ubuntu_nbody_1 ... done Starting ubuntu_nvsmi_1 ... done Starting ubuntu_peglgears_1 ... done Attaching to ubuntu_nvsmi_1, ubuntu_peglgears_1, ubuntu_nbody_1 ubuntu_nvsmi_1 exited with code 0 peglgears_1 | peglgears: EGL version = 1.4 peglgears_1 | peglgears: EGL_VENDOR = NVIDIA peglgears_1 | 246404 frames in 5.0 seconds = 49280.703 FPS ubuntu_peglgears_1 exited with code 0
支持帶 LXC 的 GPU 容器
Linux 容器(或 LXC 公司 )是一個操作系統級的虛擬化工具,用于創建和管理系統或應用程序容器。 Docker 的早期版本使用 LXC 作為底層容器運行時技術。 LXC 提供了一套高級的工具來管理容器(例如模板、存儲選項、直通設備、 autostart 等),并為用戶提供了大量的控制。在參考文獻中,我們在本文末尾的參考文獻中提供了來自 Canonical 和 Cisco 的工程師關于 LXC 的 GTC 2018 演講的鏈接。
LXC 支持非特權容器(使用 Linux 內核中的用戶名稱空間特性)。在 HPC 環境中部署容器的上下文中,這是一個巨大的優勢,在這種環境中,用戶可能沒有運行容器的管理權限。 LXC 還支持 Docker 圖像的導入,下面我們將詳細介紹一個示例。
NVIDIA 繼續與 LXC 社區密切合作,開發上游補丁,以添加 GPU 支持。 4 月初發布的 lxc3 。 0 。 0 包括使用 NVIDIA 運行時對 GPUs 的支持。有關更多信息和演示,請參閱 Canonical 的新聞 郵遞 。
如圖所示, VX134 是如何將容器集成到 VX12 中的。
圖 3 NVIDIA 容器運行時與 LXC 的集成
讓我們看看用 LXC 運行一個簡單的 CUDA 容器。這個例子展示了如何使用默認的 LXC OCI 模板 從 Docker Hub 上可用的 OCI 映像(使用諸如 Skopo 和 擦除 )創建應用程序容器。
首先,讓我們為工具設置存儲庫:
$ sudo add-apt-repository ppa:ubuntu-lxc/lxc-stable $ sudo apt-add-repository ppa:projectatomic/ppa
安裝 LXC 和相關工具,如 skopeo :
$ apt-get install libpam-cgfs lxc-utils lxcfs lxc-templates skopeo skopeo-containers jq libnvidia-container-tools
肥皂套裝:
$ sudo curl -fsSL -o /usr/local/bin/umoci https://github.com/openSUSE/umoci/releases/download/v0.4.0/umoci.amd64 $ sudo chmod ugo+rx /usr/local/bin/umoci
為每個用戶設置用戶、組 ID 和虛擬以太網接口。請參閱 LXC文檔中有關創建非特權容器的內容。為了方便起見,這里提供了示例腳本。
$ sudo curl -fsSL -o /usr/local/bin/generate-lxc-perms https://gist.githubusercontent.com/3XX0/ef77403389ffa1ca85d4625878706c7d/raw/4f0d2c02d82236f74cf668c42ee72ab06158d1d2/generate-lxc-perms.sh $ sudo chmod ugo+rx /usr/local/bin/generate-lxc-perms $ sudo curl -fsSL -o /usr/local/bin/generate-lxc-config https://gist.githubusercontent.com/3XX0/b3e2bd829d43104cd120f4258c4eeca9/raw/890dc720e1c3ad418f96ba8529eae028f01cc994/generate-lxc-config.sh $ sudo chmod ugo+rx /usr/local/bin/generate-lxc-config
現在,為每個容器設置 GPU 支持:
$ sudo tee /usr/share/lxc/config/common.conf.d/nvidia.conf <<< 'lxc.hook.mount = /usr/share/lxc/hooks/nvidia' $ sudo chmod ugo+r /usr/share/lxc/config/common.conf.d/nvidia.conf
作為一次性設置,請將權限和配置設置為常規用戶:
$ sudo generate-lxc-perms $ generate-lxc-config
使用lxc-create
從 NVIDIA 的 Docker Hub 存儲庫上的 CUDA 映像下載并創建一個 CUDA 應用程序容器。
$ lxc-create -t oci cuda -- -u docker://nvidia/cuda Getting image source signatures Copying blob sha256:297061f60c367c17cfd016c97a8cb24f5308db2c913def0f85d7a6848c0a17fa 41.03 MB / 41.03 MB [======================================================] 0s Copying blob sha256:e9ccef17b516e916aa8abe7817876211000c27150b908bdffcdeeba938cd004c 850 B / 850 B [============================================================] 0s Copying blob sha256:dbc33716854d9e2ef2de9769422f498f5320ffa41cb79336e7a88fbb6c3ef844 621 B / 621 B [============================================================] 0s Copying blob sha256:8fe36b178d25214195af42254bc7d5d64a269f654ef8801bbeb0b6a70a618353 851 B / 851 B [============================================================] 0s Copying blob sha256:686596545a94a0f0bf822e442cfd28fbd8a769f28e5f4018d7c24576dc6c3aac 169 B / 169 B [============================================================] 0s Copying blob sha256:aa76f513fc89f79bec0efef655267642eba8deac019f4f3b48d2cc34c917d853 6.65 MB / 6.65 MB [========================================================] 0s Copying blob sha256:c92f47f1bcde5f85cde0d7e0d9e0caba6b1c9fcc4300ff3e5f151ff267865fb9 397.29 KB / 397.29 KB [====================================================] 0s Copying blob sha256:172daef71cc32a96c15d978fb01c34e43f33f05d8015816817cc7d4466546935 182 B / 182 B [============================================================] 0s Copying blob sha256:e282ce84267da687f11d354cdcc39e2caf014617e30f9fb13f7711c7a93fb414 449.41 MB / 449.41 MB [====================================================] 8s Copying blob sha256:91cebab434dc455c4a9faad8894711a79329ed61cc3c08322285ef20599b4c5e 379.37 MB / 552.87 MB [=====================================>-----------------] Writing manifest to image destination Storing signatures Unpacking the rootfs ? rootless{dev/agpgart} creating empty file in place of device 10:175 ? rootless{dev/audio} creating empty file in place of device 14:4 ? rootless{dev/audio1} creating empty file in place of device 14:20
作為普通用戶,我們可以在容器內運行nvidia-smi
:
$ lxc-execute cuda root@cuda:/# nvidia-smi Mon May 28 21:48:57 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.26 Driver Version: 396.26 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1B.0 Off | 0 | | N/A 40C P0 36W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 | | N/A 39C P0 35W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-SXM2... On | 00000000:00:1D.0 Off | 0 | | N/A 39C P0 38W / 300W | 0MiB / 16160MiB | 1% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 | | N/A 40C P0 38W / 300W | 0MiB / 16160MiB | 1% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
結論
本文介紹了 NVIDIA 容器運行時,以及如何將其輕松集成到容器運行時和編排生態系統中,以啟用 GPU 支持。現在就開始用它來構建和運行 GPU 容器吧!安裝程序包可用于 品種 的 Linux 發行版。 NVIDIA -Docker 1 。 0 已被棄用,不再被積極支持。我們強烈建議用戶在使用 Docker 時升級到新的 NVIDIA 運行時。未來的路線圖包括許多令人興奮的特性,包括對 Vulkan 、 CUDA MPS 、集裝箱驅動程序等的支持。
關于作者
Jonathan Calmels 是 NVIDIA 的系統軟件工程師。他的工作主要集中在 GPU 數據中心軟件和用于深度學習的超大規模解決方案。喬納森擁有計算機科學與工程碩士學位。
Felix Abecassis 是 NVIDIA 的系統軟件工程師,致力于使 GPU 應用程序更易于在數據中心部署和管理。 GPU 專注于機器學習支持框架。他擁有法國學校 EPITA 的計算機科學碩士學位。
Pramod Ramarao 是 NVIDIA 加速計算的產品經理。他領導 CUDA 平臺和數據中心軟件的產品管理,包括容器技術。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5021瀏覽量
103252 -
gpu
+關注
關注
28文章
4753瀏覽量
129057
發布評論請先 登錄
相關推薦
評論