【Nvidia Jetson Xavier NX/AGX/NANO】上用docker跑pytorch等cv推理应用

news2024/11/24 20:50:06

Nvidia Jetson Xavier NX/AGX docker

  • WHY
    • 镜像地址
    • 使用方法
    • docker常用命令备忘
    • jtop安装
    • 关于保存容器镜像
    • 关于使用dockerfile构建
    • 关于映射外部路径让容器访问外部文件
    • 关于性能

WHY

在jetson上使用docker跑opencv和pytorch其实主要是要找对镜像,docker官方的hub里并没有适合的能直接跑的镜像,但是nvidia自己提供了L4T的pytorch和ML镜像。

镜像地址

单独pytorch的镜像:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
整合了opencv,pytorch,tensorflow的ML镜像:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml
如果不是嫌大推荐直接使用ML的镜像,包含了opencv,要在pytorch的镜像中安装编译opencv太慢了,jetson的cpu都不太行,除非对opencv的版本有特殊需求。

如果对opencv的版本有特殊需求,建议还是找一下jetpack有没有对应的版本直接刷机对应的jetpack然后使用对应的docker镜像。

使用方法

先查看当前jetson设备的jetpack版本,例如我的是4.6版本,找到对应的镜像的编号,从tag里找到镜像地址
在这里插入图片描述
在这里插入图片描述
然后pull下来就行了

sudo docker pull nvcr.io/nvidia/l4t-ml:r32.6.1-py3

然后就可以进docker使用了

sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-ml:r32.6.1-py3

docker常用命令备忘

sudo docker images #查看现有的镜像
sudo docker ps #查看现在运行的容器
#运行docker并把本地的work目录挂在容器的/workspace目录
sudo docker run -it --gpus all --restart always --name torch1 -p 6013:6013 -w /workspace -v /home/nvidia/work/:/workspace  repo001:pth1.9-cu102-py3.6 /bin/bash 
sudo docker exec -it 1dd3379af334 /bin/bash #进入容器命令交互
sudo docker stop 1dd3379af334 #停止容器

jtop安装

要查看jetson的运行状态,我们可以安装jtop

sudo apt-get update
sudo apt-get install python3-pip
sudo -H pip3 install jetson-stats

然后重启jetson,就可以在命令行里使用jtop命令来查看系统资源使用情况了。

在这里插入图片描述
按7查看具体的jetson的信息和jetpack版本号
在这里插入图片描述

关于保存容器镜像

cuda版本还有pytorch版本的问题可以在上述容器中进行相应的更新和修改,然后把容器保存为离线image供后续使用(不使用dockerfile构建)

先查看一下做过改动的容器的container ID(比如在容器里pip install了或者apt install了其他内容)

sudo docker ps #查看此容器的container ID

假设container id是1dd4687afdr4,然后使用

sudo docker commit 1dd4687afdr4 repo001:pth1.9-cu102-py3.6

这边repo001就是自定的repo名称,pth1.9-cu102-py3.6是自定义的镜像名称
然后就可以使用了,如果要保存为本地文件,

sudo docker save -o repo001.pth1.9.tar repo001:pth1.9-cu102-py3.6

后续到其他的jetson上就可以使用命令来读取镜像直接使用

sudo docker load -i epo001.pth1.9.tar

关于使用dockerfile构建

除了挂载外部文件外,我们可以在打包镜像的时候直接把应用文件打到镜像中,直接运行

Dockerfile

FROM repo001:xxxxx

ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

RUN apt-get update
RUN apt-get install python3-tk
RUN pip3 install --upgrade pip
RUN pip3 install pandas
RUN pip3 install pydantic[dotenv]

RUN mkdir /myworkspace/myapp

# Copy the application files
COPY . /myworkspace/myapp

WORKDIR /myworkspace/myapp

# Run the application
CMD ["python3","myapp.py"]

打完直接build镜像

sudo docker build -t repo001:xxxx -f /xxx/Dockerfile /myapppath

创建容器,运行app

sudo docker run -d --gpus all -p 8001:80001 repo001:xxxx

然后app运行起来以后可以查看运行日志

sudo docker logs -f 1dd3379af334 #查看容器日志

关于映射外部路径让容器访问外部文件

有时候应用也许不是完全无状态的,例如应用需要调取宿主机的文件路径,这时候我们run docker的时候把相关路径挂载进去就行了,和宿主机名称保持一致

sudo docker run -d --gpus all -v /home/nvidia/images:/home/nvidia/images -p 8001:80001 repo001:xxxx

这样如果调用myapp的时候传了一个/home/nvidia/images/1.jpg这样的参数在容器里也能同样访问到

关于性能

使用docker在容器中跑带有yolo和opencv的应用比起直接在原生环境中跑在jetson xavier NX上并不一定能见到明显的性能下降,容器化性能和很多因素有关,特别是应用对于cpu,gpu的使用情况不同,带宽算力使用情况不同,结果可能会不太一样,具体还是得测试,不能一概而论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux0.12-9-5-ramdisk.c

1、 需要配合其他代码一起看,才能有深刻的理解。 [432页] 9-5 ramdisk.c程序 9-5-1 功能描述 本文件是内存虚拟盘(Ram Disk)驱动程序,由Theodore Ts’o编制。虚拟盘设备是一种利用物理内存来模拟实际磁盘存储数据的方式。其目的主要是为了提高对&quo…

Conda 安装Pytorch

1、conda 切换虚拟环境 activate 虚拟环境名称 C:\Windows\System32>activate python310 温馨提示:查询虚拟环境列表 conda env list C:\Windows\System32>conda env list # conda environments: # base D:\anaconda3 python310 …

15-01通信安全

网络设备安全——防火墙 状态检测 应用级代理 防火墙实战 默认禁止:Ingress和Egress高安全域优先:允许高安全域发起请求规则具体:源地址(标签)、源端口,目标地址(标签)、目标端口、…

CSAPP复习(1)

分析方法只讲了amuda定理 Hello的一生 hello的执行过程 了解hello的执行过程 和响应的汇编器生成的可执行文件是.out不是.exe gcc -E hello.c -o hello.i//预处理 cpp hello.c>hello.i gcc -S hello.i -o hello.s//编译 gcc -C hello.s -o hello.o//汇编 二进制文件看不到…

【PDF软件篇】PDF轻量化电子笔记编辑利刃-Xodo软件优化

【PDF软件篇】PDF轻量化电子笔记编辑利刃-Xodo软件优化 默认配置已经够强,但是我还是推荐自定义,适合自己的就是最好的—【蘇小沐】 文章目录 【PDF软件篇】PDF轻量化电子笔记编辑利刃-Xodo软件优化1.实验环境 (一)日常办公导出无…

Redis使用lua脚本实现库存扣减

为什么使用Lua脚本为什么能合并多个原子操作? 这里参考官方文档地址:Scripting with Lua | Redis Redis 保证Lua脚本的原子执行。在执行脚本时,所有服务器活动在其整个运行期间都被阻止。这些语义意味着脚本的所有效果要么尚未发生&#xff…

矢量图形设计工具Affinity Designer 2.04版本在win10系统上的下载与安装配置教程

目录 前言一、Affinity Designer安装二、使用配置总结 前言 Affinity Designer 是一款由 Serif 公司开发的矢量图形设计工具,可用于创建各种类型的设计项目,例如图标、UI 设计、品牌标识、插图和其他类型的矢量图形。 Affinity Designer 工具的详细介绍…

JS解密入门案例:python有道JS解密,做一个简单的翻译程序

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 目录标题 前言本次使用知识点:开发环境:模块使用:思路流程:代码展示尾语 💝 本次使用知识点: 系统分析网页结构 动态数据抓包演示 json数据解析 JS解密 开发环境: Python 3.8 Pycha…

Java形参实参的使用

Java形参实参的使用 形参实参的介绍简单例子稍复杂例子String类 compareTo方法 形参实参的介绍 在JAVA中,形参和实参是非常常见的概念。形参是指在方法定义时声明的参数,用于描述方法需要接收的输入数据类型和变量名;而实参是指在方法调用时…

如何安装EasyRecovery14中文版数据恢复软件

好消息!听说数据恢复软件EasyRecovery有了新版本,想必大家在听到这个消息的时候都非常激动,都想看看这个新版本的神秘面纱吧。别着急,下面小编就来教大家使用EasyRecovery14快速恢复数据。 首先我们需要在电脑上下载并安装Ontrac…

​数据库原理及应用上机(实验二 SQL数据定义功能实验)

✨作者:命运之光 ✨专栏:数据库原理及应用上机实验 目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 ✨三、附加练习 ✨四、实验总结 🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善&am…

Docker创建Springboot项目镜像文件

Docker创建Springboot项目镜像文件 本文章展示的是以Windows10系统为例进行操作 一.首先在Windows系统安装WSL(Windows系统的Linux子系统) //该命令能够直接在Windows系统安装wsl wsl --install //如果已经安装则可以进行update wsl --update二.安装Docker Desktop在本机电…

C调用Java代码 图文详解

环境搭建 1. android studio2021.2.1 2. JDK版本1.8 一、创建一个android项目 File ——> New ——> New Project ——> Empty Activity 创建后如下图所示 二、C调用java代码过程 2.1 写java类代码 创建一个java的JNI类,写触发C代码,让C…

有意思的各类算法,思维题目分享

1.统计子矩阵 思路:二维前缀和超时,下面是前缀和加双指针,对列前缀和,两个玄幻控制行号,双指针控制列的移动 考查:前缀和双指针 import os import sys# 请在此输入您的代码 # 矩阵大小 N M n,m,kmap(int,…

某大学信息安全竞赛——shellcode1 绕过strlen检查,绕过沙箱检查,执行orw shellcode拿到flag

题目自取: 链接:https://pan.baidu.com/s/1HrMqh-lX-mkfueVeLzoEJg 提取码:oyel 介绍下这可恶的沙箱机制 这是一道非常让人蛋疼的题目,之前我只听说过沙箱,但是并没有自己实际接触过沙箱这个保护机制,大…

PX4从放弃到精通(二十八):垂起过渡控制

文章目录 前言一、主程序二、update_transition_state()三、update_transition_state() 前言 固件版本:1.14.0 可加名片交流学习 一、主程序 代码位置: 构造函数,用初始化列表进行初始化工作…

图可视分析

G6简介 AntVG6是一个基于WebGL的图形可视化引擎,它提供了一种简单、高效、灵活的方式来创建各种类型的图形,包括流程图、关系图、树形图、桑基图、饼图等等。它的主要思想是将图形分解为节点和边,并使用数据来描述它们之间的关系。 它的特性包…

BMPFont使用教程--免费的位图字体制作工具字体制作(2)

1、下载windows免费的位图字体制作工具Bitmap Font Generator 下载地址:BMFont - AngelCode.com 2、打开软件-> Edit -> Open Image Manager 3、点击Image -> Import Image,选择字符对应的图片,id就填写下面的48,代表0,…

Redis 主从复制 哨兵 集群

哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力收到单机的限制; Cluster集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力收到…