700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > DJI ManiFold-2G(Nvidia Jetson TX2)源码安装Tensorflow-1.12.0

DJI ManiFold-2G(Nvidia Jetson TX2)源码安装Tensorflow-1.12.0

时间:2021-08-15 05:09:16

相关推荐

DJI ManiFold-2G(Nvidia Jetson TX2)源码安装Tensorflow-1.12.0

Dji ManiFold-2G(Nivida Jetson TX2)源码安装Tensorflow-1.12.0

Cuda 9.0Jetpack 3.3Python 3.5cuDNN 7.4.1(严格匹配!其他版本会出现问题!)

1. 使用背景:

使用TensortRt在DJI MANIFOLD-2G 部署加速目标检测模型。Nivida 提供了一些版本的tensorflow wheel安装。

由于Dji ManiFold-2G内置的Jetpack 3.3,Cuda9.0,Jetpack和Cuda版本不可随便变更,所以在安装tensorflow时需要注意按照版本进行匹配。在TX2上安装tensorflow-0.8.0经过测试是可以正常使用的,但是在转换和加载目标检测模型是会出现一些问题,因此尝试更高版本的tensoflow。

2. 准备工作:

2.1 创建虚拟内存空间

由于MANIFOLD-2G 的内存只有8G,在源码编译tensorflow这种大型项目时需要足够的内存,因此建议在硬盘上创建8G虚拟内存(按照自己实际需求创建虚拟内存)。

$ sudo fallocate -l 8G /swapPath/8GB.swap$ sudo mkswap /swapPath/8GB.swap$ sudo swapon /swapPath/8GB.swap

此时可以使用free-m看到已经新建了8GB的虚拟内存,为了保证该虚拟内存在计算机重启后仍有效,需要将下面语句添加到/etc/fstab后并重启计算机:

$ /swapPath/8GB.swap none swap sw 0 0

注: 在TX-2这种开发板上创建虚拟内存空间十分重要,这保证一些大型程序的编译有足够的内存空间,如果不建立这样的内存空间在编译TF时会出现内存不足的错误。

3. 安装步骤:

作者在安装学习的过程中主要参考JK Jung blog,该博客给作者的工作提供了极大的帮助,因此这里也主要借鉴JK Jung所提供的相关内容。

如果你已经安装了tensorflow、tensorboard,需要先讲其卸载

$ sudo pip3 uninstall -y tensorflow tensorboard

从Github上下载安装源码,这里直接使用JK Jung的Github的jetson_nano仓库

$ cd /project$ git clone /jkjung-avt/jetson_nano.git$ cd jetson_nano

安装libprotobuf-3.6.1,安装该版本的libprotobuf主要是由于在使用TensorRt加速模型时大幅度提升对模型文件(xx.pd)载入的时间。

$ ./install_protobuf-3.6.1.sh

在安装protobuf过程中比较顺利没有出现问题,但是编译时间较长。如编译中遇到问题可以交流。

安装bazel-0.15.2,bazel主要是tensorflow的源码编译工具。

./install_bazel-0.15.2.sh

bazel编译中出现的问题:

Q1. 无法解压tensorflow/third_party/asm/asm-6.0.jar

该问题主要是由于使用unzip对.jar文件解压失败造成的,笔者没有找到更合适的方法解决这个问题,但是尝试了一种比较笨拙的方式解决了该问题。

首先,进入到出现问题的文件夹:

cd /src/tensorflow/third_party/asm

其次,将asm中.jar文件加上.zip后缀后变成xxx.jar.zip,再使用unzip解压时发现是正确的,按照此方法可以解决该问题。

Q2. 解压正确,但是后面运行时仍提示无xxx.jar文件

出现这个问题很迷惑,笔者尝试解压完文件后将原来的xxx.jar文件又放回到 /src/tensorflow/third_party/asm目录中,编译正确执行。(上述问题的出现用着两种方法可以解决,但是笔者总觉得这不是最合适的方法,没有从根本解决这个问题,如果大家有更好的解决方法,欢迎交流!!)

源码安装tensorflow-1.12.2,执行安装脚本,包括下载tensorflow所依赖的环境。

./install_tensorflow-1.12.2.sh

编译中出现的问题:

Q3. bazel构建文件出现的release-62-1.tar.gz错误解决

该问题主要是由于下载release-62-1.tar.gz的错误,搭建一个本地的http服务,自己下载release-62-1.tar.gz并将其放到相应的位置。具体步骤如下:

① 搭建本地http服务:

$ sudo apt-get install httpd$ sudo apt-get install apache2$ sudo apt-get install apache2-dev

安装成功后使用sudo systemctl status apache2查看状态,在浏览器中输入localhost出现下面界面即为成功。

② 安装release-62-1.tar.gz

下载地址,将下载好的文件复制到/var/www/html目录下,并将https://localhost/release-62-1.tar.gz添加到tensorflow/third_party/icu/workspace.bzl的url中。继续执行会出现下面的问题,需要在进行一处修改:

tensorflow/third_party/icu/workspace.bzl中的Checksum改成报错内容中出现的序列,即86b85…这一行序列

③ 注意

在完成上述步骤后,记得要copy一个workspace.bzl文件,因为在编译tensorflow是会更新这个文件,注意当编译时更新文件之后,迅速将更新的文件改成重新写好的workspace.bzl,这里源码编译会让你确认cuda版本,在确认版本之前更改这个文件即可。

源码编译结束后安装wheel文件即可。脚本中已写好,无需自己安装。这里给大家提供一下我编译安装好的wheel文件。

tensorflow-1.12.2-cp35-cp35m-linux_arrach64.whl

4. 常见问题

在成功安装tensoflow-1.12.2后,在测试程序的时候出现如下问题

Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

查阅了一些解决办法,最后发现是因为我的cuDnn版本不匹配导致的,之前我将Manifold-2G的cuDNN版本更新了一次,更改成了7.6.5版本,但是这个版本与编译的tensoflow不匹配,所以导致该错误发生。建议读者严格按照文章开始提到的环境安装。

问题解决来源 /tensorflow/tensorflow/issues/24828

才疏学浅,如有问题请多指教!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。