从 Docker* 映像安装适用于 Linux* 的英特尔® Distribution of OpenVINO™ 工具套件

英特尔® Distribution of OpenVINO™ 工具套件可以快速部署可媲美人类视觉的应用程序和解决方案。该工具套件基于复杂神经网络(CNN),通过英特尔® 硬件扩展了计算机视觉 (CV) 工作负载,从而最大化性能。英特尔® Distribution of OpenVINO™ 工具套件中包含了英特尔® Deep Learning Deployment Toolkit。

本指南提供了通过适用于 Linux* 的英特尔® Distribution of OpenVINO™ 工具套件创建 Docker* 映像,以及进一步进行安装的步骤。

系统要求

目标操作系统

主机操作系统

将 Docker* 映像用于 CPU

为 CPU 构建 Docker* 映像

如要构建 Docker 映像,请创建一个包含为创建 OpenVINO 工具套件安装映像所必需的定义变量和命令的Dockerfile

请使用以下样本作为模板创建您的Dockerfile

单击以展开/折叠

FROM ubuntu:18.04
USER root
WORKDIR /
SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
# Creating user openvino
RUN useradd -ms /bin/bash openvino && \
chown openvino -R /home/openvino
ARG DEPENDENCIES="autoconf \
automake \
build-essential \
cmake \
cpio \
curl \
gnupg2 \
libdrm2 \
libglib2.0-0 \
lsb-release \
libgtk-3-0 \
libtool \
udev \
unzip \
dos2unix"
RUN apt-get update && \
apt-get install -y --no-install-recommends ${DEPENDENCIES} && \
rm -rf /var/lib/apt/lists/*
WORKDIR /thirdparty
RUN sed -Ei 's/# deb-src /deb-src /' /etc/apt/sources.list && \
apt-get update && \
apt-get source ${DEPENDENCIES} && \
rm -rf /var/lib/apt/lists/*
# setup Python
ENV PYTHON python3.6
RUN apt-get update && \
apt-get install -y --no-install-recommends python3-pip python3-dev lib${PYTHON}=3.6.9-1~18.04 && \
rm -rf /var/lib/apt/lists/*
ARG package_url=http://registrationcenter-download.intel.com/akdlm/irc_nas/16612/l_openvino_toolkit_p_0000.0.000.tgz
ARG TEMP_DIR=/tmp/openvino_installer
WORKDIR ${TEMP_DIR}
ADD ${package_url} ${TEMP_DIR}
# install product by installation script
ENV INTEL_OPENVINO_DIR /opt/intel/openvino
RUN tar -xzf ${TEMP_DIR}/*.tgz --strip 1
RUN sed -i 's/decline/accept/g' silent.cfg && \
${TEMP_DIR}/install.sh -s silent.cfg && \
${INTEL_OPENVINO_DIR}/install_dependencies/install_openvino_dependencies.sh
WORKDIR /tmp
RUN rm -rf ${TEMP_DIR}
# installing dependencies for package
WORKDIR /tmp
RUN ${PYTHON} -m pip install --no-cache-dir setuptools && \
find "${INTEL_OPENVINO_DIR}/" -type f -name "*requirements*.*" -path "*/${PYTHON}/*" -exec ${PYTHON} -m pip install --no-cache-dir -r "{}" \; && \
find "${INTEL_OPENVINO_DIR}/" -type f -name "*requirements*.*" -not -path "*/post_training_optimization_toolkit/*" -not -name "*windows.txt" -not -name "*ubuntu16.txt" -not -path "*/python3*/*" -not -path "*/python2*/*" -exec ${PYTHON} -m pip install --no-cache-dir -r "{}" \;
WORKDIR ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker
RUN source ${INTEL_OPENVINO_DIR}/bin/setupvars.sh && \
${PYTHON} -m pip install --no-cache-dir -r ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker/requirements.in && \
${PYTHON} ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker/setup.py install
WORKDIR ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit
RUN if [ -f requirements.txt ]; then \
${PYTHON} -m pip install --no-cache-dir -r ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit/requirements.txt && \
${PYTHON} ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit/setup.py install; \
fi;
# Post-installation cleanup and setting up OpenVINO environment variables
RUN if [ -f "${INTEL_OPENVINO_DIR}"/bin/setupvars.sh ]; then \
printf "\nsource \${INTEL_OPENVINO_DIR}/bin/setupvars.sh\n" >> /home/openvino/.bashrc; \
printf "\nsource \${INTEL_OPENVINO_DIR}/bin/setupvars.sh\n" >> /root/.bashrc; \
fi;
RUN find "${INTEL_OPENVINO_DIR}/" -name "*.*sh" -type f -exec dos2unix {} \;
USER openvino
WORKDIR ${INTEL_OPENVINO_DIR}
CMD ["/bin/bash"]

注意:请将package_url自变量中通往英特尔® Distribution of OpenVINO™ 工具套件的直接链接替换为最新版本。您可以在完成注册后,从英特尔® Distribution of OpenVINO™ 工具套件下载页面复制该链接。请在您的浏览器中右键单击 Linux 版已下载页面中的离线安装程序按钮,然后按下复制链接地址

您可以通过修改silent.cfg文件中的COMPONENTS参数来选择将安装哪些 OpenVINO 组件。例如,如果只准备为推断引擎安装 CPU 运行时,请在silent.cfg中设置COMPONENTS=intel-openvino-ie-rt-cpu__x86_64

要获得可安装组件的完整列表,请从已解压的 OpenVINO™ 工具套件包中运行./install.sh --list_components命令。

要为 CPU 构建 Docker* 映像,请运行以下命令:

docker build . -t <image_name> \
--build-arg HTTP_PROXY=<http://your_proxy_server.com:port> \
--build-arg HTTPS_PROXY=<https://your_proxy_server.com:port>

为 CPU 运行 Docker* 映像

使用以下命令运行映像:

docker run -it <image_name>

将 Docker* 映像用于 GPU

为 GPU 构建 Docker* 映像

先决条件:

在 GPU 上构建 Docker* 映像之前,请先将以下命令添加到上述 CPU Dockerfile示例中:

WORKDIR /tmp/opencl
RUN usermod -aG video openvino
RUN apt-get update && \
apt-get install -y --no-install-recommends ocl-icd-libopencl1 && \
rm -rf /var/lib/apt/lists/* && \
curl -L "https://github.com/intel/compute-runtime/releases/download/19.41.14441/intel-gmmlib_19.3.2_amd64.deb" --output "intel-gmmlib_19.3.2_amd64.deb" && \
curl -L "https://github.com/intel/compute-runtime/releases/download/19.41.14441/intel-igc-core_1.0.2597_amd64.deb" --output "intel-igc-core_1.0.2597_amd64.deb" && \
curl -L "https://github.com/intel/compute-runtime/releases/download/19.41.14441/intel-igc-opencl_1.0.2597_amd64.deb" --output "intel-igc-opencl_1.0.2597_amd64.deb" && \
curl -L "https://github.com/intel/compute-runtime/releases/download/19.41.14441/intel-opencl_19.41.14441_amd64.deb" --output "intel-opencl_19.41.14441_amd64.deb" && \
curl -L "https://github.com/intel/compute-runtime/releases/download/19.41.14441/intel-ocloc_19.04.12237_amd64.deb" --output "intel-ocloc_19.04.12237_amd64.deb" && \
dpkg -i /tmp/opencl/*.deb && \
ldconfig && \
rm /tmp/opencl

要为 GPU 构建 Docker* 映像,请运行以下命令:

docker build . -t <image_name> \
--build-arg HTTP_PROXY=<http://your_proxy_server.com:port> \
--build-arg HTTPS_PROXY=<https://your_proxy_server.com:port>

为 GPU 运行 Docker* 映像

如要使 GPU 在容器中可用,请使用--device /dev/dri选项将 GPU 附加到容器,然后运行容器:

docker run -it --device /dev/dri <image_name>

将 Docker* 映像用于英特尔® Movidius™ 神经电脑棒和英特尔® 神经电脑棒 2 的步骤

为英特尔® Movidius™ 神经电脑棒和英特尔® 神经电脑棒 2 构建 Docker* 映像的步骤

使用与 CPU 相同的步骤构建 Docker 映像。

为英特尔® Movidius™ 神经电脑棒和英特尔® 神经电脑棒 2 运行 Docker* 映像的步骤

已知的限制:

使用以下选项之一来运行适用于英特尔 Movidius 神经电脑棒的可能的解决方案:

注意

  • 它不安全
  • 与 Kubernetes* 和其他使用编排和私有网络的工具发生冲突
docker run --device-cgroup-rule='c 189:* rmw' -v /dev/bus/usb:/dev/bus/usb <image_name>

将 Docker* 映像用于采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design

为采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 构建 Docker* 映像

如要在采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 上将 Docker 容器用于推断:

  1. 在主机上设置环境,这将用于运行 Docker*。需要执行hddldaemon,它负责 HDDL 插件和主板之间的通信。如要了解如何设置环境(OpenVINO 包必须已预先安装),请参见采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 配置指南
  2. 准备 Docker* 映像。作为基础映像,您可以使用为 CPU 构建 Docker 映像一节中的映像。如要将其用于采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 上的推断,您需要通过添加以下依赖项来重建映像:
    RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    libboost-filesystem1.65-dev=1.65.1+dfsg-0ubuntu5 \
    libboost-thread1.65-dev=1.65.1+dfsg-0ubuntu5 \
    libjson-c3=0.12.1-1.3 libxxf86vm-dev=1:1.1.4-1 && \
    rm -rf /var/lib/apt/lists/*
  3. 使用以下命令在主机上用一个单独的终端进程运行hddldaemon
    $HDDL_INSTALL_DIR/hddldaemon

为采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 运行 Docker* 映像

要为采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 运行已构建好的 Docker* 映像,请使用以下命令:

docker run --device=/dev/ion:/dev/ion -v /var/tmp:/var/tmp -ti <image_name>

注意

  • 设备/dev/ion需要先被共享,才能在插件、hddldaemon和内核中使用离子缓冲器。
  • 由于独立的推断任务共享相同的 HDDL 服务通信接口(该服务会在/var/tmp中创建 mutexes 和插槽文件),因此需要载入/var/tmp并在它们中共享。

在某些案例中,离子驱动程序未启用(例如,因为更新的内核版本或 iommu 不兼容)。lsmod | grep myd_ion返回的输出为空。要解决该问题,请使用以下命令:

docker run --rm --net=host -v /var/tmp:/var/tmp –ipc=host -ti <image_name>

注意

  • 在构建 Docker 映像时,在请在 docker 文件中创建用户,使其 UID 和 GID 与在主机上运行 hddldaemon 的用户相同。
  • 以该用户的身份在 Docker 中运行应用程序。
  • 或者,您可以在主机上以根用户的身份启动 hddlaemon,但我们不推荐这种方法。

将 Docker* 映像用于 FPGA

为 FPGA 构建 Docker* 映像

默认情况下 FPGA 卡在容器中不可用,但它可以在以下先决条件下被载入其中:

如要为 FPGA 构建 Docker* 映像:

  1. 在以下Dockerfile中设置额外的环境变量:
    ENV CL_CONTEXT_COMPILER_MODE_INTELFPGA=3
    ENV DLA_AOCX=/opt/intel/openvino/a10_devkit_bitstreams/2-0-1_RC_FP11_Generic.aocx
    ENV PATH=/opt/altera/aocl-pro-rte/aclrte-linux64/bin:$PATH
  2. 安装以下 UDEV 规则:
    cat <<EOF > fpga.rules
    KERNEL=="acla10_ref*",GROUP="users",MODE="0660"
    EOF
    sudo cp fpga.rules /etc/udev/rules.d/
    sudo udevadm control --reload-rules
    sudo udevadm trigger
    sudo ldconfig
    确保容器用户已被添加到与主机 GID 相同的“用户”组中。

为 FPGA 运行 Docker* 容器

如要为 FPGA 运行已构建的 Docker* 容器,请使用以下命令:

docker run --rm -it \
--mount type=bind,source=/opt/intel/intelFPGA_pro,destination=/opt/intel/intelFPGA_pro \
--mount type=bind,source=/opt/altera,destination=/opt/altera \
--mount type=bind,source=/etc/OpenCL/vendors,destination=/etc/OpenCL/vendors \
--mount type=bind,source=/opt/Intel/OpenCL/Boards,destination=/opt/Intel/OpenCL/Boards \
--device /dev/acla10_ref0:/dev/acla10_ref0 \
<image_name>

示例

其它资源