Adlik 是深度学习模型的端到端优化框架。Adlik 的目标是在云和嵌入式环境中加速深度学习推理过程。
使用 Adlik 框架,不同的深度学习模型可以以非常灵活和简单的方式以高性能部署到不同的平台。
-
在云环境中,编译后的模型和 Adlik 推理引擎应构建为 docker 镜像,并部署为容器。
-
在边缘环境中,应将 Adlik 推理引擎部署为容器。编译后的模型应该转移到边缘环境,Adlik 推理引擎应该自动更新和加载模型。
-
在设备环境中,Adlik Inference Engine 和编译后的模型应编译为二进制文件。想要在设备上运行模型推理的用户应该将用户定义的 AI 函数和 Adlik 二进制文件链接到执行文件,并直接运行。
构建
本指南用于在 Ubuntu 系统上构建 Adlik 。
然后,克隆 Adlik 并将工作目录更改为源目录:
git clone https://github.com/ZTE/Adlik.git
cd Adlik
构建客户端
-
安装以下软件包:
-
python3-setuptools
-
python3-wheel
-
-
构建客户端:
bazel build //adlik_serving/clients/python:build_pip_package -c opt
-
构建 pip 包:
mkdir /tmp/pip-packages && bazel-bin/adlik_serving/clients/python/build_pip_package /tmp/pip-packages
构建服务
首先,安装以下软件包:
-
automake
-
libtbb2
-
libtool
-
make
-
python3-six
使用 OpenVINO 运行时构建服务
-
从 OpenVINO 安装
intel-openvino-runtime-ubuntu
包 。- -
假设 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 运行时构建服务
-
运行以下命令:
bazel build //adlik_serving \ --config=tensorflow-cpu \ -c opt
使用 TensorFlow GPU 运行时构建服务
假设使用 CUDA 版本 11.0 构建。
-
-
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
-
-
运行以下命令:
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 运行时构建服务
-
运行以下命令:
bazel build //adlik_serving \ --config=tensorflow-lite-cpu \ -c opt
使用 TensorRT 运行时构建服务
假设使用 CUDA 版本 11.0 构建。
-
-
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
-
-
运行以下命令:
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 构建。
-
-
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
-
-
运行以下命令:
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 运行时构建服务
-
安装以下软件包:
-
build-essential
-
cmake
-
tvm
-
-
运行以下命令:
bazel build //adlik_serving \ --config=tvm \ -c opt