jetson的docker中装torch、torchvision

2024-01-22 03:30

本文主要是介绍jetson的docker中装torch、torchvision,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

极简:

网址:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
按照这个上面的操作说明,拉取,启动与系统版本相匹配的镜像。


错误:

按照下面命令安装的 torch 不能使用 cuda 也就是说 torch.cuda.is_available() 是False

安装 torch 命令

$ pip3 install torch -f https://torch.kmtea.eu/whl/stable-cn.html

安装 torchvision 命令

$ pip3 install torchvision -f https://torch.kmtea.eu/whl/stable-cn.html

详细错误经历∠(°ゝ°)

时间:2022/4/14

环境

设 备:联想 EA-B310
核心模块:NVIDIA Jetson Xavier NX
系 统:系统自带的 ubuntu18.04
使用该设备自带的 docker,用下面的命令启动了一个容器

$ sudo docker run --runtime nvidia --network host -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-base:r32.3.1 

思路:根据网页 https://elinux.org/Jetson_Zoo 要求,查看Jetpack版本,然后根据版本下载安装推荐的torch版本

https://elinux.org/Jetson_Zoo 页面截图在这里插入图片描述

查看 Jetson 的 Jetpack

提示:是查看系统的 Jetpack 版本,不是在 docker 容器里面查看

$ cat /etc/nv_tegra_release

结果

# R32 (release), REVISION: 4.3, GCID: 21589087, BOARD: t186ref, 
EABI: aarch64, DATE: Fri Jun 26 04:34:27 UTC 2020

上面的意思是系统 L4t 的版本是32.4.3
但是 docker 启动命令来看 L4t 的版本是 32.3.1

各版本对应关系

- Jetpack4.2.2
./source_sync.sh -t tegra-l4t-r32.2.1- Jetpack4.3
./source_sync.sh -t tegra-l4t-r32.3.1- Jetpack4.4
./source_sync.sh -t tegra-l4t-r32.4.3- Jetpack4.4.1
./source_sync.sh -t tegra-l4t-r32.4.4- Jetpack4.5
./source_sync.sh -t tegra-l4t-r32.5

我想既然我是在 docker 中运行的,所以参考的是 docker 启动命令, 选择的J etpack 版本是 Jetpack4.3, 因此下载了 Jetpack4.3 对应的 v1.14.0的 pytorch安装包 https://nvidia.app.box.com/v/torch-1-4-cp36-jetson-jp43

下载的时候需要梯子。
下载完成以后,拷贝到U盘,再用U盘拷贝的设备里。最后用docker命令拷贝到容器里。
用docker命令查看正在运行的容器ID的命令

$ sudo docker ps -a

拷贝到docker容器里,xxxxxx是容器ID

$ sudo docker cp torch-1.4.0-cp36-cp36m-linux_aarch64.whl xxxxxx:/home

安装

$ sudo apt-get install libopenblas-base libopenmpi-dev libomp-dev
$ pip3 install Cython
$ pip3 install numpy torch-1.4.0-cp36-cp36m-linux_aarch64.whl

安装成功,但是导入包的时候报错
ImportError:libnvToolsExt.so.1:cannot open shared object file: No such file or directory
在这里插入图片描述
使用查找命令

$ find / -name libnvToolsExt*

结果如下,说明有
在这里插入图片描述

然后猜想可能是没有包含这个路径

在 ~/.bashrc 文件中的最后添加

export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

执行命令更新环境

$ source ~/.bashrc

完成以后 在导入的时候依旧报错
ImportError:libcudart.so.10.0:cannot open shared object file: No such file or directory
在这里插入图片描述

我想是不是环境里面包含不存在的cuda10.0版本的路径

用 env 命令查看 发现果真包含了,然后不知道怎么删除,搜索了一下用命令
export -n PATH=/usr/local/cuda-10.0/bin
然后发现很多命令都用不了了,包括ls命令,开始的时候挺紧张的。然后突然试着把之前的PATH内容都重新用export添加一下,发现不能用的命令都又可以用了。
接着用类似的命令重新添加了一下环境,把cuda-10.0排除外,后用env查看了一下。就没有发现有cuda-10.0了。认为环境中应该不包含cuda10.0了
最后导入torch的时候依旧报一样的错误。。。
emmmm 所以最后放弃了这种安装方法,改用另外一个安装方法。一行命令就安装成功了,导入也没有问题。

$ pip3 install torch -f https://torch.kmtea.eu/whl/stable-cn.html

emmmm。。。。我都经历了些啥。。。最后也不知道是哪的问题。。。

是我启动的容器版本不对吗?
或者我应该装与系统版本匹配的pytorch吗?而不是与容器版本匹配。

这篇关于jetson的docker中装torch、torchvision的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631700

相关文章

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p