Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

インテルがOpenVINOで攻めてきている(その2)


今日は、MicrosoftのONNX RuntimeのProvoderとしてOpenVINOをサポートしていると。。

ただし、ONNX Runtime公式ではなく、Intelgithub だけどね。

PythonのModel Optimizerも付いているよ

convert_fp32 と convert_fp16 があるけど、今は、convert_fp32 になっていて、convert_fp16 は使っていない模様。

OpenVINOのmoを使っていろいろやっています。

penVINOExecutionProvider::GetCapabilityによると、
  bool precision_fp32 = true;
  std::string device_id = "CPU";

#ifdef OPENVINO_CONFIG_GPU_FP32
  device_id = "GPU";
#endif

#ifdef OPENVINO_CONFIG_GPU_FP16
  precision_fp32 = false;
  device_id = "GPU";
#endif

#ifdef OPENVINO_CONFIG_MYRIAD
  precision_fp32 = false;
  device_id = "MYRIAD";
#endif

#ifdef OPENVINO_CONFIG_VAD_R
  precision_fp32 = false;
  device_id = "HDDL";
#endif

で、デフォルトでは、CPUのFP32、GPUはFP32 or FP16、MYRIAD(VPU)はFP16、で、VAD_R(HDDL)って何だろうか?

CMakeLists.txtでは、
	if(onnxruntime_USE_OPENVINO_VAD_R)
		add_definitions(-DOPENVINO_CONFIG_VAD_R=1)
	endif()

うーん、特に情報無し。。。

openvino_graph.ccにちょっと、
#ifdef OPENVINO_CONFIG_VAD_R
  device_id_ = "HDDL";
  precision_ = InferenceEngine::Precision::FP16;
  precision_str = "FP16";
#endif

そして、
  // Infer Request class represents OpenVINO's logical hardware instance. These logical
  // instances are bound to physical hardware instances at runtime depending
  // on the physical hardware availability. If multiple Infer Requests are mapped to
  // the same physical hardware instance, then the inference operations requests from
  // the Infer Requests are serialized before they are scheduled on the physical hardware.
  // If the different Infer Requests are scheduled on different hardware instances, inference
  // operations associated with the Infer Requests may be scheduled in parallel.
  // Infer Requests hold resources representing the entire network on their target hardware. So,
  // having more Infer Requests than needed would waste system resources.
  // In VAD-R (HDDL) accelerator, there are 8 parallel execution units. So, creating 8 instances
  // of Infer Requests only if the VAD-R accelerator is being used.
  // sets number of maximum parallel inferences
  num_inf_reqs_ = (device_id_ == "HDDL") ? 8 : 1;

ってあるので、Intel® Vision Accelerator Design With Intel® Movidius™ Vision Processing Unit (VPU)で紹介したものの8個のバージョンのボードなんでしょうかね。。

openvino_execution_provider.ccには、
      if (dev_id == "MYRIAD" || dev_id == "HDDL") {
のように、MYRIAD と HDDL が一緒になっているのでそうなんでしょうね。

Google君に聞いたら、ありました。
インテルが画像認識ソフト開発ツールを無償提供「IoTの“I”は“Eye”」 (2/2)
引用
    Myriad XやFPGAの顧客への提供形態はPCI Expressカードの「HDDL(High Density Deep Learning)」となる予定で、
    Myriad Xを搭載するのが「HDDL-R」、FPGAを搭載するのが「HDDL-F」としている。

#ifdef OPENVINO_CONFIG_VAD_R
  device_id_ = "HDDL";
  precision_ = InferenceEngine::Precision::FP16;
  precision_str = "FP16";
#endif

なので、Myraid Xを搭載した、「HDDL-R」のことなのかな。あー、すっきりした。