OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
Go to file
Piotr Krzemiński 44f7bf7e3f
[CPU] Multinomial implementation (#20406)
* [CPU] Temp save commit

* [CPU] Add initial CPU implementation of Multinomial

* [CPU] Add parallel implementation with mock randomuniform

* [CPU] Fix accumulate incorrect iterator provided

* [CPU] Add tests for multinomial

* [CORE] Add lost tests

* [CPU] Add dynamic shape inference and descriptors init

* [CPU] Revamp tests to multiple files

* [CPU/SPEC] Apply suggested changes

* [CPU] Fix test compilation issues, clang fix

* Update multinomial.cpp

* [CPU] Fix Incorrect Primitive Descriptor for multiple combinations

* [CPU] Change params to inputs in testing function

* [CPU] Fix dynamic shape inference tensor access error

* [CPU] Save stable version

* [CPU] Add template execute for different input dtypes

* [CPU] Introduce new method of loading data to tests, fix dynamic shape inference

* [CPU] Improve parralelism

* [CPU] Improve pararrelism - fix indexes

* [CPU] Fix no_replacement tests, fix randomness in tests

* [CPU] Split tests into log and no_log version to avoid rounding when values are close to 0

* [CPU] Add mersenne-twister seed and random_uniform distribution as source for randomness, add debug prints

* [CPU] Apply suggestions from review, fix 4x4 log tests

* [CPU] Force i32 convert format

* [CPU] Fix double to float conversion warning

* [CPU] Remove debugging prints, fix CIs float error

* [CPU] Fix for convert_type in CIs

* Update src/plugins/intel_cpu/src/shape_inference/custom/multinomial.hpp

Co-authored-by: Mateusz Mikolajczyk <mateusz.mikolajczyk@intel.com>

* Update src/plugins/intel_cpu/src/nodes/multinomial.hpp

Co-authored-by: Mateusz Mikolajczyk <mateusz.mikolajczyk@intel.com>

* Update src/plugins/intel_cpu/src/shape_inference/custom/multinomial.hpp

Co-authored-by: Mateusz Mikolajczyk <mateusz.mikolajczyk@intel.com>

* [CPU] Migrate to CPU API 2.0

* [Ref/CPU] Remove support for 1D tensors, use Core Shape Inference

* [CPU] Remove unnecessary symbols

* Update multinomial.cpp

* Update multinomial.cpp

* Update ops.py

* [CPU] Fix const identifier missing after reinterpret cast

* [CPU] Fix Mac cpplint error

* [CPU] Apply recommended changes - 0-seed nondeterminism, casts in testsshape_infer optimization

* [CPU] Apply iterator optimization suggestion

* [CPU] Replace casts with class constructors in tests

* [CPU] Remove unnecessary static_casts to void*

* Update multinomial.cpp

* [CPU] Apply suggestions from review - move template, fix i64 precision, redturn off shape precision for const inputs, set always-execute for const inputs

* [CPU] Relocate tests to shared, remove using namespace from header files

* [CPU] Add definitions for files eaten by clang fix

* [CPU] Fix seed for Mersenne Twister Engine

* [CPU] Try fix incorrect 1x3 for 3 samples test (bf16)

* [CPU] Use only mersenne for seed generation

* [CPU] Relocate test, add debug prints

* [CPU] Add relocated test that got eaten

* [CPU] Remove uniform distribution, replace with division by max value

* Update multinomial.cpp

* Update multinomial.cpp

* [CPU] Add explicit float cast for CIs

* Update multinomial.cpp

* [CPU] Use intel_cpu::bfloat16 to reduce innacuracies

* [CPU] Remove debug caps, all tests pass

* [CPU] Clang fix

* [GPU] Remove GPU 1D test case

* [CPU] Modify tests to add seed=0 case, add ignore statement for this test and add subtask to complete after current release

---------

Co-authored-by: Michal Lukaszewski <michal.lukaszewski@intel.com>
Co-authored-by: Mateusz Mikolajczyk <mateusz.mikolajczyk@intel.com>
2023-12-02 12:46:17 +01:00
.ci Dependabot/pip/src/bindings/python/paddlepaddle 2.5.2 (#20708) 2023-10-26 14:06:34 +04:00
.github [GHA] Updated 2-cores runner name (#21426) 2023-12-01 16:46:20 +00:00
cmake [Core] Support String Tensors (#21244) 2023-12-01 11:17:53 +04:00
docs change wording (#21428) 2023-12-01 15:18:56 +01:00
licensing [Ref][Core][Opset13] NMSRotated-13 core shell and reference implementation (#19907) 2023-09-29 17:48:45 +00:00
samples [DOCS] README files for Samples + name update for Get Started for master (#21157) 2023-11-21 13:20:25 +01:00
scripts Allow to build and use OpenVINO with Python 3.12 (#21233) 2023-11-22 15:48:09 +04:00
src [CPU] Multinomial implementation (#20406) 2023-12-02 12:46:17 +01:00
tests [PyOV] Limit protobuf version for conditional compilation tests (#21130) 2023-12-01 16:13:12 +00:00
thirdparty Make RPM packages compatible with wide range of RHEL systems (#20762) 2023-10-31 10:25:35 +04:00
tools [MO] Recommend to use OVC from MO message (#21431) 2023-12-02 11:17:26 +00:00
.gitattributes Added SVG files to lfs (#15227) 2023-01-20 15:54:47 +04:00
.gitignore Smart CI POC (#19825) 2023-11-09 11:38:58 +04:00
.gitmodules [CPU] MLAS backend integration (#17885) 2023-07-26 07:40:34 +00:00
CMakeLists.txt Relocatable developer package (#20327) 2023-10-12 22:59:04 +00:00
conan.lock Fixed conan RISC-V build (#21280) 2023-11-28 19:02:43 +04:00
conanfile.txt Fixed conan RISC-V build (#21280) 2023-11-28 19:02:43 +04:00
CONTRIBUTING_DOCS.md [DOCS] contributing guidelines (#19218) 2023-08-18 17:59:31 +02:00
CONTRIBUTING_PR.md [DOCS] contributing guidelines (#19218) 2023-08-18 17:59:31 +02:00
CONTRIBUTING.md [DOCS] contributing guidelines (#19218) 2023-08-18 17:59:31 +02:00
cspell.json Add file via upload (#19605) 2023-09-19 17:16:16 +04:00
install_build_dependencies.sh Aligned tests with azure linux.yml (#20304) 2023-10-09 12:55:26 +04:00
Jenkinsfile Beautify Jenkinsfile a little bit 2021-05-31 15:24:56 +03:00
LICENSE Publishing R3 2018-10-16 13:45:03 +03:00
README.md [DOCS] Updating links for master 2023-11-13 12:23:23 +01:00
SECURITY.md Added SECURITY.md back (#3177) 2020-11-17 16:44:44 +03:00
vcpkg.json Make RPM packages compatible with wide range of RHEL systems (#20762) 2023-10-31 10:25:35 +04:00

PyPI Status Anaconda Status brew Status

PyPI Downloads Anaconda Downloads brew Downloads

Contents:

What is OpenVINO toolkit?

OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference.

  • Boost deep learning performance in computer vision, automatic speech recognition, natural language processing and other common tasks
  • Use models trained with popular frameworks like TensorFlow, PyTorch and more
  • Reduce resource demands and efficiently deploy on a range of Intel® platforms from edge to cloud

This open-source version includes several components: namely OpenVINO Model Converter (OVC), OpenVINO™ Runtime, as well as CPU, GPU, GNA, multi device and heterogeneous plugins to accelerate deep learning inference on Intel® CPUs and Intel® Processor Graphics. It supports pre-trained models from Open Model Zoo, along with 100+ open source and public models in popular formats such as TensorFlow, ONNX, PaddlePaddle, MXNet, Caffe, Kaldi.

Components

  • OpenVINO™ Runtime - is a set of C++ libraries with C and Python bindings providing a common API to deliver inference solutions on the platform of your choice.
    • core - provides the base API for model representation and modification.
    • inference - provides an API to infer models on the device.
    • transformations - contains the set of common transformations which are used in OpenVINO plugins.
    • low precision transformations - contains the set of transformations that are used in low precision models
    • bindings - contains all available OpenVINO bindings which are maintained by the OpenVINO team.
      • c - C API for OpenVINO™ Runtime
      • python - Python API for OpenVINO™ Runtime
  • Plugins - contains OpenVINO plugins which are maintained in open-source by the OpenVINO team. For more information, take a look at the list of supported devices.
  • Frontends - contains available OpenVINO frontends that allow reading models from the native framework format.
  • OpenVINO Model Converter (OVC) - is a cross-platform command-line tool that facilitates the transition between training and deployment environments, and adjusts deep learning models for optimal execution on end-point target devices.
  • Samples - applications in C, C++ and Python languages that show basic OpenVINO use cases.

Supported Hardware matrix

The OpenVINO™ Runtime can infer models on different hardware devices. This section provides the list of supported devices.

Device Plugin Library Short Description
CPU Intel CPU openvino_intel_cpu_plugin Intel Xeon with Intel® Advanced Vector Extensions 2 (Intel® AVX2), Intel® Advanced Vector Extensions 512 (Intel® AVX-512), and AVX512_BF16, Intel Core Processors with Intel AVX2, Intel Atom Processors with Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Matrix Extensions (Intel® AMX)
ARM CPU openvino_arm_cpu_plugin Raspberry Pi™ 4 Model B, Apple® Mac mini with Apple silicon
GPU Intel GPU openvino_intel_gpu_plugin Intel Processor Graphics, including Intel HD Graphics and Intel Iris Graphics
GNA Intel GNA openvino_intel_gna_plugin Intel Speech Enabling Developer Kit, Amazon Alexa* Premium Far-Field Developer Kit, Intel Pentium Silver J5005 Processor, Intel Pentium Silver N5000 Processor, Intel Celeron J4005 Processor, Intel Celeron J4105 Processor, Intel Celeron Processor N4100, Intel Celeron Processor N4000, Intel Core i3-8121U Processor, Intel Core i7-1065G7 Processor, Intel Core i7-1060G7 Processor, Intel Core i5-1035G4 Processor, Intel Core i5-1035G7 Processor, Intel Core i5-1035G1 Processor, Intel Core i5-1030G7 Processor, Intel Core i5-1030G4 Processor, Intel Core i3-1005G1 Processor, Intel Core i3-1000G1 Processor, Intel Core i3-1000G4 Processor

OpenVINO™ Toolkit also contains several plugins which simplify loading models on several hardware devices:

Plugin Library Short Description
Auto openvino_auto_plugin Auto plugin enables selecting Intel device for inference automatically
Auto Batch openvino_auto_batch_plugin Auto batch plugin performs on-the-fly automatic batching (i.e. grouping inference requests together) to improve device utilization, with no programming effort from the user
Hetero openvino_hetero_plugin Heterogeneous execution enables automatic inference splitting between several devices
Multi openvino_auto_plugin Multi plugin enables simultaneous inference of the same model on several devices in parallel

License

OpenVINO™ Toolkit is licensed under Apache License Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.

Telemetry

OpenVINO™ collects software performance and usage data for the purpose of improving OpenVINO™ tools. This data is collected directly by OpenVINO™ or through the use of Google Analytics 4. You can opt-out at any time by running the command:

opt_in_out --opt_out

More Information is available at https://docs.openvino.ai/latest/openvino_docs_telemetry_information.html.

Documentation

User documentation

The latest documentation for OpenVINO™ Toolkit is available here. This documentation contains detailed information about all OpenVINO components and provides all the important information you may need to create an application based on binary OpenVINO distribution or own OpenVINO version without source code modification.

Developer documentation

Developer documentation contains information about architectural decisions which are applied inside the OpenVINO components. This documentation has all necessary information which could be needed in order to contribute to OpenVINO.

Tutorials

The list of OpenVINO tutorials:

Products which use OpenVINO

System requirements

The system requirements vary depending on platform and are available on dedicated pages:

How to build

See How to build OpenVINO to get more information about the OpenVINO build process.

How to contribute

See Contributions Welcome for good first issues.

See CONTRIBUTING for contribution details. Thank you!

Take the issue

If you wish to be assigned to an issue please add a comment with .take command.

Get a support

Report questions, issues and suggestions, using:

Additional Resources


* Other names and brands may be claimed as the property of others.