美文网首页
(一)NV Jetson上使用 PaddlePaddle 预测:

(一)NV Jetson上使用 PaddlePaddle 预测:

作者: X_Dragon | 来源:发表于2020-09-09 17:35 被阅读0次

    NV Jetson 硬件编译PaddlePaddle

    **如果你的机器是用的NV Jetpack 4.2刷的机,可以直接访问这个链接进行下载预编译lib https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html
    **

    此教程要给大家介绍如何在NV Jetson 硬件上使用Paddle inference 进行预测。本节中,主要介绍如何在Jetson硬件上编译Paddle Inference 库。
    在开始以下的操作前请确保你的Jetson 硬件已经通过NV的SDKManager刷过机,并安装必要的依赖库(CUDA, CUDNN,TRT)。

    一: 下载paddle代码

    git clone https://github.com/paddlepaddle/paddle
    # 切换到1.7.0稳定版本
    git checkout v1.7.0
    

    二: 准备

    1. 安装NCCL
    git clone https://github.com/NVIDIA/nccl.git
    make -j4
    make install
    

    Note: 后续Paddle预测会考虑将此依赖去除(因为单卡用不到NCCL)。

    1. 准备Python环境
      Note:如果只使用C++来进行预测,可以跳过这一步
    sudo pip install virtualenv
    sudo apt-get install python3.6-dev liblapack-dev  gfortran libfreetype6-dev libpng-dev libjpeg-dev zlib1g-dev patchelf python3-opencv
    
    #建立基于Python3.6的虚拟环境
    virtualenv pd_env --no-site-packages --python=python3.6
    #进入Python虚拟环境
    source pd_env/bin/activate
    
    #进入Paddle 源码目录
    cd Paddle 
    
    #安装运行Python Paddle需要的依赖(numpy,scipy etc)
    #此处安装会比较慢,请耐心等待
    pip install -r python/requirements.txt
    
    1. 开启硬件性能模式
    sudo nvpmodel -m 0 && sudo jetson_clocks
    
    1. 如果硬件为Nano,增加swap空间
    #增加DDR可用空间,Xavier默认内存为16G,所以内存足够,如想在Nano上尝试,请执行如上操作。
    sudo fallocate -l 5G /var/swapfile
    sudo chmod 600 /var/swapfile
    sudo mkswap /var/swapfile
    sudo swapon /var/swapfile
    sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
    

    三:编译paddle

    cd Paddle
    mkdir build
    cd build
    
    1. 编译C++预测lib。(带Python安装包
      Note: 如果只需要C++lib,参照2中cmake命令
    cmake .. \
              -DWITH_CONTRIB=OFF \
              -DWITH_MKL=OFF  \
              -DWITH_MKLDNN=OFF \
              -DWITH_TESTING=OFF \
              -DCMAKE_BUILD_TYPE=Release \
              -DON_INFER=ON \
              -DWITH_PYTHON=ON \
                  -DWITH_XBYAK=OFF  \
                  -DWITH_NV_JETSON=ON \
                  -DPY_VERSION=3.6
    
    make -j4
    # 生成预测lib,生成fluid_inference_install_dir 即C++预测库目录
    make inference_lib_dist 
    # 安装python 库
    pip install -U python/dist/*.whl
    
    1. 编译C++的预测lib(不带Python lib)
    cmake .. \
              -DWITH_CONTRIB=OFF \
              -DWITH_MKL=OFF  \
              -DWITH_MKLDNN=OFF \
              -DWITH_TESTING=OFF \
              -DCMAKE_BUILD_TYPE=Release \
              -DON_INFER=ON \
              -DWITH_PYTHON=OFF \
                  -DWITH_XBYAK=OFF  \
                  -DWITH_NV_JETSON=ON 
             
    make -j4
    # 生成预测lib, 生成fluid_inference_install_dir 即C++预测库目录
    make inference_lib_dist -j4
    

    四:样例测试

    请参照官网:https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_usage/deploy/inference/paddle_tensorrt_infer.html#id2
    

    五:可能会遇到的问题

    1. ERROR: ../aarch64-linux-gpn/crtn.o: Too many open files.
    #系统默认1024, 增大同一时间最多可开启的文件数为2048
    ulimit -n 2048
    
    1. 编译卡住
    可能是第三方库下载比较慢,kill掉重新编译或者耐心等一会儿。
    
    1. error: class nvinfer1::IPluginFactory has accessible no-virtual destructor.
    # 找到NvInfer.h 
    # 然后给IPluginFactory 类添加虚析构函数
    virtual  ~IPluginFactory() {}
    

    相关文章

      网友评论

          本文标题:(一)NV Jetson上使用 PaddlePaddle 预测:

          本文链接:https://www.haomeiwen.com/subject/swkodhtx.html