* Added info on DockerHub CI Framework * Feature/azaytsev/change layout (#3295) * Changes according to feedback comments * Replaced @ref's with html links * Fixed links, added a title page for installing from repos and images, fixed formatting issues * Added links * minor fix * Added DL Streamer to the list of components installed by default * Link fixes * Link fixes * ovms doc fix (#2988) * added OpenVINO Model Server * ovms doc fixes Co-authored-by: Trawinski, Dariusz <dariusz.trawinski@intel.com> * Updated openvino_docs.xml * Edits to MO Per findings spreadsheet * macOS changes per issue spreadsheet * Fixes from review spreadsheet Mostly IE_DG fixes * Consistency changes * Make doc fixes from last round of review * integrate changes from baychub/master * Update Intro.md * Update Cutting_Model.md * Update Cutting_Model.md * Fixed link to Customize_Model_Optimizer.md Co-authored-by: Trawinski, Dariusz <dariusz.trawinski@intel.com> Co-authored-by: baychub <cbay@yahoo.com>
2.6 KiB
Inference Engine Extensibility Mechanism
Inference Engine Extensibility API enables you to add support of custom operations to the Inference Engine.
Extension should contain operation sets with custom operations and execution kernels for custom operations.
Physically, an extension library can be represented as a dynamic library exporting the single CreateExtension function
that creates a new extension instance.
To load the Extensibility library to the InferenceEngine::Core object, use the
InferenceEngine::Core::AddExtension method.
Inference Engine Extension Library
Inference Engine Extension dynamic library contains the following components:
- Extension Library:
- Contains custom operation sets.
- Provides CPU implementations for custom operations.
- Custom nGraph Operation:
- Enables the use of
InferenceEngine::Core::ReadNetworkto read Intermediate Representation (IR) with unsupported operations. - Enables the creation of
ngraph::Functionwith unsupported operations. - Provides a shape inference mechanism for custom operations.
- Enables the use of
Note
: This documentation is written based on the
Template extension, which demonstrates extension development details. Find the complete code of theTemplate extension, which is fully compilable and up-to-date, at<dldt source tree>/docs/template_extension.
Execution Kernels
The Inference Engine workflow involves the creation of custom kernels and either custom or existing operations.
An operation is a network building block implemented in the training framework, for example, Convolution in Caffe*.
A kernel is defined as the corresponding implementation in the Inference Engine.
Refer to the Model Optimizer Extensibility for details on how a mapping between framework operations and Inference Engine kernels is registered.
In short, you can plug your own kernel implementations into the Inference Engine and map them to the operations in the original framework.
The following pages describe how to integrate custom kernels into the Inference Engine:
- Introduction to development of custom CPU kernels
- Introduction to development of custom GPU kernels
- Introduction to development of custom VPU kernels