如何从Docker映像安装适用于Linux*的OpenVINO™工具套件

60次阅读
没有评论

共计 6595 个字符,预计需要花费 17 分钟才能阅读完成。

这篇文章主要为大家展示了“如何从 Docker 映像安装适用于 Linux* 的 OpenVINO™工具套件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“如何从 Docker 映像安装适用于 Linux* 的 OpenVINO™工具套件”这篇文章吧。

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

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

系统要求

目标操作系统

Ubuntu* 18.04 长期支持 (LTS),64 位

主机操作系统

已安装 GPU 驱动程序和受 GPU 驱动程序支持的 Linux 内核的 Linux

将 Docker* 映像用于 CPU

内核向所有容器报告与本地应用程序一样的信息,如 CPU 和内存信息。

所有主机进程可用的指令对于容器中的进程均可用,包括 AVX2、AVX512 等。不存在限制。

Docker* 不使用虚拟化或仿真。Docker* 中的进程只是一种常规 Linux 进程,但它在内核水平上与其外部世界隔离。性能损失很小。

为 CPU 构建 Docker* 映像

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

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

单击以展开 / 折叠

注意:请将 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 在容器中不可用,您必须先将其附加至容器。

内核驱动程序必须已安装在主机上。

英特尔® OpenCL™ 运行时包必须被包含在容器中。

在容器中,用户必须位于 video 组中。

在 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™ 神经电脑棒设备在执行期间会改变 VendorID 和 DeviceID,并且每一次都会将主机系统作为全新设备来查找。这意味着它无法像往常一样被载入。

UDEV 事件在默认情况下无法被向前传送到容器,它不了解设备的重新连接。

仅支持每个主机一台设备。

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

解决方案 #1:

通过重新构建在 Docker* 映像中无需 UDEV 支持的 libusb,来去除 UDEV(将以下命令添加到上述适用于 CPU 的 Dockerfile 示例中):

RUN usermod -aG users openvino

WORKDIR /opt

RUN curl -L https://github.com/libusb/libusb/archive/v1.0.22.zip –output v1.0.22.zip \

unzip v1.0.22.zip

 

WORKDIR /opt/libusb-1.0.22

RUN ./bootstrap.sh \

./configure –disable-udev –enable-shared \

make -j4

RUN apt-get update \

apt-get install -y –no-install-recommends libusb-1.0-0-dev=2:1.0.21-2 \

rm -rf /var/lib/apt/lists/*

 

WORKDIR /opt/libusb-1.0.22/libusb

RUN /bin/mkdir -p /usr/local/lib \

/bin/bash ../libtool –mode=install /usr/bin/install -c libusb-1.0.la /usr/local/lib \

/bin/mkdir -p /usr/local/include/libusb-1.0 \

/usr/bin/install -c -m 644 libusb.h /usr/local/include/libusb-1.0 \

/bin/mkdir -p /usr/local/lib/pkgconfig

 

WORKDIR /opt/libusb-1.0.22/

RUN /usr/bin/install -c -m 644 libusb-1.0.pc /usr/local/lib/pkgconfig \

ldconfig

运行 Docker* 映像:

解决方案 #2:在特权模式下运行容器,以主机身份启用 Docker 网络配置,并将所有设备载入容器:

docker run –privileged -v /dev:/dev –network=host image_name

注意:

它不安全

与 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 容器用于推断:

在主机上设置环境,这将用于运行 Docker*。需要执行 hddldaemon,它负责 HDDL 插件和主板之间的通信。如要了解如何设置环境(OpenVINO 包必须已预先安装),请参见采用英特尔® Movidius™ 视觉处理器的英特尔® Vision Accelerator Design 配置指南。

准备 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/*

使用以下命令在主机上用一个单独的终端进程运行 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 设备已为运行推断准备就绪。

FPGA 比特流已通过 PCIe 推送至设备。

如要为 FPGA 构建 Docker* 映像:

在以下 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

安装以下 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

示例

ubuntu18_runtime dockerfile – 可以用于构建 OpenVINO™ 运行时映像,其中包含的将 OpenVINO™ 用于生产环境中时所必需的依赖项最少。

ubuntu18_dev dockerfile – 可以用于构建 OpenVINO™ 开发人员映像,其中包含完整的 OpenVINO™ 包,以便在开发环境中使用。

以上是“如何从 Docker 映像安装适用于 Linux* 的 OpenVINO™工具套件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计6595字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)