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)
インテルが画像認識ソフト開発ツールを無償提供「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」のことなのかな。あー、すっきりした。