ARM64+ubuntu18.04深度学习环境安装小结

65 篇文章 4 订阅
59 篇文章 6 订阅

概述

本人断断续续花费了两周时间,在某国产ARM64+linux环境的服务器上,使用docker容器安装成功了公司深度学习项目所需的环境。中间过程坎坷,在此结文以记,希望能对他人有所帮助,少踩坑。

目前成功搭建的环境如下:aarch64 docker容器,ubuntu18.04, python2, opencv3.3, dlib19.15, tensorflow1.5, sklearn。

上述组件均是python绑定的版本。

环境描述

硬件环境为国产ARM64多核处理器,内存及磁盘均是x84服务器的水平,所以不像树莓派一样需要担心内存或磁盘。操作系统为类linux 64位,可以安装docker,所以我的环境安装均在docker容器内进行,没有在物理机上安装,也是怕来回安装搞坏host系统。

我需要的是python的运行环境,由于arm服务器不普及,所以网上很多安装c++版本的方法,并不适用我的环境,中间费了我很多时间。由于配置给力,编译时间上和x86服务器差别不大,最终使用cpu前向推理的时间,与x86的cpu在同一数量级,完全可以作为生产环境使用。

docker镜像

提前有人在物理机上安装好了docker环境,所以我没有涉及安装docker本身的过程,只是涉及选取docker镜像的问题。

由于ARM和x86指令集的差异,x86的docker镜像不能直接运行在ARM服务器上,部门之前用于生产的x86 docker镜像没法使用。我自己不是docker专家,没有从0搭建docker镜像的经验,所以从网上下载现成的基础镜像。

在命令行上搜索arm64镜像的方法为:

docker search arm64

也可以把arm64换成其他字符,搜索想要的镜像。可以从搜索结果中看到已经有很多ARM64的docker镜像可选了,完全可以选择下来然后再安装自己的东西。

命令行显示的结果比较少,也可以到这个网站上去搜索:https://hub.docker.com/

搜索结果和命令行基本一致,但是可以翻页,可以用空格隔开多个关键字搜索,还看到每个镜像更详细的信息,比如tag等信息。

我最终选择的版本是arm64v8/ubuntu:18.04。拉取的方法如下:

docker pull arm64v8/ubuntu:18.04

然后用docker images就可以看到拉到本地的镜像啦。刚拉下来的镜像大小只有几百兆,可以run起来以后在里面安装自己的环境了,剩下的就是在ubuntu下的操作。

我刚开始用的并不是ubuntu18.04,还试过debian和ubuntu16.04, 但是有环境不兼容等各种坑,全部组件安装成功的就是18.04版本。

使用国内软件源

ubuntu系统下安装软件需要配置好软件源。由于众所周知的原因,国内访问一些境外网站往往连接失败或者速度很慢,所以需要配置国内的镜像源地址。国内中科大和清华的软件源镜像都很快。我使用的是中科大的。

更换源的方式是编辑/etc/apt/sources.list,把里面的url地址替换为:http://mirrors.ustc.edu.cn/ubuntu-ports/

然后更新本地软件目录:

apt-get update

各个组件的安装过程

本节内容记录最终走通的方法和对应版本,中间无数次失败的经验按下不表。

使用apt-get 安装python、python-dev、python-pip都是小菜一碟,不费口舌了。我选择的python2.7,其它版本应该与之类似。

dlib

dlib是从源码编译安装的,在ubuntu16.04和debian上总有问题,最终在ubunut18.04上成功。

准备工作:

apt-get update
apt-get install python
apt-get install python-pip
apt-get install pkg-config
apt-get install libopenblas-dev liblapack-dev
apt-get install cmake
apt-get install libboost-all-dev

在dlib19.15源码目录下,执行python setup.py install

打开python2, import dlib成功

opencv

opencv选择的是3.3版本。从源码编译安装。
编译技巧是,把’源码目录/modules’下的dnn、highgui和videoio删掉。这几个模块总是会找不到头文件和一些链接符号。videoio负责读取视频,删掉后无法从视频抽帧,刚好项目上用不到,所以对我没影响。

编译过程可参考这里:https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/

当然,完全照搬别人的方法可能会失败。要灵活变通。
我看了好几个方法,把相关软件包都安装上了。我安装软件包的命令包括下面这些:

pip install pkg-config
apt-get install libsm6
apt-get install libxrender1
apt-get install libxext-dev

apt-get install build-essential
apt-get install python-dev
apt-get install libgtk2.0-dev
apt-get install libx11-dev
apt-get install libavcodec-dev libavformat-dev libswscale-dev
apt-get install libtbb2 libtbb-dev
apt-get install libjpeg-dev libpng-dev
apt-get install libtiff-dev
apt-get install libdc1394-22-dev

apt install gphoto2 libgphoto2*
apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good

apt-get install libv4l-dev
apt-get install libxvidcore-dev libx264-dev
apt-get install libgtk-3-dev
apt-get install libatlas-base-dev gfortran
apt-get install libxvidcore-dev libx264-dev

pip install -i  http://mirrors.aliyun.com/pypi/simple/ numpy --trusted-host  mirrors.aliyun.com

上面是准备工作,下面才是正式开始编译:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local  -D INSTALL_C_EXAMPLES=OFF  -D INSTALL_PYTHON_EXAMPLES=ON   -D BUILD_EXAMPLES=ON  -D PYTHON_EXECUTABLE=/usr/bin/python  -D PYTHON_NUMPY_INCLUDE_DIRS=/usr/local/lib/python2.7/dist-packages/numpy/core/include/  ..

(去掉videoio和dnn、highgui)
make -j8
make install

启动python, import cv2 成功。

当然,如果需要完整版本的python-opencv又不想自己折腾,可以去https://hub.docker.com/搜索arm64版本的python-opencv镜像,那里有一个别人构建好的完整的版本。

tensorflow

github上已经有人把arm64版本的tensorflow编译好了,下载地址在:https://github.com/lhelontra/tensorflow-on-arm/releases 。除了arm64,那里还有其它arm版本的安装包。

在ubuntu18.04上,1.3版本的有些问题,最终使用1.5版本的运行模型成功。

下载完whl文件后,安装命令是:

pip install -i  http://mirrors.aliyun.com/pypi/simple/  tensorflow-1.5.0-cp27-none-linux_aarch64.whl --trusted-host  mirrors.aliyun.com

这里之所以把阿里的python源url加进去,是因为安装过程还需要下载一些依赖包,从国外下载太慢。

其它

为了加速下载,pip安装时我一般手动指定阿里的python源:

pip install -i  http://mirrors.aliyun.com/pypi/simple/  软件包名 --trusted-host  mirrors.aliyun.com

像sklearn等其它python组件就可以这么安装。如果下载的python包包含二进制文件不适合arm架构,pip会自动失败。能成功pip安装的运行起来就没问题。

那些年,那些坑

这一小节记录一下自己采坑的过程。

tensorflow的坑

  • 成功结果:ubuntu18.04 + tf1.5
  • 失败的尝试:ubuntu18.04 + tf1.3, ubuntu16.04 + tf1.5/1.7

我试着编译tensorflow,结果半途而费,没走下去。最终还是选择从:https://github.com/lhelontra/tensorflow-on-arm/releases 下载预先构建好的安装包。

刚开始在ubuntu16.04上安装,tf1.7和tf1.5都依赖于比较新的c++标准库,现象就是在安装时没有报错,import的时候找不到依赖的库版本。

可是在16.04上死活升不上去,后来换成tf1.3才终于不再报错。

坑爹的是在ubuntu16.04上dlib总是出错,不得已换成ubuntu18.04。这会dlib不出错了,import tensorflow的时候也没错误,但是运行程序时出错了,错误为:

2018-08-09 11:57:54,234 [ERROR] [MainThread] [tf_model_pkg2.py:180] tfSession_exception:No OpKernel was registered to support Op 'Switch' with these attrs.  Registered devices: [CPU], Registered kernels:
  device='GPU'; T in [DT_STRING]
  device='GPU'; T in [DT_BOOL]
  device='GPU'; T in [DT_INT32]
  device='GPU'; T in [DT_FLOAT]
  device='CPU'; T in [DT_FLOAT]
  device='CPU'; T in [DT_INT32]

     [[Node: Bottleneck/BatchNorm/cond/Switch = Switch[T=DT_BOOL](phase_train, phase_train)]]

国外某个论坛上有类似的问题,需要改源码重新编译,由于重新编译也很曲折,我在ubuntu18.04上卸载tf1.3, 重装了tf1.5,才终于解决了问题。

delib的坑

  • 成功的结果:ubuntu18.04 + dlib19.15
  • 失败的尝试:ubuntu16.04 + dlib19.15

一开始在ubuntu16.04上使用pip安装dlib,安装可以成功,但是import的时候会报错:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/python2.7/dist-packages/dlib.so: undefined symbol: cblas_ddot

找不到符号,我以为代码编译就好了,结果还是同样的问题。怀疑过dlib版本是不是太新了,也怀疑过python版本,一一尝试都照样失败。

后来试着分析报错信息,在网上找到一个类似的:https://github.com/davisking/dlib/issues/154

我注意到人家运行以下命令是有输出的:

pkg-config --libs cblas

在我的系统上就报错找不到cbals.pc。结合cmake时生成的信息:

-- Searching for BLAS and LAPACK
-- Searching for BLAS and LAPACK
-- Found PkgConfig: /usr/local/bin/pkg-config
-- Checking for module 'cblas'
--   Found cblas, version
-- Checking for module 'lapack'
--   Found lapack, version
-- Found BLAS and LAPACK via pkg-config
.......
-- Looking for cblas_ddot
-- Looking for cblas_ddot - found
-- A library with BLAS API not found. Please specify library location.
-- LAPACK requires BLAS
To compile Boost.Python yourself download boost from boost.org and then go into the boost root folder
--  and run these commands:
--     ./bootstrap.sh --with-libraries=python
--     ./b2
--     sudo ./b2 install

结合上述信息,我推断pkg-config在我下载的那个ubuntu16.04上不能正常工作,无法为cmake脚本找到blas的依赖信息。个人对pkg-config机制也不熟,只能想办法绕过去。

因此,放弃ubuntu16.04,换为ubuntu18.04。果然,在ubuntu18.04上只要安装了openblas,就可以用‘pkg-config –libs cblas’得到相关信息。

最终,ubuntu18.04 + dlib19.15代码编译安装成功,import无错误,简单程序测试没有问题。我想在18.04上应该可以pip安装dlib,应该也不会出错,只是我后来没试。

opencv的坑

  • 成功的结果:opencv3.3去掉dnn、highgui和videoio以后编译安装成功
  • 失败的结果: opencv全代码安装

为了opencv,从操作系统版本、python版本、opencv版本各个组合都试了,都解决不了问题。

首先,pip能安装的opencv版本有python3.4的。但是为了使用找到的预编译的tenorflow,我只能选择python2.7或者python3.5。

opencv的问题首先变现在编译时找不到头文件:

fatal error: gst/gst.h: No such file 

其实这个头文件在系统下是有的,就是找不着。这个错误属于videoio模块。如果手动把头文件目录加到CPATH里面然后export,后面highgui也会报几个类似的错误。若都手动把头文件目录加到CPATH里编译通过,安装后import v2会报以下错误:

undefined symbol: _gst_fraction_type

暂时没有性子去分析opencv的cmake规则,就只能先删掉highgui和videoio模块编译,果然没有错误。dnn之所以被删掉,是因为cmake的时候会下载一个很大的caffe模型文件,耽误时间。

其实是可以找到一个python3.4的arm64 opencv安装包的,在这里https://pypi.org/project/opencv-python-aarch64/ 下载

对于ARM64生态的感受

对于Linux+ARM64这个组合来说,已经越来越接近x86了,虽然还有不少的距离。起码在ARM64+ubuntu之下,apt-get可安装的东西非常多,arm64的docker镜像也很多,github上越来越多的人提供arm 版本的pip安装包,对于开发者来说,ARM生态从未这么友好过。

当然差距也很明显,如果在x86上,上面的事估计半天就搞完了,不用把各个变量的版本换来换去,也不会遇到一个问题找不到几个帖子分析。

性能

ARM的CPU性能是个要考虑的问题,特别对于深度学习项目来说。简单测试,同样的代码和模型,在ARM服务器上单次调用时间是x86 cpu的2~3倍。还行吧。

本次环境安装的不足

第一次在ARM生态上安装这么多东西,没有充分挖掘各个软件在ARM上的编译优化选项,目前做的环境版本应该不是最完美的状态,相信还有很多可优化的空间。起码ARM的neon优化、opencl加速等课题我还没探索到,希望后面有机会摸索一下。

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Ubuntu 18.04深度学习环境配置需要以下步骤: 1. 安装CUDA和cuDNN:CUDA是NVIDIA的GPU加速计算平台,cuDNN是深度神经网络库。首先需要安装CUDA,然后再安装cuDNN。具体安装步骤可以参考官方文档。 2. 安装Python和相关库:Ubuntu 18.04自带Python 3,可以使用apt-get命令安装Python相关库,如numpy、scipy、matplotlib等。 3. 安装深度学习框架:常用的深度学习框架有TensorFlow、PyTorch、Keras等。可以使用pip命令安装。 4. 配置环境变量:需要将CUDA和cuDNN的路径添加到环境变量中,以便深度学习框架能够正确地使用GPU加速。 5. 测试环境:可以使用简单的深度学习模型测试环境是否配置成功。 以上是Ubuntu 18.04深度学习环境配置的基本步骤,具体操作可以参考相关文档和教程。 ### 回答2: Ubuntu18.04是许多深度学习爱好者所喜欢的一种操作系统。Ubuntu18.04不仅稳定可靠,还提供了许多强大的开发工具和编程环境。以下是一些要点和步骤,供您在Ubuntu18.04中配置深度学习环境。 1. 安装Ubuntu18.04Ubuntu18.04安装深度学习环境之前,您需要首先安装Ubuntu18.04操作系统。您可以通过官方网站下载Ubuntu18.04的iso文件,然后将其写入可引导的USB驱动器。 2. 安装NVIDIA驱动程序 NVIDIA驱动程序是深度学习环境配置中最重要的部分,因为它可以提供针对NVIDIA GPU的支持。如何安装NVIDIA驱动程序取决于您的显卡型号。您可以通过以下命令来检查您的显卡型号: $ lspci | grep -i nvidia 如果您的显卡型号是NVIDIA Tesla V100,则可以通过以下命令来下载最新的NVIDIA驱动程序: $ wget http://us.download.nvidia.com/tesla/410.72/nvidia-diag-driver-local-repo-ubuntu1804-410.72_1.0-1_amd64.deb 在安装NVIDIA驱动程序之前,您需要卸载之前安装的任何旧版驱动程序。卸载的命令如下: $ sudo apt-get purge nvidia* 安装新的NVIDIA驱动程序: $ sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1804-410.72_1.0-1_amd64.deb $ sudo apt-key add /var/nvidia-diag-driver-local-repo-410.72/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda-drivers 3. 安装CUDA和cuDNN 安装了NVIDIA驱动程序后,您可以安装CUDA和cuDNN。CUDA可以为您提供各种各样的计算和优化库,用于构建深度学习模型。cuDNN是一个加速深度神经网络的库。以下是安装CUDA的步骤: $ wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64 $ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb $ sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda 安装cuDNN: $ tar -xzvf cudnn-9.0-linux-x64-v7.tgz $ sudo cp -P cuda/include/cudnn.h /usr/local/cuda-9.0/include $ sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/ $ sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn* 4. 安装Python和深度学习框架 Python是深度学习环境中使用的主要编程语言。您可以使用以下命令安装Python3: $ sudo apt-get install python3 深度学习框架是实现深度学习算法和模型的库。许多流行的深度学习框架,例如TensorFlow、PyTorch和Keras,都可以在Ubuntu18.04上进行安装和配置。以下是安装TensorFlow的步骤: $ sudo apt-get install python3-pip python3-dev python-virtualenv $ virtualenv --system-site-packages tensorflow $ source tensorflow/bin/activate (tensorflow) $ pip install --upgrade pip (tensorflow) $ pip install --user tensorflow-gpu 5. 训练深度学习模型 当您完成深度学习环境的配置后,可以开始训练深度学习模型。您可以使用自己的数据集或公共数据集来训练模型。以下是使用TensorFlow训练模型的示例代码: import tensorflow as tf from tensorflow import keras (train_images, train_labels), (test_images, test_labels) = keras.datasets.mnist.load_data() train_images = train_images.astype('float32') / 255 test_images = test_images.astype('float32') / 255 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(train_images, train_labels, epochs=5) 您可以通过运行该命令训练模型: (tensorflow) $ python train_model.py 在完成训练后,您可以通过以下命令保存模型: model.save('my_model.h5') 6. 总结 Ubuntu18.04是一种出色的操作系统,适用于深度学习环境的配置。在配置深度学习环境之前,您需要安装NVIDIA驱动程序、CUDA和cuDNN。然后,您可以安装Python和深度学习框架,例如TensorFlow。在配置完环境之后,您可以使用您自己的数据或公共数据集训练深度学习模型。 ### 回答3: Ubuntu 18.04 作为当前最流行的开操作系统,广泛应用于深度学习领域。它提供了很好的性能和稳定性,同时也支持广泛的深度学习框架和工具库,如 Keras、TensorFlow、PyTorch 和 OpenCV 等。下面是配置 Ubuntu 18.04 深度学习环境的基本步骤: 1. 确保 Ubuntu 18.04 正确安装和升级: 首先,确保 Ubuntu 18.04 正确安装和升级到最新版本。您可以使用以下命令升级您的操作系统: sudo apt-get update sudo apt-get upgrade 2. 安装 Anaconda 3: Anaconda 是一个广泛使用的 Python 数据科学和机器学习平台,它为用户提供了方便的包管理和环境管理工具。您可以使用以下命令下载并安装 Anaconda: wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh bash Anaconda3-2019.07-Linux-x86_64.sh 在安装过程中,按照屏幕上的提示进行操作。一旦安装完成,您需要从终端中运行以下命令将 Anaconda 添加到系统路径: export PATH=/root/anaconda3/bin:$PATH 3. 安装深度学习框架: 安装深度学习框架需要在 Anaconda 中创建一个新的虚拟环境,并安装相应的包,例如 TensorFlow 或 PyTorch。以下是以 TensorFlow 为例的样例代码: conda create -n tensorflow python=3.6 conda activate tensorflow conda install tensorflow-gpu 用类似的方式可以安装其他深度学习框架,如 PyTorch 等。 4. 安装和配置 GPU 驱动程序: 如果您的系统安装了 GPU,则需要安装相应的 GPU 驱动程序和 CUDA 工具包以获得更好的性能。以下是安装 GPU 驱动程序和 CUDA 工具包的样例代码: sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-430 sudo apt install nvidia-cuda-toolkit 5. 安装图像处理库: 在深度学习中需要加载和处理图像,在 Ubuntu18.04 中可用的图像处理库包括 OpenCV 和 Pillow。以下是样例代码: conda install opencv conda install Pillow 在完成这些步骤之后,您的 Ubuntu 18.04 系统就具备了基本的深度学习环境。您可以按照框架和工具库的具体要求进行配置和设置,以进行更高级的深度学习任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值