在 reComputer Jetson 上使用 Docker
这是对以下内容的转载 博客 由 阿杰特 在 collabnix.com. 所有的荣誉归他所有。
上周,我有幸第一次接触到最新的Seeed Studio reComputer J1020 边缘AI设备。 reComputer J1020由Jetson Nano开发套件驱动。它是一款小型手掌大小的强大计算机,为嵌入式开发者带来了现代AI的力量。 这款售价259美元的小设备基于NVIDIA Jetson Nano系统模块构建,专为边缘AI应用而设计。 该设备允许您并行运行多个神经网络,用于图像分类、物体检测、分割和语音处理等应用。 凭借丰富的扩展模块、工业外设和热管理,reComputer J1020准备帮助您加速和扩展下一代AI产品,通过将流行的DNN模型和ML框架部署到边缘,并以高性能进行推理,完成实时分类、物体检测、姿态估计、语义分割和自然语言处理(NLP)等任务。
reComputer J1020 有什么独特之处?
Seeed Studio reComputer J1020 配备了您开始构建基于 AI 的应用程序所需的一切。 与 NVIDIA 提供的 Jetson Nano 开发套件相比,它不需要从头开始在 SD 卡上刷写操作系统。 它预装了 Ubuntu 操作系统,存储在 16 GB 的 eMMC 上。 reComputer 预装的 Jetpack 4.6 包括一个板级支持包(BSP)、Linux 操作系统、NVIDIA CUDA、cuDNN 和 TensorRT 软件库,用于深度学习、计算机视觉、GPU 计算、多媒体处理等。它支持整个 Jetson 软件栈 和各种 开发工具 用于 构建快速且稳健的 AI 应用程序 由 Seeed Edge AI 合作伙伴提供。
一些显著特点包括
- 128 个 NVIDIA CUDA® 核心 – 提供 0.5 TFLOPs(FP16)以运行 AI 框架和模型,适用于图像分类、目标检测、分割和语音处理等应用。
- 配备Armv8处理器
- 配备NVIDIA Tegra X1(nvgpu)/集成
- 磁盘大小为16GB
- 4GB内存
- 64位操作系统类型
- Ubuntu 18.04.5
- Seeed Studio reComputer已经预装JetPack 4.6系统
- 您无需闪存SD卡,它已经预装操作系统
- 支持CUDA 10.2.300
- CUDA架构:5.3
- OpenCV版本:4.1.1
reComputer的组件
它配备以下部件清单:
- NVIDIA Jetson Nano x1
- Seed参考载板 x1
- 被动铝散热器 x1
- 铝制外壳 x1
- 12V 电源适配器 x1
- 4个 USB 3.0 端口
- 2个 HDMI 端口
- MIPI-CSI 摄像头连接器
- 控制和 UART 接口
- 40 针扩展头(GPIO, I2C, 头)
- 260 针 SODIMM
- MicroUSB
- 千兆以太网端口
- LED 灯
硬件设置
要开始使用,您需要准备以下最少连接器:
- 电源线
- Wifi 模块 / 千兆以太网线
- 用于 WiFi 键盘和鼠标的 USB 接收器
- HDMI 连接到您的显示器
运行 CUDA deviceQuery
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
以下是结果:
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA Tegra X1"
CUDA Driver Version / Runtime Version 10.2 / 10.2
CUDA Capability Major/Minor version number: 5.3
Total amount of global memory: 3956 MBytes (4148273152 bytes)
( 1) Multiprocessors, (128) CUDA Cores/MP: 128 CUDA Cores
GPU Max Clock rate: 922 MHz (0.92 GHz)
Memory Clock rate: 13 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 262144 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: No
Supports Cooperative Kernel Launch: No
Supports MultiDevice Co-op Kernel Launch: No
Device PCI Domain ID / Bus ID / location ID: 0 / 0 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1
Result = PASS
在 reComputer Jetson Nano 上运行 Docker
Docker 是一套用于创建、共享和运行单个容器的软件开发工具。 它是一个容器化平台,将您的应用程序及其所有依赖项打包在一起,以 docker 容器的形式,确保您的应用程序在任何环境中都能无缝运行。 Docker 容器是一个标准化单元,可以即时创建以部署特定应用程序或环境。
今天开发任何类型的应用程序都很复杂。 这远不止是编写代码。 有多种编程语言、Web 框架、复杂的架构,以及在每个生命周期阶段工具之间的不连续接口,这些都造成了巨大的复杂性。 Docker 简化并加速了您的工作流程,同时为开发人员提供了在每个项目中选择工具、应用程序堆栈和部署环境的自由。 它使您能够将应用程序与基础设施分离,从而快速交付软件。
Docker 在 reComputer J1020 上得到官方支持,这是一个基于 Jetson Nano 的开发套件。该套件默认预装了最新版本的 Docker。 您可以通过运行以下命令来验证Docker的版本:
sudo docker version
Client: Docker Engine - Community
Cloud integration: v1.0.25
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:19 2022
OS/Arch: linux/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:00:46 2022
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
安装Docker Compose
reComputer Jetson没有预装Docker Compose。 您可以按照以下步骤在您的系统中安装Docker Compose:
export DOCKER_COMPOSE_VERSION=2.6.0
sudo apt-get install libhdf5-dev
sudo apt-get install libssl-dev
sudo pip3 install docker-compose=="${DOCKER_COMPOSE_VERSION}"
apt install python3
apt install python3-pip
pip install docker-compose
安装最新版本的CUDA工具包
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/sbsa/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-ubuntu1804-11-3-local_11.3.1-465.19.01-1_arm64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-3-local_11.3.1-465.19.01-1_arm64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
验证Docker运行时
docker info | grep runtime
Runtimes: nvidia runc io.containerd.runc.v2 io.containerd.runtime.v1.linuxs
运行您的第一个Python容器
让我们通过运行以下命令来测试一个简单的基于Arm的Python Docker镜像:
sudo docker run arm64v8/python:slim ls
使用JTOP Docker容器监控CPU、GPU和内存
在本节中,您将看到如何设置系统监控工具来监控CPU、RAM和GPU。我们将使用JTOP工具。 Jtop是一个在终端上运行的系统监控工具,可以实时查看和控制您的reComputer Jetson Nano套件的状态,包括CPU、RAM、GPU状态和频率。 您将看到如何将该工具容器化。让我们开始吧 -
首先,创建一个包含以下内容的Dockerfile:
FROM python:3-alpine
RUN apk update \
&& apk --no-cache add bash \
&& pip install jetson-stats \
&& rm -rf /var/cache/apk/*
第一行显示我们选择了python:3-alpine作为基础镜像。 第二行安装 jetson-stats 和依赖包
构建 JTOP Docker 镜像
使用 docker build CLI 来构建 Docker 镜像
docker build -t ajeetraina/jetson-stats-nano .
运行 JTOP Docker 容器
现在是通过传递 –gpus 参数并将其挂载到 jtop 套接字来运行 Docker 容器的时刻。
docker run --rm -it --gpus all -v /run/jtop.sock:/run/jtop.sock ajeetraina/jetson-stats-nano jtop
你将看到以下结果:
在我们下一个博客文章中,我们将看到如何在 Docker 容器中运行 OpenDatacam 实现车辆识别。敬请关注!
请查看以下应用示例和教程!
- 通过 Edge Impulse 进行行人检测
- 安全帽检测 并构建自定义 PPE 检测
- 使用 alwaysAI 进行姿态估计
- 使用 NVIDIA Deepstream IoT 进行视觉异常检测
- 零售店商品检测
- 野火检测
- 动物检测
关注 Ajeet:
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们的产品的体验尽可能顺畅。 我们提供多种沟通渠道,以满足不同的偏好和需求。