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