這篇文章主要為大家展示了“如何從Docker映像安裝適用于Linux*的OpenVINO?工具套件”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何從Docker映像安裝適用于Linux*的OpenVINO?工具套件”這篇文章吧。
通川網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
英特爾? Distribution of OpenVINO? 工具套件可以快速部署可媲美人類視覺(jué)的應(yīng)用程序和解決方案。該工具套件基于復(fù)雜神經(jīng)網(wǎng)絡(luò)(CNN),通過(guò)英特爾? 硬件擴(kuò)展了計(jì)算機(jī)視覺(jué) (CV) 工作負(fù)載,從而最大化性能。英特爾? Distribution of OpenVINO? 工具套件中包含了英特爾? Deep Learning Deployment Toolkit。
本指南提供了通過(guò)適用于 Linux* 的英特爾? Distribution of OpenVINO? 工具套件創(chuàng)建 Docker* 映像,以及進(jìn)一步進(jìn)行安裝的步驟。
目標(biāo)操作系統(tǒng)
Ubuntu* 18.04 長(zhǎng)期支持 (LTS),64 位
主機(jī)操作系統(tǒng)
已安裝 GPU 驅(qū)動(dòng)程序和受 GPU 驅(qū)動(dòng)程序支持的 Linux 內(nèi)核的 Linux
內(nèi)核向所有容器報(bào)告與本地應(yīng)用程序一樣的信息,如 CPU 和內(nèi)存信息。
所有主機(jī)進(jìn)程可用的指令對(duì)于容器中的進(jìn)程均可用,包括 AVX2、AVX512 等。不存在限制。
Docker* 不使用虛擬化或仿真。Docker* 中的進(jìn)程只是一種常規(guī) Linux 進(jìn)程,但它在內(nèi)核水平上與其外部世界隔離。性能損失很小。
如要構(gòu)建 Docker 映像,請(qǐng)創(chuàng)建一個(gè)包含為創(chuàng)建 OpenVINO 工具套件安裝映像所必需的定義變量和命令的Dockerfile
。
請(qǐng)使用以下樣本作為模板創(chuàng)建您的Dockerfile
:
單擊以展開(kāi)/折疊
注意:請(qǐng)將
package_url
自變量中通往英特爾? Distribution of OpenVINO? 工具套件的直接鏈接替換為最新版本。您可以在完成注冊(cè)后,從英特爾? Distribution of OpenVINO? 工具套件下載頁(yè)面復(fù)制該鏈接。請(qǐng)?jiān)谀臑g覽器中右鍵單擊 Linux 版已下載頁(yè)面中的離線安裝程序按鈕,然后按下復(fù)制鏈接地址。
您可以通過(guò)修改silent.cfg
文件中的COMPONENTS
參數(shù)來(lái)選擇將安裝哪些 OpenVINO 組件。例如,如果只準(zhǔn)備為推斷引擎安裝 CPU 運(yùn)行時(shí),請(qǐng)?jiān)?code>silent.cfg中設(shè)置COMPONENTS=intel-openvino-ie-rt-cpu__x86_64
。
要獲得可安裝組件的完整列表,請(qǐng)從已解壓的 OpenVINO? 工具套件包中運(yùn)行./install.sh --list_components
命令。
要為 CPU 構(gòu)建 Docker* 映像,請(qǐng)運(yùn)行以下命令:
docker build . -t
--build-arg HTTP_PROXY=
--build-arg HTTPS_PROXY=
使用以下命令運(yùn)行映像:
docker run -it
先決條件:
默認(rèn)情況下 GPU 在容器中不可用,您必須先將其附加至容器。
內(nèi)核驅(qū)動(dòng)程序必須已安裝在主機(jī)上。
英特爾? OpenCL? 運(yùn)行時(shí)包必須被包含在容器中。
在容器中,用戶必須位于video
組中。
在 GPU 上構(gòu)建 Docker* 映像之前,請(qǐng)先將以下命令添加到上述 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 構(gòu)建 Docker* 映像,請(qǐng)運(yùn)行以下命令:
docker build . -t
--build-arg HTTP_PROXY=
--build-arg HTTPS_PROXY=
如要使 GPU 在容器中可用,請(qǐng)使用--device /dev/dri
選項(xiàng)將 GPU 附加到容器,然后運(yùn)行容器:
docker run -it --device /dev/dri
使用與 CPU 相同的步驟構(gòu)建 Docker 映像。
已知的限制:
英特爾? Movidius? 神經(jīng)電腦棒設(shè)備在執(zhí)行期間會(huì)改變 VendorID 和 DeviceID,并且每一次都會(huì)將主機(jī)系統(tǒng)作為全新設(shè)備來(lái)查找。這意味著它無(wú)法像往常一樣被載入。
UDEV 事件在默認(rèn)情況下無(wú)法被向前傳送到容器,它不了解設(shè)備的重新連接。
僅支持每個(gè)主機(jī)一臺(tái)設(shè)備。
使用以下選項(xiàng)之一來(lái)運(yùn)行適用于英特爾 Movidius 神經(jīng)電腦棒的可能的解決方案:
解決方案 #1:
通過(guò)重新構(gòu)建在 Docker* 映像中無(wú)需 UDEV 支持的libusb
,來(lái)去除 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
運(yùn)行 Docker* 映像:
解決方案 #2:在特權(quán)模式下運(yùn)行容器,以主機(jī)身份啟用 Docker 網(wǎng)絡(luò)配置,并將所有設(shè)備載入容器:
docker run --privileged -v /dev:/dev --network=host
注意:
它不安全
與 Kubernetes* 和其他使用編排和私有網(wǎng)絡(luò)的工具發(fā)生沖突
docker run --device-cgroup-rule='c 189:* rmw' -v /dev/bus/usb:/dev/bus/usb
如要在采用英特爾? Movidius? 視覺(jué)處理器的英特爾? Vision Accelerator Design 上將 Docker 容器用于推斷:
在主機(jī)上設(shè)置環(huán)境,這將用于運(yùn)行 Docker*。需要執(zhí)行hddldaemon
,它負(fù)責(zé) HDDL 插件和主板之間的通信。如要了解如何設(shè)置環(huán)境(OpenVINO 包必須已預(yù)先安裝),請(qǐng)參見(jiàn)采用英特爾? Movidius? 視覺(jué)處理器的英特爾? Vision Accelerator Design 配置指南。
準(zhǔn)備 Docker* 映像。作為基礎(chǔ)映像,您可以使用為 CPU 構(gòu)建 Docker 映像一節(jié)中的映像。如要將其用于采用英特爾? Movidius? 視覺(jué)處理器的英特爾? Vision Accelerator Design 上的推斷,您需要通過(guò)添加以下依賴項(xiàng)來(lái)重建映像:
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/*
使用以下命令在主機(jī)上用一個(gè)單獨(dú)的終端進(jìn)程運(yùn)行hddldaemon
:
$HDDL_INSTALL_DIR/hddldaemon
要為采用英特爾? Movidius? 視覺(jué)處理器的英特爾? Vision Accelerator Design 運(yùn)行已構(gòu)建好的 Docker* 映像,請(qǐng)使用以下命令:
docker run --device=/dev/ion:/dev/ion -v /var/tmp:/var/tmp -ti
注意:
設(shè)備
/dev/ion
需要先被共享,才能在插件、hddldaemon
和內(nèi)核中使用離子緩沖器。由于獨(dú)立的推斷任務(wù)共享相同的 HDDL 服務(wù)通信接口(該服務(wù)會(huì)在
/var/tmp
中創(chuàng)建 mutexes 和插槽文件),因此需要載入/var/tmp
并在它們中共享。
在某些案例中,離子驅(qū)動(dòng)程序未啟用(例如,因?yàn)楦碌膬?nèi)核版本或 iommu 不兼容)。lsmod | grep myd_ion
返回的輸出為空。要解決該問(wèn)題,請(qǐng)使用以下命令:
docker run --rm --net=host -v /var/tmp:/var/tmp –ipc=host -ti
注意:
在構(gòu)建 Docker 映像時(shí),在請(qǐng)?jiān)?docker 文件中創(chuàng)建用戶,使其 UID 和 GID 與在主機(jī)上運(yùn)行 hddldaemon 的用戶相同。
以該用戶的身份在 Docker 中運(yùn)行應(yīng)用程序。
或者,您可以在主機(jī)上以根用戶的身份啟動(dòng) hddlaemon,但我們不推薦這種方法。
默認(rèn)情況下 FPGA 卡在容器中不可用,但它可以在以下先決條件下被載入其中:
FPGA 設(shè)備已為運(yùn)行推斷準(zhǔn)備就緒。
FPGA 比特流已通過(guò) PCIe 推送至設(shè)備。
如要為 FPGA 構(gòu)建 Docker* 映像:
在以下Dockerfile
中設(shè)置額外的環(huán)境變量:
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 規(guī)則:
cat <
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
確保容器用戶已被添加到與主機(jī) GID 相同的“用戶”組中。
如要為 FPGA 運(yùn)行已構(gòu)建的 Docker* 容器,請(qǐng)使用以下命令:
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 \
ubuntu18_runtime dockerfile - 可以用于構(gòu)建 OpenVINO? 運(yùn)行時(shí)映像,其中包含的將 OpenVINO? 用于生產(chǎn)環(huán)境中時(shí)所必需的依賴項(xiàng)最少。
ubuntu18_dev dockerfile - 可以用于構(gòu)建 OpenVINO? 開(kāi)發(fā)人員映像,其中包含完整的 OpenVINO? 包,以便在開(kāi)發(fā)環(huán)境中使用。
以上是“如何從Docker映像安裝適用于Linux*的OpenVINO?工具套件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!