Adlik加速深度学习推理的工具包

联合创作 · 2023-09-26 06:22

Adlik 是深度学习模型的端到端优化框架。Adlik 的目标是在云和嵌入式环境中加速深度学习推理过程。

Adlik示意图

使用 Adlik 框架,不同的深度学习模型可以以非常灵活和简单的方式以高性能部署到不同的平台。

使用 Adlik 在云/边缘/设备中部署模型

  1. 在云环境中,编译后的模型和 Adlik 推理引擎应构建为 docker 镜像,并部署为容器。

  2. 在边缘环境中,应将 Adlik 推理引擎部署为容器。编译后的模型应该转移到边缘环境,Adlik 推理引擎应该自动更新和加载模型。

  3. 在设备环境中,Adlik Inference Engine 和编译后的模型应编译为二进制文件。想要在设备上运行模型推理的用户应该将用户定义的 AI 函数和 Adlik 二进制文件链接到执行文件,并直接运行。

构建

本指南用于在 Ubuntu 系统上构建 Adlik 。

首先,安装 Git 和 Bazel

然后,克隆 Adlik 并将工作目录更改为源目录:

git clone https://github.com/ZTE/Adlik.git
cd Adlik

构建客户端

  1. 安装以下软件包:

    • python3-setuptools
    • python3-wheel
  2. 构建客户端:

    bazel build //adlik_serving/clients/python:build_pip_package -c opt
  3. 构建 pip 包:

    mkdir /tmp/pip-packages && bazel-bin/adlik_serving/clients/python/build_pip_package /tmp/pip-packages

构建服务

首先,安装以下软件包:

  • automake
  • libtbb2
  • libtool
  • make
  • python3-six

使用 OpenVINO 运行时构建服务

  1. 从 OpenVINO 安装intel-openvino-runtime-ubuntu<OS_VERSION>-<VERSION>包 。

  2. 假设 OpenVINO 的安装路径为/opt/intel/openvino_VERSION,运行如下命令:

    export INTEL_CVSDK_DIR=/opt/intel/openvino_VERSION
    export InferenceEngine_DIR=$INTEL_CVSDK_DIR/deployment_tools/inference_engine/share
    bazel build //adlik_serving \
        --config=openvino \
        -c opt
    

使用 TensorFlow CPU 运行时构建服务

  1. 运行以下命令:

    bazel build //adlik_serving \ --config=tensorflow-cpu \ -c opt

使用 TensorFlow GPU 运行时构建服务

假设使用 CUDA 版本 11.0 构建。

  1. 这里和 这里安装以下软件包 :

    • cuda-cupti-dev-11-0
    • libcublas-dev-11-0
    • libcudnn8=*+cuda11.0
    • libcudnn8-dev=*+cuda11.0
    • libcufft-dev-11-0
    • libcurand-dev-11-0
    • libcusolver-dev-11-0
    • libcusparse-dev-11-0
    • libnvinfer7=7.2.*+cuda11.0
    • libnvinfer-dev=7.2.*+cuda11.0
    • libnvinfer-plugin7=7.2.*+cuda11.0
    • libnvinfer-plugin-dev=7.2.*+cuda11.0
  2. 运行以下命令:

    env TF_CUDA_VERSION=11.0 TF_NEED_TENSORRT=1 \ bazel build //adlik_serving \ --config=tensorflow-gpu \ -c opt \ --incompatible_use_specific_tool_files=false

使用 TensorFlow Lite CPU 运行时构建服务

  1. 运行以下命令:

    bazel build //adlik_serving \ --config=tensorflow-lite-cpu \ -c opt

使用 TensorRT 运行时构建服务

假设使用 CUDA 版本 11.0 构建。

  1. 这里和 这里安装以下软件包 :

    • cuda-cupti-dev-11-0
    • cuda-nvml-dev-11-0
    • cuda-nvrtc-11-0
    • libcublas-dev-11-0
    • libcudnn8=*+cuda11.0
    • libcudnn8-dev=*+cuda11.0
    • libcufft-dev-11-0
    • libcurand-dev-11-0
    • libcusolver-dev-11-0
    • libcusparse-dev-11-0
    • libnvinfer7=7.2.*+cuda11.0
    • libnvinfer-dev=7.2.*+cuda11.0
    • libnvonnxparsers7=7.2.*+cuda11.0
    • libnvonnxparsers-dev=7.2.*+cuda11.0
  2. 运行以下命令:

    env TF_CUDA_VERSION=11.0 \ bazel build //adlik_serving \ --config=TensorRT \ -c opt \ --action_env=LIBRARY_PATH=/usr/local/cuda-11.0/lib64/stubs \ --incompatible_use_specific_tool_files=false

使用 TF-TRT 运行时构建服务

假设使用 CUDA 版本 11.0 构建。

  1. 这里和 这里安装以下软件包 :

    • cuda-cupti-dev-11-0
    • libcublas-dev-11-0
    • libcudnn8=*+cuda11.0
    • libcudnn8-dev=*+cuda11.0
    • libcufft-dev-11-0
    • libcurand-dev-11-0
    • libcusolver-dev-11-0
    • libcusparse-dev-11-0
    • libnvinfer7=7.2.*+cuda11.0
    • libnvinfer-dev=7.2.*+cuda11.0
    • libnvinfer-plugin7=7.2.*+cuda11.0
    • libnvinfer-plugin-dev=7.2.*+cuda11.0
  2. 运行以下命令:

    env TF_CUDA_VERSION=11.0 TF_NEED_TENSORRT=1 \ bazel build //adlik_serving \ --config=tensorflow-tensorrt \ -c opt \ --incompatible_use_specific_tool_files=false

使用 Tvm 运行时构建服务

  1. 安装以下软件包:

    • build-essential
    • cmake
    • tvm
  2. 运行以下命令:

    bazel build //adlik_serving \ --config=tvm \ -c opt
浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报