* 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 * Updated the link to software license agreements * Revert "Updated the link to software license agreements" This reverts commit706dac500e. * Updated legal info (#6409) # Conflicts: # thirdparty/ade * Cherry-pick4833c8db72[DOCS]Changed DL WB related docs and tips (#6318) * changed DL WB related docs and tips * added two tips to benchmark and changed layout * changed layout * changed links * page title added * changed tips * ie layout fixed * updated diagram and hints * changed tooltip and ref link * changet tooltip link * changed DL WB description * typo fix # Conflicts: # docs/doxygen/ie_docs.xml # thirdparty/ade * Cherry-pick 6405 Feature/azaytsev/mo devguide changes (#6405) * MO devguide edits * MO devguide edits * MO devguide edits * MO devguide edits * MO devguide edits * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Experimenting with videos * Additional edits * Additional edits * Updated the workflow diagram * Minor fix * Experimenting with videos * Updated the workflow diagram * Removed Prepare_Trained_Model, changed the title for Config_Model_Optimizer * Rolled back * Revert "Rolled back" This reverts commit6a4a3e1765. * Revert "Removed Prepare_Trained_Model, changed the title for Config_Model_Optimizer" This reverts commit0810bd534f. * Fixed ie_docs.xml, Removed Prepare_Trained_Model, changed the title for Config_Model_Optimizer * Fixed ie_docs.xml * Minor fix * <details> tag issue * <details> tag issue * Fix <details> tag issue * Fix <details> tag issue * Fix <details> tag issue # Conflicts: # thirdparty/ade * Cherry-pick #6419 * [Runtime] INT8 inference documentation update * [Runtime] INT8 inference documentation: typo was fixed * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Table of Contents was removed Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> # Conflicts: # docs/IE_DG/Int8Inference.md # thirdparty/ade * Cherry pick (#6437) * Q2 changes * Changed Convert_RNNT.md Co-authored-by: baychub <cbay@yahoo.com> # Conflicts: # docs/IE_DG/Int8Inference.md # docs/install_guides/installing-openvino-conda.md # docs/install_guides/pypi-openvino-dev.md # thirdparty/ade * Cherry-pick (#6447) * Added benchmark page changes * Make the picture smaller * Added Intel® Iris® Xe MAX Graphics * Changed the TIP about DL WB * Added Note on the driver for Intel® Iris® Xe MAX Graphics * Fixed formatting * Added the link to Intel® software for general purpose GPU capabilities * OVSA ovsa_get_started updates * Fixed link # Conflicts: # thirdparty/ade * Cherry-pick #6450 * fix layout * 4 # Conflicts: # thirdparty/ade * Cherry-pick #6466 * Cherry-pick #6548 * install docs fixes * changed video width * CMake reference added * fixed table * added backtics and table formating * new table changes * GPU table changes * added more backtics and changed table format * gpu table changes * Update get_started_dl_workbench.md Co-authored-by: Andrey Zaytsev <andrey.zaytsev@intel.com> # Conflicts: # thirdparty/ade * [Runtime] INT8 inference documentation update (#6419) * [Runtime] INT8 inference documentation update * [Runtime] INT8 inference documentation: typo was fixed * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Update docs/IE_DG/Int8Inference.md Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> * Table of Contents was removed Co-authored-by: Anastasiya Ageeva <anastasiya.ageeva@intel.com> # Conflicts: # docs/IE_DG/Int8Inference.md # thirdparty/ade * Cherry-pick #6651 * 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 * Add GSG build-all details * Fix links to samples and demos pages * Make MO_DG v2 changes * Add image view step to classify demo * Put MO dependency with others * Edit docs per issues spreadsheet * Add file to pytorch_specific * More fixes per spreadsheet * Prototype sample page * Add build section * Update README.md * Batch download/convert by default * Add detail to How It Works * Minor change * Temporary restored topics * corrected layout * Resized * Added white background into the picture * fixed link to omz_tools_downloader * fixed title in the layout Co-authored-by: baychub <cbay@yahoo.com> Co-authored-by: baychub <31420038+baychub@users.noreply.github.com> # Conflicts: # docs/doxygen/ie_docs.xml * Cherry-pick (#6789) [59449][DOCS] GPU table layout change * changed argument display * added br tag to more arguments * changed argument display in GPU table * changed more arguments * changed Quantized_ models display # Conflicts: # thirdparty/ade * Sync doxygen-ignore * Removed ref to FPGA.md * Fixed link to ONNX format doc Co-authored-by: Trawinski, Dariusz <dariusz.trawinski@intel.com> Co-authored-by: Tatiana Savina <tatiana.savina@intel.com> Co-authored-by: Edward Shogulin <edward.shogulin@intel.com> Co-authored-by: Nikolay Tyukaev <nikolay.tyukaev@intel.com>
4.7 KiB
Custom nGraph Operation
The Inference Engine Extension API allows you to register operation sets (opsets) with custom nGraph operations to support models with operations that OpenVINO™ does not support out-of-the-box.
Operation Class
To add your custom nGraph operation, create a new class that extends ngraph::Op, which is in turn derived from ngraph::Node, the base class for all graph operations in nGraph. Follow the steps below to add a custom nGraph operation:
-
Add the
NGRAPH_RTTI_DECLARATIONandNGRAPH_RTTI_DEFINITIONmacros which define aNodeTypeInfoobject that identifies the type of the operation to the graph users and helps with dynamic type resolution. The type info of an nGraph operation currently consists of a string identifier and a version number, but this may change in the future. -
Implement constructors that optionally take the operation inputs and attributes as parameters.
-
Override the shape inference method
validate_and_infer_types. This method is called multiple times during graph manipulations to determine the shapes and element types of the operations outputs. To access the input shapes and input element types, use theget_input_partial_shape()andget_input_element_type()methods ofngraph::Node. Set the inferred shape and element type of the output usingset_output_type. -
Override the
clone_with_new_inputsmethod, which enables graph manipulation routines to create copies of this operation and connect it to different nodes during optimization. -
Override the
visit_attributesmethod, which enables serialization and deserialization of operation attributes. AnAttributeVisitoris passed to the method, and the implementation is expected to walk over all the attributes in the op using the type-awareon_attributehelper. Helpers are already implemented for standard C++ types likeint64_t,float,bool,vector, and for existing nGraph defined types. -
Override
evaluate, which is an optional method that enables the application of constant folding if there is a custom operation on the constant branch. If your operation containsevaluatemethod you also need to override thehas_evaluatemethod, this method allow to get information about availability ofevaluatemethod for the operation.
Based on that, declaration of an operation class can look as follows:
@snippet template_extension/op.hpp op:header
Class Fields
The provided implementation has several fields:
addof typeint64_tis an attribute of a custom operation.type_infoof typengraph::NodeTypeInfodefines the type and version of an operation.
Operation Constructors
nGraph operation contains two constructors:
- Default constructor, which enables you to create an operation without attributes
- Constructor that creates and validates an operation with specified inputs and attributes
@snippet template_extension/op.cpp op:ctor
validate_and_infer_types()
ngraph::Node::validate_and_infer_types method validates operation attributes and calculates output shapes using attributes of the operation.
@snippet template_extension/op.cpp op:validate
clone_with_new_inputs()
ngraph::Node::clone_with_new_inputs method creates a copy of the nGraph operation with new inputs.
@snippet template_extension/op.cpp op:copy
visit_attributes()
ngraph::Node::visit_attributes method enables you to visit all operation attributes.
@snippet template_extension/op.cpp op:visit_attributes
evaluate() and has_evaluate()
ngraph::Node::evaluate method enables you to apply constant folding to an operation.
@snippet template_extension/op.cpp op:evaluate
Register Custom Operations in Extension Class
To add custom operations to the Extension class, create an operation set with custom operations and implement the InferenceEngine::IExtension::getOpSets method:
@snippet template_extension/extension.cpp extension:getOpSets
This method returns a map of opsets that exist in the extension library.
nGraph provides an opset mechanism to group operations into clusters. S. Different opsets distinguish between different versions of one operation.
When specifying opset names, follow the rules below:
- Use unique opset names.
- Do not use the following built-in opset names:
extension,experimental,opset1,opset2,opset3, ... ,opsetN. - Make sure that the Model Optimizer and your extension use the same opset names.
- IR v10 operations have the mandatory
versionattribute specifying the opset. Operations from the default opset cannot be redefined.
Use a custom opset to create a new operation or extend functionality of an existing operation from another opset.