这篇帖子的目的是深入解释 BrainFrame 如何尝试加载 OpenVINO 算法胶囊。
简短回答:
检查 BrainFrame 日志中是否有如下格式的错误(源代码链接):
Failed to load {BACKEND CLASS NAME} onto device MULTI:CPU,HDDL.
Error: {OPENVINO ERROR}. Trying again with device_name='CPU'
要获取 BrainFrame 日志,可以运行 brainframe compose logs -f core。也可以通过运行下面的命令过滤日志:
brainframe compose logs -f core | grep Failed
详细回答:
-
BrainFrame 先加载一个算法胶囊,并检查该算法胶囊支持哪些设备。算法胶囊通过实现
device_mapper来指定设备加载的逻辑。以我们开源人脸检测器的这一行为例 -
函数
DeviceMapper.map_to_openvino_devices()调用的是 VisionCapsules 库 vcap 中的以下开源代码 -
这段代码首先检查名为
OPENVINO_DEVICE_PRIORITY的环境变量,以确定如何给 openvino 设备排优先级。默认情况下,它会加载到如下设备名称:MULTI:CPU,HDDL。这意味着 CPU 优先,同时也会把 HDDL 作为次优先级进行加载。
要修改 BrainFrame 加载 OpenVINO 设备的方式,请在以下位置创建一个 .env 文件:
/usr/local/share/brainframe/.env
OPENVINO_DEVICE_PRIORITY="HDDL,CPU"
在上面这一行中,我们让 HDDL 设备优先于 CPU。
调试 HDDL 问题
如果你遇到 Failed to load 错误,可能是因为主机上没有可用的 HDDL 驱动。遗憾的是,要在 docker 中运行 HDDL,必须在主机上安装驱动。为此,请在主机上安装 OpenVINO,并运行下面几行命令:
echo "export HDDL_INSTALL_DIR=/opt/intel/openvino/deployment_tools/inference_engine/external/hddl/" >> ~/.bashrc
echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
# Restart terminal
cd $HDDL_INSTALL_DIR
bash install_IVAD_VPU_dependencies.sh
cd ${HDDL_INSTALL_DIR}/drivers
sudo bash setup.sh install