上一篇內(nèi)容為大家介紹了從 NVIDIA NGC 下載 DeepStream 6.1 的容器版鏡像到本地在 Jetson 上設(shè)備的基礎(chǔ)指令,不過(guò)在正式使用容器版 DeepStream6.1 之前,我們還是需要為入門用戶提供基本的使用方式與一些小技巧。
Jetson Orin 開(kāi)發(fā)套件內(nèi)置 64GB EMMC 存儲(chǔ),并且很容易擴(kuò)充 64G 甚至更大的 NVME 存儲(chǔ)設(shè)備,可以有非常充沛的空間,在這種情況下就非常推薦使用 Docker 容器技術(shù),能有效簡(jiǎn)化應(yīng)用軟件的安裝與調(diào)試工作,非常適合用來(lái)開(kāi)發(fā)與部署較為復(fù)雜的多功能智能應(yīng)用,并且在 NVIDIA NGC 上提供了非常豐富的 Docker 版本應(yīng)用鏡像文件,用戶只要一條指令便可輕松下載使用,這是邊緣計(jì)算非常重要的一項(xiàng)應(yīng)用技術(shù)。
Docker 是一種比較新的 “容器” 技術(shù),是 NVIDIA 近年來(lái)非常大力推廣的應(yīng)用重點(diǎn),越來(lái)越多的 GPU 開(kāi)發(fā)環(huán)境都以 Docker 鏡像(或稱為 “倉(cāng)” )形式提供,具備以下的優(yōu)點(diǎn)與特性:
1、輕量級(jí):這是相較于虛擬機(jī)的比對(duì),容器內(nèi)不需要獨(dú)立操作系統(tǒng),它是基于主機(jī)上的操作系統(tǒng),透過(guò)一些映射指令去指向資源路徑。大部分的容器鏡像都在數(shù)十 MB 到數(shù) GB 大小規(guī)模。
2、硬件調(diào)度能力:這是 NVIDIA 非常喜歡 Docker 容器技術(shù)的重點(diǎn)之一,虛擬機(jī)環(huán)境對(duì) GPU 支持能力并不好,得透過(guò)底層穿透(pass through)方式調(diào)用,但容易影響系統(tǒng)穩(wěn)定性。Docker 容器直接與操作系統(tǒng)交互運(yùn)作,只要主機(jī)上操作系統(tǒng)裝好 NVIDIA GPU 的驅(qū)動(dòng),甚至不需要安裝 CUDA 開(kāi)發(fā)包,在 Docker 容器內(nèi)就能輕松用上 GPU 并行計(jì)算的功能。
3、封裝完整:相較于 conda 或 virtualenv 這類環(huán)境虛擬技術(shù)而言,Docker 容器的封裝更為完整而且獨(dú)立,這在開(kāi)發(fā) Python 相關(guān)應(yīng)用時(shí)更加明顯,因?yàn)?Python 版本升級(jí)太頻繁,相關(guān)依賴包之間的版本牽動(dòng)關(guān)系復(fù)雜,而 Docker 容器的封裝就顯得非常有效,并且移植十分簡(jiǎn)便。
Docker 作為一個(gè)開(kāi)源的應(yīng)用容器引擎,允許開(kāi)發(fā)者很方便地打包應(yīng)用程序和依賴庫(kù)到可移植的容器中,然后發(fā)布到任何流行的 Linux 設(shè)備上,Docker 完全使用沙箱機(jī)制,容器之間相互獨(dú)立,不存在任何接口,因此,允許開(kāi)發(fā)者在同一臺(tái)機(jī)器上,運(yùn)行不同環(huán)境的應(yīng)用程序與服務(wù),大大簡(jiǎn)化應(yīng)用程序(或者服務(wù))的運(yùn)維操作,同時(shí)也提高了開(kāi)發(fā)與測(cè)試效率。
對(duì)于 CUDA 設(shè)備的調(diào)用,需要 NVIDIA 自行開(kāi)發(fā)的 nvidia-docker2 指令轉(zhuǎn)換插件的協(xié)助,在 x86 設(shè)備上都需要自行安裝 Docker 管理機(jī)制與 nvidia-docker2 界面,不過(guò) JetPack 都為 Jetson 安裝好了這兩個(gè)元件,我們只要使用就可以。
現(xiàn)在就開(kāi)始教大家如何使用 Docker 容器,以及從 NVIDIA NGC 中心下載可以在 Jetson 設(shè)備上使用的鏡像。
1、檢查 Docker 環(huán)境與修改儲(chǔ)存路徑:
用 JetPack 安裝好系統(tǒng)之后,直接輸入以下指令,就能檢查目前系統(tǒng)中 Docker 的所有狀態(tài)信息:
sudo docker info
可以看到一長(zhǎng)串關(guān)于 Docker 環(huán)境的內(nèi)容,由于信息量較大就不在這里單獨(dú)列出所有內(nèi)容。如果要單純查看版本號(hào),只要執(zhí)行以下指令就可以:
sudo docker version
現(xiàn)在會(huì)看到如下版本信息,包括用戶(Client)端與服務(wù)(Server)端:
如果要看最簡(jiǎn)單的版本信息,那么下面指令是最適合的:
sudo docker --version
要檢查目前 Docker 系統(tǒng)放置鏡像文件的路徑,可以執(zhí)行以下指令:
sudo docker info | grep -i root
系統(tǒng)預(yù)設(shè)的存放路徑為 /var/lib/docker,如果有自己添加的額外 NVME 存儲(chǔ)設(shè)備,可以在 /etc/docker/daemon.json 文件中添加以下指令,調(diào)整存放路徑:
# 文件 /etc/docker/daemon.json
{
"data-root": "<自己指定路徑>",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
修改完后執(zhí)行以下指令,讓新的設(shè)定值生效:
sudo systemctl daemon-reload
sudosystemctlrestartdocker.service
現(xiàn)在可以檢查看看存儲(chǔ)的路徑是否更新。
2、簡(jiǎn)化 Docker 指令:
這個(gè)應(yīng)用完全依賴指令操作,在 Ubuntu 操作系統(tǒng)時(shí)又需要 “sudo” 取得操作權(quán)限,例如執(zhí)行 “docker info” 指令,會(huì)出現(xiàn)下面信息,表示權(quán)限不足。
我們可以執(zhí)行以下步驟,在執(zhí)行 Docker 指令時(shí)可以不需要使用 “sudo”:
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp-docker
當(dāng)然,這只是簡(jiǎn)化權(quán)限的問(wèn)題,僅提供一個(gè)參考。
3、從 NGC 尋找合適的鏡像文件:
訪問(wèn)http://ngc.nvidia.com/會(huì)出現(xiàn)如下畫(huà)面,在左上方 “搜索欄(漏斗圖標(biāo))” 中輸入“l(fā)4t”關(guān)鍵字,就會(huì)列出能在 Jetson 上運(yùn)行的鏡像列表。
目前已經(jīng)提供近 20 個(gè)容器鏡像,分為以下 6 大類別:
(1)基礎(chǔ)類:
-
NVIDIA L4T Base:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base
-
NVIDIA L4T CUDA:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-cuda
-
NVIDIA Container Toolkit:
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/k8s/containers/container-toolkit
(2)深度學(xué)習(xí)類:
-
NVIDIA L4T ML:深度學(xué)習(xí)綜合開(kāi)發(fā)環(huán)境
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml
-
NVIDIA L4T PyTorch:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
-
NVIDIA L4T TensorFlow:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorflow
-
NVIDIA L4T TensorRT:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorrt
(3)視覺(jué)類:
-
DeepStream-l4t
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t
-
DeepStream L4T - Intelligent Video Analytics Demo
https://catalog.ngc.nvidia.com/orgs/nvidia/helm-charts/video-analytics-demo-l4t
-
DeepStream People Detection Demo on Jetson
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-peopledetection
-
Gaze Demo for Jetson/L4T
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-gaze
-
Pose Demo for Jetson/L4T
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-pose
(4)對(duì)話類:
-
Voice Demo for Jetson/L4T
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-voice
-
Riva Speech Skills
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/containers/riva-speech
(5)教學(xué)類:
-
DLI Getting Started with AI on Jetson Nano
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-ai
-
DLI Building Video AI Applications at the Edge on Jetson Nano
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-deepstream
(6)醫(yī)療類:專屬于 Clara AGX 的應(yīng)用容器鏡像。
4、下載 NVIDIA L4T ML 鏡像并創(chuàng)建容器
這是能在 Jetson 設(shè)備上執(zhí)行的最完整的機(jī)器學(xué)習(xí)(MachineLearning)軟件棧鏡像,訪問(wèn) https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml 之后就能看到容器內(nèi)所包含的內(nèi)容,以 l4t-ml:r32.6.1-py3 版本為例,其打包的工具與功能庫(kù)如下:
-
TensorFlow 1.15.5
-
PyTorch v1.9.0
-
torchvision v0.10.0
-
torchaudio v0.9.0
-
onnx 1.8.0
-
CuPy 9.2.0
-
numpy 1.19.5
-
numba 0.53.1
-
OpenCV 4.5.0 (with CUDA)
-
pandas 1.1.5
-
scipy 1.5.4
-
scikit-learn 0.23.2
-
JupyterLab 2.2.9
這已經(jīng)涵蓋我們所需要的絕大部分內(nèi)容,只要下載鏡像后生成執(zhí)行的容器,就能直接使用里面的開(kāi)發(fā)環(huán)境,這樣能節(jié)省非常大量的安裝與調(diào)試的時(shí)間。
點(diǎn)擊頁(yè)面右上角 “Pull Tag” 按鈕,會(huì)列出目前可下載版本的鏡像文件,最好選擇配合目前 JetPack 版本的鏡像,例如用 JetPack5.0 DP 安裝的 Jetson Orin 開(kāi)發(fā)套件,其 L4T 版本為 34.1.1,就用下面指令下載 r34.1.1-py3 鏡像:
docker pull nvcr.io/nvidia/l4t-ml:r34.1.1-py3
下載完成之后可以用以下指令檢查:
docker images
如果出現(xiàn)以下信息,則表示下載完成。
REPOSITORY TAG IMAGE ID CREATED SIZE
nvcr.io/nvidia/l4t-mlr34.1.1-py393c715e8751b6weeksago16.2GB
這個(gè)方法可以用在任何 L4T 版本鏡像文件上。
下一篇文章我們將進(jìn)一步帶著大家用這個(gè)鏡像文件去創(chuàng)建容器,并且開(kāi)始執(zhí)行演示或開(kāi)發(fā)的內(nèi)容。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5188瀏覽量
105445 -
容器
+關(guān)注
關(guān)注
0文章
504瀏覽量
22325 -
Docker
+關(guān)注
關(guān)注
0文章
503瀏覽量
12555
原文標(biāo)題:NVIDIA Jetson 系列文章(5):使用Docker容器的入門技巧
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論