上一篇内容为大家介绍了从NVIDIA NGC下载DeepStream 6.1的容器版镜像到本地在Jetson上设备的基础指令,不过在正式使用容器版DeepStream 6.1之前,我们还是需要为入门用户提供基本的使用方式与一些小技巧。
Jetson Orin开发套件内置64GB EMMC存储,并且很容易扩充64G甚至更大的NVME存储设备,可以有非常充沛的空间,在这种情况下就非常推荐使用Docker容器技术,能有效简化应用软件的安装与调试工作,非常适合用来开发与部署较为复杂的多功能智能应用,并且在NVIDIA NGC上提供了非常丰富的Docker版本应用镜像文件,用户只要一条指令便可轻松下载使用,这是边缘计算非常重要的一项应用技术。
Docker是一种比较新的“容器”技术,是NVIDIA近年来非常大力推广的应用重点,越来越多的GPU开发环境都以Docker镜像(或称为“仓”)形式提供,具备以下的优点与特性:
Docker作为一个开源的应用容器引擎,允许开发者很方便地打包应用程序和依赖库到可移植的容器中,然后发布到任何流行的Linux设备上,Docker完全使用沙箱机制,容器之间相互独立,不存在任何接口,因此,允许开发者在同一台机器上,运行不同环境的应用程序与服务,大大简化应用程序(或者服务)的运维操作,同时也提高了开发与测试效率。
对于CUDA设备的调用,需要NVIDIA自行开发的nvidia-docker2指令转换插件的协助,在x86设备上都需要自行安装Docker管理机制与nvidia-docker2界面,不过JetPack都为Jetson安装好了这两个元件,我们只要使用就可以。
现在就开始教大家如何使用Docker容器,以及从NVIDIA NGC中心下载可以在Jetson设备上使用的镜像。
用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 sudo systemctl restart docker.service |
现在可以检查看看存储的路径是否更新。
这个应用完全依赖指令操作,在Ubuntu操作系统时又需要“sudo”取得操作权限,例如执行“docker info”指令,会出现下面信息,表示权限不足。
我们可以执行以下步骤,在执行Docker指令时可以不需要使用“sudo”:
$ $ $ $ |
sudo groupadd docker sudo gpasswd -a ${USER} docker sudo service docker restart newgrp - docker |
当然,这只是简化权限的问题,仅提供一个参考。
访问http://ngc.nvidia.com/ 会出现如下画面,在左上方“搜索栏(漏斗图标)”中输入“l4t”关键字,就会列出能在Jetson上运行的镜像列表。
目前已经提供近20个容器镜像,分为以下6大类别:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-cuda
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/k8s/containers/container-toolkit
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml
、 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorflow
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorrt
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t
https://catalog.ngc.nvidia.com/orgs/nvidia/helm-charts/video-analytics-demo-l4t
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-peopledetection
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-gaze
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-pose
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-voice
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/containers/riva-speech
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-ai
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-deepstream
这是能在Jetson设备上执行的最完整的机器学习(Machine Learning)软件栈镜像,访问https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml 之后就能看到容器内所包含的内容,以l4t-ml:r32.6.1-py3版本为例,其打包的工具与功能库如下:
这已经涵盖我们所需要的绝大部分内容,只要下载镜像后生成执行的容器,就能直接使用里面的开发环境,这样能节省非常大量的安装与调试的时间。
点击页面右上角“Pull Tag”按钮,会列出目前可下载版本的镜像文件,最好选择配合目前JetPack版本的镜像,例如用JetPack 5.0DP安装的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-ml r34.1.1-py3 93c715e8751b 6 weeks ago 16.2GB |
这个方法可以用在任何L4T版本镜像文件上。
下一篇文章我们将进一步带着大家用这个镜像文件去创建容器,并且开始执行演示或开发的内容。
好文章,需要你的鼓励
微软推出 Copilot+ PC 标准,要求配备高性能 NPU,引发 AI PC 市场格局变化。英伟达虽在数据中心 AI 领域占主导,但在 PC 端面临挑战。文章分析了英伟达的 AI PC 策略、NPU 与 GPU 的竞争关系,以及未来 GPU 可能在 Copilot+ 功能中发挥作用的前景。
专家预测,随着人工智能技术的迅速发展和广泛应用,2025 年可能成为 AI 泡沫破裂的关键一年。尽管 AI 仍有望在多模态模型和自动机器学习等领域取得突破,但技术瓶颈、投资回报率下降、监管趋严以及环境和伦理问题等因素可能导致 AI 热潮降温。未来 AI 发展将更注重平衡和可持续性。
Google 推出名为 Titans 的新型 AI 架构,是 Transformer 的直接进化版。Titans 引入了神经长期记忆、短期记忆和基于惊喜的学习系统,使 AI 更接近人类思维方式。这一突破性技术有望彻底改变 AI 范式,推动机器智能向人类认知迈进一大步。
主动型 AI 是人工智能的下一次进化,它不仅能生成内容,还能自主决策和追求目标。这种 AI 可以设定自己的目标,制定策略并根据情况调整方法,实现真正的自主性。它将彻底改变机器与世界的互动方式,为人机协作开启新的可能性,但也带来了透明度和伦理等挑战。