[Jetson]在nvidia orin/xavier上快速配置深度学习环境(Tensorflow,Pytorch都可以参考)

news2024/11/25 6:30:08

本文章将介绍如何通过docker在边缘计算设备nvidia orin/xavier上快速配置深度学习环境.该方法适用于Tensorflow,Pytorch,但是本文以介绍Tensorflow的安装为主.

文章目录

  • 第一步:安装docker
  • 第二步:安装nvidia-docker2
  • 第三步:拉取tensorflow镜像
    • 3.1 确定容器版本
    • 3.2 拉取镜像
    • 3.3 测试是否能够正常使用GPU
    • 3.4 打包镜像
  • 附录
    • tensorflow主页
      • 容器内具体内容
    • pytorch 主页
    • 打开主页后,需要留意的几个点:

第一步:安装docker

首先我们需要安装docker,可以直接通过小鱼来安装:

wget http://fishros.com/install -O fishros && . fishros

安装完成后,我们需要给用户赋予权限:

sudo docker ps
sudo docker images
sudo gpasswd -a $USER docker 
newgrp docker
docker ps
docker images
sudo systemctl restart docker

加载重启docker

service docker restart

查看是否成功

docker info

如果打印出来以下信息,说明docker已经配置完毕了

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.9.1-docker)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.21
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux nvidia runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 770bd0108c32f3fb5c73ae1264f7e503fe7b2661
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.104-tegra
 Operating System: Ubuntu 20.04.4 LTS
 OSType: linux
 Architecture: aarch64
 CPUs: 8
 Total Memory: 29.82GiB
 Name: tegra-ubuntu
 ID: xxx
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

还可以运行一个hello的容器测试一下:

docker run hello-world

会显示以下信息:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
7050e35b49f5: Pull complete 
Digest: sha256:faa03e786c97f07ef34423fccceeec2398ec8a5759259f94d99078f264e9d7af
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

第二步:安装nvidia-docker2

官方的指导网站为:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

运行前三步就可以了,没必要去pull那个nvidia/cuda的镜像,太大了,pull下来比较慢而且占空间.
在这里插入图片描述

第三步:拉取tensorflow镜像

3.1 确定容器版本

安装pytorch或者tensorflow最好是遵守Jetson的版本(否则很有可能安装完后运行出BUG).所以我们需要查看Jetson,NVIDIA Tensorflow Container和tensorflow的版本.

关于NVIDIA Tensorflow Container的包含的内容,版本等信息,可以查看这个网站:
https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html#framework-matrix-2021

tensorflow版本要求,可以看这个:
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform-release-notes/tf-jetson-rel.html#tf-jetson-rel

tensorflow版本截图如下:
在这里插入图片描述

关于如何查询Jetson版版本,可以查看这个文章:
https://blog.csdn.net/condom10010/article/details/128100956

我们这里Jetson版本是 5.0.2,而我们需要tensorflow2.x,因此确定我们需要拉取的Nvidia tensorflow Container版本为22.10.

3.2 拉取镜像

使用终端命令拉取:

docker run --runtime=nvidia -it  nvcr.io/nvidia/tensorflow:22.10-tf2-py3

下载的大小6-7GB,所以需要很久,放一边等着就行了.下载完毕之后可以查看一下,发现镜像有13.9GB.
在这里插入图片描述

3.3 测试是否能够正常使用GPU

$ python
>>> import tensorflow as tf

# If tf2
>>> tf.config.list_physical_devices("GPU").__len__() > 0

返回一个True说明此时已经配置完毕了。
在这里插入图片描述
也可以再试一下tf.config.list_physical_devices("GPU"),也会打印出当前可用的GPU。
在这里插入图片描述

3.4 打包镜像

通过docker images查看发现这个镜像大的离谱

然后我们把这个镜像离线保存下来,避免下次配置的时候还要消耗流量。
由于镜像打包起来也非常大,而且非常耗时间和cpu算力,所以打包的还是不要操作机器,预留20GB空间,再进行打包。

docker save -o nvidia_tensorflow_21.10-tf2-py3.tar nvcr.io/nvidia/tensorflow

打包后的镜像有14GB。体积并没有缩小。

附录

最初,我是在这个网站上找到了教程:https://cloud.tencent.com/developer/article/2073473
,教程里面提到了nvidia的NGC官网,打开找到深度学习框架,再点击tensorflow,会跳转到tensorflow的docker镜像页中,也可以找到pytorch的docker镜像页.
在这里插入图片描述
在这里插入图片描述

tensorflow主页

tensorflow的docker镜像页
在这里插入图片描述

容器内具体内容

在下面的 What is In This Container里面可以看到容器的具体内容
在这里插入图片描述在这里插入图片描述

pytorch 主页

pytorch版本要求,可以看这个:
https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform-release-notes/pytorch-jetson-rel.html#pytorch-jetson-rel

pytorch的docker镜像页
在这里插入图片描述

打开主页后,需要留意的几个点:

(1)左边的镜像大小:安装前需要注意你的机器上的存储空间够不够.实际上在上面页面里提到的大小都远远小于真实的镜像的大小,实际的一个镜像文件的大小是13-14GB,所以对设备存储容量有比较高的要求。
(2)上方的Tags标签:从这里选择需要拉取的镜像的版本
(3)下方的Running Pytorch Using Docker or Running Tensorflow :给出了我们想要的镜像的终端启动命令.

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

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

相关文章

awk命令应用

记录:353 场景:在CentOS 7.9操作系统上,使用awk文本处理工具处理文本;使用awk、cat和grep搭配使用处理文本;使用awk直接处理文本;使用shell脚本调用awk脚本处理文本。 版本: 操作系统&#x…

基于神经网络彩色图像插值研究-附Matlab程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、色彩过滤阵列CFA✳️ 三、BP网络结构✳️ 四、神经网络彩色图像插值实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 彩色图像插值是通过估算相邻像素来估计缺失的颜色分量的过程,数字相机通过色彩过滤…

若依对SpringSecurity框架的运用

引言:借助ruoyi-vue框架学习其对SpringSecurity框架的运用。若依的前后端分离版本基于SpringSecurity和JWT配合Redis来做用户状态记录. 1 SpringSecurity 1.1 入口 后台接收登录数据,基于用户名和密码封装一个(UsernamePasswordAuthenticationToken)认…

线程安全和synchronized关键字

一,线程安全的引入 1.示例 多线程在多进程的基础上更好解决了并发问题,但由于一个进程内的多个线程是资源共享的,就会出现多个线程在并发执行的时候造成内存中数据的混乱。 举一个例子: class Counter {public int count;publi…

hypervision理解的记录

目录 一、hypervision介绍 Type 1 Hypervisor Type 2 Hypervisor 二、QNX hypervision是TYPE1的虚拟机 三、QNX hypervision架构 1、VMM (虚拟机管理器) 2、virtual-net 3、qnx官网 network 九、其他 一、hypervision介绍 首先,hypervision分为Type1和Type2…

SpringBoot添加外部jar包及打包(亲测有效) - 第452篇

历史文章(文章累计450) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 深入Feign源码吃透Spring扩展点「扩展点…

亿级异构任务调度框架设计与实践

背景 阿里云日志服务作为云原生可观测与分析平台。提供了一站式的数据采集、加工、查询分析、可视化、告警、消费与投递等功能。全面提升用户的研发、运维、运营、安全场景的数字化能力。 日志服务平台作为可观测性平台提供了数据导入、数据加工、聚集加工、告警、智能巡检、…

“200万天价床垫”引发的思考:普通床垫越卖越贵是推测还是事实

定制床垫价格高达200万元?近段时间,一场娱乐圈的闹剧让大家把目光转向了床垫市场。在天价床垫的话题下,除了大部分猜测床垫品牌的讨论以外,也有不少人认为指出了“社会现状”:健康品质化的消费追求正在让市面上的床垫价…

Python_数据容器_字典

一、字典(映射)的定义 生活中的字典: 【字】:【含义】 可以按【字】找出对应的【含义】 Python中的字典: key : value 可以按照[key]找出对应的[value] 1、Python字典使用场景: 通过使用字典&#…

uni-app 之 web-view 与h5 通讯

官网文档:https://uniapp.dcloud.net.cn/component/web-view.html#getenv web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面(nvue 使用需要手动指定宽高)。 各小程序平台,web-v…

图像下采样再上采样维度不匹配

图像在下采样后再上采样,维度会发生不匹配,假设一幅图像的维度为(b,c,h,w),那么当h和w是偶数的时候,下采样和上采样是匹配的,当且仅当他是偶数的时候才匹配,然而图像的h和w往往不一定是偶数。当然有许多种方…

【Shell 脚本速成】06、Shell 数组详解

目录 一、数组介绍 二、数组定义 三、数组赋值方式 四、数组取值 案例演示 五、关联数组 5.1 定义管理数组 5.2 关联数组赋值 5.3 管理数组取值 5.4 综合案例 有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GE…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理,梳理了一下订单功能的表创建,界面,功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表? 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色,用户与…

软件测试基础

⭐️前言⭐️ 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟&…

Spring Cloud OpenFeign - - - >拦截器

源码地址:https://download.csdn.net/download/weixin_42950079/87209379 SpringMVC拦截器 和 OpenFeign拦截器 的区别 初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器: …

虹科分享 | 麦氏比浊仪在药敏试验中的应用

细菌是重要的病原微生物,人类针对不同的病原菌研发了各类抗菌药,这些药物对细菌性疾病的治疗与控制起到了关键作用。然而随着新型致病菌的不断出现,加上细菌在药物使用过程中逐渐产生了耐药性,抗菌药的防治效果越来越差。病原菌对…

Python 中的类与继承

类的定义以及实例的建立 Python中,类通过 class 关键字定义。 例如最简单的一个类定义可以为: class Person(object):pass Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。…

解决单文件组件里的跨域请求数据问题(使用vue单文件组件请求数据必会遇到的问题!!!)

为什么要解决跨域问题: 因为浏览器有限制,只有同域名同端口号下的数据才能拿来用;那如果想拿到不同域名不同端口号下的数据就不行了; 在单文件组件中如何去解决跨域问题: 因为服务器没有跨域限制,只有浏览…

PyTorch(四)Torchvision 与 Transforms

文章目录Log一、Torchvision1. CIFAR10① 介绍② 使用2. 与 Transforms 结合使用总结Log 2022.11.28接着开启新的一章2022.11.29继续学习 一、Torchvision 视频教程中 Torchvision v0.9.0文档Torchvision 官方文档Torchvision Datasets API 文档 1. CIFAR10 ① 介绍 CIFAR…

HBuilder X实现banner轮播图

第一步还是去仔细阅读官方文档,找到组件下面的内置组件里面的swiper,如图所示 官方是提供了一个用来制作轮播图的滑块视图容器:swiper 一般来说,轮播图的图片地址是由后端返回给前端遍历显示在页面上的,所以基本的结构…