• (译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2


    (译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2

    译者注:

    原文来自:https://tech.amikelive.com/node-706/comprehensive-guide-installing-caffe2-with-gpu-support-by-building-from-source-on-ubuntu-16-04/?tdsourcetag=s_pctim_aiomsg, 不得不说该文作者知识比较丰富,研究比较深入,环境的配置讲解比较详细。个人认为这篇博客价值比较大,可能这篇博客会对深度学习的工作者们提供一定的帮助,所以打算翻译下来,并尽量还原原文的意思。如果有侵权,请联系我。

    img

    通过基础设施设置(译者注:即深度环境),我们可以方便地开始钻研深度学习,构建,训练和验证深度神经网络模型,并将模型应用到特定问题域。将深度学习原语转换为低级字节码执行可能是一项艰巨的任务,特别是对于没有深度学习计算兴趣的从业者。幸运的是,有几个深度学习框架提供高级编程接口,以帮助执行深度学习任务。(即深度学习平台)

    在这篇文章中,我们将介绍Caffe2的安装,这是一个主要的深度学习框架。Caffe2采用Caffe,这是由加州大学伯克利分校Barkeley Vision and Learning Center(BVLC)开发的深度学习框架。Caffe2的开始旨在改善Caffe,特别是为了更好地支持大规模分布式模型培训,移动部署,降低精度计算,新硬件以及移植到多个平台的灵活性。

    为什么从源安装?

    需要注意的是,除了从源进行安装,还有一些更简单的选项,例如通过拉动和运行Caffe2 Docker镜像。可以在此处访问Caffe2映像的Docker存储库。尽管如此,如果您观察列表,image(docker中镜像)不是最新的,它们是针对旧版本的CUDA工具包和cuDNN构建的。因此,打算使用最新的Caffe2,CUDA或cuDNN功能的人应该考虑从源代码进行安装。

    Caffe2 现在是Pytorch的一部分

    之前caffe2是一个独立的库来维护的。自从2018年3月底依赖,Caffe2就已经被合并到Pytorch仓库中了,(译者注:现在已经不能通过单独编译caffe2的源代码得到Caffe2了,已经无法将所有模块clone下来了)。所以Caffe2的共同构建过程已经被集成到了pytorch中去。

    关于源代码合并的动机可能存在疑问。正如公告文章中所解释的那样,合并之前是Caffe2和Pytorch之间的开发基础设施共享,导致共享代码和公共库的数量不断增加。然后得出结论,将两个项目合并为一个代码库将提高工程效率并提高框架的稳健性,尤其是在模型部署领域。

    如果先前安装了Caffe2怎么办?在源代码合并之前安装Caffe2时,构建过程将输出随后复制到指定目录的头文件,动态库和python库。从理论上讲,用最新版本的文件替换旧的头文件和库文件就足够了。如果它不起作用,则在继续安装之前首先从已安装的目录中删除旧文件,然后进行清理

    先决条件

    我们将安装支持GPU的Caffe2。本文仅介绍具有NVIDIA GPU的计算机的安装过程。在完成安装之前,请验证是否满足这些项目。

    1. 确认已正确安装NVIDIA图形驱动程序。

      您可以参考本文了解NVIDIA图形驱动程序的安装和功能检查。

    2. 验证是否已安装CUDA工具包。
      如果您尚未安装CUDA工具包,不确定它是否已安装,或者是否要安装较新版本的CUDA工具包,请参阅本文,其中提供了有关CUDA工具包安装的更多详细信息。

    3. 验证是否已安装cuDNN。有关cuDNN安装的更多详细信息,
      请参阅此文章

    4. 从先前的Caffe2安装中删除文件
      如果您之前安装了Caffe2并且想要进行升级,则可能需要清除在先前的Caffe 2安装中创建和复制的文件。
      注意:这通常可以跳过,因为构建工具将首先检查系统中安装的Caffe2的现有版本,然后再用新的版本替换它

    sudo rm -vRf /usr/local/include/caffe2
    sudo rm -vf /usr/local/lib/libcaffe2*
    

    此外,我们可能需要从Python包目录中删除python API(路径可能因安装的Python版本而异)。

    sudo rm -vRf /usr/local/lib/python2.7/dist-packages/caffe2
    

    检查完所有先决条件后,我们现在可以继续安装。

    安装步骤

    可以通过按顺序执行这些步骤来完成安装。

    1. 更新apt包索引
    sudo apt-get update
    
    1. 安装apt包依赖
    sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
    
    1. 安装pip依赖
    sudo pip install --upgrade pip
    sudo pip install setuptools future numpy protobuf
    sudo apt-get install -y --no-install-recommends libgflags-dev
    
    1. 将Caffe 2克隆到本地目录中

    注意:我们创建一个名为caffe2-pytorch的目录,并将Pytorch git repository克隆到此目录中。

    mkdir caffe2-pytorch && cd caffe2-pytorch
    git clone --recursive https://github.com/pytorch/pytorch.git ./
    git submodule update --init
    
    1. 建立Caffe 2
    mkdir build && cd build
    cmake ..
    sudo make -j"$(nproc)" install
    

    注意:构建源代码时,我们提供-j标志。该标志指的是在构建源代码时编译器(即GCC)可以生成的线程数。该NPROC命令本身会打印可用的CPU数量。简而言之,我们希望通过创建多个线程来加快编译时间,这些线程相当于并行执行编译的CPU数量。

    1. 为Caffe 2共享库创建符号链接
    sudo ldconfig
    
    1. 验证Caffe2的库文件和头文件是否已经安装好
    • 更新本地database
    sudo updatedb
    
    • 确保libcaffe2.so在/usr/local/lib
    locate libcaffe2.so
    
    • 确认头文件是不是在/usr/local/include
    locate caffe2 | grep /usr/local/include/caffe2
    
    1. 将Caffe2添加到Python 库路径中,以便于其他应用能够通过路径找到该文件
    vim ~/.profile
    
    # set python path
    if [ -z “$PYTHONPATH” ]; then
        PYTHONPATH=/usr/local
    else 
        PYTHONPATH=/usr/local:$PYTHONPATH
    fi
    
    #set library path
    if [ -z “$LD_LIBRARY_PATH” ]; then
        LD_LIBRARY_PATH=/usr/local/lib
    else
        LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    fi
    

    我们还可以使用参数扩展设置库路径,如下所示:

    PYTHONPATH=/usr/local${PYTHONPATH:+:${PYTHONPATH}}
    LD_LIBRARY_PATH=/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    让新路径生效

    source ~/.profile
    
    1. 验证Caffe2 python模块是否可以被正确调用
    $ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
    
    1. 验证Caffe2是否可以在GPU支持下运行
    python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'
    
  • 相关阅读:
    Linux C/C++编程之(三)常用命令之文件处理命令
    linux下查看activiti流程图乱码
    基于区块链的自主身份和可信声明
    数字证书PKI原理
    Linux C/C++编程之(二)常用命令之目录处理命令
    Linux C/C++编程之(一)VMware 虚拟机安装Ubuntu16.04 图解
    移动端专项测试-内存泄漏
    centos7 netstat命令使用场景 杂记
    《java入门第一季》之面向对象(构造方法)
    《java入门第一季》之面向对象this关键字
  • 原文地址:https://www.cnblogs.com/pprp/p/9575320.html
Copyright © 2020-2023  润新知