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