Compare commits
372 Commits
2023.0.0.d
...
2023.0.0.d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40bf400b18 | ||
|
|
22bb3af7df | ||
|
|
c0767a7e27 | ||
|
|
59e28f8d0d | ||
|
|
40128cded1 | ||
|
|
8005a3d0b0 | ||
|
|
561bf6d478 | ||
|
|
cecd0e75a6 | ||
|
|
dbaa1f0c0d | ||
|
|
03a428f50c | ||
|
|
7fc65ae3c5 | ||
|
|
10392644e3 | ||
|
|
80519162ae | ||
|
|
82ff7e17c9 | ||
|
|
f1bc402b38 | ||
|
|
962df2cdcb | ||
|
|
c8ac7c9b82 | ||
|
|
6ed85178d5 | ||
|
|
14a14ecd76 | ||
|
|
546581bcce | ||
|
|
cfbfa18f34 | ||
|
|
e593cf8545 | ||
|
|
a032d67cc7 | ||
|
|
ca92eb96ad | ||
|
|
de30d8523d | ||
|
|
da91b33763 | ||
|
|
02bfa7804b | ||
|
|
6cb6c5958a | ||
|
|
737864bdc7 | ||
|
|
95ca54d0ab | ||
|
|
ce5f65af14 | ||
|
|
6389f423bf | ||
|
|
5857c4438b | ||
|
|
09265083ed | ||
|
|
7cf9d109e8 | ||
|
|
5682e178dd | ||
|
|
dfaa4e7bd6 | ||
|
|
da4316845f | ||
|
|
3c485feea8 | ||
|
|
dabd5ee412 | ||
|
|
edec7bb897 | ||
|
|
72533a7da1 | ||
|
|
49b5d039db | ||
|
|
acd424bb5e | ||
|
|
57d4ca27e6 | ||
|
|
923b6f297c | ||
|
|
a8278ba4a6 | ||
|
|
43a42fa9cd | ||
|
|
cd4c012f08 | ||
|
|
2e3deb8d8f | ||
|
|
d423491bcb | ||
|
|
11a2b75161 | ||
|
|
512b186231 | ||
|
|
ee4ccec190 | ||
|
|
27210b6505 | ||
|
|
ab879f143c | ||
|
|
6e11645018 | ||
|
|
0a5975bdfa | ||
|
|
1aec450fc6 | ||
|
|
8c09a128ac | ||
|
|
3f07c8b48b | ||
|
|
9c01de4b6e | ||
|
|
72906ca242 | ||
|
|
39ed9a624f | ||
|
|
f736c71feb | ||
|
|
9247906879 | ||
|
|
19f8f5a3a7 | ||
|
|
2255bb25fd | ||
|
|
ca1102b855 | ||
|
|
0617ce9089 | ||
|
|
22aee08958 | ||
|
|
e37288fbcc | ||
|
|
5533de5dd8 | ||
|
|
10f53cb40b | ||
|
|
4750523c81 | ||
|
|
478725c719 | ||
|
|
e79db660ce | ||
|
|
d1f1fa2b39 | ||
|
|
3bb0fb61f6 | ||
|
|
6663367183 | ||
|
|
28e54e75ea | ||
|
|
38a5ee719d | ||
|
|
8879ef53a7 | ||
|
|
00847cba7d | ||
|
|
ce23ce00f1 | ||
|
|
3830125e3b | ||
|
|
d972a71b4c | ||
|
|
22a81e0e58 | ||
|
|
9fce01f8cc | ||
|
|
758ec32001 | ||
|
|
64b5a4595a | ||
|
|
5c21dcec4d | ||
|
|
a6b1544acf | ||
|
|
8e5b0650a0 | ||
|
|
b452dab8f0 | ||
|
|
83cc2277b4 | ||
|
|
f39ab0dbc9 | ||
|
|
10c56708fd | ||
|
|
86ed1e93b6 | ||
|
|
f8522a6ea1 | ||
|
|
f410658d32 | ||
|
|
a3f14366d9 | ||
|
|
a34ef680f2 | ||
|
|
faba5fb71e | ||
|
|
e8ae1e41ea | ||
|
|
eac265722f | ||
|
|
63f5c2f0e7 | ||
|
|
6ff0cad127 | ||
|
|
01065338ef | ||
|
|
aa5b6ecac2 | ||
|
|
b3ea6ceefa | ||
|
|
656d7fe380 | ||
|
|
7997354359 | ||
|
|
219a0eebdc | ||
|
|
bb0be3c177 | ||
|
|
11c3623ebb | ||
|
|
fed06fcb91 | ||
|
|
2c450ced24 | ||
|
|
26029c2d48 | ||
|
|
462cdb54f8 | ||
|
|
46f8ebfaec | ||
|
|
fbc28297ec | ||
|
|
d7b775f583 | ||
|
|
e31b00c299 | ||
|
|
50a6c88ea3 | ||
|
|
793bbb6ee2 | ||
|
|
88cb428763 | ||
|
|
c4b155edc2 | ||
|
|
304991f88b | ||
|
|
6ea9cc7149 | ||
|
|
8fbd78fb07 | ||
|
|
6ad80576b7 | ||
|
|
6b44902bf2 | ||
|
|
b22d0641cb | ||
|
|
4ae7e1ff61 | ||
|
|
31efdfd00d | ||
|
|
70d80a750f | ||
|
|
ba23e2290e | ||
|
|
359b444558 | ||
|
|
c186ffdf0d | ||
|
|
344db564fc | ||
|
|
14d4fcf827 | ||
|
|
a8b5ccc03f | ||
|
|
0c12ee6015 | ||
|
|
dcfa1f6881 | ||
|
|
70e0eed075 | ||
|
|
77a5d1aa03 | ||
|
|
f100c36ac9 | ||
|
|
e53fc86988 | ||
|
|
bef25ddf43 | ||
|
|
70c3979602 | ||
|
|
0f7e6de346 | ||
|
|
7d574e3114 | ||
|
|
552143c9cd | ||
|
|
5026aa044a | ||
|
|
4e6a129672 | ||
|
|
d00731c0ab | ||
|
|
5bded05ae6 | ||
|
|
1bd9a1e01c | ||
|
|
f9fbcbe419 | ||
|
|
71880aadd3 | ||
|
|
1ec22a3180 | ||
|
|
fab8236af3 | ||
|
|
4c3a4a8992 | ||
|
|
3d33cb2b43 | ||
|
|
39f843fb78 | ||
|
|
d230ad9313 | ||
|
|
497a19edf6 | ||
|
|
d7083fb4db | ||
|
|
a611104b12 | ||
|
|
921bebc1ec | ||
|
|
7338257e00 | ||
|
|
bb6a3251a8 | ||
|
|
4ce5548c9a | ||
|
|
90b485715a | ||
|
|
00a4fc514c | ||
|
|
a8c7c19cb9 | ||
|
|
63c0089128 | ||
|
|
34b3abc0e2 | ||
|
|
1525f6cc16 | ||
|
|
dbd20ec799 | ||
|
|
498486588e | ||
|
|
ca0b30c082 | ||
|
|
626caf7f2a | ||
|
|
2401b0aa3c | ||
|
|
1281074e15 | ||
|
|
bd8ca523b9 | ||
|
|
3ad3a90e98 | ||
|
|
9f250edc7f | ||
|
|
38d97709d1 | ||
|
|
531b5a3657 | ||
|
|
d4ac0b0e79 | ||
|
|
078f28911b | ||
|
|
e93c8e1b1c | ||
|
|
d5cc696e00 | ||
|
|
566ef01a3f | ||
|
|
441dad2eea | ||
|
|
e6341917cd | ||
|
|
2a5c69abc6 | ||
|
|
d5123056bb | ||
|
|
e3fdfc4e09 | ||
|
|
f97eeb59d5 | ||
|
|
d70d8509c3 | ||
|
|
3494edeed2 | ||
|
|
bf2870a63b | ||
|
|
d15cdc81cd | ||
|
|
3f9cc0112a | ||
|
|
adc733f1e9 | ||
|
|
e52445dda4 | ||
|
|
c14d0d7389 | ||
|
|
ae06322cb7 | ||
|
|
14f38bfde8 | ||
|
|
930441b223 | ||
|
|
f4fe8400a7 | ||
|
|
f9098cd67c | ||
|
|
47f0d72f02 | ||
|
|
496a608a28 | ||
|
|
1471a6e8de | ||
|
|
25826bfe7d | ||
|
|
dc2fa65224 | ||
|
|
4a997de4a3 | ||
|
|
98393c0da1 | ||
|
|
816c0f76e2 | ||
|
|
7c41d78b5d | ||
|
|
834e611bde | ||
|
|
9ca85eb363 | ||
|
|
d72d833a96 | ||
|
|
589bd6d076 | ||
|
|
aa1f26a2b7 | ||
|
|
7282728cec | ||
|
|
9b9c31d46b | ||
|
|
175db3523a | ||
|
|
c96a5c4b70 | ||
|
|
31398bb3eb | ||
|
|
18da874c57 | ||
|
|
507b3251ef | ||
|
|
824a5aa7fb | ||
|
|
9f3bc22e7a | ||
|
|
4ba0ac5476 | ||
|
|
8bdc5bc85f | ||
|
|
de2e9faa58 | ||
|
|
cc6fd80d0a | ||
|
|
7ce40996e5 | ||
|
|
dc941f69ae | ||
|
|
fe98b8ee13 | ||
|
|
df5ada8b19 | ||
|
|
0c0aa5c997 | ||
|
|
129670ab1e | ||
|
|
25058da48f | ||
|
|
f5c2db73d5 | ||
|
|
24c9d95779 | ||
|
|
ae34720818 | ||
|
|
231569db16 | ||
|
|
cf12f92fae | ||
|
|
9e5be9ad24 | ||
|
|
9b38e5168f | ||
|
|
d07fa6f80e | ||
|
|
fd824cf036 | ||
|
|
b9f82e37b9 | ||
|
|
04a4971481 | ||
|
|
2c7cbdb293 | ||
|
|
d6f7e5e84d | ||
|
|
435a79a2a3 | ||
|
|
67aa807892 | ||
|
|
e98bd0dae4 | ||
|
|
a7228534af | ||
|
|
55fa8da5e4 | ||
|
|
802742e59f | ||
|
|
68f46ff9a1 | ||
|
|
de8f34c8f0 | ||
|
|
85f9d1392c | ||
|
|
6aeb054e48 | ||
|
|
25015f9790 | ||
|
|
0426c645eb | ||
|
|
3461064507 | ||
|
|
c592ecd44e | ||
|
|
5795a50a22 | ||
|
|
a016e4e6bb | ||
|
|
5299f26168 | ||
|
|
656428bc4f | ||
|
|
da7ee613a3 | ||
|
|
df6557cfad | ||
|
|
f70954bda9 | ||
|
|
ad2dc4d479 | ||
|
|
7782d85b26 | ||
|
|
5d80bca16e | ||
|
|
63c5be3ed2 | ||
|
|
ae350c7107 | ||
|
|
4921d1ad28 | ||
|
|
061ba1d773 | ||
|
|
e238bfc1d0 | ||
|
|
1037f24c46 | ||
|
|
67c07ccebe | ||
|
|
dcf6fb1e1a | ||
|
|
9c6d287a58 | ||
|
|
1ba87971d1 | ||
|
|
73be9d31b6 | ||
|
|
86142b0f4b | ||
|
|
0e975ffbb6 | ||
|
|
65a49e903c | ||
|
|
418f70abb0 | ||
|
|
bee357bcf8 | ||
|
|
298bf15a1b | ||
|
|
9b5ca2bb6a | ||
|
|
86d7c97fa9 | ||
|
|
c283d21215 | ||
|
|
a368e10fff | ||
|
|
c2a90f4c01 | ||
|
|
c2c2143f45 | ||
|
|
fb49228fec | ||
|
|
ed5148b75f | ||
|
|
7d4496bb12 | ||
|
|
e737e18b02 | ||
|
|
997f60f1c3 | ||
|
|
bdd79fe931 | ||
|
|
496fe7a7db | ||
|
|
69d6ef33fc | ||
|
|
b755d17090 | ||
|
|
23c90aecea | ||
|
|
132dceb146 | ||
|
|
4bb9222c6e | ||
|
|
4b16c7554e | ||
|
|
f8aacf3b19 | ||
|
|
0312d8cf1b | ||
|
|
2312ec79a2 | ||
|
|
586dd4fb0a | ||
|
|
31aa35b646 | ||
|
|
ea213f687a | ||
|
|
3740ba9226 | ||
|
|
920900fbda | ||
|
|
4a43753e02 | ||
|
|
209db8a29b | ||
|
|
63b16baa7e | ||
|
|
9e89b6c5f6 | ||
|
|
7513e9dee1 | ||
|
|
4fbd094cba | ||
|
|
98afdc848a | ||
|
|
296c2d6603 | ||
|
|
ca2265395d | ||
|
|
d41663694c | ||
|
|
d407bc1b3b | ||
|
|
f6ee6e92f8 | ||
|
|
f991f92f8c | ||
|
|
527c2dad2a | ||
|
|
615177ae09 | ||
|
|
234fe92931 | ||
|
|
efc647a512 | ||
|
|
81821f3dbb | ||
|
|
f1d6725477 | ||
|
|
81af7f52cb | ||
|
|
feb08c408f | ||
|
|
023dc1fa3d | ||
|
|
f36ee94b4b | ||
|
|
bc7a121a20 | ||
|
|
b921bf2e29 | ||
|
|
2075dcb7c3 | ||
|
|
ed50d3782c | ||
|
|
b7bf760516 | ||
|
|
57684e28ff | ||
|
|
48dee7c30a | ||
|
|
c7fe5ca73b | ||
|
|
b5a0497c19 | ||
|
|
f4179e8ee4 | ||
|
|
d1a23e964e | ||
|
|
13874b31e9 | ||
|
|
8c69100439 | ||
|
|
769353df00 | ||
|
|
8c40bfd9c7 | ||
|
|
c6fc8e5adc | ||
|
|
72952bdc45 | ||
|
|
8b7e6878e8 | ||
|
|
1eb6ad20c3 |
@@ -31,14 +31,6 @@ pr:
|
||||
- 'tools/*'
|
||||
- 'tests/layer_tests/*'
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: openvino_contrib
|
||||
type: github
|
||||
endpoint: openvinotoolkit
|
||||
name: openvinotoolkit/openvino_contrib
|
||||
ref: master
|
||||
|
||||
variables:
|
||||
- group: github
|
||||
|
||||
@@ -56,7 +48,6 @@ jobs:
|
||||
VSTS_HTTP_TIMEOUT: 200
|
||||
BUILD_TYPE: Release
|
||||
OPENVINO_REPO_DIR: $(Build.Repository.LocalPath)
|
||||
OPENVINO_CONTRIB_REPO_DIR: $(OPENVINO_REPO_DIR)/../openvino_contrib
|
||||
WORK_DIR: $(Pipeline.Workspace)/_w
|
||||
BUILD_DIR: $(WORK_DIR)/build
|
||||
ANDROID_TOOLS: $(WORK_DIR)/android_tools
|
||||
@@ -66,7 +57,7 @@ jobs:
|
||||
SHARE_DIR: /mount/cinfsshare/onnxtestdata
|
||||
CCACHE_DIR: $(SHARE_DIR)/ccache/master/android_arm64
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -76,7 +67,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
@@ -121,11 +112,6 @@ jobs:
|
||||
submodules: 'true'
|
||||
path: openvino
|
||||
|
||||
- checkout: openvino_contrib
|
||||
clean: 'true'
|
||||
submodules: 'true'
|
||||
path: openvino_contrib
|
||||
|
||||
- script: |
|
||||
set -e
|
||||
sudo -E $(OPENVINO_REPO_DIR)/install_build_dependencies.sh
|
||||
@@ -147,20 +133,15 @@ jobs:
|
||||
- task: CMake@1
|
||||
inputs:
|
||||
cmakeArgs: >
|
||||
-GNinja
|
||||
-G "Ninja Multi-Config"
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(ANDROID_TOOLS)/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON
|
||||
-DANDROID_ABI=$(ANDROID_ABI_CONFIG)
|
||||
-DANDROID_STL=c++_shared
|
||||
-DANDROID_PLATFORM=$(ANDROID_SDK_VERSION)
|
||||
-DENABLE_TESTS=ON
|
||||
-DBUILD_java_api=ON
|
||||
-DBUILD_nvidia_plugin=OFF
|
||||
-DBUILD_custom_operations=OFF
|
||||
-DENABLE_INTEL_GPU=ON
|
||||
-DOPENVINO_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)/modules
|
||||
-DCMAKE_CXX_LINKER_LAUNCHER=ccache
|
||||
-DCMAKE_C_LINKER_LAUNCHER=ccache
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
|
||||
@@ -100,7 +100,7 @@ jobs:
|
||||
BUILD_PYTHON: $(WORK_DIR)/build_python
|
||||
INSTALL_PYTHON: $(INSTALL_OPENVINO)/extras/python
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -110,7 +110,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
@@ -172,7 +172,8 @@ jobs:
|
||||
# For running Python API tests
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
# For running Paddle frontend unit tests
|
||||
python3 -m pip install -r $(REPO_DIR)/src/frontends/paddle/tests/requirements.txt
|
||||
# TODO Reenable PDPD after paddlepaddle==2.5.0 with compliant protobuf is released (ticket 95904)
|
||||
#python3 -m pip install -r $(REPO_DIR)/src/frontends/paddle/tests/requirements.txt
|
||||
# For running ONNX frontend unit tests
|
||||
python3 -m pip install -r $(REPO_DIR)/src/frontends/onnx/tests/requirements.txt
|
||||
# For running TensorFlow frontend unit tests
|
||||
|
||||
@@ -31,14 +31,6 @@ pr:
|
||||
- 'tools/*'
|
||||
- 'tests/layer_tests/*'
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: openvino_contrib
|
||||
type: github
|
||||
endpoint: openvinotoolkit
|
||||
name: openvinotoolkit/openvino_contrib
|
||||
ref: master
|
||||
|
||||
variables:
|
||||
- group: github
|
||||
|
||||
@@ -54,34 +46,18 @@ jobs:
|
||||
system.debug: true
|
||||
VSTS_HTTP_RETRY: 5
|
||||
VSTS_HTTP_TIMEOUT: 200
|
||||
PYTHON_ARM_VERSION: "3.10.6"
|
||||
PYTHON_EXEC: "python3.10"
|
||||
OPENVINO_ARCH: 'aarch64'
|
||||
NUM_PROC: 1
|
||||
BUILD_TYPE: Release
|
||||
OPENVINO_REPO_DIR: $(Build.Repository.LocalPath)
|
||||
OPENVINO_CONTRIB_REPO_DIR: $(OPENVINO_REPO_DIR)/../openvino_contrib
|
||||
OPENCV_REPO_DIR: $(OPENVINO_REPO_DIR)/../opencv
|
||||
ONETBB_REPO_DIR: $(OPENVINO_CONTRIB_REPO_DIR)/../oneTBB
|
||||
BUILD_PYTHON: $(WORK_DIR)/build_python
|
||||
BUILD_OPENCV: $(WORK_DIR)/build_opencv
|
||||
BUILD_ONETBB: $(WORK_DIR)/build_onetbb
|
||||
BUILD_OPENVINO: $(WORK_DIR)/build
|
||||
BUILD_OPENVINO_PYTHON: $(WORK_DIR)/build_python
|
||||
CROSSENV_DIR: $(WORK_DIR)/cross_env
|
||||
INSTALL_OPENVINO: $(WORK_DIR)/install_openvino
|
||||
INSTALL_PYTHON: $(INSTALL_OPENVINO)/extras/python
|
||||
INSTALL_ONETBB: $(WORK_DIR)/build/extras/oneTBB
|
||||
INSTALL_ONETBB_PACKAGE: $(INSTALL_OPENVINO)/extras/oneTBB
|
||||
INSTALL_OPENCV: $(INSTALL_OPENVINO)/extras/opencv
|
||||
WORK_DIR: $(Pipeline.Workspace)/_w
|
||||
SHARE_DIR: /mount/cinfsshare/onnxtestdata
|
||||
TMP_DIR: /mnt/tmp
|
||||
OPENVINO_CCACHE_DIR: $(SHARE_DIR)/ccache/master/linux_arm64
|
||||
OPENCV_CCACHE_DIR: $(SHARE_DIR)/ccache/master/linux_arm64_opencv
|
||||
ONETBB_CCACHE_DIR: $(SHARE_DIR)/ccache/master/linux_arm64_onetbb
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -91,7 +67,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
@@ -121,15 +97,13 @@ jobs:
|
||||
|
||||
- script: |
|
||||
rm -rf $(WORK_DIR) ; mkdir $(WORK_DIR)
|
||||
mkdir -p $(BUILD_ONETBB) $(BUILD_OPENCV) $(BUILD_OPENVINO) $(BUILD_OPENVINO_PYTHON) $(BUILD_PYTHON)
|
||||
mkdir -p $(INSTALL_ONETBB) $(INSTALL_ONETBB_PACKAGE) $(INSTALL_OPENVINO) $(INSTALL_PYTHON) $(INSTALL_OPENCV)
|
||||
mkdir -p $(BUILD_OPENVINO)
|
||||
mkdir -p $(INSTALL_OPENVINO)
|
||||
sudo rm -rf $(TMP_DIR) ; sudo mkdir $(TMP_DIR) ; sudo chmod 777 -R $(TMP_DIR)
|
||||
sudo mkdir -p $(SHARE_DIR)
|
||||
sudo apt --assume-yes update && sudo apt --assume-yes install nfs-common
|
||||
sudo mount -vvv -t nfs cinfsshare.file.core.windows.net:/cinfsshare/onnxtestdata $(SHARE_DIR) -o vers=4,minorversion=1,sec=sys
|
||||
mkdir -p $(OPENVINO_CCACHE_DIR)
|
||||
mkdir -p $(OPENCV_CCACHE_DIR)
|
||||
mkdir -p $(ONETBB_CCACHE_DIR)
|
||||
displayName: 'Make directories'
|
||||
|
||||
- checkout: self
|
||||
@@ -137,56 +111,25 @@ jobs:
|
||||
submodules: 'true'
|
||||
path: openvino
|
||||
|
||||
- checkout: openvino_contrib
|
||||
clean: 'true'
|
||||
submodules: 'true'
|
||||
path: openvino_contrib
|
||||
|
||||
- script: |
|
||||
set -e
|
||||
sudo -E $(OPENVINO_REPO_DIR)/install_build_dependencies.sh
|
||||
$(OPENVINO_CONTRIB_REPO_DIR)/modules/arm_plugin/scripts/install_build_dependencies.sh
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/requirements.txt
|
||||
python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt
|
||||
env:
|
||||
CCACHE_TEMPDIR: $(TMP_DIR)/ccache
|
||||
CCACHE_BASEDIR: $(Pipeline.Workspace)
|
||||
CCACHE_MAXSIZE: 50G
|
||||
USE_CCACHE: 1
|
||||
OPENCV_CCACHE_DIR: $(OPENCV_CCACHE_DIR)
|
||||
ONETBB_CCACHE_DIR: $(ONETBB_CCACHE_DIR)
|
||||
PYTHON_ARM_VERSION: $(PYTHON_ARM_VERSION)
|
||||
NUM_PROC: $(NUM_PROC)
|
||||
BUILD_PYTHON: $(BUILD_PYTHON)
|
||||
WORK_DIR: $(WORK_DIR)
|
||||
INSTALL_PYTHON: $(INSTALL_PYTHON)
|
||||
BUILD_TYPE: $(BUILD_TYPE)
|
||||
OPENVINO_REPO_DIR: $(OPENVINO_REPO_DIR)
|
||||
BUILD_ONETBB: $(BUILD_ONETBB)
|
||||
INSTALL_ONETBB: $(INSTALL_ONETBB)
|
||||
INSTALL_OPENCV: $(INSTALL_OPENCV)
|
||||
PYTHON_EXEC: $(PYTHON_EXEC)
|
||||
ONETBB_REPO_DIR: $(ONETBB_REPO_DIR)
|
||||
OPENCV_REPO_DIR: $(OPENCV_REPO_DIR)
|
||||
BUILD_OPENCV: $(BUILD_OPENCV)
|
||||
INSTALL_OPENVINO: $(INSTALL_OPENVINO)
|
||||
# install dependencies needed to build CPU plugin for ARM
|
||||
sudo -E apt --assume-yes install scons crossbuild-essential-arm64
|
||||
# Speed up build
|
||||
sudo -E apt -y --no-install-recommends install unzip
|
||||
wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip
|
||||
unzip ninja-linux.zip
|
||||
sudo cp -v ninja /usr/local/bin/
|
||||
displayName: 'Install dependencies'
|
||||
|
||||
- script: |
|
||||
set -e
|
||||
/usr/local/bin/$(PYTHON_EXEC) -m pip install -U pip
|
||||
/usr/local/bin/$(PYTHON_EXEC) -m pip install crossenv
|
||||
/usr/local/bin/$(PYTHON_EXEC) -m crossenv $(INSTALL_PYTHON)/bin/$(PYTHON_EXEC) $(CROSSENV_DIR)
|
||||
source $(CROSSENV_DIR)/bin/activate
|
||||
build-pip3 install -U pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt
|
||||
cross-pip3 install -U pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt
|
||||
displayName: 'Create crossenv'
|
||||
|
||||
- task: CMake@1
|
||||
inputs:
|
||||
cmakeArgs: >
|
||||
-GNinja
|
||||
-G "Ninja Multi-Config"
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON
|
||||
-DOpenCV_DIR=$(INSTALL_OPENCV)/cmake
|
||||
@@ -194,15 +137,9 @@ jobs:
|
||||
-DENABLE_TESTS=ON
|
||||
-DENABLE_DATA=OFF
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(OPENVINO_REPO_DIR)/cmake/arm64.toolchain.cmake
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
|
||||
-DTHREADING=TBB
|
||||
-DTBB_DIR=$(INSTALL_ONETBB)/lib/cmake/TBB
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DOPENVINO_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)/modules/arm_plugin
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache
|
||||
-DCMAKE_CXX_LINKER_LAUNCHER=ccache
|
||||
-DCMAKE_C_LINKER_LAUNCHER=ccache
|
||||
-DARM_COMPUTE_SCONS_JOBS=$(NUM_PROC)
|
||||
-DCMAKE_INSTALL_PREFIX=$(INSTALL_OPENVINO)
|
||||
-S $(OPENVINO_REPO_DIR)
|
||||
@@ -220,31 +157,6 @@ jobs:
|
||||
- script: cmake --build $(BUILD_OPENVINO) --parallel --config $(BUILD_TYPE) --target install
|
||||
displayName: 'Install OpenVINO ARM plugin'
|
||||
|
||||
- script: |
|
||||
source $(CROSSENV_DIR)/bin/activate
|
||||
cmake \
|
||||
-GNinja \
|
||||
-DENABLE_PYTHON=ON \
|
||||
-DENABLE_WHEEL=ON \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(OPENVINO_REPO_DIR)/cmake/arm64.toolchain.cmake \
|
||||
-DOpenVINODeveloperPackage_DIR=$(BUILD_OPENVINO) \
|
||||
-DCMAKE_INSTALL_PREFIX=$(INSTALL_OPENVINO) \
|
||||
-S $(OPENVINO_REPO_DIR)/src/bindings/python \
|
||||
-B $(BUILD_OPENVINO_PYTHON)
|
||||
deactivate
|
||||
displayName: 'CMake OpenVINO python binding'
|
||||
|
||||
- script: cmake --build $(BUILD_OPENVINO_PYTHON) --parallel --config $(BUILD_TYPE)
|
||||
env:
|
||||
CCACHE_DIR: $(OPENVINO_CCACHE_DIR)
|
||||
CCACHE_TEMPDIR: $(TMP_DIR)/ccache
|
||||
CCACHE_BASEDIR: $(Pipeline.Workspace)
|
||||
CCACHE_MAXSIZE: 50G
|
||||
displayName: 'Build OpenVINO python binding'
|
||||
|
||||
- script: cmake --build $(BUILD_OPENVINO_PYTHON) --parallel --target install
|
||||
displayName: 'Install OpenVINO python binding'
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
INSTALL_DIR: $(WORK_DIR)/install_pkg
|
||||
SETUPVARS: $(INSTALL_DIR)/setupvars.sh
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
@@ -123,12 +123,11 @@ jobs:
|
||||
- task: CMake@1
|
||||
inputs:
|
||||
cmakeArgs: >
|
||||
-GNinja
|
||||
-G "Ninja Multi-Config"
|
||||
-DENABLE_CPPLINT=OFF
|
||||
-DENABLE_GAPI_PREPROCESSING=OFF
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
|
||||
-DENABLE_FASTER_BUILD=ON
|
||||
-DENABLE_PROFILING_ITT=ON
|
||||
-DSELECTIVE_BUILD=COLLECT
|
||||
@@ -152,11 +151,10 @@ jobs:
|
||||
- task: CMake@1
|
||||
inputs:
|
||||
cmakeArgs: >
|
||||
-GNinja
|
||||
-DSELECTIVE_BUILD=ON
|
||||
-DSELECTIVE_BUILD_STAT=$(BUILD_DIR)/*.csv
|
||||
-S $(REPO_DIR)
|
||||
-B $(BUILD_DIR)
|
||||
-S $(REPO_DIR)
|
||||
displayName: 'CMake CC ON'
|
||||
|
||||
- script: cmake --build $(BUILD_DIR) --parallel --config $(BUILD_TYPE) --target openvino_intel_cpu_plugin openvino_ir_frontend
|
||||
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
SHARE_DIR: /mount/cinfsshare/onnxtestdata
|
||||
CCACHE_DIR: $(SHARE_DIR)/ccache/master/linux_coverity
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
@@ -106,10 +106,9 @@ jobs:
|
||||
inputs:
|
||||
# Coverity has too many PARSE_ERROR errors with ENABLE_FASTER_BUILD=ON. Disabling FASTER_BUILD.
|
||||
cmakeArgs: >
|
||||
-GNinja
|
||||
-G "Ninja Multi-Config"
|
||||
-DENABLE_CPPLINT=OFF
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
|
||||
-DENABLE_FASTER_BUILD=OFF
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF
|
||||
-DBUILD_nvidia_plugin=OFF
|
||||
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
python3 -m pip install -r /root/repos/openvino/src/bindings/python/requirements.txt &&
|
||||
cmake -GNinja \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DDENABLE_CPPLINT=OFF \
|
||||
-DENABLE_CPPLINT=OFF \
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
|
||||
-DOPENVINO_EXTRA_MODULES=/root/repos/openvino_contrib/modules/nvidia_plugin \
|
||||
-DENABLE_INTEL_CPU=OFF \
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
ONNXRUNTIME_UTILS: $(REPO_DIR)/.ci/azure/ci_utils/onnxruntime
|
||||
ONNXRUNTIME_BUILD_DIR: $(ONNXRUNTIME_REPO_DIR)/build
|
||||
LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib
|
||||
OV_PYTHON_VERSION: 3.10.10 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
OV_PYTHON_VERSION: 3.11.2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
disableDownloadFromRegistry: false
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
- bash: |
|
||||
#!/bin/bash
|
||||
|
||||
@@ -73,11 +73,11 @@ jobs:
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.10'
|
||||
versionSpec: '3.11.2'
|
||||
addToPath: true
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
|
||||
- script: |
|
||||
@@ -113,10 +113,6 @@ jobs:
|
||||
lfs: 'true'
|
||||
path: testdata
|
||||
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.10'
|
||||
|
||||
- script: |
|
||||
brew install cython
|
||||
brew install automake
|
||||
@@ -127,7 +123,8 @@ jobs:
|
||||
|
||||
- script: |
|
||||
export PATH="/usr/local/opt/cython/bin:$PATH"
|
||||
cmake -GNinja \
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-DENABLE_CPPLINT=OFF \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
|
||||
|
||||
@@ -73,7 +73,7 @@ jobs:
|
||||
INSTALL_DIR: $(WORK_DIR)\install_pkg
|
||||
INSTALL_TEST_DIR: $(INSTALL_DIR)\tests
|
||||
SETUPVARS: $(INSTALL_DIR)\setupvars.bat
|
||||
PYTHON_DIR: C:\hostedtoolcache\windows\Python\3.10.7\x64
|
||||
PYTHON_DIR: C:\hostedtoolcache\windows\Python\3.11.2\x64
|
||||
CMAKE_VERSION: 3.24.0
|
||||
CMAKE_CMD: $(WORK_DIR)\cmake-$(CMAKE_VERSION)-windows-x86_64\cmake-$(CMAKE_VERSION)-windows-x86_64\bin\cmake.exe
|
||||
OV_CMAKE_TOOLCHAIN_FILE: $(REPO_DIR)\cmake\toolchains\mt.runtime.win32.toolchain.cmake
|
||||
@@ -84,26 +84,26 @@ jobs:
|
||||
- script: |
|
||||
rd /Q /S $(WORK_DIR) & mkdir $(WORK_DIR)
|
||||
rd /Q /S $(BUILD_DIR) & mkdir $(BUILD_DIR)
|
||||
rd /Q /S $(WORK_DIR) & mkdir C:\hostedtoolcache\windows\Python\3.10.7
|
||||
rd /Q /S $(BUILD_DIR) & mkdir C:\hostedtoolcache\windows\Python\3.10.7\x64
|
||||
rd /Q /S $(WORK_DIR) & mkdir C:\hostedtoolcache\windows\Python\3.11.2
|
||||
rd /Q /S $(BUILD_DIR) & mkdir C:\hostedtoolcache\windows\Python\3.11.2\x64
|
||||
rd /Q /S $(BUILD_SAMPLES_DIR) & mkdir $(BUILD_SAMPLES_DIR)
|
||||
rd /Q /S $(BUILD_SAMPLES_TESTS_DIR) & mkdir $(BUILD_SAMPLES_TESTS_DIR)
|
||||
displayName: 'Make dir'
|
||||
|
||||
- script: curl -O https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe
|
||||
- script: curl -O https://www.python.org/ftp/python/3.11.2/python-3.11.2-amd64.exe
|
||||
displayName: 'Download Python'
|
||||
workingDirectory: $(WORK_DIR)
|
||||
|
||||
- script: |
|
||||
python-3.10.7-amd64.exe /passive InstallAllUsers=0 Include_launcher=0 TargetDir=C:\hostedtoolcache\windows\Python\3.10.7\x64
|
||||
cp C:\hostedtoolcache\windows\Python\3.8.2\x64.complete C:\hostedtoolcache\windows\Python\3.10.7\x64.complete
|
||||
python-3.11.2-amd64.exe /passive InstallAllUsers=0 Include_launcher=0 TargetDir=C:\hostedtoolcache\windows\Python\3.11.2\x64
|
||||
cp C:\hostedtoolcache\windows\Python\3.8.2\x64.complete C:\hostedtoolcache\windows\Python\3.11.2\x64.complete
|
||||
displayName: 'Install Python'
|
||||
workingDirectory: $(WORK_DIR)
|
||||
|
||||
- task: UsePythonVersion@0
|
||||
displayName: 'Use Python'
|
||||
inputs:
|
||||
versionSpec: '3.10'
|
||||
versionSpec: '3.11.2'
|
||||
disableDownloadFromRegistry: true
|
||||
|
||||
- script: |
|
||||
@@ -142,7 +142,8 @@ jobs:
|
||||
python -m pip install -r $(REPO_DIR)\src\bindings\python\wheel\requirements-dev.txt
|
||||
python -m pip install -r $(REPO_DIR)\src\bindings\python\requirements.txt
|
||||
rem For running Paddle frontend unit tests
|
||||
python -m pip install -r $(REPO_DIR)\src\frontends\paddle\tests\requirements.txt
|
||||
# TODO Reenable PDPD after paddlepaddle==2.5.0 with compliant protobuf is released (ticket 95904)
|
||||
#python -m pip install -r $(REPO_DIR)\src\frontends\paddle\tests\requirements.txt
|
||||
rem For running ONNX frontend unit tests
|
||||
python -m pip install -r $(REPO_DIR)\src\frontends\onnx\tests\requirements.txt
|
||||
rem For running TensorFlow frontend unit tests
|
||||
@@ -165,21 +166,21 @@ jobs:
|
||||
|
||||
- script: |
|
||||
set PATH=$(WORK_DIR)\ninja-win;%PATH%
|
||||
call "$(MSVS_VARS_PATH)" && $(CMAKE_CMD) -G "Ninja Multi-Config" ^
|
||||
call "$(MSVS_VARS_PATH)" && $(CMAKE_CMD) ^
|
||||
-G "Ninja Multi-Config" ^
|
||||
-DENABLE_CPPLINT=OFF ^
|
||||
-DENABLE_ONEDNN_FOR_GPU=$(CMAKE_BUILD_SHARED_LIBS) ^
|
||||
-DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) ^
|
||||
-DENABLE_FASTER_BUILD=ON ^
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) ^
|
||||
-DENABLE_TESTS=ON ^
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON ^
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF ^
|
||||
-DENABLE_PYTHON=ON ^
|
||||
-DBUILD_nvidia_plugin=OFF ^
|
||||
-DCUSTOM_OPERATIONS="calculate_grid;complex_mul;fft;grid_sample;sparse_conv;sparse_conv_transpose" ^
|
||||
-DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.10.7\x64\python.exe" ^
|
||||
-DPYTHON_INCLUDE_DIR="C:\hostedtoolcache\windows\Python\3.10.7\x64\include" ^
|
||||
-DPYTHON_LIBRARY="C:\hostedtoolcache\windows\Python\3.10.7\x64\libs\python310.lib" ^
|
||||
-DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.11.2\x64\python.exe" ^
|
||||
-DPYTHON_INCLUDE_DIR="C:\hostedtoolcache\windows\Python\3.11.2\x64\include" ^
|
||||
-DPYTHON_LIBRARY="C:\hostedtoolcache\windows\Python\3.11.2\x64\libs\python311.lib" ^
|
||||
-DOPENVINO_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules ^
|
||||
-DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" ^
|
||||
-DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" ^
|
||||
|
||||
@@ -65,11 +65,11 @@ jobs:
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.10'
|
||||
versionSpec: '3.11.2'
|
||||
addToPath: true
|
||||
architecture: 'x64'
|
||||
githubToken: $(auth_token)
|
||||
displayName: Setup Python 3.10
|
||||
displayName: Setup Python 3.11
|
||||
name: setupPython
|
||||
|
||||
- script: |
|
||||
@@ -78,6 +78,8 @@ jobs:
|
||||
python --version
|
||||
where java
|
||||
java -version
|
||||
where cmake
|
||||
cmake --version
|
||||
wmic computersystem get TotalPhysicalMemory
|
||||
wmic cpu list
|
||||
wmic logicaldisk get description,name
|
||||
@@ -110,7 +112,8 @@ jobs:
|
||||
|
||||
- script: |
|
||||
set PATH=$(WORK_DIR)\ninja-win;%PATH%
|
||||
call "$(MSVS_VARS_PATH)" && cmake -GNinja ^
|
||||
call "$(MSVS_VARS_PATH)" && cmake ^
|
||||
-G Ninja ^
|
||||
-DENABLE_CPPLINT=OFF ^
|
||||
-DENABLE_GAPI_PREPROCESSING=OFF ^
|
||||
-DENABLE_FASTER_BUILD=ON ^
|
||||
@@ -145,12 +148,12 @@ jobs:
|
||||
displayName: 'List csv files'
|
||||
|
||||
- script: |
|
||||
call "$(MSVS_VARS_PATH)" && cmake -G"Visual Studio 16 2019" ^
|
||||
call "$(MSVS_VARS_PATH)" && cmake ^
|
||||
-G "Visual Studio 16 2019" ^
|
||||
-DVERBOSE_BUILD=ON ^
|
||||
-DENABLE_CPPLINT=OFF ^
|
||||
-DENABLE_GAPI_PREPROCESSING=OFF ^
|
||||
-DENABLE_FASTER_BUILD=ON ^
|
||||
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) ^
|
||||
-DENABLE_PROFILING_ITT=OFF ^
|
||||
-DSELECTIVE_BUILD=ON ^
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON ^
|
||||
|
||||
25
.github/ISSUE_TEMPLATE/bug.md
vendored
25
.github/ISSUE_TEMPLATE/bug.md
vendored
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: Bug
|
||||
name: Bug
|
||||
about: Create a report to help us improve
|
||||
title: "[Bug]"
|
||||
labels: bug, support_request
|
||||
@@ -8,19 +8,28 @@ assignees: ''
|
||||
---
|
||||
|
||||
##### System information (version)
|
||||
<!-- Example
|
||||
- OpenVINO => 2020.4
|
||||
- Operating System / Platform => Windows 64 Bit
|
||||
- Compiler => Visual Studio 2017
|
||||
- Problem classification: Model Conversion
|
||||
<!-- Please use this template to submit a new issue and provide all the necessary information to expedite the response.
|
||||
Example
|
||||
- OpenVINO Source => Runtime /pip install / GitHub
|
||||
- OpenVINO Version => Version 2022.3 / Github Master Branch / tag 2023.0
|
||||
- Operating System / Platform => Windows 64 Bit / Ubuntu 20
|
||||
- Compiler => Visual Studio 2017 / Cmake
|
||||
- Problem classification: Model Conversion /Accuracy/TensorFlow FE
|
||||
- Device use: CPU / GPU / HDDL
|
||||
- Framework: TensorFlow (if applicable)
|
||||
- Model name: ResNet50 (if applicable)
|
||||
- Model name: ResNet50 and the link to pre-train modal (if applicable)
|
||||
Please provide us with the link to your model or attach .zip file.
|
||||
|
||||
-->
|
||||
|
||||
- OpenVINO=> :grey_question:
|
||||
- OpenVINO Source=> :grey_question:
|
||||
- OpenVINO Version=> :grey_question:
|
||||
- Operating System / Platform => :grey_question:
|
||||
- Compiler => :grey_question:
|
||||
- Problem classification => :grey_question:
|
||||
- Device use: => :grey_question:
|
||||
- Framework => :grey_question:
|
||||
- Model name => :grey_question:
|
||||
|
||||
##### Detailed description
|
||||
<!-- your description -->
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -69,3 +69,6 @@
|
||||
[submodule "thirdparty/snappy"]
|
||||
path = thirdparty/snappy
|
||||
url = https://github.com/google/snappy.git
|
||||
[submodule "ARMComputeLibrary"]
|
||||
path = src/plugins/intel_cpu/thirdparty/ComputeLibrary
|
||||
url = https://github.com/ARM-software/ComputeLibrary.git
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
|
||||
<img src="docs/img/openvino-logo-purple-black.png" width="400px">
|
||||
|
||||
[](https://github.com/openvinotoolkit/openvino/releases/tag/2022.2.0)
|
||||
[](https://github.com/openvinotoolkit/openvino/releases/tag/2022.3.0)
|
||||
[](LICENSE)
|
||||

|
||||

|
||||
[](https://badge.fury.io/py/openvino)
|
||||
[](https://anaconda.org/conda-forge/openvino/badges/version.svg)
|
||||
[](https://pepy.tech/project/openvino)
|
||||
|
||||
</div>
|
||||
|
||||
@@ -53,7 +53,7 @@ if(THREADING STREQUAL "OMP")
|
||||
update_deps_cache(OMP "${OMP}" "Path to OMP root folder")
|
||||
debug_message(STATUS "intel_omp=" ${OMP})
|
||||
|
||||
ie_cpack_add_component(omp HIDDEN)
|
||||
ov_cpack_add_component(omp HIDDEN)
|
||||
file(GLOB_RECURSE source_list "${OMP}/*${CMAKE_SHARED_LIBRARY_SUFFIX}*")
|
||||
install(FILES ${source_list}
|
||||
DESTINATION ${OV_CPACK_RUNTIMEDIR}
|
||||
@@ -96,6 +96,7 @@ function(ov_download_tbb)
|
||||
|
||||
if(WIN32 AND X86_64)
|
||||
# TODO: add target_path to be platform specific as well, to avoid following if
|
||||
# build oneTBB 2021.2.1 with Visual Studio 2019 (MSVC 14.21)
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_WIN "oneapi-tbb-2021.2.1-win.zip"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
@@ -108,7 +109,8 @@ function(ov_download_tbb)
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "f42d084224cc2d643314bd483ad180b081774608844000f132859fca3e9bf0ce")
|
||||
elseif(LINUX AND X86_64)
|
||||
elseif(LINUX AND X86_64 AND OV_GLIBC_VERSION VERSION_GREATER_EQUAL 2.17)
|
||||
# build oneTBB 2021.2.1 with gcc 4.8 (glibc 2.17)
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_LIN "oneapi-tbb-2021.2.1-lin.tgz"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
@@ -122,12 +124,37 @@ function(ov_download_tbb)
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "321261ff2eda6d4568a473cb883262bce77a93dac599f7bd65d2918bdee4d75b")
|
||||
elseif(APPLE AND X86_64)
|
||||
# build oneTBB 2021.2.1 with OS version 11.4
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_MAC "oneapi-tbb-2021.2.1-mac.tgz"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "c57ce4b97116cd3093c33e6dcc147fb1bbb9678d0ee6c61a506b2bfe773232cb"
|
||||
USE_NEW_LOCATION TRUE)
|
||||
elseif(WIN32 AND AARCH64)
|
||||
# build oneTBB 2021.2.1 with Visual Studio 2022 (MSVC 14.35)
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_WIN "oneapi-tbb-2021.2.1-win-arm64.zip"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "09fe7f5e7be589aa34ccd20fdfd7cad9e0afa89d1e74ecdb008a75d0af71d6e1"
|
||||
USE_NEW_LOCATION TRUE)
|
||||
elseif(LINUX AND AARCH64 AND OV_GLIBC_VERSION VERSION_GREATER_EQUAL 2.17)
|
||||
# build oneTBB 2021.2.1 with gcc 4.8 (glibc 2.17)
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_LIN "oneapi-tbb-2021.2.1-lin-arm64.tgz"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "6b87194a845aa9314f3785d842e250d934e545eccc4636655c7b27c98c302c0c"
|
||||
USE_NEW_LOCATION TRUE)
|
||||
elseif(APPLE AND AARCH64)
|
||||
# build oneTBB 2021.2.1 with export MACOSX_DEPLOYMENT_TARGET=11.0
|
||||
RESOLVE_DEPENDENCY(TBB
|
||||
ARCHIVE_MAC "oneapi-tbb-2021.2.1-mac-arm64.tgz"
|
||||
TARGET_PATH "${TEMP}/tbb"
|
||||
ENVIRONMENT "TBBROOT"
|
||||
SHA256 "15d46ef19501e4315a5498af59af873dbf8180e9a3ea55253ccf7f0c0bb6f940"
|
||||
USE_NEW_LOCATION TRUE)
|
||||
else()
|
||||
message(WARNING "Prebuilt TBB is not available on current platform")
|
||||
endif()
|
||||
|
||||
@@ -201,7 +201,7 @@ macro(ov_add_frontend)
|
||||
${frontend_root_dir}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
ie_add_vs_version_file(NAME ${TARGET_NAME}
|
||||
ov_add_vs_version_file(NAME ${TARGET_NAME}
|
||||
FILEDESCRIPTION ${OV_FRONTEND_FILEDESCRIPTION})
|
||||
|
||||
target_link_libraries(${TARGET_NAME} PUBLIC openvino::runtime)
|
||||
@@ -273,7 +273,7 @@ macro(ov_add_frontend)
|
||||
set(dev_component "${OV_CPACK_COMP_CORE_DEV}")
|
||||
|
||||
# TODO: whether we need to do it configuralbe on Windows installer?
|
||||
ie_cpack_add_component(${lib_component} HIDDEN)
|
||||
ov_cpack_add_component(${lib_component} HIDDEN)
|
||||
|
||||
if(OV_FRONTEND_LINKABLE_FRONTEND)
|
||||
set(export_set EXPORT OpenVINOTargets)
|
||||
|
||||
@@ -18,7 +18,7 @@ function(ov_native_compile_external_project)
|
||||
set(multiValueArgs CMAKE_ARGS NATIVE_TARGETS)
|
||||
cmake_parse_arguments(ARG "" "${oneValueRequiredArgs};${oneValueOptionalArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(YOCTO_AARCH64)
|
||||
if(YOCTO_AARCH64 OR EMSCRIPTEN)
|
||||
# need to unset several variables which can set env to cross-environment
|
||||
foreach(var SDKTARGETSYSROOT CONFIG_SITE OECORE_NATIVE_SYSROOT OECORE_TARGET_SYSROOT
|
||||
OECORE_ACLOCAL_OPTS OECORE_BASELIB OECORE_TARGET_ARCH OECORE_TARGET_OS CC CXX
|
||||
@@ -31,10 +31,17 @@ function(ov_native_compile_external_project)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# set root path
|
||||
if(YOCTO_AARCH64)
|
||||
set(root_path "$ENV{OECORE_NATIVE_SYSROOT}")
|
||||
elseif(EMSCRIPTEN)
|
||||
set(root_path "$ENV{EMSDK}")
|
||||
endif()
|
||||
|
||||
# filter out PATH from yocto locations
|
||||
string(REPLACE ":" ";" custom_path "$ENV{PATH}")
|
||||
foreach(path IN LISTS custom_path)
|
||||
if(NOT path MATCHES "^$ENV{OECORE_NATIVE_SYSROOT}")
|
||||
if(DEFINED root_path AND NOT path MATCHES "^${root_path}")
|
||||
list(APPEND clean_path "${path}")
|
||||
endif()
|
||||
endforeach()
|
||||
@@ -81,6 +88,17 @@ function(ov_native_compile_external_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(compile_flags)
|
||||
list(APPEND ARG_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${compile_flags}" "-DCMAKE_C_FLAGS=${compile_flags}")
|
||||
endif()
|
||||
|
||||
if(DEFINED CMAKE_CXX_COMPILER_LAUNCHER)
|
||||
list(APPEND ARG_CMAKE_ARGS "-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}")
|
||||
endif()
|
||||
if(DEFINED CMAKE_C_COMPILER_LAUNCHER)
|
||||
list(APPEND ARG_CMAKE_ARGS "-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(${ARG_TARGET_NAME}
|
||||
# Directory Options
|
||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
@@ -89,12 +107,9 @@ function(ov_native_compile_external_project)
|
||||
INSTALL_DIR "${ARG_NATIVE_INSTALL_DIR}"
|
||||
# Configure Step Options:
|
||||
CMAKE_COMMAND
|
||||
${NATIVE_CMAKE_COMMAND}
|
||||
"${NATIVE_CMAKE_COMMAND}" -E env ${cmake_env}
|
||||
"${NATIVE_CMAKE_COMMAND}"
|
||||
CMAKE_ARGS
|
||||
"-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}"
|
||||
"-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}"
|
||||
"-DCMAKE_CXX_FLAGS=${compile_flags}"
|
||||
"-DCMAKE_C_FLAGS=${compile_flags}"
|
||||
"-DCMAKE_POLICY_DEFAULT_CMP0069=NEW"
|
||||
"-DCMAKE_INSTALL_PREFIX=${ARG_NATIVE_INSTALL_DIR}"
|
||||
${ARG_CMAKE_ARGS}
|
||||
@@ -102,7 +117,7 @@ function(ov_native_compile_external_project)
|
||||
${ARG_NATIVE_SOURCE_SUBDIR}
|
||||
# Build Step Options:
|
||||
BUILD_COMMAND
|
||||
${NATIVE_CMAKE_COMMAND}
|
||||
"${NATIVE_CMAKE_COMMAND}"
|
||||
--build "${CMAKE_CURRENT_BINARY_DIR}/build"
|
||||
--config Release
|
||||
--parallel
|
||||
|
||||
@@ -27,6 +27,8 @@ elseif(PYTHON_VERSION_MINOR EQUAL 9)
|
||||
set(clang_version 12)
|
||||
elseif(PYTHON_VERSION_MINOR EQUAL 10)
|
||||
set(clang_version 14)
|
||||
elseif(PYTHON_VERSION_MINOR EQUAL 11)
|
||||
set(clang_version 14)
|
||||
else()
|
||||
message(WARNING "Cannot suggest clang package for python ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
|
||||
endif()
|
||||
|
||||
@@ -66,11 +66,11 @@ endmacro()
|
||||
ov_cpack_set_dirs()
|
||||
|
||||
#
|
||||
# ie_cpack_add_component(NAME ...)
|
||||
# ov_cpack_add_component(NAME ...)
|
||||
#
|
||||
# Wraps original `cpack_add_component` and adds component to internal IE list
|
||||
#
|
||||
function(ie_cpack_add_component name)
|
||||
function(ov_cpack_add_component name)
|
||||
if(NOT ${name} IN_LIST IE_CPACK_COMPONENTS_ALL)
|
||||
cpack_add_component(${name} ${ARGN})
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
cmake_policy(SET CMP0007 NEW)
|
||||
|
||||
set(newContent " <plugin name=\"${IE_DEVICE_NAME}\" location=\"${IE_PLUGIN_LIBRARY_NAME}\">")
|
||||
set(newContent " <plugin name=\"${OV_DEVICE_NAME}\" location=\"${OV_PLUGIN_LIBRARY_NAME}\">")
|
||||
|
||||
if(IE_PLUGIN_PROPERTIES)
|
||||
if(OV_PLUGIN_PROPERTIES)
|
||||
set(newContent "${newContent}
|
||||
<properties>")
|
||||
|
||||
foreach(props IN LISTS IE_PLUGIN_PROPERTIES)
|
||||
foreach(props IN LISTS OV_PLUGIN_PROPERTIES)
|
||||
string(REPLACE ":" ";" props "${props}")
|
||||
|
||||
list(GET props 0 key)
|
||||
@@ -27,4 +27,4 @@ endif()
|
||||
set(newContent "${newContent}
|
||||
</plugin>")
|
||||
|
||||
file(WRITE "${IE_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
file(WRITE "${OV_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
|
||||
@@ -6,11 +6,15 @@ include(CMakeParseArguments)
|
||||
|
||||
set(PLUGIN_FILES "" CACHE INTERNAL "")
|
||||
|
||||
function(ie_plugin_get_file_name target_name library_name)
|
||||
function(ov_plugin_get_file_name target_name library_name)
|
||||
set(LIB_PREFIX "${CMAKE_SHARED_MODULE_PREFIX}")
|
||||
set(LIB_SUFFIX "${IE_BUILD_POSTFIX}${CMAKE_SHARED_MODULE_SUFFIX}")
|
||||
|
||||
set("${library_name}" "${LIB_PREFIX}${target_name}${LIB_SUFFIX}" PARENT_SCOPE)
|
||||
get_target_property(LIB_NAME ${target_name} OUTPUT_NAME)
|
||||
if (LIB_NAME STREQUAL "LIB_NAME-NOTFOUND")
|
||||
set(LIB_NAME ${target_name})
|
||||
endif()
|
||||
set("${library_name}" "${LIB_PREFIX}${LIB_NAME}${LIB_SUFFIX}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if(NOT TARGET ov_plugins)
|
||||
@@ -18,7 +22,7 @@ if(NOT TARGET ov_plugins)
|
||||
endif()
|
||||
|
||||
#
|
||||
# ie_add_plugin(NAME <targetName>
|
||||
# ov_add_plugin(NAME <targetName>
|
||||
# DEVICE_NAME <deviceName>
|
||||
# [PSEUDO_DEVICE]
|
||||
# [PSEUDO_PLUGIN_FOR <actual_device>]
|
||||
@@ -32,25 +36,25 @@ endif()
|
||||
# [ADD_CLANG_FORMAT]
|
||||
# )
|
||||
#
|
||||
function(ie_add_plugin)
|
||||
function(ov_add_plugin)
|
||||
set(options SKIP_INSTALL PSEUDO_DEVICE ADD_CLANG_FORMAT AS_EXTENSION SKIP_REGISTRATION)
|
||||
set(oneValueArgs NAME DEVICE_NAME VERSION_DEFINES_FOR PSEUDO_PLUGIN_FOR)
|
||||
set(multiValueArgs DEFAULT_CONFIG SOURCES OBJECT_LIBRARIES CPPLINT_FILTERS)
|
||||
cmake_parse_arguments(IE_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
cmake_parse_arguments(OV_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(NOT IE_PLUGIN_NAME)
|
||||
if(NOT OV_PLUGIN_NAME)
|
||||
message(FATAL_ERROR "Please, specify plugin target name")
|
||||
endif()
|
||||
|
||||
if(NOT IE_PLUGIN_DEVICE_NAME)
|
||||
message(FATAL_ERROR "Please, specify device name for ${IE_PLUGIN_NAME}")
|
||||
if(NOT OV_PLUGIN_DEVICE_NAME)
|
||||
message(FATAL_ERROR "Please, specify device name for ${OV_PLUGIN_NAME}")
|
||||
endif()
|
||||
|
||||
# create and configure target
|
||||
|
||||
if(NOT IE_PLUGIN_PSEUDO_PLUGIN_FOR)
|
||||
set(input_files ${IE_PLUGIN_SOURCES})
|
||||
foreach(obj_lib IN LISTS IE_PLUGIN_OBJECT_LIBRARIES)
|
||||
if(NOT OV_PLUGIN_PSEUDO_PLUGIN_FOR)
|
||||
set(input_files ${OV_PLUGIN_SOURCES})
|
||||
foreach(obj_lib IN LISTS OV_PLUGIN_OBJECT_LIBRARIES)
|
||||
list(APPEND input_files $<TARGET_OBJECTS:${obj_lib}>)
|
||||
add_cpplint_target(${obj_lib}_cpplint FOR_TARGETS ${obj_lib})
|
||||
endforeach()
|
||||
@@ -61,120 +65,122 @@ function(ie_add_plugin)
|
||||
set(library_type STATIC)
|
||||
endif()
|
||||
|
||||
add_library(${IE_PLUGIN_NAME} ${library_type} ${input_files})
|
||||
add_library(${OV_PLUGIN_NAME} ${library_type} ${input_files})
|
||||
|
||||
if(IE_PLUGIN_VERSION_DEFINES_FOR)
|
||||
ov_add_version_defines(${IE_PLUGIN_VERSION_DEFINES_FOR} ${IE_PLUGIN_NAME})
|
||||
if(OV_PLUGIN_VERSION_DEFINES_FOR)
|
||||
ov_add_version_defines(${OV_PLUGIN_VERSION_DEFINES_FOR} ${OV_PLUGIN_NAME})
|
||||
endif()
|
||||
|
||||
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN)
|
||||
target_compile_definitions(${OV_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
# to distinguish functions creating plugin objects
|
||||
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE
|
||||
IE_CREATE_PLUGIN=CreatePluginEngine${IE_PLUGIN_DEVICE_NAME}
|
||||
OV_CREATE_PLUGIN=CreatePluginEngine${IE_PLUGIN_DEVICE_NAME})
|
||||
if(IE_PLUGIN_AS_EXTENSION)
|
||||
target_compile_definitions(${OV_PLUGIN_NAME} PRIVATE
|
||||
IE_CREATE_PLUGIN=CreatePluginEngine${OV_PLUGIN_DEVICE_NAME}
|
||||
OV_CREATE_PLUGIN=CreatePluginEngine${OV_PLUGIN_DEVICE_NAME})
|
||||
if(OV_PLUGIN_AS_EXTENSION)
|
||||
# to distinguish functions creating extensions objects
|
||||
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE
|
||||
IE_CREATE_EXTENSION=CreateExtensionShared${IE_PLUGIN_DEVICE_NAME})
|
||||
target_compile_definitions(${OV_PLUGIN_NAME} PRIVATE
|
||||
IE_CREATE_EXTENSION=CreateExtensionShared${OV_PLUGIN_DEVICE_NAME})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ie_add_vs_version_file(NAME ${IE_PLUGIN_NAME}
|
||||
FILEDESCRIPTION "OpenVINO Runtime ${IE_PLUGIN_DEVICE_NAME} device plugin library")
|
||||
ov_add_vs_version_file(NAME ${OV_PLUGIN_NAME}
|
||||
FILEDESCRIPTION "OpenVINO Runtime ${OV_PLUGIN_DEVICE_NAME} device plugin library")
|
||||
|
||||
target_link_libraries(${IE_PLUGIN_NAME} PRIVATE openvino::runtime openvino::runtime::dev)
|
||||
target_link_libraries(${OV_PLUGIN_NAME} PRIVATE openvino::runtime openvino::runtime::dev)
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties(${IE_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${IE_PLUGIN_NAME})
|
||||
set_target_properties(${OV_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${OV_PLUGIN_NAME})
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CROSSCOMPILING)
|
||||
target_link_options(${IE_PLUGIN_NAME} PRIVATE -Wl,--unresolved-symbols=ignore-in-shared-libs)
|
||||
target_link_options(${OV_PLUGIN_NAME} PRIVATE -Wl,--unresolved-symbols=ignore-in-shared-libs)
|
||||
endif()
|
||||
|
||||
set(custom_filter "")
|
||||
foreach(filter IN LISTS IE_PLUGIN_CPPLINT_FILTERS)
|
||||
foreach(filter IN LISTS OV_PLUGIN_CPPLINT_FILTERS)
|
||||
string(CONCAT custom_filter "${custom_filter}" "," "${filter}")
|
||||
endforeach()
|
||||
|
||||
if (IE_PLUGIN_ADD_CLANG_FORMAT)
|
||||
add_clang_format_target(${IE_PLUGIN_NAME}_clang FOR_TARGETS ${IE_PLUGIN_NAME})
|
||||
if (OV_PLUGIN_ADD_CLANG_FORMAT)
|
||||
add_clang_format_target(${OV_PLUGIN_NAME}_clang FOR_TARGETS ${OV_PLUGIN_NAME})
|
||||
else()
|
||||
add_cpplint_target(${IE_PLUGIN_NAME}_cpplint FOR_TARGETS ${IE_PLUGIN_NAME} CUSTOM_FILTERS ${custom_filter})
|
||||
add_cpplint_target(${OV_PLUGIN_NAME}_cpplint FOR_TARGETS ${OV_PLUGIN_NAME} CUSTOM_FILTERS ${custom_filter})
|
||||
endif()
|
||||
|
||||
add_dependencies(ov_plugins ${IE_PLUGIN_NAME})
|
||||
add_dependencies(ov_plugins ${OV_PLUGIN_NAME})
|
||||
|
||||
# install rules
|
||||
if(NOT IE_PLUGIN_SKIP_INSTALL OR NOT BUILD_SHARED_LIBS)
|
||||
string(TOLOWER "${IE_PLUGIN_DEVICE_NAME}" install_component)
|
||||
if(NOT OV_PLUGIN_SKIP_INSTALL OR NOT BUILD_SHARED_LIBS)
|
||||
string(TOLOWER "${OV_PLUGIN_DEVICE_NAME}" install_component)
|
||||
|
||||
if(IE_PLUGIN_PSEUDO_DEVICE)
|
||||
if(OV_PLUGIN_PSEUDO_DEVICE)
|
||||
set(plugin_hidden HIDDEN)
|
||||
endif()
|
||||
ie_cpack_add_component(${install_component}
|
||||
DISPLAY_NAME "${IE_PLUGIN_DEVICE_NAME} runtime"
|
||||
DESCRIPTION "${IE_PLUGIN_DEVICE_NAME} runtime"
|
||||
ov_cpack_add_component(${install_component}
|
||||
DISPLAY_NAME "${OV_PLUGIN_DEVICE_NAME} runtime"
|
||||
DESCRIPTION "${OV_PLUGIN_DEVICE_NAME} runtime"
|
||||
${plugin_hidden}
|
||||
DEPENDS ${OV_CPACK_COMP_CORE})
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
install(TARGETS ${IE_PLUGIN_NAME}
|
||||
install(TARGETS ${OV_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${OV_CPACK_PLUGINSDIR}
|
||||
COMPONENT ${install_component})
|
||||
install(TARGETS ${IE_PLUGIN_NAME}
|
||||
install(TARGETS ${OV_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${OV_CPACK_PLUGINSDIR}
|
||||
COMPONENT ${install_component})
|
||||
else()
|
||||
ov_install_static_lib(${IE_PLUGIN_NAME} ${install_component})
|
||||
ov_install_static_lib(${OV_PLUGIN_NAME} ${install_component})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Enable for static build to generate correct plugins.hpp
|
||||
if(NOT IE_PLUGIN_SKIP_REGISTRATION OR NOT BUILD_SHARED_LIBS)
|
||||
if(NOT OV_PLUGIN_SKIP_REGISTRATION OR NOT BUILD_SHARED_LIBS)
|
||||
# check that plugin with such name is not registered
|
||||
foreach(plugin_entry IN LISTS PLUGIN_FILES)
|
||||
string(REPLACE ":" ";" plugin_entry "${plugin_entry}")
|
||||
list(GET plugin_entry -1 library_name)
|
||||
list(GET plugin_entry 0 plugin_name)
|
||||
if(plugin_name STREQUAL "${IE_PLUGIN_DEVICE_NAME}" AND
|
||||
NOT library_name STREQUAL ${IE_PLUGIN_NAME})
|
||||
message(FATAL_ERROR "${IE_PLUGIN_NAME} and ${library_name} are both registered as ${plugin_name}")
|
||||
if(plugin_name STREQUAL "${OV_PLUGIN_DEVICE_NAME}" AND
|
||||
NOT library_name STREQUAL ${OV_PLUGIN_NAME})
|
||||
message(FATAL_ERROR "${OV_PLUGIN_NAME} and ${library_name} are both registered as ${plugin_name}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# append plugin to the list to register
|
||||
|
||||
list(APPEND PLUGIN_FILES "${IE_PLUGIN_DEVICE_NAME}:${IE_PLUGIN_NAME}")
|
||||
list(APPEND PLUGIN_FILES "${OV_PLUGIN_DEVICE_NAME}:${OV_PLUGIN_NAME}")
|
||||
set(PLUGIN_FILES "${PLUGIN_FILES}" CACHE INTERNAL "" FORCE)
|
||||
set(${IE_PLUGIN_DEVICE_NAME}_CONFIG "${IE_PLUGIN_DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE)
|
||||
set(${IE_PLUGIN_DEVICE_NAME}_PSEUDO_PLUGIN_FOR "${IE_PLUGIN_PSEUDO_PLUGIN_FOR}" CACHE INTERNAL "" FORCE)
|
||||
set(${IE_PLUGIN_DEVICE_NAME}_AS_EXTENSION "${IE_PLUGIN_AS_EXTENSION}" CACHE INTERNAL "" FORCE)
|
||||
set(${OV_PLUGIN_DEVICE_NAME}_CONFIG "${OV_PLUGIN_DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE)
|
||||
set(${OV_PLUGIN_DEVICE_NAME}_PSEUDO_PLUGIN_FOR "${OV_PLUGIN_PSEUDO_PLUGIN_FOR}" CACHE INTERNAL "" FORCE)
|
||||
set(${OV_PLUGIN_DEVICE_NAME}_AS_EXTENSION "${OV_PLUGIN_AS_EXTENSION}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(ov_add_plugin)
|
||||
ie_add_plugin(${ARGN})
|
||||
function(ie_add_plugin)
|
||||
ov_add_plugin(${ARGN})
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# ie_register_plugins_dynamic(MAIN_TARGET <main target name>)
|
||||
# ov_register_in_plugins_xml(MAIN_TARGET <main target name>)
|
||||
#
|
||||
macro(ie_register_plugins_dynamic)
|
||||
# Registers plugins in plugins.xml files for dynamic plugins build
|
||||
#
|
||||
macro(ov_register_in_plugins_xml)
|
||||
set(options)
|
||||
set(oneValueArgs MAIN_TARGET)
|
||||
set(multiValueArgs)
|
||||
cmake_parse_arguments(IE_REGISTER "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
cmake_parse_arguments(OV_REGISTER "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(NOT IE_REGISTER_MAIN_TARGET)
|
||||
if(NOT OV_REGISTER_MAIN_TARGET)
|
||||
message(FATAL_ERROR "Please, define MAIN_TARGET")
|
||||
endif()
|
||||
|
||||
# Unregister <device_name>.xml files for plugins from current build tree
|
||||
|
||||
set(config_output_file "$<TARGET_FILE_DIR:${IE_REGISTER_MAIN_TARGET}>/plugins.xml")
|
||||
set(config_output_file "$<TARGET_FILE_DIR:${OV_REGISTER_MAIN_TARGET}>/plugins.xml")
|
||||
|
||||
foreach(name IN LISTS PLUGIN_FILES)
|
||||
string(REPLACE ":" ";" name "${name}")
|
||||
@@ -183,12 +189,12 @@ macro(ie_register_plugins_dynamic)
|
||||
message(FATAL_ERROR "Unexpected error, please, contact developer of this script")
|
||||
endif()
|
||||
list(GET name 0 device_name)
|
||||
add_custom_command(TARGET ${IE_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
add_custom_command(TARGET ${OV_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
-D "IE_CONFIG_OUTPUT_FILE=${config_output_file}"
|
||||
-D "IE_PLUGIN_NAME=${device_name}"
|
||||
-D "IE_CONFIGS_DIR=${CMAKE_BINARY_DIR}/plugins"
|
||||
-D "OV_CONFIG_OUTPUT_FILE=${config_output_file}"
|
||||
-D "OV_PLUGIN_NAME=${device_name}"
|
||||
-D "OV_CONFIGS_DIR=${CMAKE_BINARY_DIR}/plugins"
|
||||
-P "${IEDevScripts_DIR}/plugins/unregister_plugin_cmake.cmake"
|
||||
COMMENT
|
||||
"Remove ${device_name} from the plugins.xml file"
|
||||
@@ -209,15 +215,15 @@ macro(ie_register_plugins_dynamic)
|
||||
|
||||
# create plugin file
|
||||
set(config_file_name "${CMAKE_BINARY_DIR}/plugins/${device_name}.xml")
|
||||
ie_plugin_get_file_name(${name} library_name)
|
||||
ov_plugin_get_file_name(${name} library_name)
|
||||
|
||||
add_custom_command(TARGET ${IE_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
add_custom_command(TARGET ${OV_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
-D "IE_CONFIG_OUTPUT_FILE=${config_file_name}"
|
||||
-D "IE_DEVICE_NAME=${device_name}"
|
||||
-D "IE_PLUGIN_PROPERTIES=${${device_name}_CONFIG}"
|
||||
-D "IE_PLUGIN_LIBRARY_NAME=${library_name}"
|
||||
-D "OV_CONFIG_OUTPUT_FILE=${config_file_name}"
|
||||
-D "OV_DEVICE_NAME=${device_name}"
|
||||
-D "OV_PLUGIN_PROPERTIES=${${device_name}_CONFIG}"
|
||||
-D "OV_PLUGIN_LIBRARY_NAME=${library_name}"
|
||||
-P "${IEDevScripts_DIR}/plugins/create_plugin_file.cmake"
|
||||
COMMENT "Register ${device_name} device as ${library_name}"
|
||||
VERBATIM)
|
||||
@@ -227,17 +233,24 @@ macro(ie_register_plugins_dynamic)
|
||||
|
||||
# Combine all <device_name>.xml files into plugins.xml
|
||||
|
||||
if(ENABLE_PLUGINS_XML)
|
||||
add_custom_command(TARGET ${IE_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
-D "CMAKE_SHARED_MODULE_PREFIX=${CMAKE_SHARED_MODULE_PREFIX}"
|
||||
-D "IE_CONFIG_OUTPUT_FILE=${config_output_file}"
|
||||
-D "IE_CONFIGS_DIR=${CMAKE_BINARY_DIR}/plugins"
|
||||
-P "${IEDevScripts_DIR}/plugins/register_plugin_cmake.cmake"
|
||||
COMMENT
|
||||
"Registering plugins to plugins.xml config file"
|
||||
VERBATIM)
|
||||
add_custom_command(TARGET ${OV_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
-D "CMAKE_SHARED_MODULE_PREFIX=${CMAKE_SHARED_MODULE_PREFIX}"
|
||||
-D "OV_CONFIG_OUTPUT_FILE=${config_output_file}"
|
||||
-D "OV_CONFIGS_DIR=${CMAKE_BINARY_DIR}/plugins"
|
||||
-P "${IEDevScripts_DIR}/plugins/register_plugin_cmake.cmake"
|
||||
COMMENT
|
||||
"Registering plugins to plugins.xml config file"
|
||||
VERBATIM)
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_register_plugins()
|
||||
#
|
||||
macro(ov_register_plugins)
|
||||
if(BUILD_SHARED_LIBS AND ENABLE_PLUGINS_XML)
|
||||
ov_register_in_plugins_xml(${ARGN})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@@ -245,24 +258,13 @@ endmacro()
|
||||
# ie_register_plugins()
|
||||
#
|
||||
macro(ie_register_plugins)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
ie_register_plugins_dynamic(${ARGN})
|
||||
endif()
|
||||
ov_register_plugins(${ARGN})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_register_plugins()
|
||||
# ov_target_link_plugins(<TARGET_NAME>)
|
||||
#
|
||||
macro(ov_register_plugins)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
ie_register_plugins_dynamic(${ARGN})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ie_target_link_plugins(<TARGET_NAME>)
|
||||
#
|
||||
function(ie_target_link_plugins TARGET_NAME)
|
||||
function(ov_target_link_plugins TARGET_NAME)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
return()
|
||||
endif()
|
||||
@@ -283,6 +285,10 @@ endfunction()
|
||||
#
|
||||
# ov_generate_plugins_hpp()
|
||||
#
|
||||
# Generates plugins.hpp file for:
|
||||
# - static plugins build
|
||||
# - cases when plugins.xml file is disabled
|
||||
#
|
||||
function(ov_generate_plugins_hpp)
|
||||
set(device_mapping)
|
||||
set(device_configs)
|
||||
@@ -298,7 +304,7 @@ function(ov_generate_plugins_hpp)
|
||||
list(GET name 0 device_name)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
list(GET name 1 library_name)
|
||||
ie_plugin_get_file_name(${library_name} library_name)
|
||||
ov_plugin_get_file_name(${library_name} library_name)
|
||||
list(APPEND device_mapping "${device_name}:${library_name}")
|
||||
else()
|
||||
if(${device_name}_PSEUDO_PLUGIN_FOR)
|
||||
@@ -322,12 +328,16 @@ function(ov_generate_plugins_hpp)
|
||||
endforeach()
|
||||
|
||||
# add plugins to libraries including ov_plugins.hpp
|
||||
ie_target_link_plugins(openvino)
|
||||
ov_target_link_plugins(openvino)
|
||||
if(TARGET inference_engine_s)
|
||||
ie_target_link_plugins(inference_engine_s)
|
||||
ov_target_link_plugins(inference_engine_s)
|
||||
endif()
|
||||
|
||||
set(ov_plugins_hpp "${CMAKE_BINARY_DIR}/src/inference/ov_plugins.hpp")
|
||||
if(OV_GENERATOR_MULTI_CONFIG AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.20)
|
||||
set(ov_plugins_hpp "${CMAKE_BINARY_DIR}/src/inference/$<CONFIG>/ov_plugins.hpp")
|
||||
else()
|
||||
set(ov_plugins_hpp "${CMAKE_BINARY_DIR}/src/inference/ov_plugins.hpp")
|
||||
endif()
|
||||
set(plugins_hpp_in "${IEDevScripts_DIR}/plugins/plugins.hpp.in")
|
||||
|
||||
add_custom_command(OUTPUT "${ov_plugins_hpp}"
|
||||
@@ -348,7 +358,7 @@ function(ov_generate_plugins_hpp)
|
||||
VERBATIM)
|
||||
|
||||
# for some reason dependency on source files does not work
|
||||
# so, we have to use explicit target and make it dependency for inference_engine
|
||||
# so, we have to use explicit target and make it dependency for inference_engine_obj
|
||||
add_custom_target(_ov_plugins_hpp DEPENDS ${ov_plugins_hpp})
|
||||
add_dependencies(inference_engine_obj _ov_plugins_hpp)
|
||||
endfunction()
|
||||
|
||||
@@ -8,18 +8,18 @@ set(file_content
|
||||
</plugins>
|
||||
</ie>")
|
||||
|
||||
if(NOT EXISTS "${IE_CONFIG_OUTPUT_FILE}")
|
||||
file(WRITE "${IE_CONFIG_OUTPUT_FILE}" "${file_content}")
|
||||
if(NOT EXISTS "${OV_CONFIG_OUTPUT_FILE}")
|
||||
file(WRITE "${OV_CONFIG_OUTPUT_FILE}" "${file_content}")
|
||||
endif()
|
||||
|
||||
# get list of plugin files
|
||||
file(GLOB plugin_files "${IE_CONFIGS_DIR}/*.xml")
|
||||
file(GLOB plugin_files "${OV_CONFIGS_DIR}/*.xml")
|
||||
|
||||
function(check_plugin_exists plugin_name outvar)
|
||||
set(${outvar} OFF PARENT_SCOPE)
|
||||
|
||||
# check if config file already has this plugin
|
||||
file(STRINGS "${IE_CONFIG_OUTPUT_FILE}" content REGEX "plugin .*=\"")
|
||||
file(STRINGS "${OV_CONFIG_OUTPUT_FILE}" content REGEX "plugin .*=\"")
|
||||
|
||||
foreach(line IN LISTS content)
|
||||
string(REGEX MATCH "location=\"([^\"]*)\"" location "${line}")
|
||||
@@ -44,7 +44,7 @@ endforeach()
|
||||
|
||||
# add plugin
|
||||
set(newContent "")
|
||||
file(STRINGS "${IE_CONFIG_OUTPUT_FILE}" content)
|
||||
file(STRINGS "${OV_CONFIG_OUTPUT_FILE}" content)
|
||||
|
||||
set(already_exists_in_xml OFF)
|
||||
foreach(line IN LISTS content)
|
||||
@@ -77,4 +77,4 @@ ${content}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(WRITE "${IE_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
file(WRITE "${OV_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
if(NOT EXISTS "${IE_CONFIG_OUTPUT_FILE}")
|
||||
if(NOT EXISTS "${OV_CONFIG_OUTPUT_FILE}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# remove plugin file
|
||||
file(REMOVE "${IE_CONFIGS_DIR}/${IE_PLUGIN_NAME}.xml")
|
||||
file(REMOVE "${OV_CONFIGS_DIR}/${IE_PLUGIN_NAME}.xml")
|
||||
|
||||
# remove plugin
|
||||
set(newContent "")
|
||||
file(STRINGS "${IE_CONFIG_OUTPUT_FILE}" content)
|
||||
file(STRINGS "${OV_CONFIG_OUTPUT_FILE}" content)
|
||||
|
||||
set(skip_plugin OFF)
|
||||
foreach(line IN LISTS content)
|
||||
@@ -32,4 +32,4 @@ foreach(line IN LISTS content)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(WRITE "${IE_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
file(WRITE "${OV_CONFIG_OUTPUT_FILE}" "${newContent}")
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
set(IE_VS_VER_FILEVERSION_QUAD "${OpenVINO_VERSION_MAJOR},${OpenVINO_VERSION_MINOR},${OpenVINO_VERSION_PATCH},${OpenVINO_VERSION_BUILD}")
|
||||
set(IE_VS_VER_PRODUCTVERSION_QUAD "${OpenVINO_VERSION_MAJOR},${OpenVINO_VERSION_MINOR},${OpenVINO_VERSION_PATCH},${OpenVINO_VERSION_BUILD}")
|
||||
set(IE_VS_VER_FILEVERSION_STR "${OpenVINO_VERSION_MAJOR}.${OpenVINO_VERSION_MINOR}.${OpenVINO_VERSION_PATCH}.${OpenVINO_VERSION_BUILD}")
|
||||
set(OV_VS_VER_FILEVERSION_QUAD "${OpenVINO_VERSION_MAJOR},${OpenVINO_VERSION_MINOR},${OpenVINO_VERSION_PATCH},${OpenVINO_VERSION_BUILD}")
|
||||
set(OV_VS_VER_PRODUCTVERSION_QUAD "${OpenVINO_VERSION_MAJOR},${OpenVINO_VERSION_MINOR},${OpenVINO_VERSION_PATCH},${OpenVINO_VERSION_BUILD}")
|
||||
set(OV_VS_VER_FILEVERSION_STR "${OpenVINO_VERSION_MAJOR}.${OpenVINO_VERSION_MINOR}.${OpenVINO_VERSION_PATCH}.${OpenVINO_VERSION_BUILD}")
|
||||
|
||||
set(IE_VS_VER_COMPANY_NAME_STR "Intel Corporation")
|
||||
set(IE_VS_VER_PRODUCTVERSION_STR "${CI_BUILD_NUMBER}")
|
||||
set(IE_VS_VER_PRODUCTNAME_STR "OpenVINO toolkit")
|
||||
set(IE_VS_VER_COPYRIGHT_STR "Copyright (C) 2018-2021, Intel Corporation")
|
||||
set(IE_VS_VER_COMMENTS_STR "https://docs.openvino.ai/")
|
||||
set(OV_VS_VER_COMPANY_NAME_STR "Intel Corporation")
|
||||
set(OV_VS_VER_PRODUCTVERSION_STR "${CI_BUILD_NUMBER}")
|
||||
set(OV_VS_VER_PRODUCTNAME_STR "OpenVINO toolkit")
|
||||
set(OV_VS_VER_COPYRIGHT_STR "Copyright (C) 2018-2021, Intel Corporation")
|
||||
set(OV_VS_VER_COMMENTS_STR "https://docs.openvino.ai/")
|
||||
|
||||
#
|
||||
# ie_add_vs_version_file(NAME <name>
|
||||
# ov_add_vs_version_file(NAME <name>
|
||||
# FILEDESCRIPTION <file description>
|
||||
# [COMPANY_NAME <company name>]
|
||||
# [FILEVERSION <file version>]
|
||||
@@ -25,7 +25,7 @@ set(IE_VS_VER_COMMENTS_STR "https://docs.openvino.ai/")
|
||||
# [FILEVERSION_QUAD <name>]
|
||||
# [PRODUCTVERSION_QUAD <name>])
|
||||
#
|
||||
function(ie_add_vs_version_file)
|
||||
function(ov_add_vs_version_file)
|
||||
if(NOT WIN32 OR NOT BUILD_SHARED_LIBS)
|
||||
return()
|
||||
endif()
|
||||
@@ -38,14 +38,14 @@ function(ie_add_vs_version_file)
|
||||
|
||||
get_target_property(target_type ${VS_VER_NAME} TYPE)
|
||||
if(NOT target_type MATCHES "^(SHARED|MODULE)_LIBRARY$")
|
||||
message(FATAL_ERROR "ie_add_vs_version_file can work only with dynamic libraries")
|
||||
message(FATAL_ERROR "ov_add_vs_version_file can work only with dynamic libraries")
|
||||
endif()
|
||||
|
||||
macro(_vs_ver_update_variable name)
|
||||
if(VS_VER_NAME AND DEFINED IE_${VS_VER_NAME}_VS_VER_${name})
|
||||
set(IE_VS_VER_${name} "${IE_${VS_VER_NAME}_VS_VER_${name}}")
|
||||
if(VS_VER_NAME AND DEFINED OV_${VS_VER_NAME}_VS_VER_${name})
|
||||
set(OV_VS_VER_${name} "${OV_${VS_VER_NAME}_VS_VER_${name}}")
|
||||
elseif(VS_VER_${name})
|
||||
set(IE_VS_VER_${name} "${VS_VER_${name}}")
|
||||
set(OV_VS_VER_${name} "${VS_VER_${name}}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@@ -53,10 +53,10 @@ function(ie_add_vs_version_file)
|
||||
_vs_ver_update_variable(PRODUCTVERSION_QUAD)
|
||||
|
||||
macro(_vs_ver_update_str_variable name)
|
||||
if(VS_VER_NAME AND DEFINED IE_${VS_VER_NAME}_VS_VER_${name})
|
||||
set(IE_VS_VER_${name}_STR "${IE_${VS_VER_NAME}_VS_VER_${name}}")
|
||||
if(VS_VER_NAME AND DEFINED OV_${VS_VER_NAME}_VS_VER_${name})
|
||||
set(OV_VS_VER_${name}_STR "${OV_${VS_VER_NAME}_VS_VER_${name}}")
|
||||
elseif(VS_VER_${name})
|
||||
set(IE_VS_VER_${name}_STR "${VS_VER_${name}}")
|
||||
set(OV_VS_VER_${name}_STR "${VS_VER_${name}}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@@ -69,8 +69,8 @@ function(ie_add_vs_version_file)
|
||||
_vs_ver_update_str_variable(PRODUCTVERSION)
|
||||
_vs_ver_update_str_variable(COMMENTS)
|
||||
|
||||
set(IE_VS_VER_ORIGINALFILENAME_STR "${CMAKE_SHARED_LIBRARY_PREFIX}${VS_VER_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(IE_VS_VER_INTERNALNAME_STR ${VS_VER_NAME})
|
||||
set(OV_VS_VER_ORIGINALFILENAME_STR "${CMAKE_SHARED_LIBRARY_PREFIX}${VS_VER_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(OV_VS_VER_INTERNALNAME_STR ${VS_VER_NAME})
|
||||
|
||||
set(vs_version_output "${CMAKE_CURRENT_BINARY_DIR}/vs_version.rc")
|
||||
configure_file("${IEDevScripts_DIR}/vs_version/vs_version.rc.in" "${vs_version_output}" @ONLY)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <winver.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION @IE_VS_VER_FILEVERSION_QUAD@
|
||||
PRODUCTVERSION @IE_VS_VER_PRODUCTVERSION_QUAD@
|
||||
FILEVERSION @OV_VS_VER_FILEVERSION_QUAD@
|
||||
PRODUCTVERSION @OV_VS_VER_PRODUCTVERSION_QUAD@
|
||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 1
|
||||
@@ -17,15 +17,15 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "@IE_VS_VER_COMPANY_NAME_STR@\0"
|
||||
VALUE "FileDescription", "@IE_VS_VER_FILEDESCRIPTION_STR@\0"
|
||||
VALUE "FileVersion", "@IE_VS_VER_FILEVERSION_STR@\0"
|
||||
VALUE "InternalName", "@IE_VS_VER_INTERNALNAME_STR@\0"
|
||||
VALUE "LegalCopyright", "@IE_VS_VER_COPYRIGHT_STR@\0"
|
||||
VALUE "OriginalFilename", "@IE_VS_VER_ORIGINALFILENAME_STR@\0"
|
||||
VALUE "ProductName", "@IE_VS_VER_PRODUCTNAME_STR@\0"
|
||||
VALUE "ProductVersion", "@IE_VS_VER_PRODUCTVERSION_STR@\0"
|
||||
VALUE "Comments", "@IE_VS_VER_COMMENTS_STR@\0"
|
||||
VALUE "CompanyName", "@OV_VS_VER_COMPANY_NAME_STR@\0"
|
||||
VALUE "FileDescription", "@OV_VS_VER_FILEDESCRIPTION_STR@\0"
|
||||
VALUE "FileVersion", "@OV_VS_VER_FILEVERSION_STR@\0"
|
||||
VALUE "InternalName", "@OV_VS_VER_INTERNALNAME_STR@\0"
|
||||
VALUE "LegalCopyright", "@OV_VS_VER_COPYRIGHT_STR@\0"
|
||||
VALUE "OriginalFilename", "@OV_VS_VER_ORIGINALFILENAME_STR@\0"
|
||||
VALUE "ProductName", "@OV_VS_VER_PRODUCTNAME_STR@\0"
|
||||
VALUE "ProductVersion", "@OV_VS_VER_PRODUCTVERSION_STR@\0"
|
||||
VALUE "Comments", "@OV_VS_VER_COMMENTS_STR@\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
# Common cmake options
|
||||
#
|
||||
|
||||
ie_dependent_option (ENABLE_INTEL_CPU "CPU plugin for OpenVINO Runtime" ON "RISCV64 OR X86 OR X86_64" OFF)
|
||||
ie_dependent_option (ENABLE_INTEL_CPU "CPU plugin for OpenVINO Runtime" ON "RISCV64 OR X86 OR X86_64 OR AARCH64 OR ARM" OFF)
|
||||
|
||||
ie_dependent_option (ENABLE_ARM_COMPUTE_CMAKE "Enable ARM Compute build via cmake" OFF "ENABLE_INTEL_CPU" OFF)
|
||||
|
||||
ie_option (ENABLE_TESTS "unit, behavior and functional tests" OFF)
|
||||
|
||||
|
||||
@@ -156,17 +156,20 @@ macro(ov_cpack_settings)
|
||||
set(auto_copyright "generic")
|
||||
endif()
|
||||
|
||||
# intel-cpu
|
||||
if(ENABLE_INTEL_CPU OR DEFINED openvino_arm_cpu_plugin_SOURCE_DIR)
|
||||
if(ENABLE_INTEL_CPU)
|
||||
# cpu
|
||||
if(ENABLE_INTEL_CPU)
|
||||
if(ARM OR AARCH64)
|
||||
set(CPACK_DEBIAN_CPU_PACKAGE_NAME "libopenvino-arm-cpu-plugin-${cpack_name_ver}")
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "ARM® CPU plugin")
|
||||
set(cpu_copyright "arm_cpu")
|
||||
elseif(X86 OR X86_64)
|
||||
set(CPACK_DEBIAN_CPU_PACKAGE_NAME "libopenvino-intel-cpu-plugin-${cpack_name_ver}")
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "Intel® CPU plugin")
|
||||
set(cpu_copyright "generic")
|
||||
else()
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "ARM CPU")
|
||||
set(cpu_copyright "arm_cpu")
|
||||
message(FATAL_ERROR "Unsupported CPU architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
set(CPACK_COMPONENT_CPU_DEPENDS "${OV_CPACK_COMP_CORE}")
|
||||
set(CPACK_DEBIAN_CPU_PACKAGE_NAME "libopenvino-intel-cpu-plugin-${cpack_name_ver}")
|
||||
set(CPACK_DEBIAN_CPU_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm}")
|
||||
_ov_add_plugin(cpu OFF)
|
||||
endif()
|
||||
|
||||
@@ -156,17 +156,20 @@ macro(ov_cpack_settings)
|
||||
set(auto_copyright "generic")
|
||||
endif()
|
||||
|
||||
# intel-cpu
|
||||
if(ENABLE_INTEL_CPU OR DEFINED openvino_arm_cpu_plugin_SOURCE_DIR)
|
||||
if(ENABLE_INTEL_CPU)
|
||||
# cpu
|
||||
if(ENABLE_INTEL_CPU)
|
||||
if(ARM OR AARCH64)
|
||||
set(CPACK_RPM_CPU_PACKAGE_NAME "libopenvino-arm-cpu-plugin-${cpack_name_ver}")
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "ARM® CPU plugin")
|
||||
set(cpu_copyright "arm_cpu")
|
||||
elseif(X86 OR X86_64)
|
||||
set(CPACK_RPM_CPU_PACKAGE_NAME "libopenvino-intel-cpu-plugin-${cpack_name_ver}")
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "Intel® CPU")
|
||||
set(cpu_copyright "generic")
|
||||
else()
|
||||
set(CPACK_COMPONENT_CPU_DESCRIPTION "ARM CPU")
|
||||
set(cpu_copyright "arm_cpu")
|
||||
message(FATAL_ERROR "Unsupported CPU architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
set(CPACK_RPM_CPU_PACKAGE_REQUIRES "${core_package}")
|
||||
set(CPACK_RPM_CPU_PACKAGE_NAME "libopenvino-intel-cpu-plugin-${cpack_name_ver}")
|
||||
_ov_add_package(plugin_packages cpu)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -42,11 +42,12 @@ function(ov_model_convert SRC DST OUT)
|
||||
endif()
|
||||
|
||||
set(full_out_name "${DST}/${rel_out_name}")
|
||||
file(MAKE_DIRECTORY "${DST}/${rel_dir}")
|
||||
|
||||
if(ext STREQUAL ".prototxt")
|
||||
# convert .prototxt models to .onnx binary
|
||||
add_custom_command(OUTPUT ${full_out_name}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
"${DST}/${rel_dir}"
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${onnx_gen_script}
|
||||
"${SRC}/${in_file}" ${full_out_name}
|
||||
DEPENDS ${onnx_gen_script} "${SRC}/${in_file}"
|
||||
@@ -55,6 +56,8 @@ function(ov_model_convert SRC DST OUT)
|
||||
WORKING_DIRECTORY "${model_source_dir}")
|
||||
else()
|
||||
add_custom_command(OUTPUT ${full_out_name}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
"${DST}/${rel_dir}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
||||
"${SRC}/${in_file}" ${full_out_name}
|
||||
DEPENDS ${onnx_gen_script} "${SRC}/${in_file}"
|
||||
@@ -68,18 +71,24 @@ function(ov_model_convert SRC DST OUT)
|
||||
set(${OUT} ${files} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if(OV_GENERATOR_MULTI_CONFIG AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.20)
|
||||
set(test_model_zoo_output_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/test_model_zoo")
|
||||
else()
|
||||
set(test_model_zoo_output_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_model_zoo")
|
||||
endif()
|
||||
|
||||
ov_model_convert("${CMAKE_CURRENT_SOURCE_DIR}/src/core/tests"
|
||||
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_model_zoo/core"
|
||||
"${test_model_zoo_output_dir}/core"
|
||||
core_tests_out_files)
|
||||
|
||||
set(rel_path "src/tests/functional/plugin/shared/models")
|
||||
ov_model_convert("${OpenVINO_SOURCE_DIR}/${rel_path}"
|
||||
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_model_zoo/func_tests/models"
|
||||
"${test_model_zoo_output_dir}/func_tests/models"
|
||||
ft_out_files)
|
||||
|
||||
set(rel_path "src/frontends/onnx/tests/models")
|
||||
ov_model_convert("${OpenVINO_SOURCE_DIR}/${rel_path}"
|
||||
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_model_zoo/onnx"
|
||||
"${test_model_zoo_output_dir}/onnx"
|
||||
onnx_fe_out_files)
|
||||
|
||||
if(ENABLE_TESTS)
|
||||
@@ -87,11 +96,12 @@ if(ENABLE_TESTS)
|
||||
${ft_out_files}
|
||||
${onnx_fe_out_files})
|
||||
|
||||
if (ENABLE_OV_PADDLE_FRONTEND)
|
||||
add_dependencies(test_model_zoo paddle_test_models)
|
||||
endif()
|
||||
# TODO Reenable PDPD after paddlepaddle==2.5.0 with compliant protobuf is released (ticket 95904)
|
||||
#if (ENABLE_OV_PADDLE_FRONTEND)
|
||||
# add_dependencies(test_model_zoo paddle_test_models)
|
||||
#endif()
|
||||
|
||||
install(DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_model_zoo"
|
||||
install(DIRECTORY "${test_model_zoo_output_dir}"
|
||||
DESTINATION tests COMPONENT tests EXCLUDE_FROM_ALL)
|
||||
|
||||
set(TEST_MODEL_ZOO "./test_model_zoo" CACHE PATH "Path to test model zoo")
|
||||
|
||||
@@ -18,7 +18,7 @@ Every deep learning workflow begins with obtaining a model. You can choose to pr
|
||||
|
||||
The approach to fully convert a model is considered the default choice, as it allows the full extent of OpenVINO features. The OpenVINO IR model format is used by other conversion and preparation tools, such as the Post-Training Optimization Tool, for further optimization of the converted model.
|
||||
|
||||
Conversion is not required for ONNX, PaddlePaddle, and TensorFlow models (check :doc:`TensorFlow Frontend Capabilities and Limitations <openvino_docs_MO_DG_TensorFlow_Frontend>`), as OpenVINO provides C++ and Python APIs for importing them to OpenVINO Runtime directly. It provides a convenient way to quickly switch from framework-based code to OpenVINO-based code in your inference application.
|
||||
Conversion is not required for ONNX, PaddlePaddle, TensorFlow Lite and TensorFlow models (check :doc:`TensorFlow Frontend Capabilities and Limitations <openvino_docs_MO_DG_TensorFlow_Frontend>`), as OpenVINO provides C++ and Python APIs for importing them to OpenVINO Runtime directly. It provides a convenient way to quickly switch from framework-based code to OpenVINO-based code in your inference application.
|
||||
|
||||
This section describes how to obtain and prepare your model for work with OpenVINO to get the best inference results:
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
OpenVINO Plugin Developer Guide <openvino_docs_ie_plugin_dg_overview>
|
||||
|
||||
The Intel® Distribution of OpenVINO™ toolkit supports neural network models trained with various frameworks, including
|
||||
TensorFlow, PyTorch, ONNX, PaddlePaddle, Apache MXNet, Caffe, and Kaldi. The list of supported operations is different for
|
||||
TensorFlow, PyTorch, ONNX, TensorFlow Lite, PaddlePaddle, Apache MXNet, Caffe, and Kaldi. The list of supported operations is different for
|
||||
each of the supported frameworks. To see the operations supported by your framework, refer to :doc:`Supported Framework Operations <openvino_docs_MO_DG_prepare_model_Supported_Frameworks_Layers>`.
|
||||
|
||||
Custom operations, which are not included in the list, are not recognized by OpenVINO out-of-the-box. The need for custom operation may appear in two cases:
|
||||
@@ -52,13 +52,13 @@ Mapping from Framework Operation
|
||||
|
||||
Mapping of custom operation is implemented differently, depending on model format used for import. You may choose one of the following:
|
||||
|
||||
1. If a model is represented in the ONNX (including models exported from Pytorch in ONNX), PaddlePaddle or TensorFlow formats, then one of the classes from :doc:`Frontend Extension API <openvino_docs_Extensibility_UG_Frontend_Extensions>` should be used. It consists of several classes available in C++ which can be used with the ``--extensions`` option in Model Optimizer or when a model is imported directly to OpenVINO runtime using the ``read_model`` method. Python API is also available for runtime model import.
|
||||
1. If a model is represented in the ONNX (including models exported from Pytorch in ONNX), TensorFlow Lite, PaddlePaddle or TensorFlow formats, then one of the classes from :doc:`Frontend Extension API <openvino_docs_Extensibility_UG_Frontend_Extensions>` should be used. It consists of several classes available in C++ which can be used with the ``--extensions`` option in Model Optimizer or when a model is imported directly to OpenVINO runtime using the ``read_model`` method. Python API is also available for runtime model import.
|
||||
|
||||
2. If a model is represented in the Caffe, Kaldi or MXNet formats, then :doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>` should be used. This approach is available for model conversion in Model Optimizer only.
|
||||
|
||||
Existing of two approaches simultaneously is explained by two different types of frontends used for model conversion in OpenVINO: new frontends (ONNX, PaddlePaddle and TensorFlow) and legacy frontends (Caffe, Kaldi and Apache MXNet). Model Optimizer can use both front-ends in contrast to the direct import of model with ``read_model`` method which can use new frontends only. Follow one of the appropriate guides referenced above to implement mappings depending on framework frontend.
|
||||
Existing of two approaches simultaneously is explained by two different types of frontends used for model conversion in OpenVINO: new frontends (ONNX, PaddlePaddle, TensorFlow Lite and TensorFlow) and legacy frontends (Caffe, Kaldi and Apache MXNet). Model Optimizer can use both front-ends in contrast to the direct import of model with ``read_model`` method which can use new frontends only. Follow one of the appropriate guides referenced above to implement mappings depending on framework frontend.
|
||||
|
||||
If you are implementing extensions for new ONNX, PaddlePaddle or TensorFlow frontends and plan to use the ``--extensions`` option in Model Optimizer for model conversion, then the extensions should be:
|
||||
If you are implementing extensions for new ONNX, PaddlePaddle, TensorFlow Lite or TensorFlow frontends and plan to use the ``--extensions`` option in Model Optimizer for model conversion, then the extensions should be:
|
||||
|
||||
1. Implemented in C++ only.
|
||||
|
||||
|
||||
@@ -2,32 +2,47 @@
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
The goal of this chapter is to explain how to use Frontend extension classes to facilitate mapping of custom operations from framework model representation to OpenVINO representation. Refer to :doc:`Introduction to OpenVINO Extension <openvino_docs_Extensibility_UG_Intro>` to understand entire flow.
|
||||
The goal of this chapter is to explain how to use Frontend extension classes to facilitate
|
||||
mapping of custom operations from framework model representation to OpenVINO representation.
|
||||
Refer to :doc:`Introduction to OpenVINO Extension <openvino_docs_Extensibility_UG_Intro>` to
|
||||
understand the entire flow.
|
||||
|
||||
This API is applicable for new frontends only, which exist for ONNX, PaddlePaddle and TensorFlow. If a different model format is used, follow legacy :doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>` guide.
|
||||
This API is applicable to new frontends only, which exist for ONNX, TensorFlow Lite, PaddlePaddle, and TensorFlow.
|
||||
If a different model format is used, follow legacy
|
||||
:doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>`
|
||||
guide.
|
||||
|
||||
.. note::
|
||||
This documentation is written based on the `Template extension <https://github.com/openvinotoolkit/openvino/tree/master/src/core/template_extension/new>`__, which demonstrates extension development details based on minimalistic ``Identity`` operation that is a placeholder for your real custom operation. You can review the complete code, which is fully compliable, to see how it works.
|
||||
|
||||
This documentation is written based on the `Template extension <https://github.com/openvinotoolkit/openvino/tree/master/src/core/template_extension/new>`__,
|
||||
which demonstrates extension development details based on minimalistic ``Identity``
|
||||
operation that is a placeholder for your real custom operation. You can review the complete code,
|
||||
which is fully compilable, to see how it works.
|
||||
|
||||
Single Operation Mapping with OpExtension
|
||||
#########################################
|
||||
#########################################
|
||||
|
||||
This section covers the case when a single operation in framework representation is mapped to a single operation in OpenVINO representation. This is called *one-to-one mapping*. There is ``OpExtension`` class that works well if all the following conditions are satisfied:
|
||||
This section covers the case when a single operation in framework representation is mapped to a single
|
||||
operation in OpenVINO representation. This is called *one-to-one mapping*. There is ``OpExtension``
|
||||
class that works well if all the following conditions are satisfied:
|
||||
|
||||
1. Number of inputs to operation in the Framework representation is the same as in the OpenVINO representation.
|
||||
|
||||
2. Number of outputs is also the same in both representations.
|
||||
|
||||
3. Inputs can be indexed and are mapped in order correspondingly, e.g. input with index 0 in framework representation maps to input with index 0 in OpenVINO representation and so on.
|
||||
|
||||
3. Inputs can be indexed and are mapped in order correspondingly, e.g.
|
||||
input with index 0 in framework representation maps to input with index 0 in OpenVINO representation and so on.
|
||||
4. The same for outputs.
|
||||
|
||||
5. Each attribute in OpenVINO operation can be initialized from one of the attributes of original operation or by some predefined constant value. Value of copied attributes cannot contain expressions, value is accepted as-is, so type of a value should be compatible.
|
||||
5. Each attribute in OpenVINO operation can be initialized from one of the attributes of original operation or by
|
||||
some predefined constant value. Value of copied attributes cannot contain expressions, value is accepted as-is,
|
||||
so type of a value should be compatible.
|
||||
|
||||
.. note::
|
||||
``OpExtension`` class is currently available for ONNX and TensorFlow frontends. PaddlePaddle frontend has named inputs and outputs for operation (not indexed) therefore OpExtension mapping is not applicable for this case.
|
||||
|
||||
The next example maps ONNX operation with type `Identity <https://github.com/onnx/onnx/blob/main/docs/Operators.md#Identity>`__ to OpenVINO template extension ``Identity`` class.
|
||||
``OpExtension`` class is currently available for ONNX and TensorFlow frontends.
|
||||
PaddlePaddle frontend has named inputs and outputs for operation (not indexed)
|
||||
therefore OpExtension mapping is not applicable for this case.
|
||||
|
||||
The following example maps ONNX operation with the type of `Identity <https://github.com/onnx/onnx/blob/main/docs/Operators.md#Identity>`__
|
||||
to OpenVINO template extension ``Identity`` class.
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
@@ -39,22 +54,32 @@ The next example maps ONNX operation with type `Identity <https://github.com/onn
|
||||
|
||||
The mapping doesn’t involve any attributes, as operation Identity doesn’t have them.
|
||||
|
||||
Extension objects, like just constructed ``extension`` can be used to add to the OpenVINO runtime just before the loading a model that contains custom operations:
|
||||
Extension objects, like just constructed ``extension`` can be used to add to the
|
||||
OpenVINO runtime just before the loading a model that contains custom operations:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_read_model]
|
||||
|
||||
Or extensions can be constructed in a separately compiled shared library. Separately compiled library can be used in Model Optimizer or ``benchmark_app``. Read about how to build and load such library in chapter “Create library with extensions” in :doc:`Introduction to OpenVINO Extension <openvino_docs_Extensibility_UG_Intro>`.
|
||||
Or extensions can be constructed in a separately compiled shared library.
|
||||
Separately compiled library can be used in Model Optimizer or ``benchmark_app``.
|
||||
Read about how to build and load such a library in the chapter of “Create library with extensions” in
|
||||
:doc:`Introduction to OpenVINO Extension <openvino_docs_Extensibility_UG_Intro>`.
|
||||
|
||||
If operation have multiple inputs and/or outputs they will be mapped in order. The type of elements in input/output tensors should match expected types in the surrounding operations. For example, if custom operation produces ``f32`` data type then operation that consumes this output should also support ``f32``. Otherwise, model conversion fails with an error, there are no automatic type conversion happens.
|
||||
If operation have multiple inputs and/or outputs they will be mapped in order.
|
||||
The type of elements in input/output tensors should match expected types in the surrounding operations.
|
||||
For example, if a custom operation produces the ``f32`` data type, the operation that consumes this output
|
||||
should also support ``f32``. Otherwise, model conversion fails with an error, as no automatic type conversion is performed.
|
||||
|
||||
Converting to Standard OpenVINO Operation
|
||||
+++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
``OpExtension`` class can be used when mapping to one of the operations from standard OpenVINO operation set is what you need and there is no class like ``TemplateExtension::Identity`` implemented.
|
||||
``OpExtension`` class can be used when mapping to one of the operations from standard OpenVINO
|
||||
operation set is what you need and there is no class like ``TemplateExtension::Identity`` implemented.
|
||||
|
||||
Here is an example for a custom framework operation “MyRelu”. Suppose it is mathematically equivalent to standard `Relu` that exists in OpenVINO operation set, but for some reason has type name “MyRelu”. In this case you can directly say that “MyRelu” -> ``Relu`` mapping should be used:
|
||||
Here is an example of a custom framework operation 'MyRelu'. Assume it is mathematically equivalent
|
||||
to standard ``Relu`` that exists in the OpenVINO operation set, but for some reason has the type name of 'MyRelu'.
|
||||
In this case, you can directly say that 'MyRelu' -> ``Relu`` mapping should be used:
|
||||
|
||||
.. tab-set::
|
||||
|
||||
@@ -73,26 +98,37 @@ Here is an example for a custom framework operation “MyRelu”. Suppose it is
|
||||
:fragment: [py_frontend_extension_MyRelu]
|
||||
|
||||
|
||||
In the resulting converted OpenVINO model, “MyRelu” operation will be replaced by the standard operation ``Relu`` from the latest available OpenVINO operation set. Notice that when standard operation is used, it can be specified using just a type string (“Relu”) instead of using a ``ov::opset8::Relu`` class name as a template parameter for ``OpExtension``. This method is available for operations from the standard operation set only. For a user custom OpenVINO operation the corresponding class should be always specified as a template parameter as it was demonstrated with ``TemplateExtension::Identity``.
|
||||
In the resulting converted OpenVINO model, “MyRelu” operation will be replaced by the standard operation
|
||||
``Relu`` from the latest available OpenVINO operation set. Notice that when standard operation is used,
|
||||
it can be specified using just a type string (“Relu”) instead of using a ``ov::opset8::Relu`` class name as a
|
||||
template parameter for ``OpExtension``. This method is available for operations from the standard operation set only.
|
||||
For a user custom OpenVINO operation the corresponding class should be always specified as a template parameter
|
||||
as it was demonstrated with ``TemplateExtension::Identity``.
|
||||
|
||||
Attributes Mapping
|
||||
Attribute Mapping
|
||||
++++++++++++++++++
|
||||
|
||||
As described above, ``OpExtension`` is useful when attributes can be mapped one by one or initialized by a constant. If the set of attributes in framework representation and OpenVINO representation completely match by their names and types, nothing should be specified in OpExtension constructor parameters. The attributes are discovered and mapped automatically based on ``visit_attributes`` method that should be defined for any OpenVINO operation.
|
||||
As described above, ``OpExtension`` is useful when attributes can be mapped one by one or initialized by a constant.
|
||||
If the set of attributes in framework representation and OpenVINO representation completely match by their names and types,
|
||||
nothing should be specified in OpExtension constructor parameters. The attributes are discovered and mapped
|
||||
automatically based on ``visit_attributes`` method that should be defined for any OpenVINO operation.
|
||||
|
||||
Imagine you have CustomOperation class implementation that has two attributes with names ``attr1`` and ``attr2``:
|
||||
Imagine you have CustomOperation class implementation that has two attributes with names: ``attr1`` and ``attr2``.
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_CustomOperation]
|
||||
|
||||
And original model in framework representation also has operation with name “CustomOperatoin” with the same ``attr1`` and ``attr2`` attributes. Then with the following code:
|
||||
And the original model in the framework representation also has operation named “CustomOperation” with the same
|
||||
``attr1`` and ``attr2`` attributes. Then with the following code:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_CustomOperation_as_is]
|
||||
|
||||
both ``attr1`` and ``attr2`` are copied from framework representation to OpenVINO representation automatically. If for some reason names of attributes are different but values still can be copied “as-is” you can pass attribute names mapping in ``OpExtension`` constructor:
|
||||
Both ``attr1`` and ``attr2`` are copied from framework representation to OpenVINO representation automatically.
|
||||
If for some reason names of attributes are different but values still can be copied “as-is” you can pass attribute
|
||||
names mapping in ``OpExtension`` constructor:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
@@ -100,7 +136,9 @@ both ``attr1`` and ``attr2`` are copied from framework representation to OpenVIN
|
||||
|
||||
Where ``fw_attr1`` and ``fw_attr2`` are names for corresponding attributes in framework operation representation.
|
||||
|
||||
If copying of an attribute is not what you need, ``OpExtension`` also can set attribute to predefined constant value. For the same ``CustomOperation``, imagine you want to set ``attr2`` to value 5 instead of copying from ``fw_attr2``, to achieve that do the following:
|
||||
If copying of an attribute is not what you need, ``OpExtension`` also can set attribute to predefined constant value.
|
||||
For the same ``CustomOperation``, imagine you want to set ``attr2`` to value 5 instead of copying from ``fw_attr2``,
|
||||
to achieve that do the following:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_extensions.cpp
|
||||
:language: cpp
|
||||
@@ -109,36 +147,60 @@ If copying of an attribute is not what you need, ``OpExtension`` also can set at
|
||||
So the conclusion is that each attribute of target OpenVINO operation should be initialized either by
|
||||
|
||||
1. Setting automatically due to name matching
|
||||
|
||||
2. Mapped by attribute name
|
||||
|
||||
3. Set to a constant value
|
||||
|
||||
This is achieved by specifying maps as arguments for `OpExtension` constructor.
|
||||
|
||||
### Mapping custom operations to frontends with OPENVINO_FRAMEWORK_MAP macro
|
||||
Mapping custom operations to frontends with OPENVINO_FRAMEWORK_MAP macro
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
> **NOTE**: Below solution works only for ONNX and Tensorflow frontends.
|
||||
.. note::
|
||||
|
||||
Below solution works only for ONNX and Tensorflow frontends.
|
||||
|
||||
`OPENVINO_FRAMEWORK_MAP` is a macro that should be used inside OpenVINO operation's class definition and that lets you specify the mapping between this operation to a frontend operation.
|
||||
``OPENVINO_FRAMEWORK_MAP`` is a macro that should be used inside OpenVINO operation's class definition
|
||||
and that lets you specify the mapping between this operation to a frontend operation.
|
||||
|
||||
Let's consider the following example. Imagine you have an ONNX model with `CustomOp` operation (and this operation has `mode` attribute) and a Tensorflow model with `CustomOpV3` operation (this operation has `axis` attribute) and both of them can be implemented with a single OpenVINO operation `CustomOp` like follows:
|
||||
Let's consider the following example. Imagine you have an ONNX model with ``CustomOp`` operation
|
||||
(and this operation has ``mode`` attribute) and a Tensorflow model with ``CustomOpV3`` operation
|
||||
(this operation has ``axis`` attribute) and both of them can be implemented with a single OpenVINO
|
||||
operation ``CustomOp`` like follows:
|
||||
|
||||
.. doxygensnippet:: ov_extensions.cpp
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_framework_map_macro_headers]
|
||||
|
||||
.. doxygensnippet:: ov_extensions.cpp
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_framework_map_macro_CustomOp]
|
||||
|
||||
@snippet ov_extensions.cpp frontend_extension_framework_map_macro_headers
|
||||
@snippet ov_extensions.cpp frontend_extension_framework_map_macro_CustomOp
|
||||
|
||||
Let's take a closer look at the parameters this macro takes:
|
||||
```cpp
|
||||
OPENVINO_FRAMEWORK_MAP(framework, name, attributes_map, attributes_values)
|
||||
```
|
||||
- `framework` - framework name.
|
||||
- `name` - the framework operation name. It's optional if the OpenVINO custom operation name (that is the name that is passed as the first parameter to `OPENVINO_OP` macro) is the same as the framework operation name and both `attributes_map` and `attributes_values` are not provided.
|
||||
- `attributes_map` - used to provide a mapping between OpenVINO operation attribute and framework operation attribute. Contains key-value pairs, where key is an OpenVINO operation attribute name and value is its corresponding framework operation attribute name. This parameter is optional if the number of OpenVINO operation attributes and their names match one-to-one with framework operation attributes.
|
||||
- `attributes_values` - used to provide default values for OpenVINO operation attributes that are not specified in `attributes_map`. Contains key-value pairs, where key is an OpenVINO operation attribute name and the value is this attribute value. This parameter cannot be provided if `attributes_map` contains all of OpenVINO operation attributes or if `attributes_map` is not provided.
|
||||
|
||||
In the example above, `OPENVINO_FRAMEWORK_MAP` is used twice.
|
||||
First, OpenVINO `CustomOp` is mapped to ONNX `CustomOp` operation, `m_mode` attribute is mapped to `mode` attribute, while `m_axis` attribute gets the default value `-1`.
|
||||
Secondly, OpenVINO `CustomOp` is mapped to Tensorflow `CustomOpV3` operation, `m_axis` attribute is mapped to `axis` attribute, while `m_mode` attribute gets the default value `"linear"`.
|
||||
.. code-block::cpp
|
||||
|
||||
OPENVINO_FRAMEWORK_MAP(framework, name, attributes_map, attributes_values)
|
||||
|
||||
- ``framework`` - framework name.
|
||||
- ``name`` - the framework operation name. It's optional if the OpenVINO custom operation name
|
||||
(that is the name that is passed as the first parameter to `OPENVINO_OP` macro) is the
|
||||
same as the framework operation name and both ``attributes_map`` and ``attributes_values`` are not provided.
|
||||
- ``attributes_map`` - used to provide a mapping between OpenVINO operation attribute and
|
||||
framework operation attribute. Contains key-value pairs, where key is an OpenVINO operation
|
||||
attribute name and value is its corresponding framework operation attribute name.
|
||||
This parameter is optional if the number of OpenVINO operation attributes and their names
|
||||
match one-to-one with framework operation attributes.
|
||||
- ``attributes_values`` - used to provide default values for OpenVINO operation attributes
|
||||
that are not specified in ``attributes_map``. Contains key-value pairs, where key is an OpenVINO
|
||||
operation attribute name and the value is this attribute value. This parameter cannot be provided
|
||||
if ``attributes_map`` contains all of OpenVINO operation attributes or if ``attributes_map`` is not provided.
|
||||
|
||||
In the example above, ``OPENVINO_FRAMEWORK_MAP`` is used twice.
|
||||
First, OpenVINO ``CustomOp`` is mapped to ONNX ``CustomOp`` operation, ``m_mode`` attribute is mapped to ``mode``
|
||||
attribute, while ``m_axis`` attribute gets the default value ``-1``. Secondly, OpenVINO `CustomOp` is mapped
|
||||
to Tensorflow ``CustomOpV3`` operation, ``m_axis`` attribute is mapped to ``axis`` attribute, while ``m_mode``
|
||||
attribute gets the default value ``linear``.
|
||||
|
||||
The last step is to register this custom operation by following:
|
||||
@snippet ov_extensions.cpp frontend_extension_framework_map_macro_add_extension
|
||||
@@ -146,16 +208,28 @@ The last step is to register this custom operation by following:
|
||||
Mapping to Multiple Operations with ConversionExtension
|
||||
#######################################################
|
||||
|
||||
Previous sections cover the case when a single operation is mapped to a single operation with optional adjustment in names and attribute values. That is likely enough for your own custom operation with existing C++ kernel implementation. In this case your framework representation and OpenVINO representation for the operation are under your control and inputs/outpus/attributes can be aligned to make ``OpExtension`` usable.
|
||||
Previous sections cover the case when a single operation is mapped to a single operation with optional
|
||||
adjustment in names and attribute values. That is likely enough for your own custom operation with existing
|
||||
C++ kernel implementation. In this case your framework representation and OpenVINO representation for the
|
||||
operation are under your control and inputs/outpus/attributes can be aligned to make ``OpExtension`` usable.
|
||||
|
||||
In case if one-to-one mapping is not possible, *decomposition to multiple operations* should be considered. It is achieved by using more verbose and less automated ``ConversionExtension`` class. It enables writing arbitrary code to replace a single framework operation by multiple connected OpenVINO operations constructing dependency graph of any complexity.
|
||||
In case if one-to-one mapping is not possible, *decomposition to multiple operations* should be considered.
|
||||
It is achieved by using more verbose and less automated ``ConversionExtension`` class.
|
||||
It enables writing arbitrary code to replace a single framework operation by multiple connected OpenVINO
|
||||
operations constructing dependency graph of any complexity.
|
||||
|
||||
``ConversionExtension`` maps a single operation to a function which builds a graph using OpenVINO operation classes. Follow chapter :ref:`Build a Model in OpenVINO Runtime <ov_ug_build_model>` to learn how to use OpenVINO operation classes to build a fragment of model for replacement.
|
||||
``ConversionExtension`` maps a single operation to a function which builds a graph using OpenVINO
|
||||
operation classes. Follow chapter :ref:`Build a Model in OpenVINO Runtime <ov_ug_build_model>` to
|
||||
learn how to use OpenVINO operation classes to build a fragment of model for replacement.
|
||||
|
||||
The next example illustrates using ``ConversionExtension`` for conversion of “ThresholdedRelu” from ONNX according to the formula: ``ThresholdedRelu(x, alpha) -> Multiply(x, Convert(Greater(x, alpha), type=float))``.
|
||||
The next example illustrates using ``ConversionExtension`` for conversion of “ThresholdedRelu”
|
||||
from ONNX according to the formula: ``ThresholdedRelu(x, alpha) -> Multiply(x, Convert(Greater(x, alpha), type=float))``.
|
||||
|
||||
.. note::
|
||||
``ThresholdedRelu`` is one of the standard ONNX operators which is supported by ONNX frontend natively out-of-the-box. Here we are re-implementing it to illustrate how you can add a similar support for your custom operation instead of ``ThresholdedRelu``.
|
||||
|
||||
``ThresholdedRelu`` is one of the standard ONNX operators which is supported by ONNX frontend
|
||||
natively out-of-the-box. Here we are re-implementing it to illustrate how you can add a similar
|
||||
support for your custom operation instead of ``ThresholdedRelu``.
|
||||
|
||||
.. tab-set::
|
||||
|
||||
@@ -173,7 +247,6 @@ The next example illustrates using ``ConversionExtension`` for conversion of “
|
||||
:language: python
|
||||
:fragment: [py_frontend_extension_ThresholdedReLU_header]
|
||||
|
||||
|
||||
.. tab-set::
|
||||
|
||||
.. tab-item:: C++
|
||||
@@ -191,13 +264,15 @@ The next example illustrates using ``ConversionExtension`` for conversion of “
|
||||
:fragment: [py_frontend_extension_ThresholdedReLU]
|
||||
|
||||
|
||||
To access original framework operation attribute value and connect to inputs, ``node`` object of type ``NodeContext`` is used. It has two main methods:
|
||||
To access original framework operation attribute value and connect to inputs,
|
||||
``node`` object of type ``NodeContext`` is used. It has two main methods:
|
||||
|
||||
* ``NodeContext::get_input`` to get input with a given index,
|
||||
|
||||
* ``NodeContext::get_attribute`` to get attribute value with a given name.
|
||||
|
||||
The conversion function should return a vector of node outputs that are mapped to corresponding outputs of the original framework operation in the same order.
|
||||
The conversion function should return a vector of node outputs that are mapped to
|
||||
corresponding outputs of the original framework operation in the same order.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,45 +1,74 @@
|
||||
# Asynchronous Inference Request {#openvino_docs_ov_plugin_dg_async_infer_request}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
Asynchronous Inference Request runs an inference pipeline asynchronously in one or several task executors depending on a device pipeline structure.
|
||||
OpenVINO Runtime Plugin API provides the base ov::IAsyncInferRequest class:
|
||||
|
||||
- The class has the `m_pipeline` field of `std::vector<std::pair<std::shared_ptr<ov::threading::ITaskExecutor>, ov::threading::Task> >`, which contains pairs of an executor and executed task.
|
||||
- All executors are passed as arguments to a class constructor and they are in the running state and ready to run tasks.
|
||||
- The class has the ov::IAsyncInferRequest::stop_and_wait method, which waits for `m_pipeline` to finish in a class destructor. The method does not stop task executors and they are still in the running stage, because they belong to the compiled model instance and are not destroyed.
|
||||
* The class has the ``m_pipeline`` field of ``std::vector<std::pair<std::shared_ptr<ov::threading::ITaskExecutor>, ov::threading::Task> >``, which contains pairs of an executor and executed task.
|
||||
* All executors are passed as arguments to a class constructor and they are in the running state and ready to run tasks.
|
||||
* The class has the ov::IAsyncInferRequest::stop_and_wait method, which waits for ``m_pipeline`` to finish in a class destructor. The method does not stop task executors and they are still in the running stage, because they belong to the compiled model instance and are not destroyed.
|
||||
|
||||
AsyncInferRequest Class
|
||||
------------------------
|
||||
#######################
|
||||
|
||||
OpenVINO Runtime Plugin API provides the base ov::IAsyncInferRequest class for a custom asynchronous inference request implementation:
|
||||
|
||||
@snippet src/async_infer_request.hpp async_infer_request:header
|
||||
.. doxygensnippet:: src/plugins/template/src/async_infer_request.hpp
|
||||
:language: cpp
|
||||
:fragment: [async_infer_request:header]
|
||||
|
||||
### Class Fields
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
- `m_wait_executor` - a task executor that waits for a response from a device about device tasks completion
|
||||
* ``m_cancel_callback`` - a callback which allows to interrupt the execution
|
||||
* ``m_wait_executor`` - a task executor that waits for a response from a device about device tasks completion
|
||||
|
||||
> **NOTE**: If a plugin can work with several instances of a device, `m_wait_executor` must be device-specific. Otherwise, having a single task executor for several devices does not allow them to work in parallel.
|
||||
.. note::
|
||||
|
||||
If a plugin can work with several instances of a device, ``m_wait_executor`` must be device-specific. Otherwise, having a single task executor for several devices does not allow them to work in parallel.
|
||||
|
||||
### AsyncInferRequest()
|
||||
AsyncInferRequest()
|
||||
+++++++++++++++++++
|
||||
|
||||
The main goal of the `AsyncInferRequest` constructor is to define a device pipeline `m_pipeline`. The example below demonstrates `m_pipeline` creation with the following stages:
|
||||
The main goal of the ``AsyncInferRequest`` constructor is to define a device pipeline ``m_pipeline``. The example below demonstrates ``m_pipeline`` creation with the following stages:
|
||||
|
||||
- `infer_preprocess_and_start_pipeline` is a CPU ligthweight task to submit tasks to a remote device.
|
||||
- `wait_pipeline` is a CPU non-compute task that waits for a response from a remote device.
|
||||
- `infer_postprocess` is a CPU compute task.
|
||||
* ``infer_preprocess_and_start_pipeline`` is a CPU ligthweight task to submit tasks to a remote device.
|
||||
* ``wait_pipeline`` is a CPU non-compute task that waits for a response from a remote device.
|
||||
* ``infer_postprocess`` is a CPU compute task.
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/async_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [async_infer_request:ctor]
|
||||
|
||||
@snippet src/async_infer_request.cpp async_infer_request:ctor
|
||||
|
||||
The stages are distributed among two task executors in the following way:
|
||||
|
||||
- `infer_preprocess_and_start_pipeline` prepare input tensors and run on `m_request_executor`, which computes CPU tasks.
|
||||
- You need at least two executors to overlap compute tasks of a CPU and a remote device the plugin works with. Otherwise, CPU and device tasks are executed serially one by one.
|
||||
- `wait_pipeline` is sent to `m_wait_executor`, which works with the device.
|
||||
* ``infer_preprocess_and_start_pipeline`` prepare input tensors and run on ``m_request_executor``, which computes CPU tasks.
|
||||
* You need at least two executors to overlap compute tasks of a CPU and a remote device the plugin works with. Otherwise, CPU and device tasks are executed serially one by one.
|
||||
* ``wait_pipeline`` is sent to ``m_wait_executor``, which works with the device.
|
||||
|
||||
> **NOTE**: `m_callback_executor` is also passed to the constructor and it is used in the base ov::IAsyncInferRequest class, which adds a pair of `callback_executor` and a callback function set by the user to the end of the pipeline.
|
||||
.. note::
|
||||
|
||||
``m_callback_executor`` is also passed to the constructor and it is used in the base ov::IAsyncInferRequest class, which adds a pair of ``callback_executor`` and a callback function set by the user to the end of the pipeline.
|
||||
|
||||
### ~AsyncInferRequest()
|
||||
~AsyncInferRequest()
|
||||
++++++++++++++++++++
|
||||
|
||||
In the asynchronous request destructor, it is necessary to wait for a pipeline to finish. It can be done using the ov::IAsyncInferRequest::stop_and_wait method of the base class.
|
||||
|
||||
@snippet src/async_infer_request.cpp async_infer_request:dtor
|
||||
.. doxygensnippet:: src/plugins/template/src/async_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [async_infer_request:dtor]
|
||||
|
||||
cancel()
|
||||
++++++++
|
||||
|
||||
The method allows to cancel the infer request execution:
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/async_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [async_infer_request:cancel]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,69 +1,101 @@
|
||||
# Build Plugin Using CMake {#openvino_docs_ov_plugin_dg_plugin_build}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
OpenVINO build infrastructure provides the OpenVINO Developer Package for plugin development.
|
||||
|
||||
OpenVINO Developer Package
|
||||
------------------------
|
||||
##########################
|
||||
|
||||
To automatically generate the OpenVINO Developer Package, run the `cmake` tool during a OpenVINO build:
|
||||
To automatically generate the OpenVINO Developer Package, run the ``cmake`` tool during a OpenVINO build:
|
||||
|
||||
```bash
|
||||
$ mkdir openvino-release-build
|
||||
$ cd openvino-release-build
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Release ../openvino
|
||||
```
|
||||
.. code-block:: bash
|
||||
|
||||
Once the commands above are executed, the OpenVINO Developer Package is generated in the `openvino-release-build` folder. It consists of several files:
|
||||
- `OpenVINODeveloperPackageConfig.cmake` - the main CMake script which imports targets and provides compilation flags and CMake options.
|
||||
- `OpenVINODeveloperPackageConfig-version.cmake` - a file with a package version.
|
||||
- `targets_developer.cmake` - an automatically generated file which contains all targets exported from the OpenVINO build tree. This file is included by `OpenVINODeveloperPackageConfig.cmake` to import the following targets:
|
||||
- Libraries for plugin development:
|
||||
* `openvino::runtime` - shared OpenVINO library
|
||||
* `openvino::runtime::dev` - interface library with OpenVINO Developer API
|
||||
* `openvino::pugixml` - static Pugixml library
|
||||
* `openvino::xbyak` - interface library with Xbyak headers
|
||||
* `openvino::itt` - static library with tools for performance measurement using Intel ITT
|
||||
- Libraries for tests development:
|
||||
* `openvino::gtest`, `openvino::gtest_main`, `openvino::gmock` - Google Tests framework libraries
|
||||
* `openvino::commonTestUtils` - static library with common tests utilities
|
||||
* `openvino::funcTestUtils` - static library with functional tests utilities
|
||||
* `openvino::unitTestUtils` - static library with unit tests utilities
|
||||
* `openvino::ngraphFunctions` - static library with the set of `ov::Model` builders
|
||||
* `openvino::funcSharedTests` - static library with common functional tests
|
||||
* `openvino::ngraph_reference` - static library with operation reference implementations.
|
||||
$ mkdir openvino-release-build
|
||||
$ cd openvino-release-build
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Release ../openvino
|
||||
|
||||
> **NOTE**: it's enough just to run `cmake --build . --target ov_dev_targets` command to build only targets from the
|
||||
> OpenVINO Developer package.
|
||||
Once the commands above are executed, the OpenVINO Developer Package is generated in the ``openvino-release-build`` folder. It consists of several files:
|
||||
|
||||
* ``OpenVINODeveloperPackageConfig.cmake`` - the main CMake script which imports targets and provides compilation flags and CMake options.
|
||||
* ``OpenVINODeveloperPackageConfig-version.cmake`` - a file with a package version.
|
||||
* ``targets_developer.cmake`` - an automatically generated file which contains all targets exported from the OpenVINO build tree. This file is included by ``OpenVINODeveloperPackageConfig.cmake`` to import the following targets:
|
||||
|
||||
* Libraries for plugin development:
|
||||
|
||||
* ``openvino::runtime`` - shared OpenVINO library
|
||||
* ``openvino::runtime::dev`` - interface library with OpenVINO Developer API
|
||||
* ``openvino::pugixml`` - static Pugixml library
|
||||
* ``openvino::xbyak`` - interface library with Xbyak headers
|
||||
* ``openvino::itt`` - static library with tools for performance measurement using Intel ITT
|
||||
|
||||
* Libraries for tests development:
|
||||
|
||||
* ``openvino::gtest``, ``openvino::gtest_main``, ``openvino::gmock`` - Google Tests framework libraries
|
||||
* ``openvino::commonTestUtils`` - static library with common tests utilities
|
||||
* ``openvino::funcTestUtils`` - static library with functional tests utilities
|
||||
* ``openvino::unitTestUtils`` - static library with unit tests utilities
|
||||
* ``openvino::ngraphFunctions`` - static library with the set of ``ov::Model`` builders
|
||||
* ``openvino::funcSharedTests`` - static library with common functional tests
|
||||
* ``openvino::ngraph_reference`` - static library with operation reference implementations.
|
||||
|
||||
.. note::
|
||||
|
||||
It's enough just to run ``cmake --build . --target ov_dev_targets`` command to build only targets from the OpenVINO Developer package.
|
||||
|
||||
Build Plugin using OpenVINO Developer Package
|
||||
------------------------
|
||||
#############################################
|
||||
|
||||
To build a plugin source tree using the OpenVINO Developer Package, run the commands below:
|
||||
|
||||
```cmake
|
||||
$ mkdir template-plugin-release-build
|
||||
$ cd template-plugin-release-build
|
||||
$ cmake -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
|
||||
```
|
||||
.. code-block:: bash
|
||||
|
||||
$ mkdir template-plugin-release-build
|
||||
$ cd template-plugin-release-build
|
||||
$ cmake -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
|
||||
|
||||
|
||||
A common plugin consists of the following components:
|
||||
|
||||
1. Plugin code in the `src` folder
|
||||
2. Code of tests in the `tests` folder
|
||||
1. Plugin code in the ``src`` folder
|
||||
2. Code of tests in the ``tests`` folder
|
||||
|
||||
To build a plugin and its tests, run the following CMake scripts:
|
||||
|
||||
- Root `CMakeLists.txt`, which finds the OpenVINO Developer Package using the `find_package` CMake command and adds the `src` and `tests` subdirectories with plugin sources and their tests respectively:
|
||||
@snippet template/CMakeLists.txt cmake:main
|
||||
> **NOTE**: The default values of the `ENABLE_TESTS`, `ENABLE_FUNCTIONAL_TESTS` options are shared via the OpenVINO Developer Package and they are the same as for the main OpenVINO build tree. You can override them during plugin build using the command below:
|
||||
```bash
|
||||
$ cmake -DENABLE_FUNCTIONAL_TESTS=OFF -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
|
||||
```
|
||||
- Root ``CMakeLists.txt``, which finds the OpenVINO Developer Package using the ``find_package`` CMake command and adds the ``src`` and ``tests`` subdirectories with plugin sources and their tests respectively:
|
||||
|
||||
- `src/CMakeLists.txt` to build a plugin shared library from sources:
|
||||
@snippet template/src/CMakeLists.txt cmake:plugin
|
||||
> **NOTE**: `openvino::...` targets are imported from the OpenVINO Developer Package.
|
||||
.. doxygensnippet:: src/plugins/template/CMakeLists.txt
|
||||
:language: cpp
|
||||
:fragment: [cmake:main]
|
||||
|
||||
.. note::
|
||||
|
||||
The default values of the ``ENABLE_TESTS``, ``ENABLE_FUNCTIONAL_TESTS`` options are shared via the OpenVINO Developer Package and they are the same as for the main OpenVINO build tree. You can override them during plugin build using the command below:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ cmake -DENABLE_FUNCTIONAL_TESTS=OFF -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
|
||||
|
||||
|
||||
* ``src/CMakeLists.txt`` to build a plugin shared library from sources:
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/CMakeLists.txt
|
||||
:language: cpp
|
||||
:fragment: [cmake:plugin]
|
||||
|
||||
.. note::
|
||||
|
||||
``openvino::...`` targets are imported from the OpenVINO Developer Package.
|
||||
|
||||
* ``tests/functional/CMakeLists.txt`` to build a set of functional plugin tests:
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/tests/functional/CMakeLists.txt
|
||||
:language: cpp
|
||||
:fragment: [cmake:functional_tests]
|
||||
|
||||
.. note::
|
||||
|
||||
The ``openvino::funcSharedTests`` static library with common functional OpenVINO Plugin tests is imported via the OpenVINO Developer Package.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
- `tests/functional/CMakeLists.txt` to build a set of functional plugin tests:
|
||||
@snippet template/tests/functional/CMakeLists.txt cmake:functional_tests
|
||||
> **NOTE**: The `openvino::funcSharedTests` static library with common functional OpenVINO Plugin tests is imported via the OpenVINO Developer Package.
|
||||
|
||||
@@ -1,89 +1,131 @@
|
||||
# Compiled Model {#openvino_docs_ov_plugin_dg_compiled_model}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
ov::CompiledModel class functionality:
|
||||
- Compile an ov::Model instance to a backend specific graph representation
|
||||
- Create an arbitrary number of ov::InferRequest objects
|
||||
- Hold some common resources shared between different instances of ov::InferRequest. For example:
|
||||
- ov::ICompiledModel::m_task_executor task executor to implement asynchronous execution
|
||||
- ov::ICompiledModel::m_callback_executor task executor to run an asynchronous inference request callback in a separate thread
|
||||
|
||||
* Compile an ov::Model instance to a backend specific graph representation
|
||||
* Create an arbitrary number of ov::InferRequest objects
|
||||
* Hold some common resources shared between different instances of ov::InferRequest. For example:
|
||||
|
||||
* ov::ICompiledModel::m_task_executor task executor to implement asynchronous execution
|
||||
* ov::ICompiledModel::m_callback_executor task executor to run an asynchronous inference request callback in a separate thread
|
||||
|
||||
CompiledModel Class
|
||||
------------------------
|
||||
###################
|
||||
|
||||
OpenVINO Plugin API provides the interface ov::ICompiledModel which should be used as a base class for a compiled model. Based on that, a declaration of an compiled model class can look as follows:
|
||||
|
||||
@snippet src/compiled_model.hpp compiled_model:header
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.hpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:header]
|
||||
|
||||
### Class Fields
|
||||
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
The example class has several fields:
|
||||
|
||||
- `m_request_id` - Tracks a number of created inference requests, which is used to distinguish different inference requests during profiling via the Intel® Instrumentation and Tracing Technology (ITT) library.
|
||||
- `m_cfg` - Defines a configuration a compiled model was compiled with.
|
||||
- `m_model` - Keeps a reference to transformed `ov::Model` which is used in OpenVINO reference backend computations. Note, in case of other backends with backend specific graph representation `m_model` has different type and represents backend specific graph or just a set of computational kernels to perform an inference.
|
||||
- `m_loaded_from_cache` - Allows to understand that model was loaded from cache.
|
||||
* ``m_request_id`` - Tracks a number of created inference requests, which is used to distinguish different inference requests during profiling via the Intel® Instrumentation and Tracing Technology (ITT) library.
|
||||
* ``m_cfg`` - Defines a configuration a compiled model was compiled with.
|
||||
* ``m_model`` - Keeps a reference to transformed ``ov::Model`` which is used in OpenVINO reference backend computations. Note, in case of other backends with backend specific graph representation ``m_model`` has different type and represents backend specific graph or just a set of computational kernels to perform an inference.
|
||||
* ``m_loaded_from_cache`` - Allows to understand that model was loaded from cache.
|
||||
|
||||
### CompiledModel Constructor
|
||||
CompiledModel Constructor
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
This constructor accepts a generic representation of a model as an ov::Model and is compiled into a backend specific device graph:
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:ctor
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:ctor]
|
||||
|
||||
The implementation `compile_model()` is fully device-specific.
|
||||
The implementation ``compile_model()`` is fully device-specific.
|
||||
|
||||
### compile_model()
|
||||
compile_model()
|
||||
+++++++++++++++
|
||||
|
||||
The function accepts a const shared pointer to `ov::Model` object and applies OpenVINO passes using `transform_model()` function, which defines plugin-specific conversion pipeline. To support low precision inference, the pipeline can include Low Precision Transformations. These transformations are usually hardware specific. You can find how to use and configure Low Precisions Transformations in [Low Precision Transformations](@ref openvino_docs_OV_UG_lpt) guide.
|
||||
The function accepts a const shared pointer to ``ov::Model`` object and applies OpenVINO passes using ``transform_model()`` function, which defines plugin-specific conversion pipeline. To support low precision inference, the pipeline can include Low Precision Transformations. These transformations are usually hardware specific. You can find how to use and configure Low Precisions Transformations in :doc:`Low Precision Transformations <openvino_docs_OV_UG_lpt>` guide.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:compile_model
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:compile_model]
|
||||
|
||||
> **NOTE**: After all these steps, the backend specific graph is ready to create inference requests and perform inference.
|
||||
|
||||
### export_model()
|
||||
.. note::
|
||||
|
||||
After all these steps, the backend specific graph is ready to create inference requests and perform inference.
|
||||
|
||||
The implementation of the method should write all data to the `model_stream`, which is required to import a backend specific graph later in the `Plugin::import_model` method:
|
||||
export_model()
|
||||
++++++++++++++
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:export_model
|
||||
The implementation of the method should write all data to the ``model_stream``, which is required to import a backend specific graph later in the ``Plugin::import_model`` method:
|
||||
|
||||
### create_sync_infer_request()
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:export_model]
|
||||
|
||||
create_sync_infer_request()
|
||||
+++++++++++++++++++++++++++
|
||||
|
||||
The method creates an synchronous inference request and returns it.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:create_sync_infer_request
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:create_sync_infer_request]
|
||||
|
||||
While the public OpenVINO API has a single interface for inference request, which can be executed in synchronous and asynchronous modes, a plugin library implementation has two separate classes:
|
||||
|
||||
- [Synchronous inference request](@ref openvino_docs_ov_plugin_dg_infer_request), which defines pipeline stages and runs them synchronously in the `infer` method.
|
||||
- [Asynchronous inference request](@ref openvino_docs_ov_plugin_dg_async_infer_request), which is a wrapper for a synchronous inference request and can run a pipeline asynchronously. Depending on a device pipeline structure, it can has one or several stages:
|
||||
- For single-stage pipelines, there is no need to define this method and create a class derived from ov::IAsyncInferRequest. For single stage pipelines, a default implementation of this method creates ov::IAsyncInferRequest wrapping a synchronous inference request and runs it asynchronously in the `m_request_executor` executor.
|
||||
- For pipelines with multiple stages, such as performing some preprocessing on host, uploading input data to a device, running inference on a device, or downloading and postprocessing output data, schedule stages on several task executors to achieve better device use and performance. You can do it by creating a sufficient number of inference requests running in parallel. In this case, device stages of different inference requests are overlapped with preprocessing and postprocessing stage giving better performance.
|
||||
> **IMPORTANT**: It is up to you to decide how many task executors you need to optimally execute a device pipeline.
|
||||
* :doc:`Synchronous inference request <openvino_docs_ov_plugin_dg_infer_request>`, which defines pipeline stages and runs them synchronously in the ``infer`` method.
|
||||
|
||||
* :doc:`Asynchronous inference request <openvino_docs_ov_plugin_dg_async_infer_request>`, which is a wrapper for a synchronous inference request and can run a pipeline asynchronously. Depending on a device pipeline structure, it can have one or several stages:
|
||||
|
||||
* For single-stage pipelines, there is no need to define this method and create a class derived from ov::IAsyncInferRequest. For single stage pipelines, a default implementation of this method creates ov::IAsyncInferRequest wrapping a synchronous inference request and runs it asynchronously in the ``m_request_executor`` executor.
|
||||
* For pipelines with multiple stages, such as performing some preprocessing on host, uploading input data to a device, running inference on a device, or downloading and postprocessing output data, schedule stages on several task executors to achieve better device use and performance. You can do it by creating a sufficient number of inference requests running in parallel. In this case, device stages of different inference requests are overlapped with preprocessing and postprocessing stage giving better performance.
|
||||
|
||||
.. important::
|
||||
|
||||
It is up to you to decide how many task executors you need to optimally execute a device pipeline.
|
||||
|
||||
|
||||
### create_infer_request()
|
||||
create_infer_request()
|
||||
++++++++++++++++++++++
|
||||
|
||||
The method creates an asynchronous inference request and returns it.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:create_infer_request
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:create_infer_request]
|
||||
|
||||
### get_property()
|
||||
get_property()
|
||||
++++++++++++++
|
||||
|
||||
Returns a current value for a property with the name `name`. The method extracts configuration values a compiled model is compiled with.
|
||||
Returns a current value for a property with the name ``name``. The method extracts configuration values a compiled model is compiled with.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:get_property
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:get_property]
|
||||
|
||||
This function is the only way to get configuration values when a model is imported and compiled by other developers and tools.
|
||||
|
||||
### set_property()
|
||||
set_property()
|
||||
++++++++++++++
|
||||
|
||||
The methods allows to set compiled model specific properties.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:set_property
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:set_property]
|
||||
|
||||
### get_runtime_model()
|
||||
get_runtime_model()
|
||||
+++++++++++++++++++
|
||||
|
||||
The methods returns the runtime model with backend specific information.
|
||||
|
||||
@snippet src/compiled_model.cpp compiled_model:get_runtime_model
|
||||
.. doxygensnippet:: src/plugins/template/src/compiled_model.cpp
|
||||
:language: cpp
|
||||
:fragment: [compiled_model:get_runtime_model]
|
||||
|
||||
The next step in plugin library implementation is the [Synchronous Inference Request](@ref openvino_docs_ov_plugin_dg_infer_request) class.
|
||||
The next step in plugin library implementation is the :doc:`Synchronous Inference Request <openvino_docs_ov_plugin_dg_infer_request>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,92 +1,145 @@
|
||||
# Synchronous Inference Request {#openvino_docs_ov_plugin_dg_infer_request}
|
||||
|
||||
`InferRequest` class functionality:
|
||||
- Allocate input and output tensors needed for a backend-dependent network inference.
|
||||
- Define functions for inference process stages (for example, `preprocess`, `upload`, `infer`, `download`, `postprocess`). These functions can later be used to define an execution pipeline during [Asynchronous Inference Request](@ref openvino_docs_ov_plugin_dg_async_infer_request) implementation.
|
||||
- Call inference stages one by one synchronously.
|
||||
@sphinxdirective
|
||||
|
||||
``InferRequest`` class functionality:
|
||||
|
||||
* Allocate input and output tensors needed for a backend-dependent network inference.
|
||||
* Define functions for inference process stages (for example, ``preprocess``, ``upload``, ``infer``, ``download``, ``postprocess``). These functions can later be used to define an execution pipeline during :doc:`Asynchronous Inference Request <openvino_docs_ov_plugin_dg_async_infer_request>` implementation.
|
||||
* Call inference stages one by one synchronously.
|
||||
|
||||
InferRequest Class
|
||||
------------------------
|
||||
##################
|
||||
|
||||
OpenVINO Plugin API provides the interface ov::ISyncInferRequest which should be
|
||||
used as a base class for a synchronous inference request implementation. Based of that, a declaration
|
||||
of a synchronous request class can look as follows:
|
||||
|
||||
@snippet src/sync_infer_request.hpp infer_request:header
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.hpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:header]
|
||||
|
||||
### Class Fields
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
The example class has several fields:
|
||||
|
||||
- `m_profiling_task` - array of the `std::array<openvino::itt::handle_t, numOfStages>` type. Defines names for pipeline stages. Used to profile an inference pipeline execution with the Intel® instrumentation and tracing technology (ITT).
|
||||
- `m_durations` - array of durations of each pipeline stage.
|
||||
- backend specific fields:
|
||||
- `m_backend_input_tensors` - input backend tensors.
|
||||
- `m_backend_output_tensors` - output backend tensors.
|
||||
- `m_executable` - an executable object / backend computational graph.
|
||||
- `m_eval_context` - an evaluation context to save backend states after the inference.
|
||||
- `m_variable_states` - a vector of variable states.
|
||||
* ``m_profiling_task`` - array of the ``std::array<openvino::itt::handle_t, numOfStages>`` type. Defines names for pipeline stages. Used to profile an inference pipeline execution with the Intel® instrumentation and tracing technology (ITT).
|
||||
|
||||
### InferRequest Constructor
|
||||
* ``m_durations`` - array of durations of each pipeline stage.
|
||||
|
||||
* backend-specific fields:
|
||||
|
||||
* ``m_backend_input_tensors`` - input backend tensors.
|
||||
* ``m_backend_output_tensors`` - output backend tensors.
|
||||
* ``m_executable`` - an executable object / backend computational graph.
|
||||
* ``m_eval_context`` - an evaluation context to save backend states after the inference.
|
||||
* ``m_variable_states`` - a vector of variable states.
|
||||
|
||||
InferRequest Constructor
|
||||
++++++++++++++++++++++++
|
||||
|
||||
The constructor initializes helper fields and calls methods which allocate tensors:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:ctor
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:ctor]
|
||||
|
||||
> **NOTE**: Use inputs/outputs information from the compiled model to understand shape and element type of tensors, which you can set with ov::InferRequest::set_tensor and get with ov::InferRequest::get_tensor. A plugin uses these hints to determine its internal layouts and element types for input and output tensors if needed.
|
||||
.. note::
|
||||
|
||||
### ~InferRequest Destructor
|
||||
Use inputs/outputs information from the compiled model to understand shape and element type of tensors, which you can set with ov::InferRequest::set_tensor and get with ov::InferRequest::get_tensor. A plugin uses these hints to determine its internal layouts and element types for input and output tensors if needed.
|
||||
|
||||
~InferRequest Destructor
|
||||
++++++++++++++++++++++++
|
||||
|
||||
Destructor can contain plugin specific logic to finish and destroy infer request.
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:dtor
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:dtor]
|
||||
|
||||
### set_tensors_impl()
|
||||
set_tensors_impl()
|
||||
+++++++++++++++++++
|
||||
|
||||
The method allows to set batched tensors in case if the plugin supports it.
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:set_tensors_impl
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:set_tensors_impl]
|
||||
|
||||
### query_state()
|
||||
query_state()
|
||||
+++++++++++++
|
||||
|
||||
The method returns variable states from the model.
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:query_state
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:query_state]
|
||||
|
||||
### infer()
|
||||
infer()
|
||||
+++++++
|
||||
|
||||
The method calls actual pipeline stages synchronously. Inside the method plugin should check input/output tensors, move external tensors to backend and run the inference.
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:infer
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:infer]
|
||||
|
||||
#### 1. infer_preprocess()
|
||||
1. infer_preprocess()
|
||||
----------------------
|
||||
|
||||
Below is the code of the `infer_preprocess()` method. The method checks user input/output tensors and demonstrates conversion from user tensor to backend specific representation:
|
||||
Below is the code of the ``infer_preprocess()`` method. The method checks user input/output tensors and demonstrates conversion from user tensor to backend specific representation:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:infer_preprocess
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:infer_preprocess]
|
||||
|
||||
#### 2. start_pipeline()
|
||||
2. start_pipeline()
|
||||
--------------------
|
||||
|
||||
Executes a pipeline synchronously using `m_executable` object:
|
||||
Executes a pipeline synchronously using ``m_executable`` object:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:start_pipeline
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:start_pipeline]
|
||||
|
||||
#### 3. wait_pipeline()
|
||||
3. wait_pipeline()
|
||||
--------------------
|
||||
|
||||
Waits a pipeline in case of plugin asynchronous execution:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:wait_pipeline
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:wait_pipeline]
|
||||
|
||||
#### 4. infer_postprocess()
|
||||
4. infer_postprocess()
|
||||
----------------------
|
||||
|
||||
Converts backend specific tensors to tensors passed by user:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:infer_postprocess
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:infer_postprocess]
|
||||
|
||||
### get_profiling_info()
|
||||
get_profiling_info()
|
||||
+++++++++++++++++++++
|
||||
|
||||
The method returns the profiling info which was measured during pipeline stages execution:
|
||||
|
||||
@snippet src/sync_infer_request.cpp infer_request:get_profiling_info
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:get_profiling_info]
|
||||
|
||||
The next step in the plugin library implementation is the [Asynchronous Inference Request](@ref openvino_docs_ov_plugin_dg_async_infer_request) class.
|
||||
cancel()
|
||||
+++++++++
|
||||
|
||||
The plugin specific method allows to interrupt the synchronous execution from the AsyncInferRequest:
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/sync_infer_request.cpp
|
||||
:language: cpp
|
||||
:fragment: [infer_request:cancel]
|
||||
|
||||
|
||||
The next step in the plugin library implementation is the :doc:`Asynchronous Inference Request <openvino_docs_ov_plugin_dg_async_infer_request>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -19,55 +19,75 @@
|
||||
openvino_docs_ie_plugin_detailed_guides
|
||||
openvino_docs_ie_plugin_api_references
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
The plugin architecture of the OpenVINO allows to develop and plug independent inference
|
||||
The plugin architecture of OpenVINO allows to develop and plug independent inference
|
||||
solutions dedicated to different devices. Physically, a plugin is represented as a dynamic library
|
||||
exporting the single `CreatePluginEngine` function that allows to create a new plugin instance.
|
||||
exporting the single ``CreatePluginEngine`` function that allows to create a new plugin instance.
|
||||
|
||||
OpenVINO Plugin Library
|
||||
-----------------------
|
||||
#######################
|
||||
|
||||
OpenVINO plugin dynamic library consists of several main components:
|
||||
|
||||
1. [Plugin class](@ref openvino_docs_ov_plugin_dg_plugin):
|
||||
- Provides information about devices of a specific type.
|
||||
- Can create an [compiled model](@ref openvino_docs_ov_plugin_dg_compiled_model) instance which represents a Neural Network backend specific graph structure for a particular device in opposite to the ov::Model
|
||||
which is backend-independent.
|
||||
- Can import an already compiled graph structure from an input stream to an
|
||||
[compiled model](@ref openvino_docs_ov_plugin_dg_compiled_model) object.
|
||||
2. [Compiled Model class](@ref openvino_docs_ov_plugin_dg_compiled_model):
|
||||
- Is an execution configuration compiled for a particular device and takes into account its capabilities.
|
||||
- Holds a reference to a particular device and a task executor for this device.
|
||||
- Can create several instances of [Inference Request](@ref openvino_docs_ov_plugin_dg_infer_request).
|
||||
- Can export an internal backend specific graph structure to an output stream.
|
||||
3. [Inference Request class](@ref openvino_docs_ov_plugin_dg_infer_request):
|
||||
- Runs an inference pipeline serially.
|
||||
- Can extract performance counters for an inference pipeline execution profiling.
|
||||
4. [Asynchronous Inference Request class](@ref openvino_docs_ov_plugin_dg_async_infer_request):
|
||||
- Wraps the [Inference Request](@ref openvino_docs_ov_plugin_dg_infer_request) class and runs pipeline stages in parallel on several task executors based on a device-specific pipeline structure.
|
||||
5. [Plugin specific properties](@ref openvino_docs_ov_plugin_dg_properties):
|
||||
- Provides the plugin specific properties.
|
||||
6. [Remote Context](@ref openvino_docs_ov_plugin_dg_remote_context):
|
||||
- Provides the device specific remote context. Context allows to create remote tensors.
|
||||
7. [Remote Tensor](@ref openvino_docs_ov_plugin_dg_remote_tensor)
|
||||
- Provides the device specific remote tensor API and implementation.
|
||||
1. :doc:`Plugin class <openvino_docs_ov_plugin_dg_plugin>`:
|
||||
|
||||
> **NOTE**: This documentation is written based on the `Template` plugin, which demonstrates plugin development details. Find the complete code of the `Template`, which is fully compilable and up-to-date,
|
||||
at `<openvino source dir>/src/plugins/template`.
|
||||
* Provides information about devices of a specific type.
|
||||
* Can create an :doc:`compiled model <openvino_docs_ov_plugin_dg_compiled_model>` instance which represents a Neural Network backend specific graph structure for a particular device in opposite to the ov::Model which is backend-independent.
|
||||
* Can import an already compiled graph structure from an input stream to a :doc:`compiled model <openvino_docs_ov_plugin_dg_compiled_model>` object.
|
||||
|
||||
|
||||
Detailed guides
|
||||
-----------------------
|
||||
2. :doc:`Compiled Model class <openvino_docs_ov_plugin_dg_compiled_model>`:
|
||||
|
||||
* [Build](@ref openvino_docs_ov_plugin_dg_plugin_build) a plugin library using CMake
|
||||
* Plugin and its components [testing](@ref openvino_docs_ov_plugin_dg_plugin_testing)
|
||||
* [Quantized networks](@ref openvino_docs_ov_plugin_dg_quantized_models)
|
||||
* [Low precision transformations](@ref openvino_docs_OV_UG_lpt) guide
|
||||
* [Writing OpenVINO™ transformations](@ref openvino_docs_transformations) guide
|
||||
* Is an execution configuration compiled for a particular device and takes into account its capabilities.
|
||||
* Holds a reference to a particular device and a task executor for this device.
|
||||
* Can create several instances of :doc:`Inference Request <openvino_docs_ov_plugin_dg_infer_request>`.
|
||||
* Can export an internal backend specific graph structure to an output stream.
|
||||
|
||||
|
||||
3. :doc:`Inference Request class <openvino_docs_ov_plugin_dg_infer_request>`:
|
||||
|
||||
* Runs an inference pipeline serially.
|
||||
* Can extract performance counters for an inference pipeline execution profiling.
|
||||
|
||||
|
||||
4. :doc:`Asynchronous Inference Request class <openvino_docs_ov_plugin_dg_async_infer_request>`:
|
||||
|
||||
* Wraps the :doc:`Inference Request <openvino_docs_ov_plugin_dg_infer_request>` class and runs pipeline stages in parallel on several task executors based on a device-specific pipeline structure.
|
||||
|
||||
|
||||
5. :doc:`Plugin specific properties <openvino_docs_ov_plugin_dg_properties>`:
|
||||
|
||||
* Provides the plugin specific properties.
|
||||
|
||||
|
||||
6. :doc:`Remote Context <openvino_docs_ov_plugin_dg_remote_context>`:
|
||||
|
||||
* Provides the device specific remote context. Context allows to create remote tensors.
|
||||
|
||||
|
||||
7. :doc:`Remote Tensor <openvino_docs_ov_plugin_dg_remote_tensor>`
|
||||
|
||||
* Provides the device specific remote tensor API and implementation.
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
This documentation is written based on the ``Template`` plugin, which demonstrates plugin development details. Find the complete code of the ``Template``, which is fully compilable and up-to-date, at ``<openvino source dir>/src/plugins/template``.
|
||||
|
||||
|
||||
Detailed Guides
|
||||
###############
|
||||
|
||||
* :doc:`Build <openvino_docs_ov_plugin_dg_plugin_build>` a plugin library using CMake
|
||||
* Plugin and its components :doc:`testing <openvino_docs_ov_plugin_dg_plugin_testing>`
|
||||
* :doc:`Quantized networks <openvino_docs_ov_plugin_dg_quantized_models>`
|
||||
* :doc:`Low precision transformations <openvino_docs_OV_UG_lpt>` guide
|
||||
* :doc:`Writing OpenVINO™ transformations <openvino_docs_transformations>` guide
|
||||
|
||||
API References
|
||||
-----------------------
|
||||
##############
|
||||
|
||||
* [OpenVINO Plugin API](@ref ov_dev_api)
|
||||
* [OpenVINO Transformation API](@ref ie_transformation_api)
|
||||
* `OpenVINO Plugin API <https://docs.openvino.ai/nightly/groupov_dev_api.html>`__
|
||||
* `OpenVINO Transformation API <https://docs.openvino.ai/2022.3/groupie_transformation_api.html>`__
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,171 +1,230 @@
|
||||
# Plugin {#openvino_docs_ov_plugin_dg_plugin}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
OpenVINO Plugin usually represents a wrapper around a backend. Backends can be:
|
||||
- OpenCL-like backend (e.g. clDNN library) for GPU devices.
|
||||
- oneDNN backend for Intel CPU devices.
|
||||
- NVIDIA cuDNN for NVIDIA GPUs.
|
||||
|
||||
* OpenCL-like backend (e.g. clDNN library) for GPU devices.
|
||||
* oneDNN backend for Intel CPU devices.
|
||||
* NVIDIA cuDNN for NVIDIA GPUs.
|
||||
|
||||
The responsibility of OpenVINO Plugin:
|
||||
- Initializes a backend and throw exception in `Engine` constructor if backend cannot be initialized.
|
||||
- Provides information about devices enabled by a particular backend, e.g. how many devices, their properties and so on.
|
||||
- Loads or imports [compiled model](@ref openvino_docs_ov_plugin_dg_compiled_model) objects.
|
||||
|
||||
* Initializes a backend and throw exception in ``Engine`` constructor if backend cannot be initialized.
|
||||
* Provides information about devices enabled by a particular backend, e.g. how many devices, their properties and so on.
|
||||
* Loads or imports :doc:`compiled model <openvino_docs_ov_plugin_dg_compiled_model>` objects.
|
||||
|
||||
In addition to the OpenVINO Public API, the OpenVINO provides the Plugin API, which is a set of functions and helper classes that simplify new plugin development:
|
||||
|
||||
- header files in the `src/inference/dev_api/openvino` directory
|
||||
- implementations in the `src/inference/src/dev/` directory
|
||||
- symbols in the OpenVINO shared library
|
||||
* header files in the ``src/inference/dev_api/openvino`` directory
|
||||
* implementations in the ``src/inference/src/dev/`` directory
|
||||
* symbols in the OpenVINO shared library
|
||||
|
||||
To build an OpenVINO plugin with the Plugin API, see the [OpenVINO Plugin Building](@ref openvino_docs_ov_plugin_dg_plugin_build) guide.
|
||||
To build an OpenVINO plugin with the Plugin API, see the :doc:`OpenVINO Plugin Building <openvino_docs_ov_plugin_dg_plugin_build>` guide.
|
||||
|
||||
Plugin Class
|
||||
------------------------
|
||||
############
|
||||
|
||||
OpenVINO Plugin API provides the helper ov::IPlugin class recommended to use as a base class for a plugin.
|
||||
Based on that, declaration of a plugin class can look as follows:
|
||||
|
||||
@snippet template/src/plugin.hpp plugin:header
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.hpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:header]
|
||||
|
||||
### Class Fields
|
||||
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
The provided plugin class also has several fields:
|
||||
|
||||
* `m_backend` - a backend engine that is used to perform actual computations for model inference. For `Template` plugin `ov::runtime::Backend` is used which performs computations using OpenVINO™ reference implementations.
|
||||
* `m_waitExecutor` - a task executor that waits for a response from a device about device tasks completion.
|
||||
* `m_cfg` of type `Configuration`:
|
||||
* ``m_backend`` - a backend engine that is used to perform actual computations for model inference. For ``Template`` plugin ``ov::runtime::Backend`` is used which performs computations using OpenVINO™ reference implementations.
|
||||
* ``m_waitExecutor`` - a task executor that waits for a response from a device about device tasks completion.
|
||||
* ``m_cfg`` of type ``Configuration``:
|
||||
|
||||
@snippet template/src/config.hpp configuration:header
|
||||
.. doxygensnippet:: src/plugins/template/src/config.hpp
|
||||
:language: cpp
|
||||
:fragment: [configuration:header]
|
||||
|
||||
As an example, a plugin configuration has three value parameters:
|
||||
|
||||
- `device_id` - particular device ID to work with. Applicable if a plugin supports more than one `Template` device. In this case, some plugin methods, like `set_property`, `query_model`, and `compile_model`, must support the ov::device::id property.
|
||||
- `perf_counts` - boolean value to identify whether to collect performance counters during [Inference Request](@ref openvino_docs_ov_plugin_dg_infer_request) execution.
|
||||
- `streams_executor_config` - configuration of `ov::threading::IStreamsExecutor` to handle settings of multi-threaded context.
|
||||
- `performance_mode` - configuration of `ov::hint::PerformanceMode` to set the performance mode.
|
||||
- `disable_transformations` - allows to disable transformations which are applied in the process of model compilation.
|
||||
* ``device_id`` - particular device ID to work with. Applicable if a plugin supports more than one ``Template`` device. In this case, some plugin methods, like ``set_property``, ``query_model``, and ``compile_model``, must support the ov::device::id property.
|
||||
* ``perf_counts`` - boolean value to identify whether to collect performance counters during :doc:`Inference Request <openvino_docs_ov_plugin_dg_infer_request>` execution.
|
||||
* ``streams_executor_config`` - configuration of ``ov::threading::IStreamsExecutor`` to handle settings of multi-threaded context.
|
||||
* ``performance_mode`` - configuration of ``ov::hint::PerformanceMode`` to set the performance mode.
|
||||
* ``disable_transformations`` - allows to disable transformations which are applied in the process of model compilation.
|
||||
* ``exclusive_async_requests`` - allows to use exclusive task executor for asynchronous infer requests.
|
||||
|
||||
### Plugin Constructor
|
||||
Plugin Constructor
|
||||
++++++++++++++++++
|
||||
|
||||
A plugin constructor must contain code that checks the ability to work with a device of the `Template`
|
||||
A plugin constructor must contain code that checks the ability to work with a device of the ``Template``
|
||||
type. For example, if some drivers are required, the code must check
|
||||
driver availability. If a driver is not available (for example, OpenCL runtime is not installed in
|
||||
case of a GPU device or there is an improper version of a driver is on a host machine), an exception
|
||||
must be thrown from a plugin constructor.
|
||||
|
||||
A plugin must define a device name enabled via the `set_device_name()` method of a base class:
|
||||
A plugin must define a device name enabled via the ``set_device_name()`` method of a base class:
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:ctor
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:ctor]
|
||||
|
||||
### Plugin Destructor
|
||||
Plugin Destructor
|
||||
+++++++++++++++++
|
||||
|
||||
A plugin destructor must stop all plugins activities, and clean all allocated resources.
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:dtor
|
||||
|
||||
### compile_model()
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:dtor]
|
||||
|
||||
The plugin should implement two `compile_model()` methods: the first one compiles model without remote context, the second one with remote context if plugin supports.
|
||||
compile_model()
|
||||
+++++++++++++++
|
||||
|
||||
This is the most important function of the `Plugin` class is to create an instance of compiled `CompiledModel`,
|
||||
The plugin should implement two ``compile_model()`` methods: the first one compiles model without remote context, the second one with remote context if plugin supports.
|
||||
|
||||
This is the most important function of the ``Plugin`` class is to create an instance of compiled ``CompiledModel``,
|
||||
which holds a backend-dependent compiled model in an internal representation:
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:compile_model
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:compile_model]
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:compile_model_with_remote
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:compile_model_with_remote]
|
||||
|
||||
Before a creation of an `CompiledModel` instance via a constructor, a plugin may check if a provided
|
||||
Before a creation of an ``CompiledModel`` instance via a constructor, a plugin may check if a provided
|
||||
ov::Model object is supported by a device if it is needed.
|
||||
|
||||
Actual model compilation is done in the `CompiledModel` constructor. Refer to the [CompiledModel Implementation Guide](@ref openvino_docs_ov_plugin_dg_compiled_model) for details.
|
||||
Actual model compilation is done in the ``CompiledModel`` constructor. Refer to the :doc:`CompiledModel Implementation Guide <openvino_docs_ov_plugin_dg_compiled_model>` for details.
|
||||
|
||||
> **NOTE**: Actual configuration map used in `CompiledModel` is constructed as a base plugin
|
||||
> configuration set via `Plugin::set_property`, where some values are overwritten with `config` passed to `Plugin::compile_model`.
|
||||
> Therefore, the config of `Plugin::compile_model` has a higher priority.
|
||||
.. note::
|
||||
|
||||
### transform_model()
|
||||
Actual configuration map used in ``CompiledModel`` is constructed as a base plugin configuration set via ``Plugin::set_property``, where some values are overwritten with ``config`` passed to ``Plugin::compile_model``. Therefore, the config of ``Plugin::compile_model`` has a higher priority.
|
||||
|
||||
The function accepts a const shared pointer to `ov::Model` object and applies common and device-specific transformations on a copied model to make it more friendly to hardware operations. For details how to write custom device-specific transformation, please, refer to [Writing OpenVINO™ transformations](@ref openvino_docs_transformations) guide. See detailed topics about model representation:
|
||||
* [Intermediate Representation and Operation Sets](@ref openvino_docs_MO_DG_IR_and_opsets)
|
||||
* [Quantized models](@ref openvino_docs_ov_plugin_dg_quantized_models).
|
||||
transform_model()
|
||||
+++++++++++++++++
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:transform_model
|
||||
The function accepts a const shared pointer to `ov::Model` object and applies common and device-specific transformations on a copied model to make it more friendly to hardware operations. For details how to write custom device-specific transformation, refer to :doc:`Writing OpenVINO™ transformations <openvino_docs_transformations>` guide. See detailed topics about model representation:
|
||||
|
||||
> **NOTE**: After all these transformations, an `ov::Model` object contains operations which can be perfectly mapped to backend kernels. E.g. if backend has kernel computing `A + B` operations at once, the `transform_model` function should contain a pass which fuses operations `A` and `B` into a single custom operation `A + B` which fits backend kernels set.
|
||||
* :doc:`Intermediate Representation and Operation Sets <openvino_docs_MO_DG_IR_and_opsets>`
|
||||
* :doc:`Quantized models <openvino_docs_ov_plugin_dg_quantized_models>`.
|
||||
|
||||
### query_model()
|
||||
|
||||
Use the method with the `HETERO` mode, which allows to distribute model execution between different
|
||||
devices based on the `ov::Node::get_rt_info()` map, which can contain the `"affinity"` key.
|
||||
The `query_model` method analyzes operations of provided `model` and returns a list of supported
|
||||
operations via the ov::SupportedOpsMap structure. The `query_model` firstly applies `transform_model` passes to input `ov::Model` argument. After this, the transformed model in ideal case contains only operations are 1:1 mapped to kernels in computational backend. In this case, it's very easy to analyze which operations is supposed (`m_backend` has a kernel for such operation or extensions for the operation is provided) and not supported (kernel is missed in `m_backend`):
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:transform_model]
|
||||
|
||||
1. Store original names of all operations in input `ov::Model`
|
||||
2. Apply `transform_model` passes. Note, the names of operations in a transformed model can be different and we need to restore the mapping in the steps below.
|
||||
3. Construct `supported` map which contains names of original operations. Note, that since the inference is performed using OpenVINO™ reference backend, the decision whether the operation is supported or not depends on whether the latest OpenVINO opset contains such operation.
|
||||
4. `ov.SupportedOpsMap` contains only operations which are fully supported by `m_backend`.
|
||||
.. note::
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:query_model
|
||||
After all these transformations, an ``ov::Model`` object contains operations which can be perfectly mapped to backend kernels. E.g. if backend has kernel computing ``A + B`` operations at once, the ``transform_model`` function should contain a pass which fuses operations ``A`` and ``B`` into a single custom operation `A + B` which fits backend kernels set.
|
||||
|
||||
### set_property()
|
||||
query_model()
|
||||
+++++++++++++
|
||||
|
||||
Use the method with the ``HETERO`` mode, which allows to distribute model execution between different
|
||||
devices based on the ``ov::Node::get_rt_info()`` map, which can contain the ``affinity`` key.
|
||||
The ``query_model`` method analyzes operations of provided ``model`` and returns a list of supported
|
||||
operations via the ov::SupportedOpsMap structure. The ``query_model`` firstly applies ``transform_model`` passes to input ``ov::Model`` argument. After this, the transformed model in ideal case contains only operations are 1:1 mapped to kernels in computational backend. In this case, it's very easy to analyze which operations is supposed (``m_backend`` has a kernel for such operation or extensions for the operation is provided) and not supported (kernel is missed in ``m_backend``):
|
||||
|
||||
1. Store original names of all operations in input ``ov::Model``.
|
||||
2. Apply ``transform_model`` passes. Note, the names of operations in a transformed model can be different and we need to restore the mapping in the steps below.
|
||||
3. Construct ``supported`` map which contains names of original operations. Note that since the inference is performed using OpenVINO™ reference backend, the decision whether the operation is supported or not depends on whether the latest OpenVINO opset contains such operation.
|
||||
4. ``ov.SupportedOpsMap`` contains only operations which are fully supported by ``m_backend``.
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:query_model]
|
||||
|
||||
set_property()
|
||||
++++++++++++++
|
||||
|
||||
Sets new values for plugin property keys:
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:set_property
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:set_property]
|
||||
|
||||
In the snippet above, the `Configuration` class overrides previous configuration values with the new
|
||||
In the snippet above, the ``Configuration`` class overrides previous configuration values with the new
|
||||
ones. All these values are used during backend specific model compilation and execution of inference requests.
|
||||
|
||||
> **NOTE**: The function must throw an exception if it receives an unsupported configuration key.
|
||||
.. note::
|
||||
|
||||
The function must throw an exception if it receives an unsupported configuration key.
|
||||
|
||||
### get_property()
|
||||
get_property()
|
||||
++++++++++++++
|
||||
|
||||
Returns a current value for a specified property key:
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:get_property
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:get_property]
|
||||
|
||||
The function is implemented with the `Configuration::Get` method, which wraps an actual configuration
|
||||
The function is implemented with the ``Configuration::Get`` method, which wraps an actual configuration
|
||||
key value to the ov::Any and returns it.
|
||||
|
||||
> **NOTE**: The function must throw an exception if it receives an unsupported configuration key.
|
||||
.. note::
|
||||
|
||||
The function must throw an exception if it receives an unsupported configuration key.
|
||||
|
||||
### import_model()
|
||||
import_model()
|
||||
++++++++++++++
|
||||
|
||||
The importing of compiled model mechanism allows to import a previously exported backend specific model and wrap it
|
||||
using an [CompiledModel](@ref openvino_docs_ov_plugin_dg_compiled_model) object. This functionality is useful if
|
||||
using an :doc:`CompiledModel <openvino_docs_ov_plugin_dg_compiled_model>` object. This functionality is useful if
|
||||
backend specific model compilation takes significant time and/or cannot be done on a target host
|
||||
device due to other reasons.
|
||||
|
||||
During export of backend specific model using `CompiledModel::export_model`, a plugin may export any
|
||||
During export of backend specific model using ``CompiledModel::export_model``, a plugin may export any
|
||||
type of information it needs to import a compiled model properly and check its correctness.
|
||||
For example, the export information may include:
|
||||
|
||||
- Compilation options (state of `Plugin::m_cfg` structure)
|
||||
- Information about a plugin and a device type to check this information later during the import and
|
||||
throw an exception if the `model` stream contains wrong data. For example, if devices have different
|
||||
capabilities and a model compiled for a particular device cannot be used for another, such type of
|
||||
information must be stored and checked during the import.
|
||||
- Compiled backend specific model itself
|
||||
* Compilation options (state of ``Plugin::m_cfg`` structure).
|
||||
* Information about a plugin and a device type to check this information later during the import and throw an exception if the ``model`` stream contains wrong data. For example, if devices have different capabilities and a model compiled for a particular device cannot be used for another, such type of information must be stored and checked during the import.
|
||||
* Compiled backend specific model itself.
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:import_model
|
||||
@snippet template/src/plugin.cpp plugin:import_model_with_remote
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:import_model]
|
||||
|
||||
### create_context()
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:import_model_with_remote]
|
||||
|
||||
The Plugin should implement `Plugin::create_context()` method which returns `ov::RemoteContext` in case if plugin supports remote context, in other case the plugin can throw an exception that this method is not implemented.
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:create_context
|
||||
create_context()
|
||||
++++++++++++++++
|
||||
|
||||
### get_default_context()
|
||||
The Plugin should implement ``Plugin::create_context()`` method which returns ``ov::RemoteContext`` in case if plugin supports remote context, in other case the plugin can throw an exception that this method is not implemented.
|
||||
|
||||
`Plugin::get_default_context()` also needed in case if plugin supports remote context, if the plugin doesn't support it, this method can throw an exception that functionality is not implemented.
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:create_context]
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:get_default_context
|
||||
|
||||
get_default_context()
|
||||
+++++++++++++++++++++
|
||||
|
||||
``Plugin::get_default_context()`` also needed in case if plugin supports remote context, if the plugin doesn't support it, this method can throw an exception that functionality is not implemented.
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:get_default_context]
|
||||
|
||||
Create Instance of Plugin Class
|
||||
------------------------
|
||||
###############################
|
||||
|
||||
OpenVINO plugin library must export only one function creating a plugin instance using OV_DEFINE_PLUGIN_CREATE_FUNCTION macro:
|
||||
|
||||
@snippet template/src/plugin.cpp plugin:create_plugin_engine
|
||||
.. doxygensnippet:: src/plugins/template/src/plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [plugin:create_plugin_engine]
|
||||
|
||||
Next step in a plugin library implementation is the [CompiledModel](@ref openvino_docs_ov_plugin_dg_compiled_model) class.
|
||||
|
||||
Next step in a plugin library implementation is the :doc:`CompiledModel <openvino_docs_ov_plugin_dg_compiled_model>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,45 +1,67 @@
|
||||
# Plugin Testing {#openvino_docs_ov_plugin_dg_plugin_testing}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
OpenVINO tests infrastructure provides a predefined set of functional tests and utilities. They are used to verify a plugin using the OpenVINO public API.
|
||||
All the tests are written in the [Google Test C++ framework](https://github.com/google/googletest).
|
||||
All the tests are written in the `Google Test C++ framework <https://github.com/google/googletest>`__.
|
||||
|
||||
OpenVINO Plugin tests are included in the `openvino::funcSharedTests` CMake target which is built within the OpenVINO repository
|
||||
(see [Build Plugin Using CMake](@ref openvino_docs_ov_plugin_dg_plugin_build) guide). This library contains tests definitions (the tests bodies) which can be parametrized and instantiated in plugins depending on whether a plugin supports a particular feature, specific sets of parameters for test on supported operation set and so on.
|
||||
OpenVINO Plugin tests are included in the ``openvino::funcSharedTests`` CMake target which is built within the OpenVINO repository
|
||||
(see :doc:`Build Plugin Using CMake <openvino_docs_ov_plugin_dg_plugin_build>` guide). This library contains tests definitions (the tests bodies) which can be parametrized and instantiated in plugins depending on whether a plugin supports a particular feature, specific sets of parameters for test on supported operation set and so on.
|
||||
|
||||
Test definitions are split into tests class declaration (see `src/tests/functional/plugin/shared/include`) and tests class implementation (see `src/tests/functional/plugin/shared/src`) and include the following scopes of plugin conformance tests:
|
||||
Test definitions are split into tests class declaration (see ``src/tests/functional/plugin/shared/include``) and tests class implementation (see ``src/tests/functional/plugin/shared/src``) and include the following scopes of plugin conformance tests:
|
||||
|
||||
1. **Behavior tests** (`behavior` sub-folder), which are a separate test group to check that a plugin satisfies basic OpenVINO concepts: plugin creation, multiple compiled models support, multiple synchronous and asynchronous inference requests support, and so on. See the next section with details how to instantiate the tests definition class with plugin-specific parameters.
|
||||
1. **Behavior tests** (``behavior`` sub-folder), which are a separate test group to check that a plugin satisfies basic OpenVINO concepts: plugin creation, multiple compiled models support, multiple synchronous and asynchronous inference requests support, and so on. See the next section with details how to instantiate the tests definition class with plugin-specific parameters.
|
||||
|
||||
2. **Single layer tests** (`single_layer_tests` sub-folder). This groups of tests checks that a particular single layer can be inferenced on a device. An example of test instantiation based on test definition from `openvino::funcSharedTests` library:
|
||||
2. **Single layer tests** (``single_layer_tests`` sub-folder). This groups of tests checks that a particular single layer can be inferenced on a device. An example of test instantiation based on test definition from ``openvino::funcSharedTests`` library:
|
||||
|
||||
- From the declaration of convolution test class we can see that it's a parametrized GoogleTest based class with the `convLayerTestParamsSet` tuple of parameters:
|
||||
@snippet single_layer/convolution.hpp test_convolution:definition
|
||||
* From the declaration of convolution test class we can see that it's a parametrized GoogleTest based class with the ``convLayerTestParamsSet`` tuple of parameters:
|
||||
|
||||
.. doxygensnippet:: src/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution.hpp
|
||||
:language: cpp
|
||||
:fragment: [test_convolution:definition]
|
||||
|
||||
- Based on that, define a set of parameters for `Template` plugin functional test instantiation:
|
||||
@snippet single_layer_tests/convolution.cpp test_convolution:declare_parameters
|
||||
* Based on that, define a set of parameters for ``Template`` plugin functional test instantiation:
|
||||
|
||||
.. doxygensnippet:: src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp
|
||||
:language: cpp
|
||||
:fragment: [test_convolution:declare_parameters]
|
||||
|
||||
- Instantiate the test itself using standard GoogleTest macro `INSTANTIATE_TEST_SUITE_P`:
|
||||
@snippet single_layer_tests/convolution.cpp test_convolution:instantiate
|
||||
* Instantiate the test itself using standard GoogleTest macro ``INSTANTIATE_TEST_SUITE_P``:
|
||||
|
||||
3. **Sub-graph tests** (`subgraph_tests` sub-folder). This group of tests is designed to tests small patterns or combination of layers. E.g. when a particular topology is being enabled in a plugin e.g. TF ResNet-50, there is no need to add the whole topology to test tests. In opposite way, a particular repetitive subgraph or pattern can be extracted from `ResNet-50` and added to the tests. The instantiation of the sub-graph tests is done in the same way as for single layer tests.
|
||||
> **Note**, such sub-graphs or patterns for sub-graph tests should be added to `openvino::ngraphFunctions` library first (this library is a pre-defined set of small `ov::Model`) and re-used in sub-graph tests after.
|
||||
.. doxygensnippet:: src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp
|
||||
:language: cpp
|
||||
:fragment: [test_convolution:instantiate]
|
||||
|
||||
4. **HETERO tests** (`subgraph_tests` sub-folder) contains tests for `HETERO` scenario (manual or automatic affinities settings, tests for `query_model`).
|
||||
3. **Sub-graph tests** (``subgraph_tests`` sub-folder). This group of tests is designed to tests small patterns or combination of layers. E.g. when a particular topology is being enabled in a plugin e.g. TF ResNet-50, there is no need to add the whole topology to test tests. In opposite way, a particular repetitive subgraph or pattern can be extracted from ``ResNet-50`` and added to the tests. The instantiation of the sub-graph tests is done in the same way as for single layer tests.
|
||||
|
||||
.. note::
|
||||
|
||||
Such sub-graphs or patterns for sub-graph tests should be added to ``openvino::ngraphFunctions`` library first (this library is a pre-defined set of small ``ov::Model``) and re-used in sub-graph tests after.
|
||||
|
||||
4. **HETERO tests** (``subgraph_tests`` sub-folder) contains tests for ``HETERO`` scenario (manual or automatic affinities settings, tests for ``query_model``).
|
||||
|
||||
5. **Other tests**, which contain tests for other scenarios and has the following types of tests:
|
||||
- Tests for execution graph
|
||||
- Etc.
|
||||
|
||||
To use these tests for your own plugin development, link the `openvino::funcSharedTests` library to your test binary and instantiate required test cases with desired parameters values.
|
||||
* Tests for execution graph
|
||||
* Other
|
||||
|
||||
> **NOTE**: A plugin may contain its own tests for use cases that are specific to hardware or need to be extensively tested.
|
||||
To use these tests for your own plugin development, link the ``openvino::funcSharedTests`` library to your test binary and instantiate required test cases with desired parameters values.
|
||||
|
||||
To build test binaries together with other build artifacts, use the `make all` command. For details, see
|
||||
[Build Plugin Using CMake*](@ref openvino_docs_ov_plugin_dg_plugin_build).
|
||||
.. note::
|
||||
|
||||
A plugin may contain its own tests for use cases that are specific to hardware or need to be extensively tested.
|
||||
|
||||
### How to Extend OpenVINO Plugin Tests
|
||||
To build test binaries together with other build artifacts, use the ``make all`` command. For details, see :doc:`Build Plugin Using CMake <openvino_docs_ov_plugin_dg_plugin_build>`.
|
||||
|
||||
How to Extend OpenVINO Plugin Tests
|
||||
+++++++++++++++++++++++++++++++++++
|
||||
|
||||
OpenVINO Plugin tests are open for contribution.
|
||||
Add common test case definitions applicable for all plugins to the `openvino::funcSharedTests` target within the OpenVINO repository. Then, any other plugin supporting corresponding functionality can instantiate the new test.
|
||||
Add common test case definitions applicable for all plugins to the ``openvino::funcSharedTests`` target within the OpenVINO repository. Then, any other plugin supporting corresponding functionality can instantiate the new test.
|
||||
|
||||
.. note::
|
||||
|
||||
When implementing a new subgraph test, add new single-layer tests for each operation of the subgraph if such test does not exist.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
> **NOTE**: When implementing a new subgraph test, add new single-layer tests for each operation of the subgraph if such test does not exist.
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
# Plugin Properties {#openvino_docs_ov_plugin_dg_properties}
|
||||
|
||||
Plugin can provide own device specific properties.
|
||||
@sphinxdirective
|
||||
|
||||
Plugin can provide own device-specific properties.
|
||||
|
||||
Property Class
|
||||
------------------------
|
||||
##############
|
||||
|
||||
OpenVINO API provides the interface ov::Property which allows to define the property and access rights. Based on that, a declaration of plugin specific properties can look as follows:
|
||||
|
||||
@snippet include/template/properties.hpp properties:public_header
|
||||
.. doxygensnippet:: src/plugins/template/include/template/properties.hpp
|
||||
:language: cpp
|
||||
:fragment: [properties:public_header]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
# Quantized models compute and restrictions {#openvino_docs_ov_plugin_dg_quantized_models}
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
One of the feature of OpenVINO is the support of quantized models with different precisions: INT8, INT4, etc.
|
||||
However, it is up to the plugin to define what exact precisions are supported by the particular HW.
|
||||
All quantized models which can be expressed in IR have a unified representation by means of *FakeQuantize* operation.
|
||||
For more details about low-precision model representation please refer to this [document](@ref openvino_docs_ie_plugin_dg_lp_representation).
|
||||
For more details about low-precision model representation please refer to this :doc:`document <openvino_docs_ie_plugin_dg_lp_representation>`.
|
||||
|
||||
Interpreting FakeQuantize at runtime
|
||||
####################################
|
||||
|
||||
### Interpreting FakeQuantize at runtime
|
||||
During the model load each plugin can interpret quantization rules expressed in *FakeQuantize* operations:
|
||||
- Independently based on the definition of *FakeQuantize* operation.
|
||||
- Using a special library of low-precision transformations (LPT) which applies common rules for generic operations,
|
||||
such as Convolution, Fully-Connected, Eltwise, etc., and translates "fake-quantized" models into models with low-precision operations.
|
||||
|
||||
* Independently based on the definition of *FakeQuantize* operation.
|
||||
* Using a special library of low-precision transformations (LPT) which applies common rules for generic operations, such as Convolution, Fully-Connected, Eltwise, etc., and translates "fake-quantized" models into models with low-precision operations.
|
||||
|
||||
Here we provide only a high-level overview of the interpretation rules of FakeQuantize.
|
||||
At runtime each FakeQuantize can be split into two independent operations: **Quantize** and **Dequantize**.
|
||||
@@ -17,33 +22,47 @@ The former one is aimed to transform the input data into the target precision wh
|
||||
In practice *Dequantize* operations can be propagated forward through the linear operations, such as *Convolution* or *Fully-Connected*,
|
||||
and in some cases fused with the following *Quantize* operation for the next layer into the so-called *Requantize* operation (see Fig. 1).
|
||||
|
||||
![qdq_propagation]
|
||||
<div align="center">Figure 1. Quantization operations propagation at runtime. Q, DQ, RQ stand for Quantize, Dequantize, and Requantize correspondingly.</div>
|
||||
.. image:: _static/images/qdq_propagation.png
|
||||
|
||||
Figure 1. Quantization operations propagation at runtime. Q, DQ, RQ stand for Quantize, Dequantize, and Requantize correspondingly.
|
||||
|
||||
From the calculation standpoint, the FakeQuantize formula also is split into two parts accordingly:
|
||||
`output = round((x - input_low) / (input_high - input_low) * (levels-1)) / (levels-1) * (output_high - output_low) + output_low`
|
||||
|
||||
``output = round((x - input_low) / (input_high - input_low) * (levels-1)) / (levels-1) * (output_high - output_low) + output_low``
|
||||
|
||||
The first part of this formula represents *Quantize* operation:
|
||||
`q = round((x - input_low) / (input_high - input_low) * (levels-1))`
|
||||
|
||||
``q = round((x - input_low) / (input_high - input_low) * (levels-1))``
|
||||
|
||||
The second is responsible for the dequantization:
|
||||
`r = q / (levels-1) * (output_high - output_low) + output_low`
|
||||
|
||||
``r = q / (levels-1) * (output_high - output_low) + output_low``
|
||||
|
||||
From the scale/zero-point notation standpoint the latter formula can be written as follows:
|
||||
`r = (output_high - output_low) / (levels-1) * (q + output_low / (output_high - output_low) * (levels-1))`
|
||||
|
||||
``r = (output_high - output_low) / (levels-1) * (q + output_low / (output_high - output_low) * (levels-1))``
|
||||
|
||||
Thus we can define:
|
||||
- **Scale** as `(output_high - output_low) / (levels-1)`
|
||||
- **Zero-point** as `-output_low / (output_high - output_low) * (levels-1)`
|
||||
|
||||
> **NOTE**: During the quantization process the values `input_low`, `input_high`, `output_low`, `output_high` are selected so that to map a floating-point zero exactly to an integer value (zero-point) and vice versa.
|
||||
* **Scale** as ``(output_high - output_low) / (levels-1)``
|
||||
* **Zero-point** as ``-output_low / (output_high - output_low) * (levels-1)``
|
||||
|
||||
.. note::
|
||||
During the quantization process the values ``input_low``, ``input_high``, ``output_low``, ``output_high`` are selected so that to map a floating-point zero exactly to an integer value (zero-point) and vice versa.
|
||||
|
||||
Quantization specifics and restrictions
|
||||
#######################################
|
||||
|
||||
## Quantization specifics and restrictions
|
||||
In general, OpenVINO can represent and execute quantized models from different sources. However, the Post-training Optimization Tool (POT)
|
||||
is considered the default way to get optimized models. Since the POT supports HW-aware quantization it means that specific rules can be implemented in it for
|
||||
the particular HW. However, it is reasonable to have compatibility with general-purpose HW such as CPU and GPU and support their quantization schemes.
|
||||
Below we define these rules as follows:
|
||||
- Support of mixed-precision models where some layers can be kept in the floating-point precision.
|
||||
- Per-channel quantization of weights of Convolutional and Fully-Connected layers.
|
||||
- Per-channel quantization of activations for channel-wise and element-wise operations, e.g. Depthwise Convolution, Eltwise Add/Mul, ScaleShift.
|
||||
- Symmetric and asymmetric quantization of weights and activations with the support of per-channel scales and zero-points.
|
||||
- Non-unified quantization parameters for Eltwise and Concat operations.
|
||||
- Non-quantized models output, i.e. there are no quantization parameters for it.
|
||||
|
||||
[qdq_propagation]: images/qdq_propagation.png
|
||||
* Support of mixed-precision models where some layers can be kept in the floating-point precision.
|
||||
* Per-channel quantization of weights of Convolutional and Fully-Connected layers.
|
||||
* Per-channel quantization of activations for channel-wise and element-wise operations, e.g. Depthwise Convolution, Eltwise Add/Mul, ScaleShift.
|
||||
* Symmetric and asymmetric quantization of weights and activations with the support of per-channel scales and zero-points.
|
||||
* Non-unified quantization parameters for Eltwise and Concat operations.
|
||||
* Non-quantized network output, i.e. there are no quantization parameters for it.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,49 +1,71 @@
|
||||
# Remote Context {#openvino_docs_ov_plugin_dg_remote_context}
|
||||
|
||||
ov::RemoteContext class functionality:
|
||||
- Represents device specific inference context.
|
||||
- Allows to create remote device specific tensor.
|
||||
@sphinxdirective
|
||||
|
||||
> **NOTE**: If plugin provides a public API for own Remote Context, the API should be header only and doesn't depend on the plugin library.
|
||||
ov::RemoteContext class functionality:
|
||||
|
||||
* Represents device-specific inference context.
|
||||
* Allows to create remote device specific tensor.
|
||||
|
||||
.. note::
|
||||
|
||||
If plugin provides a public API for own Remote Context, the API should be header only and does not depend on the plugin library.
|
||||
|
||||
|
||||
RemoteContext Class
|
||||
------------------------
|
||||
###################
|
||||
|
||||
OpenVINO Plugin API provides the interface ov::IRemoteContext which should be used as a base class for a plugin specific remote context. Based on that, a declaration of an compiled model class can look as follows:
|
||||
|
||||
@snippet src/remote_context.hpp remote_context:header
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.hpp
|
||||
:language: cpp
|
||||
:fragment: [remote_context:header]
|
||||
|
||||
### Class Fields
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
The example class has several fields:
|
||||
|
||||
- `m_name` - Device name.
|
||||
- `m_property` - Device specific context properties. It can be used to cast RemoteContext to device specific type.
|
||||
* ``m_name`` - Device name.
|
||||
* ``m_property`` - Device-specific context properties. It can be used to cast RemoteContext to device specific type.
|
||||
|
||||
### RemoteContext Constructor
|
||||
RemoteContext Constructor
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
This constructor should initialize the remote context device name and properties.
|
||||
|
||||
@snippet src/remote_context.cpp remote_context:ctor
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [remote_context:ctor]
|
||||
|
||||
### get_device_name()
|
||||
get_device_name()
|
||||
++++++++++++++++++
|
||||
|
||||
The function returns the device name from the remote context.
|
||||
|
||||
@snippet src/remote_context.cpp remote_context:get_device_name
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [remote_context:get_device_name]
|
||||
|
||||
### get_property()
|
||||
get_property()
|
||||
+++++++++++++++
|
||||
|
||||
The implementation returns the remote context properties.
|
||||
|
||||
@snippet src/remote_context.cpp remote_context:get_property
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [remote_context:get_property]
|
||||
|
||||
|
||||
### create_tensor()
|
||||
create_tensor()
|
||||
+++++++++++++++
|
||||
|
||||
The method creates device specific remote tensor.
|
||||
|
||||
@snippet src/remote_context.cpp remote_context:create_tensor
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [remote_context:create_tensor]
|
||||
|
||||
The next step to support device specific tensors is a creation of device specific :doc:`Remote Tensor <openvino_docs_ov_plugin_dg_remote_tensor>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
The next step to support device specific tensors is a creation of device specific [Remote Tensor](@ref openvino_docs_ov_plugin_dg_remote_tensor) class.
|
||||
|
||||
@@ -1,30 +1,39 @@
|
||||
# Remote Tensor {#openvino_docs_ov_plugin_dg_remote_tensor}
|
||||
|
||||
ov::RemoteTensor class functionality:
|
||||
- Provide an interface to work with device specific memory.
|
||||
@sphinxdirective
|
||||
|
||||
> **NOTE**: If plugin provides a public API for own Remote Tensor, the API should be header only and doesn't depend on the plugin library.
|
||||
ov::RemoteTensor class functionality:
|
||||
|
||||
* Provides an interface to work with device-specific memory.
|
||||
|
||||
.. note::
|
||||
|
||||
If plugin provides a public API for own Remote Tensor, the API should be header only and does not depend on the plugin library.
|
||||
|
||||
|
||||
Device Specific Remote Tensor Public API
|
||||
------------------------------------------
|
||||
########################################
|
||||
|
||||
The public interface to work with device specific remote tensors should have header only implementation and doesn't depend on the plugin library.
|
||||
|
||||
@snippet include/template/remote_tensor.hpp remote_tensor:public_header
|
||||
.. doxygensnippet:: src/plugins/template/include/template/remote_tensor.hpp
|
||||
:language: cpp
|
||||
:fragment: [remote_tensor:public_header]
|
||||
|
||||
The implementation below has several methods:
|
||||
|
||||
### type_check()
|
||||
type_check()
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
Static method is used to understand that some abstract remote tensor can be casted to this particular remote tensor type.
|
||||
|
||||
### get_data()
|
||||
get_data()
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
The set of methods (specific for the example, other implementation can have another API) which are helpers to get an access to remote data.
|
||||
|
||||
Device Specific Internal tensor implementation
|
||||
-----------------------------------------------
|
||||
Device-Specific Internal tensor implementation
|
||||
##############################################
|
||||
|
||||
The plugin should have the internal implementation of remote tensor which can communicate with public API.
|
||||
The example contains the implementation of remote tensor which wraps memory from stl vector.
|
||||
@@ -33,55 +42,70 @@ OpenVINO Plugin API provides the interface ov::IRemoteTensor which should be use
|
||||
|
||||
The example implementation have two remote tensor classes:
|
||||
|
||||
- Internal type dependent implementation which has as an template argument the vector type and create the type specific tensor.
|
||||
- The type independent implementation which works with type dependent tensor inside.
|
||||
* Internal type dependent implementation which has as an template argument the vector type and create the type specific tensor.
|
||||
* The type independent implementation which works with type dependent tensor inside.
|
||||
|
||||
Based on that, an implementation of a type independent remote tensor class can look as follows:
|
||||
|
||||
@snippet src/remote_context.cpp vector_impl:implementation
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [vector_impl:implementation]
|
||||
|
||||
The implementation provides a helper to get wrapped stl tensor and overrides all important methods of ov::IRemoteTensor class and recall the type dependent implementation.
|
||||
|
||||
The type dependent remote tensor has the next implementation:
|
||||
|
||||
@snippet src/remote_context.cpp vector_impl_t:implementation
|
||||
.. doxygensnippet:: src/plugins/template/src/remote_context.cpp
|
||||
:language: cpp
|
||||
:fragment: [vector_impl_t:implementation]
|
||||
|
||||
### Class Fields
|
||||
Class Fields
|
||||
++++++++++++
|
||||
|
||||
The class has several fields:
|
||||
|
||||
- `m_element_type` - Tensor element type.
|
||||
- `m_shape` - Tensor shape.
|
||||
- `m_strides` - Tensor strides.
|
||||
- `m_data` - Wrapped vector.
|
||||
- `m_dev_name` - Device name.
|
||||
- `m_properties` - Remote tensor specific properties which can be used to detect the type of the remote tensor.
|
||||
* ``m_element_type`` - Tensor element type.
|
||||
* ``m_shape`` - Tensor shape.
|
||||
* ``m_strides`` - Tensor strides.
|
||||
* ``m_data`` - Wrapped vector.
|
||||
* ``m_dev_name`` - Device name.
|
||||
* ``m_properties`` - Remote tensor specific properties which can be used to detect the type of the remote tensor.
|
||||
|
||||
### VectorTensorImpl()
|
||||
VectorTensorImpl()
|
||||
++++++++++++++++++
|
||||
|
||||
The constructor of remote tensor implementation. Creates a vector with data, initialize device name and properties, updates shape, element type and strides.
|
||||
|
||||
|
||||
### get_element_type()
|
||||
get_element_type()
|
||||
++++++++++++++++++
|
||||
|
||||
The method returns tensor element type.
|
||||
|
||||
### get_shape()
|
||||
get_shape()
|
||||
+++++++++++
|
||||
|
||||
The method returns tensor shape.
|
||||
|
||||
### get_strides()
|
||||
get_strides()
|
||||
+++++++++++++
|
||||
|
||||
The method returns tensor strides.
|
||||
|
||||
### set_shape()
|
||||
set_shape()
|
||||
+++++++++++
|
||||
|
||||
The method allows to set new shapes for the remote tensor.
|
||||
|
||||
### get_properties()
|
||||
get_properties()
|
||||
++++++++++++++++
|
||||
|
||||
The method returns tensor specific properties.
|
||||
|
||||
### get_device_name()
|
||||
get_device_name()
|
||||
+++++++++++++++++
|
||||
|
||||
The method returns tensor specific device name.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -9,10 +9,11 @@
|
||||
openvino_docs_ov_plugin_dg_quantized_models
|
||||
openvino_docs_OV_UG_lpt
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
The guides below provides extra information about specific features of OpenVINO needed for understanding during OpenVINO plugin development:
|
||||
|
||||
* [Quantized networks](@ref openvino_docs_ov_plugin_dg_quantized_models)
|
||||
* [Low precision transformations](@ref openvino_docs_OV_UG_lpt) guide
|
||||
* [Writing OpenVINO™ transformations](@ref openvino_docs_transformations) guide
|
||||
* :doc:`Quantized networks <openvino_docs_ov_plugin_dg_quantized_models>`
|
||||
* :doc:`Low precision transformations guide <openvino_docs_OV_UG_lpt>`
|
||||
* :doc:`Writing OpenVINO™ transformations guide <openvino_docs_transformations>`
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
<tab type="user" title="VariadicSplitTransformation" url="@ref openvino_docs_OV_UG_lpt_VariadicSplitTransformation"/>
|
||||
</tab>
|
||||
<tab type="user" title="Step 4. Cleanup transformations" url="@ref openvino_docs_OV_UG_lpt_step4_cleanup">
|
||||
<tab type="user" title="EliminateFakeQuantizeTransformation" url="@ref openvino_docs_OV_UG_lpt_EliminateFakeQuantizeTransformation"/>
|
||||
<tab type="user" title="FoldConvertTransformation" url="@ref openvino_docs_OV_UG_lpt_FoldConvertTransformation"/>
|
||||
<tab type="user" title="FoldFakeQuantizeTransformation" url="@ref openvino_docs_OV_UG_lpt_FoldFakeQuantizeTransformation"/>
|
||||
<tab type="user" title="FuseConvertTransformation" url="@ref openvino_docs_OV_UG_lpt_FuseConvertTransformation"/>
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# AvgPoolPrecisionPreserved Attribute {#openvino_docs_OV_UG_lpt_AvgPoolPrecisionPreserved}
|
||||
|
||||
ngraph::AvgPoolPrecisionPreservedAttribute class represents the `AvgPoolPrecisionPreserved` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
Utility attribute, which is used only during `AvgPool` operation, precision preserved property definition.
|
||||
:ref:`ngraph::AvgPoolPrecisionPreservedAttribute <doxid-classngraph_1_1_avg_pool_precision_preserved_attribute>` class represents the ``AvgPoolPrecisionPreserved`` attribute.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | Yes |
|
||||
| Defined | Operation |
|
||||
| Properties | value (boolean) |
|
||||
Utility attribute, which is used only during ``AvgPool`` operation, precision preserved property definition.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- Yes
|
||||
* - Defined
|
||||
- Operation
|
||||
* - Properties
|
||||
- value (boolean)
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# IntervalsAlignment Attribute {#openvino_docs_OV_UG_lpt_IntervalsAlignment}
|
||||
|
||||
ngraph::IntervalsAlignmentAttribute class represents the `IntervalsAlignment` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
The attribute defines a subgraph with the same quantization intervals alignment. `FakeQuantize` operations are included. The attribute is used by quantization operations.
|
||||
:ref:`ngraph::IntervalsAlignmentAttribute <doxid-classngraph_1_1_intervals_alignment_attribute>` class represents the ``IntervalsAlignment`` attribute.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | Yes |
|
||||
| Defined | Operation |
|
||||
| Properties | combined interval, minimal interval, minimal levels, preferable precisions |
|
||||
The attribute defines a subgraph with the same quantization intervals alignment. ``FakeQuantize`` operations are included. The attribute is used by quantization operations.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- Yes
|
||||
* - Defined
|
||||
- Operation
|
||||
* - Properties
|
||||
- combined interval, minimal interval, minimal levels, preferable precisions
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# PrecisionPreserved Attribute {#openvino_docs_OV_UG_lpt_PrecisionPreserved}
|
||||
|
||||
ngraph::PrecisionPreservedAttribute class represents the `PrecisionPreserved` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
:ref:`ngraph::PrecisionPreservedAttribute <doxid-classngraph_1_1_precision_preserved_attribute>` class represents the ``PrecisionPreserved`` attribute.
|
||||
|
||||
The attribute defines a precision preserved operation. If the attribute is absent, then an operation is not precision preserved.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | Yes |
|
||||
| Defined | Operation |
|
||||
| Properties | value (boolean) |
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- Yes
|
||||
* - Defined
|
||||
- Operation
|
||||
* - Properties
|
||||
- value (boolean)
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# Precisions Attribute {#openvino_docs_OV_UG_lpt_Precisions}
|
||||
|
||||
ngraph::PrecisionsAttribute class represents the `Precisions` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
:ref:`ngraph::PrecisionsAttribute <doxid-classngraph_1_1_precisions_attribute>` class represents the ``Precisions`` attribute.
|
||||
|
||||
The attribute defines precision which is required for input/output port or an operation.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | Yes |
|
||||
| Defined | Operation, input port, output port |
|
||||
| Properties | precisions |
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- Yes
|
||||
* - Defined
|
||||
- Operation, input port, output port
|
||||
* - Properties
|
||||
- precisions
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# QuantizationAlignment Attribute {#openvino_docs_OV_UG_lpt_QuantizationAlignment}
|
||||
|
||||
ngraph::QuantizationAlignmentAttribute class represents the `QuantizationAlignment` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
The attribute defines a subgraph with the same quantization alignment. `FakeQuantize` operations are not included. The attribute is used by quantization operations.
|
||||
:ref:`ngraph::QuantizationAlignmentAttribute <doxid-classngraph_1_1_quantization_alignment_attribute>` class represents the ``QuantizationAlignment`` attribute.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | Yes |
|
||||
| Defined | Operation |
|
||||
| Properties | value (boolean) |
|
||||
The attribute defines a subgraph with the same quantization alignment. ``FakeQuantize`` operations are not included. The attribute is used by quantization operations.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- Yes
|
||||
* - Defined
|
||||
- Operation
|
||||
* - Properties
|
||||
- value (boolean)
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
# QuantizationGranularity Attribute {#openvino_docs_OV_UG_lpt_QuantizationGranularity}
|
||||
|
||||
ngraph::QuantizationAttribute class represents the `QuantizationGranularity` attribute.
|
||||
@sphinxdirective
|
||||
|
||||
ngraph::QuantizationAttribute class represents the ``QuantizationGranularity`` attribute.
|
||||
|
||||
The attribute defines quantization granularity of operation inputs.
|
||||
|
||||
| Property name | Values |
|
||||
|---------------|----------------------------------------------|
|
||||
| Required | No |
|
||||
| Defined | Input ports |
|
||||
| Properties | Quantization granularity |
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Property name
|
||||
- Values
|
||||
* - Required
|
||||
- No
|
||||
* - Defined
|
||||
- Input ports
|
||||
* - Properties
|
||||
- Quantization granularity
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -15,305 +15,455 @@
|
||||
Step 3. Main transformations <openvino_docs_OV_UG_lpt_step3_main>
|
||||
Step 4. Cleanup transformations <openvino_docs_OV_UG_lpt_step4_cleanup>
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
## Introduction
|
||||
Introduction
|
||||
############
|
||||
|
||||
Low precision transformations (known as LPT) are a set of nGraph transformations, which are combined in one library. The library is mandatory part of OpenVINO to infer quantized model in low precision with the maximum performance on Intel CPU, GPU and ARM platforms. The library includes more than 45 transformations and supports more then 30 operations. Some transformations are mandatory, some of them are optional and developed for specific device.
|
||||
|
||||
The goal of Low Precision Transformations (LPT) is to transform a quantized model from its original precision (FP16 or FP32) to a low precision (INT8: `signed int8` or `unsigned int8`), so that it is prepared for low precision inference in OpenVINO™ plugin. It is achieved by two main principles:
|
||||
1. `FakeQuantize` operation decomposition to two parts:
|
||||
- part #1: quantize operation - new `FakeQuantize` operation with output quantization intervals in low precision range (signed int8: [-128, 127] or [-127, 127], unsigned int8: [0, 255] or [0, 256]) and with low precision output (`signed int8` or `unsigned int8`),
|
||||
- part #2: dequantization operations with low precision input and original precision output.
|
||||
The goal of Low Precision Transformations (LPT) is to transform a quantized model from its original precision (FP16 or FP32) to a low precision (INT8: ``signed int8`` or ``unsigned int8``), so that it is prepared for low precision inference in OpenVINO™ plugin. It is achieved by two main principles:
|
||||
|
||||
1. ``FakeQuantize`` operation decomposition to two parts:
|
||||
|
||||
* part 1: quantize operation - new ``FakeQuantize`` operation with output quantization intervals in low precision range (signed int8: [-128, 127] or [-127, 127], unsigned int8: [0, 255] or [0, 256]) and with low precision output (``signed int8`` or ``unsigned int8``).
|
||||
|
||||
* part 2: dequantization operations with low precision input and original precision output.
|
||||
|
||||
2. Propagation of the dequantization operation through original model's operations. It is done to avoid dequantization operations before original model operations, thus the quantize operations with low precision output remain before the original model operations.
|
||||
|
||||
As result, operation input tensor precisions will be changed from original to low precision and operations can be inferred by OpenVINO™ plugin in low precision.
|
||||
|
||||
For a more detailed description on how to quantize a model, see the [Low precision tools](#low-precision-tools) section below. For more information about model quantization, refer to **Brief History of Lower Precision in Deep Learning** section in [this whitepaper](https://software.intel.com/en-us/articles/lower-numerical-precision-deep-learning-inference-and-training).
|
||||
For a more detailed description on how to quantize a model, see the `Low precision tools <#low-precision-tools>`__ section below. For more information about model quantization, refer to **Brief History of Lower Precision in Deep Learning** section in `this whitepaper <https://software.intel.com/en-us/articles/lower-numerical-precision-deep-learning-inference-and-training>`__.
|
||||
|
||||
## Input model requirements
|
||||
Input model requirements
|
||||
########################
|
||||
|
||||
LPT transformations propagate dequantization operations through the following operations:
|
||||
* [Add-1](@ref openvino_docs_ops_arithmetic_Add_1)
|
||||
* [AvgPool-1](@ref openvino_docs_ops_pooling_AvgPool_1)
|
||||
* [Clamp-1](@ref openvino_docs_ops_activation_Clamp_1)
|
||||
* [Concat-1](@ref openvino_docs_ops_movement_Concat_1)
|
||||
* [Convolution-1](@ref openvino_docs_ops_convolution_Convolution_1)
|
||||
* [ConvolutionBackpropData-1](@ref openvino_docs_ops_convolution_ConvolutionBackpropData_1)
|
||||
* [DepthToSpace-1](@ref openvino_docs_ops_movement_DepthToSpace_1)
|
||||
* [FakeQuantize-1](@ref openvino_docs_ops_quantization_FakeQuantize_1)
|
||||
* [GroupConvolution-1](@ref openvino_docs_ops_convolution_GroupConvolution_1)
|
||||
* [Interpolate-1](@ref openvino_docs_ops_image_Interpolate_1)
|
||||
* [Interpolate-4](@ref openvino_docs_ops_image_Interpolate_4)
|
||||
* [MatMul-1](@ref openvino_docs_ops_matrix_MatMul_1)
|
||||
* [MaxPool-1](@ref openvino_docs_ops_pooling_MaxPool_1)
|
||||
* [Multiply-1](@ref openvino_docs_ops_arithmetic_Multiply_1)
|
||||
* [MVN-1](@ref openvino_docs_ops_normalization_MVN_1)
|
||||
* [NormalizeL2-1](@ref openvino_docs_ops_normalization_NormalizeL2_1)
|
||||
* [PRelu-1](@ref openvino_docs_ops_activation_PReLU_1)
|
||||
* [ReduceMax-1](@ref openvino_docs_ops_reduction_ReduceMax_1)
|
||||
* [ReduceMean-1](@ref openvino_docs_ops_reduction_ReduceMean_1)
|
||||
* [ReduceMin-1](@ref openvino_docs_ops_reduction_ReduceMin_1)
|
||||
* [ReduceSum-1](@ref openvino_docs_ops_reduction_ReduceSum_1)
|
||||
* [Relu-1](@ref openvino_docs_ops_activation_ReLU_1)
|
||||
* [Reshape-1](@ref openvino_docs_ops_shape_Reshape_1)
|
||||
* [Split-1](@ref openvino_docs_ops_movement_Split_1)
|
||||
* [Squeeze-1](@ref openvino_docs_ops_shape_Reshape_1)
|
||||
* [StridedSlice-1](@ref openvino_docs_ops_movement_StridedSlice_1)
|
||||
* [Transpose-1](@ref openvino_docs_ops_movement_Transpose_1)
|
||||
* [Gather-7](@ref openvino_docs_ops_movement_Gather_7)
|
||||
* [Gather-8](@ref openvino_docs_ops_movement_Gather_8)
|
||||
* [Unsqueeze-1](@ref openvino_docs_ops_shape_Unsqueeze_1)
|
||||
* [VariadicSplit-1](@ref openvino_docs_ops_movement_VariadicSplit_1)
|
||||
|
||||
* :doc:`Add-1 <openvino_docs_ops_arithmetic_Add_1>`
|
||||
* :doc:`AvgPool-1 <openvino_docs_ops_pooling_AvgPool_1>`
|
||||
* :doc:`Clamp-1 <openvino_docs_ops_activation_Clamp_1>`
|
||||
* :doc:`Concat-1 <openvino_docs_ops_movement_Concat_1>`
|
||||
* :doc:`Convolution-1 <openvino_docs_ops_convolution_Convolution_1>`
|
||||
* :doc:`ConvolutionBackpropData-1 <openvino_docs_ops_convolution_ConvolutionBackpropData_1>`
|
||||
* :doc:`DepthToSpace-1 <openvino_docs_ops_movement_DepthToSpace_1>`
|
||||
* :doc:`FakeQuantize-1 <openvino_docs_ops_quantization_FakeQuantize_1>`
|
||||
* :doc:`GroupConvolution-1 <openvino_docs_ops_convolution_GroupConvolution_1>`
|
||||
* :doc:`Interpolate-1 <openvino_docs_ops_image_Interpolate_1>`
|
||||
* :doc:`Interpolate-4 <openvino_docs_ops_image_Interpolate_4>`
|
||||
* :doc:`MatMul-1 <openvino_docs_ops_matrix_MatMul_1>`
|
||||
* :doc:`MaxPool-1 <openvino_docs_ops_pooling_MaxPool_1>`
|
||||
* :doc:`Multiply-1 <openvino_docs_ops_arithmetic_Multiply_1>`
|
||||
* :doc:`MVN-1 <openvino_docs_ops_normalization_MVN_1>`
|
||||
* :doc:`NormalizeL2-1 <openvino_docs_ops_normalization_NormalizeL2_1>`
|
||||
* :doc:`PRelu-1 <openvino_docs_ops_activation_PReLU_1>`
|
||||
* :doc:`ReduceMax-1 <openvino_docs_ops_reduction_ReduceMax_1>`
|
||||
* :doc:`ReduceMean-1 <openvino_docs_ops_reduction_ReduceMean_1>`
|
||||
* :doc:`ReduceMin-1 <openvino_docs_ops_reduction_ReduceMin_1>`
|
||||
* :doc:`ReduceSum-1 <openvino_docs_ops_reduction_ReduceSum_1>`
|
||||
* :doc:`Relu-1 <openvino_docs_ops_activation_ReLU_1>`
|
||||
* :doc:`Reshape-1 <openvino_docs_ops_shape_Reshape_1>`
|
||||
* :doc:`Split-1 <openvino_docs_ops_movement_Split_1>`
|
||||
* :doc:`Squeeze-1 <openvino_docs_ops_shape_Reshape_1>`
|
||||
* :doc:`StridedSlice-1 <openvino_docs_ops_movement_StridedSlice_1>`
|
||||
* :doc:`Transpose-1 <openvino_docs_ops_movement_Transpose_1>`
|
||||
* :doc:`Gather-7 <openvino_docs_ops_movement_Gather_7>`
|
||||
* :doc:`Gather-8 <openvino_docs_ops_movement_Gather_8>`
|
||||
* :doc:`Unsqueeze-1 <openvino_docs_ops_shape_Unsqueeze_1>`
|
||||
* :doc:`VariadicSplit-1 <openvino_docs_ops_movement_VariadicSplit_1>`
|
||||
|
||||
If operation is not supported by LPT then dequantization operation will not be propagated, input tensor precisions will not be changed to low precision and operation will be executed in original precision.
|
||||
|
||||
For example, if you would like to infer a model with `Convolution` operation in low precision then the model can look as on picture below:
|
||||
For example, if you would like to infer a model with ``Convolution`` operation in low precision then the model can look as on picture below:
|
||||
|
||||

|
||||
.. image:: _static/images/model_fq_and_convolution.common.svg
|
||||
:alt: Quantized Convolution
|
||||
|
||||
> There are several supported quantization approaches on activations and on weights. All supported approaches are described in [Quantization approaches](#quantization-approaches) section below. In demonstrated model [FakeQuantize operation quantization](#fakequantize-operation) approach is used.
|
||||
There are several supported quantization approaches on activations and on weights. All supported approaches are described in `Quantization approaches <#quantization-approaches>`__ section below. In demonstrated model `FakeQuantize operation quantization <#fakequantize-operation>`__ approach is used.
|
||||
|
||||
### <a name="low-precision-tools"></a> Low precision tools
|
||||
For more details on how to get a quantized model, refer to [Model Optimization](@ref openvino_docs_model_optimization_guide) document.
|
||||
Low precision tools
|
||||
+++++++++++++++++++
|
||||
|
||||
For more details on how to get a quantized model, refer to :doc:`Model Optimization <openvino_docs_model_optimization_guide>` document.
|
||||
|
||||
Quantization approaches
|
||||
#######################
|
||||
|
||||
## <a name="quantization-approaches"></a> Quantization approaches
|
||||
LPT transformations support two quantization approaches:
|
||||
1. `FakeQuantize` operation,
|
||||
|
||||
1. ``FakeQuantize`` operation,
|
||||
2. Quantize and dequantization operations
|
||||
|
||||
Let's explore both approaches in details on `Convolution` operation.
|
||||
### <a name="fakequantize-operation"></a> FakeQuantize operation
|
||||
In this case `FakeQuantize` operation is used on activations and quantized constant on weights. Original input model:
|
||||
Let's explore both approaches in details on ``Convolution`` operation.
|
||||
|
||||

|
||||
FakeQuantize operation
|
||||
++++++++++++++++++++++
|
||||
|
||||
### Quantize and dequantization operations
|
||||
In this case `FakeQuantize` operation and `Convert` are used as quantize operation and return quantized low precision tensor. After quantize operation on activations there are `Convert` and dequantization operations to compensate decomposition. Original input model:
|
||||
In this case ``FakeQuantize`` operation is used on activations and quantized constant on weights. Original input model:
|
||||
|
||||

|
||||
.. image:: _static/images/model_fq_and_convolution.common.svg
|
||||
:alt: Original model with FakeQuantize
|
||||
|
||||
In both cases result is the same. In LPT result model you can see, that:
|
||||
1. if necessary, `FakeQuantize` operations on activations were decomposed to two part:
|
||||
- new `FakeQuantize`operation with updated output intervals in low precision range and low precision output,
|
||||
- dequantization operations on activations;
|
||||
2. if necessary, an existing `FakeQuantize` decomposition can be reworked to get better precision;
|
||||
3. dequantization operations were propagated through `Convolution`.
|
||||
|
||||
Quantize and dequantization operations
|
||||
++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
In this case ``FakeQuantize`` operation and ``Convert`` are used as quantize operation and return quantized low precision tensor. After quantize operation on activations there are ``Convert`` and dequantization operations to compensate decomposition. Original input model:
|
||||
|
||||
.. image:: _static/images/model_qdq_and_convolution.common.svg
|
||||
:alt: Original model with Q/DQ
|
||||
|
||||
In both cases result is the same. In LPT result model you can see that:
|
||||
|
||||
1. if necessary, ``FakeQuantize`` operations on activations were decomposed to two part:
|
||||
|
||||
* new ``FakeQuantize`` operation with updated output intervals in low precision range and low precision output,
|
||||
* dequantization operations on activations;
|
||||
|
||||
2. if necessary, an existing ``FakeQuantize`` decomposition can be reworked to get better precision;
|
||||
|
||||
3. dequantization operations were propagated through ``Convolution``.
|
||||
|
||||
LPT result model:
|
||||
|
||||

|
||||
.. image:: _static/images/model_fq_and_convolution.transformed.svg
|
||||
:alt: Result model
|
||||
|
||||
Low precision transformations pipeline
|
||||
++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
### Low precision transformations pipeline
|
||||
LPT transformation pipeline has several steps. For each transformation inside one step pattern matcher is unique per transformation, but each operation can be assigned to several transformations.
|
||||
|
||||

|
||||
.. image:: _static/images/low_precision_transformation_pipeline.svg
|
||||
:alt: Low precision transformations pipeline
|
||||
|
||||
Inside each step LPT transformations handle input model operation by operation, applying transformation matching pattern for each transformation from the step to an operation, and execute transformation if pattern is matched. Decomposition transformation decomposes `FakeQuantize` to quantize and dequantization operations. Dequantization operations from previous transformation result is used for the current one and so on, until the end of the model is achieved.
|
||||
Inside each step LPT transformations handle input model operation by operation, applying transformation matching pattern for each transformation from the step to an operation, and execute transformation if pattern is matched. Decomposition transformation decomposes ``FakeQuantize`` to quantize and dequantization operations. Dequantization operations from previous transformation result is used for the current one and so on, until the end of the model is achieved.
|
||||
|
||||
As result, usually all operations are inferred by plugin in low precision. If plugin doesn't support an operation inference in low precision, then corresponding LPT transformation can be disabled, and input tensor precisions for the operation will not be changed. In this case the operation is inferred in the original precision.
|
||||
|
||||
Low precision transformations pipeline includes four steps:
|
||||
* [Step #1: Prerequisites](@ref openvino_docs_OV_UG_lpt_step1_prerequisites)
|
||||
* [Step #2: Markup transformations](@ref openvino_docs_OV_UG_lpt_step2_markup)
|
||||
* [Step #3: Main transformations](@ref openvino_docs_OV_UG_lpt_step3_main)
|
||||
* [Step #4: Cleanup transformations](@ref openvino_docs_OV_UG_lpt_step4_cleanup)
|
||||
|
||||
### Step 1. Prerequisites
|
||||
* :doc:`Step 1: Prerequisites <openvino_docs_OV_UG_lpt_step1_prerequisites>`
|
||||
* :doc:`Step 2: Markup transformations <openvino_docs_OV_UG_lpt_step2_markup>`
|
||||
* :doc:`Step 3: Main transformations <openvino_docs_OV_UG_lpt_step3_main>`
|
||||
* :doc:`Step 4: Cleanup transformations <openvino_docs_OV_UG_lpt_step4_cleanup>`
|
||||
|
||||
Step 1. Prerequisites
|
||||
---------------------
|
||||
|
||||
This step fuses and propagates some operations in the model to prepare for the next step. It is required for OpenVINO plugins. Transformations:
|
||||
* [PullReshapeThroughDequantization](@ref openvino_docs_OV_UG_lpt_PullReshapeThroughDequantization)
|
||||
* [PullTransposeThroughDequantization](@ref openvino_docs_OV_UG_lpt_PullTransposeThroughDequantization)
|
||||
* [LinOpSequenceFusion](@ref openvino_docs_OV_UG_lpt_LinOpSequenceFusion)
|
||||
|
||||
The model on this step is changed. There are more details in developer guide [Prerequisites transformations](@ref openvino_docs_OV_UG_lpt_step1_prerequisites).
|
||||
* :doc:`PullReshapeThroughDequantization <openvino_docs_OV_UG_lpt_PullReshapeThroughDequantization>`
|
||||
* :doc:`PullTransposeThroughDequantization <openvino_docs_OV_UG_lpt_PullTransposeThroughDequantization>`
|
||||
* :doc:`LinOpSequenceFusion <openvino_docs_OV_UG_lpt_LinOpSequenceFusion>`
|
||||
|
||||
The model on this step is changed. There are more details in developer guide :doc:`Prerequisites transformations <openvino_docs_OV_UG_lpt_step1_prerequisites>`.
|
||||
|
||||
Step 2. Markup
|
||||
--------------
|
||||
|
||||
### Step 2. Markup
|
||||
This step creates runtime attributes for operations. These attributes will be used in next step. Transformations:
|
||||
* [MarkupBias](@ref openvino_docs_OV_UG_lpt_MarkupBias)
|
||||
* [MarkupCanBeQuantized](@ref openvino_docs_OV_UG_lpt_MarkupCanBeQuantized)
|
||||
* [MarkupPrecisions](@ref openvino_docs_OV_UG_lpt_MarkupPrecisions)
|
||||
* [MarkupPerTensorQuantization](@ref openvino_docs_OV_UG_lpt_MarkupPerTensorQuantization)
|
||||
* [MarkupAvgPoolPrecisionPreserved](@ref openvino_docs_OV_UG_lpt_MarkupAvgPoolPrecisionPreserved)
|
||||
* [PropagatePrecisions](@ref openvino_docs_OV_UG_lpt_PropagatePrecisions)
|
||||
* [AlignQuantizationIntervals](@ref openvino_docs_OV_UG_lpt_AlignQuantizationIntervals)
|
||||
* [AlignQuantizationParameters](@ref openvino_docs_OV_UG_lpt_AlignQuantizationParameters)
|
||||
|
||||
The model on this step is changed: only new attributes are added to some operations. There are more details in developer guide [Markup transformations](@ref openvino_docs_OV_UG_lpt_step2_markup).
|
||||
* :doc:`MarkupBias <openvino_docs_OV_UG_lpt_MarkupBias>`
|
||||
* :doc:`MarkupCanBeQuantized <openvino_docs_OV_UG_lpt_MarkupCanBeQuantized>`
|
||||
* :doc:`MarkupPrecisions <openvino_docs_OV_UG_lpt_MarkupPrecisions>`
|
||||
* :doc:`MarkupPerTensorQuantization <openvino_docs_OV_UG_lpt_MarkupPerTensorQuantization>`
|
||||
* :doc:`MarkupAvgPoolPrecisionPreserved <openvino_docs_OV_UG_lpt_MarkupAvgPoolPrecisionPreserved>`
|
||||
* :doc:`PropagatePrecisions <openvino_docs_OV_UG_lpt_PropagatePrecisions>`
|
||||
* :doc:`AlignQuantizationIntervals <openvino_docs_OV_UG_lpt_AlignQuantizationIntervals>`
|
||||
* :doc:`AlignQuantizationParameters <openvino_docs_OV_UG_lpt_AlignQuantizationParameters>`
|
||||
|
||||
### Step 3. Main transformations, FakeQuantize decomposition and dequantization operations handling
|
||||
This step has the most transformations. These transformations can be separated in two groups: decomposition transformation and dequantization operations handling. There are more details in developer guide [Main transformations](@ref openvino_docs_OV_UG_lpt_step3_main). Transformations:
|
||||
* [AddTransformation](@ref openvino_docs_OV_UG_lpt_AddTransformation)
|
||||
* [AvgPoolTransformation](@ref openvino_docs_OV_UG_lpt_AvgPoolTransformation)
|
||||
* [ClampTransformation](@ref openvino_docs_OV_UG_lpt_AvgPoolTransformation)
|
||||
* [ConcatTransformation](@ref openvino_docs_OV_UG_lpt_ConcatTransformation)
|
||||
* [ConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_ConvolutionTransformation)
|
||||
* [ConvolutionBackpropDataTransformation](@ref openvino_docs_OV_UG_lpt_ConvolutionBackpropDataTransformation)
|
||||
* [DepthToSpaceTransformation](@ref openvino_docs_OV_UG_lpt_DepthToSpaceTransformation)
|
||||
* [FakeQuantizeDecompositionTransformation](@ref openvino_docs_OV_UG_lpt_FakeQuantizeDecompositionTransformation)
|
||||
* [FakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FakeQuantizeTransformation)
|
||||
* [InterpolateTransformation](@ref openvino_docs_OV_UG_lpt_InterpolateTransformation)
|
||||
* [GroupConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_GroupConvolutionTransformation)
|
||||
* [GatherTransformation](@ref openvino_docs_OV_UG_lpt_GatherTransformation)
|
||||
* [MatMulTransformation](@ref openvino_docs_OV_UG_lpt_MatMulTransformation)
|
||||
* [MaxPoolTransformation](@ref openvino_docs_OV_UG_lpt_MaxPoolTransformation)
|
||||
* [MultiplyTransformation](@ref openvino_docs_OV_UG_lpt_MultiplyTransformation)
|
||||
* [MVNTransformation](@ref openvino_docs_OV_UG_lpt_MVNTransformation)
|
||||
* [NormalizeL2Transformation](@ref openvino_docs_OV_UG_lpt_NormalizeL2Transformation)
|
||||
* [PReluTransformation](@ref openvino_docs_OV_UG_lpt_PReluTransformation)
|
||||
* [ReduceMaxTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMaxTransformation)
|
||||
* [ReduceMeanTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMeanTransformation)
|
||||
* [ReduceMinTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMinTransformation)
|
||||
* [ReduceSumTransformation](@ref openvino_docs_OV_UG_lpt_ReduceSumTransformation)
|
||||
* [ReluTransformation](@ref openvino_docs_OV_UG_lpt_ReluTransformation)
|
||||
* [ReshapeTransformation](@ref openvino_docs_OV_UG_lpt_ReshapeTransformation)
|
||||
* [SqueezeTransformation](@ref openvino_docs_OV_UG_lpt_SqueezeTransformation)
|
||||
* [ShuffleChannelsTransformation](@ref openvino_docs_OV_UG_lpt_ShuffleChannelsTransformation)
|
||||
* [SplitTransformation](@ref openvino_docs_OV_UG_lpt_SplitTransformation)
|
||||
* [StridedSliceTransformation](@ref openvino_docs_OV_UG_lpt_StridedSliceTransformation)
|
||||
* [TransposeTransformation](@ref openvino_docs_OV_UG_lpt_TransposeTransformation)
|
||||
* [UnsqueezeTransformation](@ref openvino_docs_OV_UG_lpt_UnsqueezeTransformation)
|
||||
* [VariadicSplitTransformation](@ref openvino_docs_OV_UG_lpt_VariadicSplitTransformation)
|
||||
The model on this step is changed: only new attributes are added to some operations. There are more details in developer guide :doc:`Markup transformations <openvino_docs_OV_UG_lpt_step2_markup>`.
|
||||
|
||||
#### Decomposition transformations
|
||||
Decomposition transformations decompose the `FakeQuantize` operation to: quantize (`FakeQuantize` with low precision output) and dequantization operations (opposite to quantize, with low precision input and the original precision output). For dequantization operations LPT uses three operations: `Convert`, `Subtract` and `Multiply`. Element-wise operations `Subtract` and `Multiply` have constants on the second branches. If dequantization operations are not handled at the end of LPT pipeline, then they will be fused back to the `FakeQuantize`.
|
||||
Step 3. Main transformations, FakeQuantize decomposition and dequantization operations handling
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
This step has the most transformations. These transformations can be separated in two groups: decomposition transformation and dequantization operations handling. There are more details in developer guide :doc:`Main transformations <openvino_docs_OV_UG_lpt_step3_main>`.
|
||||
|
||||
Transformations:
|
||||
|
||||
* :doc:`AddTransformation <openvino_docs_OV_UG_lpt_AddTransformation>`
|
||||
* :doc:`AvgPoolTransformation <openvino_docs_OV_UG_lpt_AvgPoolTransformation>`
|
||||
* :doc:`ClampTransformation <openvino_docs_OV_UG_lpt_AvgPoolTransformation>`
|
||||
* :doc:`ConcatTransformation <openvino_docs_OV_UG_lpt_ConcatTransformation>`
|
||||
* :doc:`ConvolutionTransformation <openvino_docs_OV_UG_lpt_ConvolutionTransformation>`
|
||||
* :doc:`ConvolutionBackpropDataTransformation <openvino_docs_OV_UG_lpt_ConvolutionBackpropDataTransformation>`
|
||||
* :doc:`DepthToSpaceTransformation <openvino_docs_OV_UG_lpt_DepthToSpaceTransformation>`
|
||||
* :doc:`FakeQuantizeDecompositionTransformation <openvino_docs_OV_UG_lpt_FakeQuantizeDecompositionTransformation>`
|
||||
* :doc:`FakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FakeQuantizeTransformation>`
|
||||
* :doc:`InterpolateTransformation <openvino_docs_OV_UG_lpt_InterpolateTransformation>`
|
||||
* :doc:`GroupConvolutionTransformation <openvino_docs_OV_UG_lpt_GroupConvolutionTransformation>`
|
||||
* :doc:`GatherTransformation <openvino_docs_OV_UG_lpt_GatherTransformation>`
|
||||
* :doc:`MatMulTransformation <openvino_docs_OV_UG_lpt_MatMulTransformation>`
|
||||
* :doc:`MaxPoolTransformation <openvino_docs_OV_UG_lpt_MaxPoolTransformation>`
|
||||
* :doc:`MultiplyTransformation <openvino_docs_OV_UG_lpt_MultiplyTransformation>`
|
||||
* :doc:`MVNTransformation <openvino_docs_OV_UG_lpt_MVNTransformation>`
|
||||
* :doc:`NormalizeL2Transformation <openvino_docs_OV_UG_lpt_NormalizeL2Transformation>`
|
||||
* :doc:`PReluTransformation <openvino_docs_OV_UG_lpt_PReluTransformation>`
|
||||
* :doc:`ReduceMaxTransformation <openvino_docs_OV_UG_lpt_ReduceMaxTransformation>`
|
||||
* :doc:`ReduceMeanTransformation <openvino_docs_OV_UG_lpt_ReduceMeanTransformation>`
|
||||
* :doc:`ReduceMinTransformation <openvino_docs_OV_UG_lpt_ReduceMinTransformation>`
|
||||
* :doc:`ReduceSumTransformation <openvino_docs_OV_UG_lpt_ReduceSumTransformation>`
|
||||
* :doc:`ReluTransformation <openvino_docs_OV_UG_lpt_ReluTransformation>`
|
||||
* :doc:`ReshapeTransformation <openvino_docs_OV_UG_lpt_ReshapeTransformation>`
|
||||
* :doc:`SqueezeTransformation <openvino_docs_OV_UG_lpt_SqueezeTransformation>`
|
||||
* :doc:`ShuffleChannelsTransformation <openvino_docs_OV_UG_lpt_ShuffleChannelsTransformation>`
|
||||
* :doc:`SplitTransformation <openvino_docs_OV_UG_lpt_SplitTransformation>`
|
||||
* :doc:`StridedSliceTransformation <openvino_docs_OV_UG_lpt_StridedSliceTransformation>`
|
||||
* :doc:`TransposeTransformation <openvino_docs_OV_UG_lpt_TransposeTransformation>`
|
||||
* :doc:`UnsqueezeTransformation <openvino_docs_OV_UG_lpt_UnsqueezeTransformation>`
|
||||
* :doc:`VariadicSplitTransformation <openvino_docs_OV_UG_lpt_VariadicSplitTransformation>`
|
||||
|
||||
Decomposition transformations
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Decomposition transformations decompose the ``FakeQuantize`` operation to: quantize (``FakeQuantize`` with low precision output) and dequantization operations (opposite to quantize, with low precision input and the original precision output). For dequantization operations LPT uses three operations: ``Convert``, ``Subtract`` and ``Multiply``. Element-wise operations ``Subtract`` and ``Multiply`` have constants on the second branches. If dequantization operations are not handled at the end of LPT pipeline, then they will be fused back to the ``FakeQuantize``.
|
||||
|
||||
|
||||
Original `FakeQuantize`:
|
||||

|
||||
Original ``FakeQuantize``:
|
||||
|
||||
.. image:: _static/images/fq.common.svg
|
||||
:alt: FakeQuantize operation before LPT
|
||||
|
||||
`FakeQuantize` after decomposition to quantization and dequantization operations:
|
||||

|
||||
``FakeQuantize`` after decomposition to quantization and dequantization operations:
|
||||
|
||||
.. image:: _static/images/fq.transformed.svg
|
||||
:alt: FakeQuantize operation after LPT
|
||||
|
||||
#### Dequantization operations handling transformations
|
||||
Dequantization operations handling transformations
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In this step, LPT transformations fuse dequantization operations or move them through existing model operations as much as possible.
|
||||
|
||||
Original `Convolution` operation in FP32 with dequantization operations before:
|
||||

|
||||
Original ``Convolution`` operation in FP32 with dequantization operations before:
|
||||
|
||||
`Convolution` operation in INT8 after decomposition and dequantization operations handling:
|
||||

|
||||
.. image:: _static/images/model_fq_and_convolution.common.svg
|
||||
:alt: Convolution operation before LPT
|
||||
|
||||
### Step 4: Cleanup of the result model
|
||||
LPT cleanup transformations is final stage in LPT pipeline. In this step LPT transformations clean up the result model to avoid not handled dequantization operations: fuse dequantization operations if possible (fuse at least `Convert` operations if not) to other model operations to cleanup result model. Transformations:
|
||||
* [FoldConvertTransformation](@ref openvino_docs_OV_UG_lpt_FoldConvertTransformation)
|
||||
* [FoldFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FoldFakeQuantizeTransformation)
|
||||
* [FuseConvertTransformation](@ref openvino_docs_OV_UG_lpt_FuseConvertTransformation)
|
||||
* [FuseMultiplyToFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FuseMultiplyToFakeQuantizeTransformation)
|
||||
* [FuseSubtractToFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FuseSubtractToFakeQuantizeTransformation)
|
||||
* [MultiplyToGroupConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_MultiplyToGroupConvolutionTransformation)
|
||||
``Convolution`` operation in INT8 after decomposition and dequantization operations handling:
|
||||
|
||||
There are more details in developer guide [Cleanup transformations](@ref openvino_docs_OV_UG_lpt_step4_cleanup).
|
||||
|
||||
`FakeQuantize` operation with not handled dequantization operations:
|
||||

|
||||
|
||||
`FakeQuantize` operation with fused dequantization operations:
|
||||

|
||||
.. image:: _static/images/model_fq_and_convolution.transformed.svg
|
||||
:alt: Convolution operation after LPT
|
||||
|
||||
|
||||
Step 4: Cleanup of the result model
|
||||
-----------------------------------
|
||||
|
||||
LPT cleanup transformations is final stage in LPT pipeline. In this step LPT transformations clean up the result model to avoid not handled dequantization operations: fuse dequantization operations if possible (fuse at least ``Convert`` operations if not` to other model operations to cleanup result model).
|
||||
|
||||
Transformations:
|
||||
|
||||
* :doc:`EliminateFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_EliminateFakeQuantizeTransformation>`
|
||||
* :doc:`FoldConvertTransformation <openvino_docs_OV_UG_lpt_FoldConvertTransformation>`
|
||||
* :doc:`FoldFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FoldFakeQuantizeTransformation>`
|
||||
* :doc:`FuseConvertTransformation <openvino_docs_OV_UG_lpt_FuseConvertTransformation>`
|
||||
* :doc:`FuseMultiplyToFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FuseMultiplyToFakeQuantizeTransformation>`
|
||||
* :doc:`FuseSubtractToFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FuseSubtractToFakeQuantizeTransformation>`
|
||||
* :doc:`MultiplyToGroupConvolutionTransformation <openvino_docs_OV_UG_lpt_MultiplyToGroupConvolutionTransformation>`
|
||||
|
||||
There are more details in developer guide :doc:`Cleanup transformations <openvino_docs_OV_UG_lpt_step4_cleanup>`.
|
||||
|
||||
``FakeQuantize`` operation with not handled dequantization operations:
|
||||
|
||||
.. image:: _static/images/fq.transformed.svg
|
||||
:alt: TODO: FakeQuantize operation with dequantization operations before LPT
|
||||
|
||||
``FakeQuantize`` operation with fused dequantization operations:
|
||||
|
||||
.. image:: _static/images/fq.common.svg
|
||||
:alt: TODO: FakeQuantize operation with fused operations after LPT
|
||||
|
||||
|
||||
Low precision transformations in plugin transformation pipeline
|
||||
###############################################################
|
||||
|
||||
## Low precision transformations in plugin transformation pipeline
|
||||
Typical transformation pipeline described below.
|
||||
|
||||
### Step 1. Common optimizations
|
||||
Step 1. Common optimizations
|
||||
++++++++++++++++++++++++++++
|
||||
|
||||
This step is optional for LPT but typically is presented in OpenVINO™ plugins. The step doesn't use any LPT transformation. Firstly, the step disables dequantization operations constant folding on constant subgraph on weights to prevent the lost of dequantization info on the next plugin transformations. After that, it optimizes nGraph function and convert operations to operation set 1. Typically, usage of this step is the simplest way to meet LPT requirements for the input quantized model. If plugin can guarantee that LPT input requirements are met, then this step can be skipped.
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp lpt_common
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [lpt_common]
|
||||
|
||||
### Step 2. Low precision transformations execution
|
||||
Step 2. Low precision transformations execution
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++
|
||||
This step is mandatory. It configures and runs LPT transformations.
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp lpt_execution
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [lpt_execution]
|
||||
|
||||
Step 3. Plugin-specific transformations
|
||||
+++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
### Step 3. Plugin-specific transformations
|
||||
This step is optional. It modifies the nGraph function to a device-specific operation set.
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp lpt_device
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [lpt_device]
|
||||
|
||||
## Result model overview
|
||||
Result model overview
|
||||
#####################
|
||||
|
||||
Let's explore quantized [TensorFlow* implementation of ResNet-50](https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/resnet-50-tf) model. Use [Model Downloader](@ref omz_tools_downloader) tool to download the `fp16` model from [OpenVINO™ Toolkit - Open Model Zoo repository](https://github.com/openvinotoolkit/open_model_zoo):
|
||||
```sh
|
||||
omz_downloader --name resnet-50-tf --precisions FP16-INT8
|
||||
```
|
||||
After that you should quantize model by the [Model Quantizer](@ref omz_tools_downloader) tool.
|
||||
```sh
|
||||
omz_quantizer --model_dir public/resnet-50-tf --dataset_dir <DATASET_DIR> --precisions=FP16-INT8
|
||||
```
|
||||
Let's explore quantized `TensorFlow implementation of ResNet-50 <https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/resnet-50-tf>`__ model. Use `Model Downloader <https://docs.openvino.ai/2022.3/omz_tools_downloader.html>`__ tool to download the ``fp16`` model from `OpenVINO™ Toolkit - Open Model Zoo repository <https://github.com/openvinotoolkit/open_model_zoo>`__:
|
||||
|
||||
### Inference
|
||||
.. code-block:: sh
|
||||
|
||||
omz_downloader --name resnet-50-tf --precisions FP16-INT8
|
||||
|
||||
After that you should quantize model by the `Model Quantizer <https://docs.openvino.ai/2022.3/omz_tools_downloader.html>`__ tool.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
omz_quantizer --model_dir public/resnet-50-tf --dataset_dir <DATASET_DIR> --precisions=FP16-INT8
|
||||
|
||||
|
||||
Inference
|
||||
+++++++++
|
||||
|
||||
The simplest way to infer the model and collect performance counters is :doc:`Benchmark Application <openvino_inference_engine_samples_benchmark_app_README>`.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
./benchmark_app -m resnet-50-tf.xml -d CPU -niter 1 -api sync -report_type average_counters -report_folder pc_report_dir
|
||||
|
||||
The simplest way to infer the model and collect performance counters is [Benchmark Application](../../../../samples/cpp/benchmark_app/README.md).
|
||||
```sh
|
||||
./benchmark_app -m resnet-50-tf.xml -d CPU -niter 1 -api sync -report_type average_counters -report_folder pc_report_dir
|
||||
```
|
||||
If you infer the model with the OpenVINO™ CPU plugin and collect performance counters, all operations (except last not quantized SoftMax) are executed in INT8 precision.
|
||||
|
||||
### Results analysis
|
||||
Results analysis
|
||||
++++++++++++++++
|
||||
|
||||
Result model depends on different factors:
|
||||
* The original model quantization possibility and quantization quality. For some models, some operations are not possible to be quantized by POT and NNCF tools. In this case `FakeQuantize` operations are absent before these operations and they will be inferred in original precision.
|
||||
|
||||
* The original model quantization possibility and quantization quality. For some models, some operations are not possible to be quantized by POT and NNCF tools. In this case ``FakeQuantize`` operations are absent before these operations and they will be inferred in original precision.
|
||||
* LPT customization and plugin supported operations. If plugin doesn't support INT8 inference for some operation then corresponding LPT transformation should be disabled and the operation will be inferred in original precision.
|
||||
|
||||
|
||||
Information about layer precision is stored in the performance counters that are
|
||||
available from the OpenVINO Runtime API. For example, the part of performance counters table for quantized [TensorFlow* implementation of ResNet-50](https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/resnet-50-tf) model inference on CPU Plugin looks as follows:
|
||||
available from the OpenVINO Runtime API. For example, the part of performance counters table for quantized `TensorFlow implementation of ResNet-50 <https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/resnet-50-tf>`__ model inference on CPU Plugin looks as follows:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - layerName
|
||||
- execStatus
|
||||
- layerType
|
||||
- execType
|
||||
- realTime (ms)
|
||||
- cpuTime (ms)
|
||||
* - resnet_model/batch_normalization_15/FusedBatchNorm/Add
|
||||
- EXECUTED
|
||||
- Convolution
|
||||
- jit_avx512_1x1_I8
|
||||
- 0.377
|
||||
- 0.377
|
||||
* - resnet_model/conv2d_16/Conv2D/fq_input_0
|
||||
- NOT_RUN
|
||||
- FakeQuantize
|
||||
- undef
|
||||
- 0
|
||||
- 0
|
||||
* - resnet_model/batch_normalization_16/FusedBatchNorm/Add
|
||||
- EXECUTED
|
||||
- Convolution
|
||||
- jit_avx512_I8
|
||||
- 0.499
|
||||
- 0.499
|
||||
* - resnet_model/conv2d_17/Conv2D/fq_input_0
|
||||
- NOT_RUN
|
||||
- FakeQuantize
|
||||
- undef
|
||||
- 0
|
||||
- 0
|
||||
* - resnet_model/batch_normalization_17/FusedBatchNorm/Add
|
||||
- EXECUTED
|
||||
- Convolution
|
||||
- jit_avx512_1x1_I8
|
||||
- 0.399
|
||||
- 0.399
|
||||
* - resnet_model/add_4/fq_input_0
|
||||
- NOT_RUN
|
||||
- FakeQuantize
|
||||
- undef
|
||||
- 0
|
||||
- 0
|
||||
* - resnet_model/add_4
|
||||
- NOT_RUN
|
||||
- Eltwise
|
||||
- undef
|
||||
- 0
|
||||
- 0
|
||||
* - resnet_model/add_5/fq_input_1
|
||||
- NOT_RUN
|
||||
- FakeQuantize
|
||||
- undef
|
||||
- 0
|
||||
- 0
|
||||
|
||||
|
||||
| layerName | execStatus | layerType | execType | realTime (ms) | cpuTime (ms) |
|
||||
| --------------------------------------------------------- | ---------- | ------------ | -------------------- | ------------- | ------------ |
|
||||
| resnet\_model/batch\_normalization\_15/FusedBatchNorm/Add | EXECUTED | Convolution | jit\_avx512\_1x1\_I8 | 0.377 | 0.377 |
|
||||
| resnet\_model/conv2d\_16/Conv2D/fq\_input\_0 | NOT\_RUN | FakeQuantize | undef | 0 | 0 |
|
||||
| resnet\_model/batch\_normalization\_16/FusedBatchNorm/Add | EXECUTED | Convolution | jit\_avx512\_I8 | 0.499 | 0.499 |
|
||||
| resnet\_model/conv2d\_17/Conv2D/fq\_input\_0 | NOT\_RUN | FakeQuantize | undef | 0 | 0 |
|
||||
| resnet\_model/batch\_normalization\_17/FusedBatchNorm/Add | EXECUTED | Convolution | jit\_avx512\_1x1\_I8 | 0.399 | 0.399 |
|
||||
| resnet\_model/add\_4/fq\_input\_0 | NOT\_RUN | FakeQuantize | undef | 0 | 0 |
|
||||
| resnet\_model/add\_4 | NOT\_RUN | Eltwise | undef | 0 | 0 |
|
||||
| resnet\_model/add\_5/fq\_input\_1 | NOT\_RUN | FakeQuantize | undef | 0 | 0 |
|
||||
The ``execStatus`` column of the table includes possible values:
|
||||
|
||||
* ``EXECUTED`` - layer was executed by standalone primitive,
|
||||
* ``NOT_RUN`` - layer was not executed by standalone primitive or was fused with another operation and executed in another layer primitive.
|
||||
|
||||
> The `execStatus` column of the table includes possible values:
|
||||
> - `EXECUTED` - layer was executed by standalone primitive,
|
||||
> - `NOT_RUN` - layer was not executed by standalone primitive or was fused with another operation and executed in another layer primitive.
|
||||
>
|
||||
> The `execType` column of the table includes inference primitives with specific suffixes. The layers have the following marks:
|
||||
> * Suffix `I8` for layers that had 8-bit data type input and were computed in 8-bit precision
|
||||
> * Suffix `FP32` for layers computed in 32-bit precision
|
||||
The ``execType`` column of the table includes inference primitives with specific suffixes. The layers have the following marks:
|
||||
|
||||
As result all operations (except not quantized `SoftMax` at the end of the model) in OpenVINO™ CPU plugin are inferred in low precision. Note, please, in the result model there are `FakeQuantize` operations in FP32 but the plugin responsibility is fuse these operations with previous operations. OpenVINO™ CPU plugin achieves maximum optimized inference for all operations by fusing INT8 `Convolution` with FP32 output with `FakeQuantize` operation with FP32 input and INT8 output. In this case OpenVINO™ CPU plugin uses INT8 and FP32 vectorized instructions but reports about one INT8 kernel usage for inference, which is the most optimized for this case.
|
||||
* Suffix ``I8`` for layers that had 8-bit data type input and were computed in 8-bit precision
|
||||
* Suffix ``FP32`` for layers computed in 32-bit precision
|
||||
|
||||
## Mixed precision
|
||||
If LPT input model operation output has `fp16` precision then dequantization computations still occurs in `fp32` precision. This approach is used to avoid accuracy loss in `fp16` arithmetic computations. The ultimate output of the dequantization operation will have the `fp16` precision, as expected.
|
||||
As result all operations (except not quantized ``SoftMax`` at the end of the model) in OpenVINO™ CPU plugin are inferred in low precision. Note, please, in the result model there are ``FakeQuantize`` operations in FP32 but the plugin responsibility is fuse these operations with previous operations. OpenVINO™ CPU plugin achieves maximum optimized inference for all operations by fusing INT8 ``Convolution`` with FP32 output with ``FakeQuantize`` operation with FP32 input and INT8 output. In this case OpenVINO™ CPU plugin uses INT8 and FP32 vectorized instructions but reports about one INT8 kernel usage for inference, which is the most optimized for this case.
|
||||
|
||||
Mixed precision
|
||||
###############
|
||||
|
||||
If LPT input model operation output has ``fp16`` precision then dequantization computations still occurs in ``fp32`` precision. This approach is used to avoid accuracy loss in ``fp16`` arithmetic computations. The ultimate output of the dequantization operation will have the ``fp16`` precision, as expected.
|
||||
|
||||
Customization
|
||||
#############
|
||||
|
||||
## Customization
|
||||
Low Precision Transformations can be customizable. Build-in customization options:
|
||||
|
||||
* operation precision restrictions,
|
||||
* operation per tensor quantization restrictions,
|
||||
* update precisions,
|
||||
* dequantization precision.
|
||||
|
||||
Operation precision restrictions
|
||||
++++++++++++++++++++++++++++++++
|
||||
|
||||
### Operation precision restrictions
|
||||
This option defines precisions which allowed for the operation input ports. The option value is passed as input argument for `LowPrecision` constructor. For example:
|
||||
This option defines precisions which allowed for the operation input ports. The option value is passed as input argument for ``LowPrecision`` constructor. For example:
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp lpt_supported_precisions
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [lpt_supported_precisions]
|
||||
|
||||
In provided example in result model ``Convolution`` operation inputs must have specific precisions: ``u8`` (unsigned int8) precision on input 0 (on activations) and ``i8`` (signed int8) precision on input 1 (on weights).
|
||||
|
||||
In provided example in result model `Convolution` operation inputs must have specific precisions: `u8` (unsigned int8) precision on input 0 (on activations) and `i8` (signed int8) precision on input 1 (on weights).
|
||||
Operation per tensor quantization restrictions
|
||||
++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
### Operation per tensor quantization restrictions
|
||||
This option defines if operation supports per-tensor quantization only. The option value is passed as input argument for `LowPrecision` constructor. For example:
|
||||
This option defines if operation supports per-tensor quantization only. The option value is passed as input argument for ``LowPrecision`` constructor. For example:
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp per_tensor_quantization
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [per_tensor_quantization]
|
||||
|
||||
In provided example in result model `Convolution` operations must have per-tensor quantization on input 0 (on activations).
|
||||
In provided example in result model ``Convolution`` operations must have per-tensor quantization on input 0 (on activations).
|
||||
|
||||
### Update precisions
|
||||
This option defines if each LPT transformation updates precision or not. The option value is boolean and is passed as `updatePrecisions` member of `LayerTransformation::Params` which is input argument for `LowPrecision` constructor. All transformations are affected. If `true` then low precision transformations update precisions to low precision and doesn't if `false`. Typically this option is used for plugin debugging.
|
||||
Update precisions
|
||||
++++++++++++++++++
|
||||
|
||||
### Typical customization use cases
|
||||
This option defines if each LPT transformation updates precision or not. The option value is boolean and is passed as ``updatePrecisions`` member of ``LayerTransformation::Params`` which is input argument for ``LowPrecision`` constructor. All transformations are affected. If ``true`` then low precision transformations update precisions to low precision and doesn't if ``false``. Typically this option is used for plugin debugging.
|
||||
|
||||
Plugin specific customization can be implemented via nGraph transformation callbacks. For example: asymmetric quantization support can be easily customizable via `LayerTransformation::isAsymmetricQuantization` and `WeightableLayerTransformation::isAsymmetricOnWeights` methods usage in callbacks. For example:
|
||||
Typical customization use cases
|
||||
+++++++++++++++++++++++++++++++
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp asymmetric_quantization
|
||||
Plugin specific customization can be implemented via nGraph transformation callbacks. For example: asymmetric quantization support can be easily customizable via ``LayerTransformation::isAsymmetricQuantization`` and ``WeightableLayerTransformation::isAsymmetricOnWeights`` methods usage in callbacks. For example:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [asymmetric_quantization]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -14,44 +14,89 @@
|
||||
QuantizationAlignment <openvino_docs_OV_UG_lpt_QuantizationAlignment>
|
||||
QuantizationGranularity <openvino_docs_OV_UG_lpt_QuantizationGranularity>
|
||||
|
||||
@endsphinxdirective
|
||||
Introduction
|
||||
############
|
||||
|
||||
## Introduction
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
| Name | Target | Required | Mutable |
|
||||
|-------------------------------------------------------------------------------------|--------------------------|----------|---------|
|
||||
| [AvgPoolPrecisionPreserved](@ref openvino_docs_OV_UG_lpt_AvgPoolPrecisionPreserved) | Precision | No | Yes |
|
||||
| [IntervalsAlignment](@ref openvino_docs_OV_UG_lpt_IntervalsAlignment) | Quantization interval | Yes | Yes |
|
||||
| [PrecisionPreserved](@ref openvino_docs_OV_UG_lpt_PrecisionPreserved) | Precision | Yes | Yes |
|
||||
| [Precisions](@ref openvino_docs_OV_UG_lpt_Precisions) | Precision | Yes | Yes |
|
||||
| [QuantizationAlignment](@ref openvino_docs_OV_UG_lpt_QuantizationAlignment) | Quantization granularity | Yes | Yes |
|
||||
| [QuantizationGranularity](@ref openvino_docs_OV_UG_lpt_QuantizationGranularity) | Quantization granularity | Yes | No |
|
||||
* - Name
|
||||
- Target
|
||||
- Required
|
||||
- Mutable
|
||||
* - :doc:`AvgPoolPrecisionPreserved <openvino_docs_OV_UG_lpt_AvgPoolPrecisionPreserved>`
|
||||
- Precision
|
||||
- No
|
||||
- Yes
|
||||
* - :doc:`IntervalsAlignment <openvino_docs_OV_UG_lpt_IntervalsAlignment>`
|
||||
- Quantization interval
|
||||
- Yes
|
||||
- Yes
|
||||
* - :doc:`PrecisionPreserved <openvino_docs_OV_UG_lpt_PrecisionPreserved>`
|
||||
- Precision
|
||||
- Yes
|
||||
- Yes
|
||||
* - :doc:`Precisions <openvino_docs_OV_UG_lpt_Precisions>`
|
||||
- Precision
|
||||
- Yes
|
||||
- Yes
|
||||
* - :doc:`QuantizationAlignment <openvino_docs_OV_UG_lpt_QuantizationAlignment>`
|
||||
- Quantization granularity
|
||||
- Yes
|
||||
- Yes
|
||||
* - :doc:`QuantizationGranularity <openvino_docs_OV_UG_lpt_QuantizationGranularity>`
|
||||
- Quantization granularity
|
||||
- Yes
|
||||
- No
|
||||
|
||||
|
||||
> `Target` attribute group defines attribute usage during model transformation for the best performance:
|
||||
> - `Precision` - the attribute defines the most optimal output port precision.
|
||||
> - `Quantization interval` - the attribute defines quantization interval.
|
||||
> - `Quantization alignment` - the attribute defines quantization granularity in runtime: per-channel or per-tensor quantization.
|
||||
> - `Quantization granularity` - the attribute is set by plugin to define quantization granularity: per-channel or per-tensor quantization.
|
||||
>
|
||||
> `Required` attribute group defines if attribute usage is required to get an optimal model during transformation:
|
||||
> - `Yes` - the attribute is used by all OpenVINO plugins for low-precision optimization.
|
||||
> - `No` - the attribute is used in a specific OpenVINO plugin.
|
||||
>
|
||||
> `Mutable` attribute group defines if transformation can update an existing attribute:
|
||||
> - `Yes` - the attribute can be updated by the next transformations in the pipeline. But attribute update order is still important.
|
||||
> - `No` - existing attribute can not be updated by the next transformation. Previous handled transformation has optimized a model according to the current value.
|
||||
``Target`` attribute group defines attribute usage during model transformation for the best performance:
|
||||
|
||||
`FakeQuantize` decomposition is a mandatory part of low precision transformations. Attributes used during decomposition are mandatory. Optional attributes are required only for certain operations.
|
||||
* ``Precision`` - the attribute defines the most optimal output port precision.
|
||||
* ``Quantization interval`` - the attribute defines quantization interval.
|
||||
* ``Quantization alignment`` - the attribute defines quantization granularity in runtime: per-channel or per-tensor quantization.
|
||||
* ``Quantization granularity`` - the attribute is set by plugin to define quantization granularity: per-channel or per-tensor quantization.
|
||||
|
||||
``Required`` attribute group defines if attribute usage is required to get an optimal model during transformation:
|
||||
|
||||
* ``Yes`` - the attribute is used by all OpenVINO plugins for low-precision optimization.
|
||||
* ``No`` - the attribute is used in a specific OpenVINO plugin.
|
||||
|
||||
``Mutable`` attribute group defines if transformation can update an existing attribute:
|
||||
|
||||
* ``Yes`` - the attribute can be updated by the next transformations in the pipeline. But attribute update order is still important.
|
||||
* ``No`` - existing attribute can not be updated by the next transformation. Previous handled transformation has optimized a model according to the current value.
|
||||
|
||||
``FakeQuantize`` decomposition is a mandatory part of low precision transformations. Attributes used during decomposition are mandatory. Optional attributes are required only for certain operations.
|
||||
|
||||
Attributes usage by transformations:
|
||||
|
||||
| Attribute name | Created by transformations | Used by transformations |
|
||||
|---------------------------|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
| PrecisionPreserved | MarkupPrecisions, MarkupAvgPoolPrecisionPreserved | AlignQuantizationIntervals, AlignQuantizationParameters, FakeQuantizeDecompositionTransformation, MarkupAvgPoolPrecisionPreserved |
|
||||
| AvgPoolPrecisionPreserved | MarkupAvgPoolPrecisionPreserved | |
|
||||
| Precisions | MarkupCanBeQuantized, MarkupPrecisions | FakeQuantizeDecompositionTransformation |
|
||||
| PerTensorQuantization | MarkupPerTensorQuantization | |
|
||||
| IntervalsAlignment | AlignQuantizationIntervals | FakeQuantizeDecompositionTransformation |
|
||||
| QuantizationAlignment | AlignQuantizationParameters | FakeQuantizeDecompositionTransformation |
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
> **NOTE**: The same type of attribute instances can be created in different transformations. This approach is the result of the transformation single-responsibility principle. For example, `Precision` attribute instances are created in `MarkupCanBeQuantized` and `MarkupPrecisions` transformations, but the reasons for their creation are different.
|
||||
* - Attribute name
|
||||
- Created by transformations
|
||||
- Used by transformations
|
||||
* - PrecisionPreserved
|
||||
- MarkupPrecisions, MarkupAvgPoolPrecisionPreserved
|
||||
- AlignQuantizationIntervals, AlignQuantizationParameters, FakeQuantizeDecompositionTransformation, MarkupAvgPoolPrecisionPreserved
|
||||
* - AvgPoolPrecisionPreserved
|
||||
- MarkupAvgPoolPrecisionPreserved
|
||||
-
|
||||
* - Precisions
|
||||
- MarkupCanBeQuantized, MarkupPrecisions
|
||||
- FakeQuantizeDecompositionTransformation
|
||||
* - PerTensorQuantization
|
||||
- MarkupPerTensorQuantization
|
||||
-
|
||||
* - IntervalsAlignment
|
||||
- AlignQuantizationIntervals
|
||||
- FakeQuantizeDecompositionTransformation
|
||||
* - QuantizationAlignment
|
||||
- AlignQuantizationParameters
|
||||
- FakeQuantizeDecompositionTransformation
|
||||
|
||||
.. note::
|
||||
The same type of attribute instances can be created in different transformations. This approach is the result of the transformation single-responsibility principle. For example, ``Precision`` attribute instances are created in ``MarkupCanBeQuantized`` and ``MarkupPrecisions`` transformations, but the reasons for their creation are different.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
# Step 1. Prerequisites Transformations {#openvino_docs_OV_UG_lpt_step1_prerequisites}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
Prerequisites transformations are optional. The transformations prepare a model before running other low precision transformations. The transformations do not operate with dequantization operations or update precisions. Prerequisites transformations include:
|
||||
* [PullReshapeThroughDequantization](@ref openvino_docs_OV_UG_lpt_PullReshapeThroughDequantization)
|
||||
* [PullTransposeThroughDequantization](@ref openvino_docs_OV_UG_lpt_PullTransposeThroughDequantization)
|
||||
* [LinOpSequenceFusion](@ref openvino_docs_OV_UG_lpt_LinOpSequenceFusion)
|
||||
|
||||
* :doc:`PullReshapeThroughDequantization <openvino_docs_OV_UG_lpt_PullReshapeThroughDequantization>`
|
||||
* :doc:`PullTransposeThroughDequantization <openvino_docs_OV_UG_lpt_PullTransposeThroughDequantization>`
|
||||
* :doc:`LinOpSequenceFusion <openvino_docs_OV_UG_lpt_LinOpSequenceFusion>`
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,142 +1,207 @@
|
||||
# Step 2. Markup Transformations {#openvino_docs_OV_UG_lpt_step2_markup}
|
||||
|
||||
This step defines the optimal `FakeQuantize` decomposition precisions for the best inference performance via operations markup with runtime attribute instances. Attributes are created for input and output ports and operations. Transformations do not change the operation output port precisions. A model markup low precision logic is decomposed and implemented into the following common markup transformations. The order of transformations is important:
|
||||
@sphinxdirective
|
||||
|
||||
1. [MarkupBias](@ref openvino_docs_OV_UG_lpt_MarkupBias)
|
||||
2. [MarkupCanBeQuantized](@ref openvino_docs_OV_UG_lpt_MarkupCanBeQuantized)
|
||||
3. [MarkupPrecisions](@ref openvino_docs_OV_UG_lpt_MarkupPrecisions)
|
||||
4. [MarkupPerTensorQuantization](@ref openvino_docs_OV_UG_lpt_MarkupPerTensorQuantization)
|
||||
5. [MarkupAvgPoolPrecisionPreserved](@ref openvino_docs_OV_UG_lpt_MarkupAvgPoolPrecisionPreserved)
|
||||
6. [PropagatePrecisions](@ref openvino_docs_OV_UG_lpt_PropagatePrecisions)
|
||||
7. [AlignQuantizationIntervals](@ref openvino_docs_OV_UG_lpt_AlignQuantizationIntervals)
|
||||
8. [AlignQuantizationParameters](@ref openvino_docs_OV_UG_lpt_AlignQuantizationParameters)
|
||||
This step defines the optimal ``FakeQuantize`` decomposition precisions for the best inference performance via operations markup with runtime attribute instances. Attributes are created for input and output ports and operations. Transformations do not change the operation output port precisions. A model markup low precision logic is decomposed and implemented into the following common markup transformations. The order of transformations is important:
|
||||
|
||||
The table of transformations and used attributes:
|
||||
1. :doc:`MarkupBias <openvino_docs_OV_UG_lpt_MarkupBias>`
|
||||
2. :doc:`MarkupCanBeQuantized <openvino_docs_OV_UG_lpt_MarkupCanBeQuantized>`
|
||||
3. :doc:`MarkupPrecisions <openvino_docs_OV_UG_lpt_MarkupPrecisions>`
|
||||
4. :doc:`MarkupPerTensorQuantization <openvino_docs_OV_UG_lpt_MarkupPerTensorQuantization>`
|
||||
5. :doc:`MarkupAvgPoolPrecisionPreserved <openvino_docs_OV_UG_lpt_MarkupAvgPoolPrecisionPreserved>`
|
||||
6. :doc:`PropagatePrecisions <openvino_docs_OV_UG_lpt_PropagatePrecisions>`
|
||||
7. :doc:`AlignQuantizationIntervals <openvino_docs_OV_UG_lpt_AlignQuantizationIntervals>`
|
||||
8. :doc:`AlignQuantizationParameters <openvino_docs_OV_UG_lpt_AlignQuantizationParameters>`
|
||||
|
||||
| Transformation name | Create attributes | Use attributes |
|
||||
|---------------------------------|-------------------------------|-------------------------------------------|
|
||||
| MarkupBias | Bias | |
|
||||
| MarkupCanBeQuantized | Precisions | |
|
||||
| MarkupPrecisions | Precisions,PrecisionPreserved | |
|
||||
| MarkupPerTensorQuantization | PerTensorQuantization | |
|
||||
| MarkupAvgPoolPrecisionPreserved | AvgPoolPrecisionPreserved | Precisions, PrecisionPreserved |
|
||||
| PropagatePrecisions | Precisions | Precisions, PrecisionPreserved |
|
||||
| AlignQuantizationIntervals | IntervalsAlignment | PrecisionPreserved |
|
||||
| AlignQuantizationParameters | QuantizationAlignment | PrecisionPreserved, PerTensorQuantization |
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
> **NOTE**: The same type of attribute instances can be created in different transformations. This approach is the result of the transformation single-responsibility principle. For example, `Precision` attribute instances are created in `MarkupCanBeQuantized` and `MarkupPrecisions` transformations, but the reasons for their creation are different
|
||||
* - Transformation name
|
||||
- Create attributes
|
||||
- Use attributes
|
||||
* - MarkupBias
|
||||
- Bias
|
||||
-
|
||||
* - MarkupCanBeQuantized
|
||||
- Precisions
|
||||
-
|
||||
* - MarkupPrecisions
|
||||
- Precisions,PrecisionPreserved
|
||||
-
|
||||
* - MarkupPerTensorQuantization
|
||||
- PerTensorQuantization
|
||||
-
|
||||
* - MarkupAvgPoolPrecisionPreserved
|
||||
- AvgPoolPrecisionPreserved
|
||||
- Precisions, PrecisionPreserved
|
||||
* - PropagatePrecisions
|
||||
- Precisions
|
||||
- Precisions, PrecisionPreserved
|
||||
* - AlignQuantizationIntervals
|
||||
- IntervalsAlignment
|
||||
- PrecisionPreserved
|
||||
* - AlignQuantizationParameters
|
||||
- QuantizationAlignment
|
||||
- PrecisionPreserved, PerTensorQuantization
|
||||
|
||||
.. note::
|
||||
The same type of attribute instances can be created in different transformations. This approach is the result of the transformation single-responsibility principle. For example, ``Precision`` attribute instances are created in ``MarkupCanBeQuantized`` and ``MarkupPrecisions`` transformations, but the reasons for their creation are different
|
||||
|
||||
Common markup transformations can be decomposed into simpler utility markup transformations. The order of Markup utility transformations is not important:
|
||||
* [CreateAttribute](@ref openvino_docs_OV_UG_lpt_CreateAttribute)
|
||||
* [CreatePrecisionsDependentAttribute](@ref openvino_docs_OV_UG_lpt_CreatePrecisionsDependentAttribute)
|
||||
* [PropagateThroughPrecisionPreserved](@ref openvino_docs_OV_UG_lpt_PropagateThroughPrecisionPreserved)
|
||||
* [PropagateToInput](@ref openvino_docs_OV_UG_lpt_PropagateToInput)
|
||||
* [UpdateSharedPrecisionPreserved](@ref openvino_docs_OV_UG_lpt_UpdateSharedPrecisionPreserved)
|
||||
|
||||
* :doc:`CreateAttribute <openvino_docs_OV_UG_lpt_CreateAttribute>`
|
||||
* :doc:`CreatePrecisionsDependentAttribute <openvino_docs_OV_UG_lpt_CreatePrecisionsDependentAttribute>`
|
||||
* :doc:`PropagateThroughPrecisionPreserved <openvino_docs_OV_UG_lpt_PropagateThroughPrecisionPreserved>`
|
||||
* :doc:`PropagateToInput <openvino_docs_OV_UG_lpt_PropagateToInput>`
|
||||
* :doc:`UpdateSharedPrecisionPreserved <openvino_docs_OV_UG_lpt_UpdateSharedPrecisionPreserved>`
|
||||
|
||||
Let's explore all transformations and their relations in detail, using one and the same model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup_original.svg
|
||||
|
||||
The original model key features:
|
||||
* The first `concat1` concatenation operation has not quantized `convolution1` consumer.
|
||||
* The second `concat2` concatenation operation has quantized `convolution2` consumer with requirements:
|
||||
- support `unsigned int8` on activations,
|
||||
- per-tensor quantization.
|
||||
* Between the `concat2` concatenation operation and `Convolution` there is an `AvgPool` operation, which mathematically should return an `f32` tensor. But the `MarkupAvgPoolPrecisionPreserved` transformation is active. This allows the low precision transformation, that goes after the `AvgPool`, to propagate low precision tensor to the next consumer.
|
||||
|
||||
* The first ``concat1`` concatenation operation has not quantized ``convolution1`` consumer.
|
||||
|
||||
|
||||
* The second ``concat2`` concatenation operation has quantized ``convolution2`` consumer with requirements:
|
||||
|
||||
* support ``unsigned int8`` on activations,
|
||||
* per-tensor quantization.
|
||||
|
||||
* Between the ``concat2`` concatenation operation and ``Convolution`` there is an ``AvgPool`` operation, which mathematically should return an ``f32`` tensor. But the ``MarkupAvgPoolPrecisionPreserved`` transformation is active. This allows the low precision transformation, that goes after the ``AvgPool``, to propagate low precision tensor to the next consumer.
|
||||
|
||||
Transformations are run with the following parameters:
|
||||
|
||||
@snippet snippets/lpt_intel_cpu_plugin.cpp lpt_markup_pipeline
|
||||
.. doxygensnippet:: docs/snippets/lpt_intel_cpu_plugin.cpp
|
||||
:language: cpp
|
||||
:fragment: [lpt_markup_pipeline]
|
||||
|
||||
1. MarkupCanBeQuantized
|
||||
#######################
|
||||
|
||||
## 1. MarkupCanBeQuantized
|
||||
The transformation marks operations that cannot be quantized. No attributes are required before the transformation.
|
||||
|
||||
Changes in the example model after `MarkupCanBeQuantized` transformation:
|
||||
* Not quantized `convolution1` operation is marked by the `Precisions` attribute with empty values. This attribute allows the next transformation to ignore not quantized operation.
|
||||
Changes in the example model after ``MarkupCanBeQuantized`` transformation:
|
||||
|
||||
* Not quantized ``convolution1`` operation is marked by the ``Precisions`` attribute with empty values. This attribute allows the next transformation to ignore not quantized operation.
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup1.svg
|
||||
:alt: MarkupCanBeQuantize
|
||||
|
||||
Model display features (here and below):
|
||||
|
||||
* The attributes added by the current transformation are marked in bold.
|
||||
* If attributes do not fit into one line, then one line consists of only one attribute.
|
||||
|
||||
## 2. MarkupPrecisions
|
||||
2. MarkupPrecisions
|
||||
###################
|
||||
|
||||
The transformation is required and includes two tasks:
|
||||
1. Mark operation input ports (create `Precision` attribute instance) by provided restrictions: input port index and required precisions. Restrictions are provided as input argument in `ngraph::pass::low_precision::LowPrecision` constructor.
|
||||
|
||||
1. Mark operation input ports (create ``Precision`` attribute instance) by provided restrictions: input port index and required precisions. Restrictions are provided as input argument in ``:ref:`ngraph::pass::low_precision::LowPrecision <doxid-classngraph_1_1pass_1_1low__precision_1_1_low_precision>``` constructor.
|
||||
2. Mark precision preserved operations.
|
||||
|
||||
No attributes are required before the transformation. Changes in the example model after `MarkupPrecisions` transformation:
|
||||
No attributes are required before the transformation. Changes in the example model after ``MarkupPrecisions`` transformation:
|
||||
|
||||
* Both concatenation operations are marked as precision preserved operations. It allows to propagate precision via these operations.
|
||||
* Quantized `convolution2` operation is marked by the `Precisions` attribute with `u8` precision on activations and `i8` precisions on weights according to the provided restrictions. This attribute instance allows to specify which precisions are required for quantized `Convolution` operation.
|
||||
* Quantized ``convolution2`` operation is marked by the ``Precisions`` attribute with ``u8`` precision on activations and ``i8`` precisions on weights according to the provided restrictions. This attribute instance allows to specify which precisions are required for quantized ``Convolution`` operation.
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup2.svg
|
||||
:alt: MarkupPrecisions result
|
||||
|
||||
## 3. MarkupPerTensorQuantization
|
||||
The transformation is required and marks operations (create `PerTensorQuantization` attribute instance) by provided restrictions: an operation that requires per-tensor quantization. No attributes are required before the transformation.
|
||||
3. MarkupPerTensorQuantization
|
||||
##############################
|
||||
|
||||
Changes in the example model after `MarkupPerTensorQuantization` transformation:
|
||||
* both `Convolution` operations are marked by `PerTensorQuantization`
|
||||
The transformation is required and marks operations (create ``PerTensorQuantization`` attribute instance) by provided restrictions: an operation that requires per-tensor quantization. No attributes are required before the transformation.
|
||||
|
||||
Changes in the example model after ``MarkupPerTensorQuantization`` transformation:
|
||||
|
||||
* both ``Convolution`` operations are marked by ``PerTensorQuantization``
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup3.svg
|
||||
:alt: MarkupPerTensorQuantization result
|
||||
|
||||
4. MarkupAvgPoolPrecisionPreserved
|
||||
##################################
|
||||
|
||||
The transformation is optional. ``MarkupAvgPoolPrecisionPreserved`` marks ``AvgPool`` operations as precision preserved or not precision preserved. ``AvgPool`` operation is precision preserved if next not precision preserved operation can be inferred in low precision. In other words, ``AvgPool`` operations become precision preserved operations to speed up model inference. The transformation uses ``PrecisionPreserved`` attributes created before. The transformation is combined and uses:
|
||||
|
||||
## 4. MarkupAvgPoolPrecisionPreserved
|
||||
The transformation is optional. `MarkupAvgPoolPrecisionPreserved` marks `AvgPool` operations as precision preserved or not precision preserved. `AvgPool` operation is precision preserved if next not precision preserved operation can be inferred in low precision. In other words, `AvgPool` operations become precision preserved operations to speed up model inference. The transformation uses `PrecisionPreserved` attributes created before. The transformation is combined and uses:
|
||||
* CreatePrecisionsDependentAttribute
|
||||
* PropagateThroughPrecisionPreserved
|
||||
* UpdateSharedPrecisionPreserved
|
||||
|
||||
Changes in the example model after `MarkupAvgPoolPrecisionPreserved` transformation:
|
||||
* `AvgPool` operations are marked by `PrecisionPreserved` and `AvgPoolPrecisionPreserved` (not used below).
|
||||
Changes in the example model after ``MarkupAvgPoolPrecisionPreserved`` transformation:
|
||||
|
||||
* ``AvgPool`` operations are marked by ``PrecisionPreserved`` and ``AvgPoolPrecisionPreserved`` (not used below).
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup4.svg
|
||||
:alt: arkupAvgPoolPrecisionPreserved
|
||||
|
||||
## 5. PropagatePrecisions
|
||||
The transformation is required. `PropagatePrecision` is a key transformation in the markup pipeline, which marks `FakeQuantize` output port precisions. The transformation uses `PrecisionPreserved` attribute instances created before. The transformation is combined and uses:
|
||||
5. PropagatePrecisions
|
||||
######################
|
||||
|
||||
The transformation is required. ``PropagatePrecision`` is a key transformation in the markup pipeline, which marks ``FakeQuantize`` output port precisions. The transformation uses ``PrecisionPreserved`` attribute instances created before. The transformation is combined and uses:
|
||||
|
||||
* CreateAttribute
|
||||
* PropagateThroughPrecisionPreserved
|
||||
* PropagateToInput
|
||||
|
||||
Changes in the example model after `PropagatePrecisions` transformation:
|
||||
* All precision preserved operations are marked by the `Precisions` attribute instance, which defines the required precision for the operation.
|
||||
* `FakeQuantize` operation output ports are marked by `Precisions` attribute instances, which define target precision for decomposition. In the sample model, `FakeQuantize` operations have signed intervals, but the `Precisions` attributes are initialized by `u8` (`unsigned int8`) values as the result applied during transformations restrictions for `Convolution` operations.
|
||||
Changes in the example model after ``PropagatePrecisions`` transformation:
|
||||
|
||||
* All precision preserved operations are marked by the ``Precisions`` attribute instance, which defines the required precision for the operation.
|
||||
* ``FakeQuantize`` operation output ports are marked by ``Precisions`` attribute instances, which define target precision for decomposition. In the sample model, ``FakeQuantize`` operations have signed intervals, but the ``Precisions`` attributes are initialized by ``u8`` (``unsigned int8``) values as the result applied during transformations restrictions for ``Convolution`` operations.
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup5.svg
|
||||
:alt: PropagatePrecisions
|
||||
|
||||
> **NOTE**: `AlignQuantizationIntervals` and `AlignQuantizationParameters` transformations are required if the model has quantized concatenation operations.
|
||||
.. note::
|
||||
``AlignQuantizationIntervals`` and ``AlignQuantizationParameters`` transformations are required if the model has quantized concatenation operations.
|
||||
|
||||
6. AlignQuantizationIntervals
|
||||
#############################
|
||||
|
||||
The transformation is required for models with the quantized operation. The transformation marks ``FakeQuantize`` operation and precision preserved consumers to combine quantization information from different ``FakeQuantize`` operations for future quantization intervals alignment. The transformation is combined and uses:
|
||||
|
||||
## 6. AlignQuantizationIntervals
|
||||
The transformation is required for models with the quantized operation. The transformation marks `FakeQuantize` operation and precision preserved consumers to combine quantization information from different `FakeQuantize` operations for future quantization intervals alignment. The transformation is combined and uses:
|
||||
* CreateAttribute
|
||||
* PropagateThroughPrecisionPreserved
|
||||
|
||||
Changes in the example model after `AlignQuantizationIntervals` transformation:
|
||||
* All `FakeQuantize` operations and their precision preserved consumers are marked by the `IntervalsAlignment` attribute instance.
|
||||
Changes in the example model after ``AlignQuantizationIntervals`` transformation:
|
||||
|
||||
* All ``FakeQuantize`` operations and their precision preserved consumers are marked by the ``IntervalsAlignment`` attribute instance.
|
||||
|
||||
Result model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup6.svg
|
||||
:alt: AlignQuantizationIntervals
|
||||
|
||||
7. AlignQuantizationParameters
|
||||
##############################
|
||||
|
||||
## 7. AlignQuantizationParameters
|
||||
The transformation is required for models with quantized concatenation operation. The transformation marks `FakeQuantize` precision preserved consumers to align quantization intervals. The transformation is combined and uses:
|
||||
|
||||
* CreateAttribute
|
||||
* PropagateThroughPrecisionPreserved
|
||||
* UpdateSharedPrecisionPreserved
|
||||
|
||||
|
||||
Changes in the example model after `AlignQuantizationParameters` transformation:
|
||||
* All `FakeQuantize` precision preserved consumers are marked by `QuantizationAlignment` attribute instance. `convolution1` input ports are marked by `Precisions` attribute instances with empty precisions collection. As a result, the `convolution1` operation was detected as not quantized, and the `QuantizationAlignment` attribute default value `false` does not change. `convolution2` input ports are marked by `Precisions` attribute instances with not empty precisions collection. `convolution2` operation was detected as quantized with the `PerTensorQuantization` attribute, and the `QuantizationAlignment` attribute default value changed to `true`.
|
||||
Changes in the example model after ``AlignQuantizationParameters`` transformation:
|
||||
|
||||
* All ``FakeQuantize`` precision preserved consumers are marked by ``QuantizationAlignment`` attribute instance. ``convolution1`` input ports are marked by ``Precisions`` attribute instances with empty precisions collection. As a result, the ``convolution1`` operation was detected as not quantized, and the ``QuantizationAlignment`` attribute default value ``false`` does not change. ``convolution2`` input ports are marked by ``Precisions`` attribute instances with not empty precisions collection. ``convolution2`` operation was detected as quantized with the ``PerTensorQuantization`` attribute, and the ``QuantizationAlignment`` attribute default value changed to ``true``.
|
||||
|
||||
Final model:
|
||||
|
||||

|
||||
.. image:: _static/images/step2_markup7.svg
|
||||
:alt: AlignQuantizationParameters
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,50 +1,62 @@
|
||||
# Step 3. Main Transformations {#openvino_docs_OV_UG_lpt_step3_main}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
Main transformations are the majority of low precision transformations. Transformations operate with dequantization operations. Main transformations include:
|
||||
* [AddTransformation](@ref openvino_docs_OV_UG_lpt_AddTransformation)
|
||||
* [AvgPoolTransformation](@ref openvino_docs_OV_UG_lpt_AvgPoolTransformation)
|
||||
* [ClampTransformation](@ref openvino_docs_OV_UG_lpt_AvgPoolTransformation)
|
||||
* [ConcatTransformation](@ref openvino_docs_OV_UG_lpt_ConcatTransformation)
|
||||
* [ConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_ConvolutionTransformation)
|
||||
* [ConvolutionBackpropDataTransformation](@ref openvino_docs_OV_UG_lpt_ConvolutionBackpropDataTransformation)
|
||||
* [DepthToSpaceTransformation](@ref openvino_docs_OV_UG_lpt_DepthToSpaceTransformation)
|
||||
* [FakeQuantizeDecompositionTransformation](@ref openvino_docs_OV_UG_lpt_FakeQuantizeDecompositionTransformation)
|
||||
* [FakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FakeQuantizeTransformation)
|
||||
* [InterpolateTransformation](@ref openvino_docs_OV_UG_lpt_InterpolateTransformation)
|
||||
* [GroupConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_GroupConvolutionTransformation)
|
||||
* [GatherTransformation](@ref openvino_docs_OV_UG_lpt_GatherTransformation)
|
||||
* [MatMulTransformation](@ref openvino_docs_OV_UG_lpt_MatMulTransformation)
|
||||
* [MaxPoolTransformation](@ref openvino_docs_OV_UG_lpt_MaxPoolTransformation)
|
||||
* [MultiplyTransformation](@ref openvino_docs_OV_UG_lpt_MultiplyTransformation)
|
||||
* [MVNTransformation](@ref openvino_docs_OV_UG_lpt_MVNTransformation)
|
||||
* [NormalizeL2Transformation](@ref openvino_docs_OV_UG_lpt_NormalizeL2Transformation)
|
||||
* [PReluTransformation](@ref openvino_docs_OV_UG_lpt_PReluTransformation)
|
||||
* [ReduceMaxTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMaxTransformation)
|
||||
* [ReduceMeanTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMeanTransformation)
|
||||
* [ReduceMinTransformation](@ref openvino_docs_OV_UG_lpt_ReduceMinTransformation)
|
||||
* [ReduceSumTransformation](@ref openvino_docs_OV_UG_lpt_ReduceSumTransformation)
|
||||
* [ReluTransformation](@ref openvino_docs_OV_UG_lpt_ReluTransformation)
|
||||
* [ReshapeTransformation](@ref openvino_docs_OV_UG_lpt_ReshapeTransformation)
|
||||
* [SqueezeTransformation](@ref openvino_docs_OV_UG_lpt_SqueezeTransformation)
|
||||
* [ShuffleChannelsTransformation](@ref openvino_docs_OV_UG_lpt_ShuffleChannelsTransformation)
|
||||
* [SplitTransformation](@ref openvino_docs_OV_UG_lpt_SplitTransformation)
|
||||
* [StridedSliceTransformation](@ref openvino_docs_OV_UG_lpt_StridedSliceTransformation)
|
||||
* [TransposeTransformation](@ref openvino_docs_OV_UG_lpt_TransposeTransformation)
|
||||
* [UnsqueezeTransformation](@ref openvino_docs_OV_UG_lpt_UnsqueezeTransformation)
|
||||
* [VariadicSplitTransformation](@ref openvino_docs_OV_UG_lpt_VariadicSplitTransformation)
|
||||
|
||||
* :doc:`AddTransformation <openvino_docs_OV_UG_lpt_AddTransformation>`
|
||||
* :doc:`AvgPoolTransformation <openvino_docs_OV_UG_lpt_AvgPoolTransformation>`
|
||||
* :doc:`ClampTransformation <openvino_docs_OV_UG_lpt_AvgPoolTransformation>`
|
||||
* :doc:`ConcatTransformation <openvino_docs_OV_UG_lpt_ConcatTransformation>`
|
||||
* :doc:`ConvolutionTransformation <openvino_docs_OV_UG_lpt_ConvolutionTransformation>`
|
||||
* :doc:`ConvolutionBackpropDataTransformation <openvino_docs_OV_UG_lpt_ConvolutionBackpropDataTransformation>`
|
||||
* :doc:`DepthToSpaceTransformation <openvino_docs_OV_UG_lpt_DepthToSpaceTransformation>`
|
||||
* :doc:`FakeQuantizeDecompositionTransformation <openvino_docs_OV_UG_lpt_FakeQuantizeDecompositionTransformation>`
|
||||
* :doc:`FakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FakeQuantizeTransformation>`
|
||||
* :doc:`InterpolateTransformation <openvino_docs_OV_UG_lpt_InterpolateTransformation>`
|
||||
* :doc:`GroupConvolutionTransformation <openvino_docs_OV_UG_lpt_GroupConvolutionTransformation>`
|
||||
* :doc:`GatherTransformation <openvino_docs_OV_UG_lpt_GatherTransformation>`
|
||||
* :doc:`MatMulTransformation <openvino_docs_OV_UG_lpt_MatMulTransformation>`
|
||||
* :doc:`MaxPoolTransformation <openvino_docs_OV_UG_lpt_MaxPoolTransformation>`
|
||||
* :doc:`MultiplyTransformation <openvino_docs_OV_UG_lpt_MultiplyTransformation>`
|
||||
* :doc:`MVNTransformation <openvino_docs_OV_UG_lpt_MVNTransformation>`
|
||||
* :doc:`NormalizeL2Transformation <openvino_docs_OV_UG_lpt_NormalizeL2Transformation>`
|
||||
* :doc:`PReluTransformation <openvino_docs_OV_UG_lpt_PReluTransformation>`
|
||||
* :doc:`ReduceMaxTransformation <openvino_docs_OV_UG_lpt_ReduceMaxTransformation>`
|
||||
* :doc:`ReduceMeanTransformation <openvino_docs_OV_UG_lpt_ReduceMeanTransformation>`
|
||||
* :doc:`ReduceMinTransformation <openvino_docs_OV_UG_lpt_ReduceMinTransformation>`
|
||||
* :doc:`ReduceSumTransformation <openvino_docs_OV_UG_lpt_ReduceSumTransformation>`
|
||||
* :doc:`ReluTransformation <openvino_docs_OV_UG_lpt_ReluTransformation>`
|
||||
* :doc:`ReshapeTransformation <openvino_docs_OV_UG_lpt_ReshapeTransformation>`
|
||||
* :doc:`SqueezeTransformation <openvino_docs_OV_UG_lpt_SqueezeTransformation>`
|
||||
* :doc:`ShuffleChannelsTransformation <openvino_docs_OV_UG_lpt_ShuffleChannelsTransformation>`
|
||||
* :doc:`SplitTransformation <openvino_docs_OV_UG_lpt_SplitTransformation>`
|
||||
* :doc:`StridedSliceTransformation <openvino_docs_OV_UG_lpt_StridedSliceTransformation>`
|
||||
* :doc:`TransposeTransformation <openvino_docs_OV_UG_lpt_TransposeTransformation>`
|
||||
* :doc:`UnsqueezeTransformation <openvino_docs_OV_UG_lpt_UnsqueezeTransformation>`
|
||||
* :doc:`VariadicSplitTransformation <openvino_docs_OV_UG_lpt_VariadicSplitTransformation>`
|
||||
|
||||
Let's explore some main transformations on the example model. Original model:
|
||||
|
||||

|
||||
.. image:: _static/images/step3_original.svg
|
||||
:alt: Original model
|
||||
|
||||
Result model after main transformations:
|
||||
|
||||

|
||||
.. image:: _static/images/step3_transformed.svg
|
||||
:alt: Transformed model
|
||||
|
||||
Changes in the example model after main transformation:
|
||||
* All `FakeQuantize` operations (`fakeQuantize1`, `fakeQuantize2` and `fakeQuantize3`) were decomposed:
|
||||
- original `FakeQuantize` operations were replaced with new operations with other output intervals and output port precision,
|
||||
- dequantization operations.
|
||||
* Dequantization operations were moved via precision preserved (`concat1` and `concat2`) and quantized (`convolution2`) operations.
|
||||
|
||||
> **NOTE**: The left branch (branch #1) does not require per-tensor quantization. As a result, the `fakeQuantize1`output interval is [0, 255]. But quantized `convolution2` requires per-tensor quantization on the right branch (branch #2). Then all connected `FakeQuantize` interval operations (`fakeQuantize1` and `fakeQuantize2`) are aligned to have per-tensor quantization after the concatenation (`concat2`) operation.
|
||||
* All ``FakeQuantize`` operations (``fakeQuantize1``, ``fakeQuantize2`` and ``fakeQuantize3``) were decomposed:
|
||||
|
||||
* original ``FakeQuantize`` operations were replaced with new operations with other output intervals and output port precision,
|
||||
* dequantization operations.
|
||||
|
||||
* Dequantization operations were moved via precision preserved (``concat1`` and ``concat2``) and quantized (``convolution2``) operations.
|
||||
|
||||
.. note::
|
||||
|
||||
The left branch (branch #1) does not require per-tensor quantization. As a result, the ``fakeQuantize1``output interval is [0, 255]. But quantized ``convolution2`` requires per-tensor quantization on the right branch (branch #2). Then all connected ``FakeQuantize`` interval operations (``fakeQuantize1`` and ``fakeQuantize2``) are aligned to have per-tensor quantization after the concatenation (``concat2``) operation.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
# Step 4. Cleanup Transformations {#openvino_docs_OV_UG_lpt_step4_cleanup}
|
||||
|
||||
* [FoldConvertTransformation](@ref openvino_docs_OV_UG_lpt_FoldConvertTransformation)
|
||||
* [FoldFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FoldFakeQuantizeTransformation)
|
||||
* [FuseConvertTransformation](@ref openvino_docs_OV_UG_lpt_FuseConvertTransformation)
|
||||
* [FuseMultiplyToFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FuseMultiplyToFakeQuantizeTransformation)
|
||||
* [FuseSubtractToFakeQuantizeTransformation](@ref openvino_docs_OV_UG_lpt_FuseSubtractToFakeQuantizeTransformation)
|
||||
* [MultiplyToGroupConvolutionTransformation](@ref openvino_docs_OV_UG_lpt_MultiplyToGroupConvolutionTransformation)
|
||||
@sphinxdirective
|
||||
|
||||
* :doc:`EliminateFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_EliminateFakeQuantizeTransformation>`
|
||||
* :doc:`FoldConvertTransformation <openvino_docs_OV_UG_lpt_FoldConvertTransformation>`
|
||||
* :doc:`FoldFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FoldFakeQuantizeTransformation>`
|
||||
* :doc:`FuseConvertTransformation <openvino_docs_OV_UG_lpt_FuseConvertTransformation>`
|
||||
* :doc:`FuseMultiplyToFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FuseMultiplyToFakeQuantizeTransformation>`
|
||||
* :doc:`FuseSubtractToFakeQuantizeTransformation <openvino_docs_OV_UG_lpt_FuseSubtractToFakeQuantizeTransformation>`
|
||||
* :doc:`MultiplyToGroupConvolutionTransformation <openvino_docs_OV_UG_lpt_MultiplyToGroupConvolutionTransformation>`
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# EliminateFakeQuantizeTransformation transformation {#openvino_docs_OV_UG_lpt_EliminateFakeQuantizeTransformation}
|
||||
|
||||
ngraph::pass::low_precision::EliminateFakeQuantizeTransformation class represents the `EliminateFakeQuantizeTransformation` transformation.
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
Model Optimizer is a cross-platform command-line tool that facilitates the transition between training and deployment environments, performs static model analysis, and adjusts deep learning models for optimal execution on end-point target devices.
|
||||
|
||||
To use it, you need a pre-trained deep learning model in one of the supported formats: TensorFlow, PyTorch, PaddlePaddle, MXNet, Caffe, Kaldi, or ONNX. Model Optimizer converts the model to the OpenVINO Intermediate Representation format (IR), which you can infer later with :doc:`OpenVINO™ Runtime <openvino_docs_OV_UG_OV_Runtime_User_Guide>`.
|
||||
To use it, you need a pre-trained deep learning model in one of the supported formats: TensorFlow, PyTorch, PaddlePaddle, TensorFlow Lite, MXNet, Caffe, Kaldi, or ONNX. Model Optimizer converts the model to the OpenVINO Intermediate Representation format (IR), which you can infer later with :doc:`OpenVINO™ Runtime <openvino_docs_OV_UG_OV_Runtime_User_Guide>`.
|
||||
|
||||
Note that Model Optimizer does not infer models.
|
||||
|
||||
|
||||
@@ -1,179 +1,85 @@
|
||||
# Deep Learning Network Intermediate Representation and Operation Sets in OpenVINO™ {#openvino_docs_MO_DG_IR_and_opsets}
|
||||
# Operation Sets in OpenVINO {#openvino_docs_MO_DG_IR_and_opsets}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
openvino_docs_ops_opset
|
||||
openvino_docs_operations_specifications
|
||||
openvino_docs_ops_broadcast_rules
|
||||
|
||||
|
||||
This article provides essential information on the format used for representation of deep learning models in OpenVINO toolkit and supported operation sets.
|
||||
|
||||
## Overview of Artificial Neural Networks Representation
|
||||
Overview of Artificial Neural Networks Representation
|
||||
#####################################################
|
||||
|
||||
A deep learning network is usually represented as a directed graph describing the flow of data from the network input data to the inference results.
|
||||
Input data can be in the form of images, video, audio, or preprocessed information representing objects from the target area of interest.
|
||||
Input data can be in the form of images, video, text, audio, or preprocessed information representing objects from the target area of interest.
|
||||
|
||||
Here is an illustration of a small graph representing a model that consists of a single Convolutional layer and activation function:
|
||||
Here is an illustration sof a small graph representing a model that consists of a single Convolutional layer and activation function:
|
||||
|
||||

|
||||
.. image:: _static/images/small_IR_graph_demonstration.png
|
||||
|
||||
Vertices in the graph represent layers or operation instances such as convolution, pooling, and element-wise operations with tensors.
|
||||
The terms of "layer" and "operation" are used interchangeably within OpenVINO documentation and define how input data is processed to produce output data for a node in a graph.
|
||||
The terms of "layer" and "operation" are used interchangeably within OpenVINO documentation and define how the input data is processed to produce output data for a node in a graph.
|
||||
An operation node in a graph may consume data at one or multiple input ports.
|
||||
For example, an element-wise addition operation has two input ports which accept tensors that are to be summed.
|
||||
Some operations do not have any input ports, for example the `Const` operation, which knows the data to be produced without any input.
|
||||
For example, an element-wise addition operation has two input ports that accept tensors to be summed.
|
||||
Some operations do not have any input ports, for example the ``Const`` operation which produces without any input.
|
||||
An edge between operations represents data flow or data dependency implied from one operation node to another.
|
||||
|
||||
Each operation produces data on one or multiple output ports. For example, convolution produces output tensor with activations at a single output port. Split operation usually has multiple output ports, each producing part of an input tensor.
|
||||
Each operation produces data on one or multiple output ports. For example, convolution produces an output tensor with activations at a single output port. The ``Split`` operation usually has multiple output ports, each producing part of an input tensor.
|
||||
|
||||
Depending on a deep learning framework, the graph can also contain extra nodes that explicitly represent tensors between operations.
|
||||
In such representations, operation nodes are not connected to each other directly. They are rather using data nodes as intermediate stops for data flow.
|
||||
If data nodes are not used, the produced data is associated with an output port of a corresponding operation node that produces the data.
|
||||
If data nodes are not used, the produced data is associated with an output port of the corresponding operation node that produces the data.
|
||||
|
||||
A set of various operations used in a network is usually fixed for each deep learning framework.
|
||||
It determines expressiveness and level of representation available in that framework.
|
||||
Sometimes, a network that can be represented in one framework is hard or impossible to be represented in another one or should use significantly different graph, because operation sets used in those two frameworks do not match.
|
||||
|
||||
## Intermediate Representation Used in OpenVINO
|
||||
|
||||
OpenVINO toolkit introduces its own format of graph representation and its own operation set.
|
||||
A graph is represented with two files: an XML file and a binary file.
|
||||
This representation is commonly referred to as the *Intermediate Representation* or *IR*.
|
||||
|
||||
The XML file describes a network topology using a `<layer>` tag for an operation node and an `<edge>` tag for a data-flow connection.
|
||||
Each operation has a fixed number of attributes that define operation flavor used for a node.
|
||||
For example, the `Convolution` operation has such attributes as `dilation`, `stride`, `pads_begin`, and `pads_end`.
|
||||
|
||||
The XML file does not have big constant values like convolution weights.
|
||||
Instead, it refers to a part of the accompanying binary file that stores such values in a binary format.
|
||||
|
||||
Here is an example of a small IR XML file that corresponds to a graph from the previous section:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" ?>
|
||||
<net name="model_file_name" version="10">
|
||||
<layers>
|
||||
<layer id="0" name="input" type="Parameter" version="opset1">
|
||||
<data element_type="f32" shape="1,3,32,100"/> <!-- attributes of operation -->
|
||||
<output>
|
||||
<!-- description of output ports with type of element and tensor dimensions -->
|
||||
<port id="0" precision="FP32">
|
||||
<dim>1</dim>
|
||||
<dim>3</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
<layer id="1" name="conv1/weights" type="Const" version="opset1">
|
||||
<!-- Const is only operation from opset1 that refers to the IR binary file by specifying offset and size in bytes relative to the beginning of the file. -->
|
||||
<data element_type="f32" offset="0" shape="64,3,3,3" size="6912"/>
|
||||
<output>
|
||||
<port id="1" precision="FP32">
|
||||
<dim>64</dim>
|
||||
<dim>3</dim>
|
||||
<dim>3</dim>
|
||||
<dim>3</dim>
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
<layer id="2" name="conv1" type="Convolution" version="opset1">
|
||||
<data auto_pad="same_upper" dilations="1,1" output_padding="0,0" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||
<input>
|
||||
<port id="0">
|
||||
<dim>1</dim>
|
||||
<dim>3</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
<port id="1">
|
||||
<dim>64</dim>
|
||||
<dim>3</dim>
|
||||
<dim>3</dim>
|
||||
<dim>3</dim>
|
||||
</port>
|
||||
</input>
|
||||
<output>
|
||||
<port id="2" precision="FP32">
|
||||
<dim>1</dim>
|
||||
<dim>64</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
<layer id="3" name="conv1/activation" type="ReLU" version="opset1">
|
||||
<input>
|
||||
<port id="0">
|
||||
<dim>1</dim>
|
||||
<dim>64</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
</input>
|
||||
<output>
|
||||
<port id="1" precision="FP32">
|
||||
<dim>1</dim>
|
||||
<dim>64</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
<layer id="4" name="output" type="Result" version="opset1">
|
||||
<input>
|
||||
<port id="0">
|
||||
<dim>1</dim>
|
||||
<dim>64</dim>
|
||||
<dim>32</dim>
|
||||
<dim>100</dim>
|
||||
</port>
|
||||
</input>
|
||||
</layer>
|
||||
</layers>
|
||||
<edges>
|
||||
<!-- Connections between layer nodes: based on ids for layers and ports used in the descriptions above -->
|
||||
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
|
||||
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
|
||||
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
|
||||
<edge from-layer="3" from-port="1" to-layer="4" to-port="0"/>
|
||||
</edges>
|
||||
<meta_data>
|
||||
<!-- This section that is not related to a topology; contains auxiliary information that serves for the debugging purposes. -->
|
||||
<MO_version value="2019.1"/>
|
||||
<cli_parameters>
|
||||
<blobs_as_inputs value="True"/>
|
||||
<caffe_parser_path value="DIR"/>
|
||||
<data_type value="float"/>
|
||||
|
||||
...
|
||||
|
||||
<!-- Omitted a long list of CLI options that always are put here by MO for debugging purposes. -->
|
||||
|
||||
</cli_parameters>
|
||||
</meta_data>
|
||||
</net>
|
||||
```
|
||||
|
||||
The IR does not use explicit data nodes described in the previous section.
|
||||
In contrast, properties of data such as tensor dimensions and their data types are described as properties of input and output ports of operations.
|
||||
|
||||
## Operation Sets
|
||||
Operation Sets
|
||||
##############
|
||||
|
||||
Operations in OpenVINO Operation Sets are selected based on capabilities of supported deep learning frameworks and hardware capabilities of the target inference device.
|
||||
It consists of several groups of operations:
|
||||
A set consists of several groups of operations:
|
||||
|
||||
* Conventional deep learning layers such as `Convolution`, `MaxPool`, and `MatMul` (also known as `FullyConnected`).
|
||||
* Conventional deep learning layers such as ``Convolution``, ``MaxPool``, and ``MatMul`` (also known as ``FullyConnected``).
|
||||
|
||||
* Various activation functions such as `ReLU`, `Tanh`, and `PReLU`.
|
||||
* Various activation functions such as ``ReLU``, ``Tanh``, and ``PReLU``.
|
||||
|
||||
* Generic element-wise arithmetic tensor operations such as `Add`, `Subtract`, and `Multiply`.
|
||||
* Generic element-wise arithmetic tensor operations such as ``Add``, ``Subtract``, and ``Multiply``.
|
||||
|
||||
* Comparison operations that compare two numeric tensors and produce boolean tensors, for example, `Less`, `Equeal`, `Greater`.
|
||||
* Comparison operations that compare two numeric tensors and produce boolean tensors, for example, ``Less``, ``Equeal``, ``Greater``.
|
||||
|
||||
* Logical operations that are dealing with boolean tensors, for example, `And`, `Xor`, `Not`.
|
||||
* Logical operations that are dealing with boolean tensors, for example, ``And``, ``Xor``, ``Not``.
|
||||
|
||||
* Data movement operations which are dealing with parts of tensors, for example, `Concat`, `Split`, `StridedSlice`, `Select`.
|
||||
* Data movement operations which are dealing with parts of tensors, for example, ``Concat``, ``Split``, ``StridedSlice``, ``Select``.
|
||||
|
||||
* Specialized operations that implement complex algorithms dedicated for models of specific type, for example, `DetectionOutput`, `RegionYolo`, `PriorBox`.
|
||||
* Specialized operations that implement complex algorithms dedicated for models of specific type, for example, ``DetectionOutput``, ``RegionYolo``, ``PriorBox``.
|
||||
|
||||
For more information, refer to the complete description of the supported operation sets in the [Available Operation Sets](../ops/opset.md) article.
|
||||
For more information, refer to the complete description of the supported operation sets in the :doc:`Available Operation Sets <openvino_docs_ops_opset>` article.
|
||||
|
||||
## IR Versions vs Operation Set Versions
|
||||
How to Read Opset Specification
|
||||
###############################
|
||||
|
||||
In the :doc:`Available Operation Sets <openvino_docs_ops_opset>` there are opsets and there are operations.
|
||||
Each opset specification has a list of links to operations descriptions that are included into that specific opset.
|
||||
Two or more opsets may refer to the same operation.
|
||||
That means an operation is kept unchanged from one operation set to another.
|
||||
|
||||
The description of each operation has a ``Versioned name`` field.
|
||||
For example, the `ReLU` entry point in :doc:`opset1 <openvino_docs_ops_opset1>` refers to :doc:`ReLU-1 <openvino_docs_ops_activation_ReLU_1>` as the versioned name.
|
||||
Meanwhile, `ReLU` in `opset2` refers to the same `ReLU-1` and both `ReLU` operations are the same operation and it has a single :doc:`description <openvino_docs_ops_activation_ReLU_1>`, which means that ``opset1`` and ``opset2`` share the same operation ``ReLU``.
|
||||
|
||||
To differentiate versions of the same operation type such as ``ReLU``, the ``-N`` suffix is used in a versioned name of the operation.
|
||||
The ``N`` suffix usually refers to the first occurrence of ``opsetN`` where this version of the operation is introduced.
|
||||
There is no guarantee that new operations will be named according to that rule. The naming convention might be changed, but not for old operations which are frozen completely.
|
||||
|
||||
IR Versions vs Operation Set Versions
|
||||
######################################
|
||||
|
||||
The expressiveness of operations in OpenVINO is highly dependent on the supported frameworks and target hardware capabilities.
|
||||
As the frameworks and hardware capabilities grow over time, the operation set is constantly evolving to support new models.
|
||||
@@ -183,60 +89,45 @@ Version of IR specifies the rules which are used to read the XML and binary file
|
||||
|
||||
Historically, there are two major IR version epochs:
|
||||
|
||||
1. The older one includes IR versions from version 1 to version 7 without versioning of the operation set. During that epoch, the operation set has been growing evolutionally accumulating more layer types and extending existing layer semantics. Changing of the operation set for those versions meant increasing of IR version.
|
||||
1. The older one includes IR versions from version 1 to version 7 without versioning of the operation set. During that epoch, the operation set has been growing evolutionally accumulating more layer types and extending existing layer semantics. Changing of the operation set for those versions meant increasing of the IR version.
|
||||
|
||||
2. OpenVINO 2020.1 is the starting point of the next epoch. With IR version 10 introduced in OpenVINO 2020.1, the versioning of the operation set is tracked separately from the IR versioning. Also, the operation set was significantly reworked as the result of nGraph integration to the OpenVINO.
|
||||
|
||||
The first supported operation set in the new epoch is `opset1`.
|
||||
The number after `opset` is going to be increased each time new operations are added or old operations deleted at the release cadence.
|
||||
The first supported operation set in the new epoch is ``opset1``.
|
||||
The number after ``opset`` is going to be increased each time new operations are added or old operations deleted at the release cadence.
|
||||
|
||||
The operations from the new epoch cover more TensorFlow and ONNX operators in a form that is closer to the original operation semantics from the frameworks in comparison to the operation set used in former versions of IR (7 and lower).
|
||||
The operations from the new epoch cover more TensorFlow and ONNX operations that better match the original operation semantics from the frameworks, compared to the operation set used in the older IR versions (7 and lower).
|
||||
|
||||
The name of the opset is specified for each operation in IR.
|
||||
The IR version is specified once per whole IR.
|
||||
The IR version is specified once.
|
||||
Here is an example from the IR snippet:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" ?>
|
||||
<net name="model_file_name" version="10"> <!-- Version of the whole IR file is here; it is 10 -->
|
||||
<layers>
|
||||
<!-- Version of operation set that the layer belongs to is described in <layer>
|
||||
tag attributes. For this operation, it is version="opset1". -->
|
||||
<layer id="0" name="input" type="Parameter" version="opset1">
|
||||
<data element_type="f32" shape="1,3,32,100"/> <!-- attributes of operation -->
|
||||
<output>
|
||||
<!-- description of output ports with type of element and tensor dimensions -->
|
||||
<port id="0" precision="FP32">
|
||||
<dim>1</dim>
|
||||
<dim>3</dim>
|
||||
.. code-block:: cpp
|
||||
|
||||
...
|
||||
```
|
||||
<?xml version="1.0" ?>
|
||||
<net name="model_file_name" version="10"> <!-- Version of the whole IR file is here; it is 10 -->
|
||||
<layers>
|
||||
<!-- Version of operation set that the layer belongs to is described in <layer>
|
||||
tag attributes. For this operation, it is version="opset1". -->
|
||||
<layer id="0" name="input" type="Parameter" version="opset1">
|
||||
<data element_type="f32" shape="1,3,32,100"/> <!-- attributes of operation -->
|
||||
<output>
|
||||
<!-- description of output ports with type of element and tensor dimensions -->
|
||||
<port id="0" precision="FP32">
|
||||
<dim>1</dim>
|
||||
<dim>3</dim>
|
||||
|
||||
The `type="Parameter"` and `version="opset1"` attributes in the example above mean "use that version of the `Parameter` operation that is included in the `opset1` operation set. "
|
||||
...
|
||||
|
||||
The ``type="Parameter"`` and ``version="opset1"`` attributes in the example above mean "use that version of the ``Parameter`` operation that is included in the ``opset1`` operation set. "
|
||||
|
||||
When a new operation set is introduced, most of the operations remain unchanged and are just aliased from the previous operation set within a new one.
|
||||
The goal of operation set version evolution is to add new operations, and probably change small fractions of existing operations (fixing bugs and extending semantics).
|
||||
The goal of operation set version evolution is to add new operations, and change small fractions of existing operations (fixing bugs and extending semantics).
|
||||
However, such changes affect only new versions of operations from a new operation set, while old operations are used by specifying an appropriate `version`.
|
||||
When an old `version` is specified, the behavior will be kept unchanged from that specified version to provide backward compatibility with older IRs.
|
||||
|
||||
A single `xml` file with IR may contain operations from different opsets.
|
||||
An operation that is included in several opsets may be referred to with `version` which points to any opset that includes that operation.
|
||||
For example, the same `Convolution` can be used with `version="opset1"` and `version="opset2"` because both opsets have the same `Convolution` operations.
|
||||
|
||||
## How to Read Opset Specification
|
||||
|
||||
In the [Available Operation Sets](../ops/opset.md) there are opsets and there are operations.
|
||||
Each opset specification has a list of links to operations descriptions that are included into that specific opset.
|
||||
Two or more opsets may refer to the same operation.
|
||||
That means an operation is kept unchanged from one operation set to another.
|
||||
|
||||
The description of each operation has a `Versioned name` field.
|
||||
For example, the `ReLU` entry point in [`opset1`](../ops/opset1.md) refers to [`ReLU-1`](../ops/activation/ReLU_1.md) as the versioned name.
|
||||
Meanwhile, `ReLU` in `opset2` refers to the same `ReLU-1` and both `ReLU` operations are the same operation and it has a single [description](../ops/activation/ReLU_1.md), which means that `opset1` and `opset2` share the same operation `ReLU`.
|
||||
|
||||
To differentiate versions of the same operation type such as `ReLU`, the `-N` suffix is used in a versioned name of the operation.
|
||||
The `N` suffix usually refers to the first occurrence of `opsetN` where this version of the operation is introduced.
|
||||
There is no guarantee that new operations will be named according to that rule. The naming convention might be changed, but not for old operations which are frozen completely.
|
||||
|
||||
A single ``xml`` file with IR may contain operations from different opsets.
|
||||
An operation that is included in several opsets may be referred to with ``version`` which points to any opset that includes that operation.
|
||||
For example, the same ``Convolution`` can be used with ``version="opset1"`` and ``version="opset2"`` because both opsets have the same ``Convolution`` operations.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -2,18 +2,16 @@
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
Model Optimizer by default converts all floating-point weights to ``FP16`` data type.
|
||||
The resulting IR is called compressed ``FP16`` model. The resulting model will occupy
|
||||
about twice as less space in the file system, but it may have some accuracy drop.
|
||||
For most models, the accuracy drop is negligible. But in case if accuracy drop is
|
||||
significant user can disable compression explicitly.
|
||||
Model Optimizer can convert all floating-point weights to the ``FP16`` data type.
|
||||
It results in creating a "compressed ``FP16`` model", which occupies about half of
|
||||
the original space in the file system. The compression may introduce a drop in accuracy.
|
||||
but it is negligible for most models.
|
||||
|
||||
By default, models are compressed to ``FP16``, but you can disable compression by
|
||||
specifying ``--compress_to_fp16=False``:
|
||||
To compress the model, use the `--compress_to_fp16` or `--compress_to_fp16=True` option:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mo --input_model INPUT_MODEL --compress_to_fp16=False
|
||||
mo --input_model INPUT_MODEL --compress_to_fp16
|
||||
|
||||
|
||||
For details on how plugins handle compressed ``FP16`` models, see
|
||||
@@ -26,4 +24,11 @@ For details on how plugins handle compressed ``FP16`` models, see
|
||||
information about that.
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Some large models (larger than a few GB) when compressed to ``FP16`` may consume enormous amount of RAM on the loading
|
||||
phase of the inference. In case if you are facing such problems, please try to convert them without compression:
|
||||
`mo --input_model INPUT_MODEL --compress_to_fp16=False`
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -814,6 +814,120 @@ paddlepaddle >= 2.1
|
||||
========================================== ===============================================================================
|
||||
|
||||
|
||||
TensorFlow Lite Supported Operators
|
||||
###########################################################
|
||||
|
||||
========================================== ===============================================================================
|
||||
Operator Name in TensorFlow Lite Limitations
|
||||
========================================== ===============================================================================
|
||||
ABS
|
||||
ADD
|
||||
ADD_N
|
||||
ARG_MAX
|
||||
ARG_MIN
|
||||
AVERAGE_POOL_2D
|
||||
BATCH_MATMUL
|
||||
BATCH_TO_SPACE_ND
|
||||
BROADCAST_ARGS
|
||||
BROADCAST_TO
|
||||
CAST
|
||||
CEIL
|
||||
COMPLEX_ABS Supported in a specific pattern with RFFT2D
|
||||
CONCATENATION
|
||||
CONV_2D
|
||||
COS
|
||||
DEPTH_TO_SPACE
|
||||
DEPTHWISE_CONV_2D
|
||||
DEQUANTIZE
|
||||
DIV
|
||||
ELU
|
||||
EQUAL
|
||||
EXP
|
||||
EXPAND_DIMS
|
||||
FILL
|
||||
FLOOR
|
||||
FLOOR_DIV
|
||||
FLOOR_MOD
|
||||
FULLY_CONNECTED
|
||||
GATHER
|
||||
GATHER_ND
|
||||
GREATER
|
||||
GREATER_EQUAL
|
||||
HARD_SWISH
|
||||
L2_NORMALIZATION
|
||||
LEAKY_RELU
|
||||
LESS
|
||||
LESS_EQUAL
|
||||
LOG
|
||||
LOG_SOFTMAX
|
||||
LOGICAL_AND
|
||||
LOGICAL_NOT
|
||||
LOGICAL_OR
|
||||
LOGISTIC
|
||||
MATRIX_DIAG
|
||||
MAX_POOL_2D
|
||||
MAXIMUM
|
||||
MEAN
|
||||
MINIMUM
|
||||
MIRROR_PAD
|
||||
MUL
|
||||
NEG
|
||||
NOT_EQUAL
|
||||
ONE_HOT
|
||||
PACK
|
||||
PAD
|
||||
PADV2
|
||||
POW
|
||||
PRELU
|
||||
QUANTIZE
|
||||
RANGE
|
||||
RANK
|
||||
REDUCE_ALL
|
||||
REDUCE_ANY
|
||||
REDUCE_MAX
|
||||
REDUCE_MIN
|
||||
REDUCE_PROD
|
||||
RELU
|
||||
RELU6
|
||||
RESHAPE
|
||||
RESIZE_BILINEAR
|
||||
RESIZE_NEAREST_NEIGHBOR
|
||||
REVERSE_V2
|
||||
RFFT2D Supported in a specific pattern with COMPLEX_ABS
|
||||
ROUND
|
||||
RSQRT
|
||||
SCATTER_ND
|
||||
SEGMENT_SUM
|
||||
SELECT
|
||||
SELECT_V2
|
||||
SHAPE
|
||||
SIGN
|
||||
SIN
|
||||
SLICE
|
||||
SOFTMAX
|
||||
SPACE_TO_BATCH_ND
|
||||
SPACE_TO_DEPTH
|
||||
SPLIT
|
||||
SPLIT_V
|
||||
SQRT
|
||||
SQUARE
|
||||
SQUARED_DIFFERENCE
|
||||
SQUEEZE
|
||||
STRIDED_SLICE
|
||||
SUB
|
||||
SUM
|
||||
TANH
|
||||
TILE
|
||||
TOPK_V2
|
||||
TRANSPOSE
|
||||
TRANSPOSE_CONV
|
||||
UNIQUE
|
||||
UNPACK
|
||||
WHERE
|
||||
ZEROS_LIKE
|
||||
========================================== ===============================================================================
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Converting a TensorFlow Lite Model {#openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow_Lite}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
To convert a TensorFlow Lite model, use the ``mo`` script and specify the path to the input ``.tflite`` model file:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mo --input_model <INPUT_MODEL>.tflite
|
||||
|
||||
.. note:: TensorFlow Lite models are supported via FrontEnd API. You may skip conversion to IR and read models directly by OpenVINO runtime API.
|
||||
|
||||
Supported TensorFlow Lite Layers
|
||||
###################################
|
||||
|
||||
For the list of supported standard layers, refer to the :doc:`Supported Framework Layers <openvino_docs_MO_DG_prepare_model_Supported_Frameworks_Layers>` page.
|
||||
|
||||
Supported TensorFlow Lite Models
|
||||
###################################
|
||||
|
||||
More than eighty percent of public TensorFlow Lite models are supported from open sources `TensorFlow Hub <https://tfhub.dev/s?deployment-format=lite&subtype=module,placeholder>`__ and `MediaPipe <https://developers.google.com/mediapipe>`__.
|
||||
Unsupported models usually have custom TensorFlow Lite operations.
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,37 +1,48 @@
|
||||
# Intermediate Representation Suitable for INT8 Inference {#openvino_docs_MO_DG_prepare_model_convert_model_IR_suitable_for_INT8_inference}
|
||||
|
||||
## Introduction
|
||||
@sphinxdirective
|
||||
|
||||
Introduction
|
||||
############
|
||||
|
||||
OpenVINO Runtime CPU and GPU devices can infer models in low precision.
|
||||
For more details, refer to the [Model Optimization Guide](@ref openvino_docs_model_optimization_guide).
|
||||
For more details, refer to the :doc:`Model Optimization Guide <openvino_docs_model_optimization_guide>`.
|
||||
|
||||
Intermediate Representation should be specifically formed to be suitable for low precision inference.
|
||||
|
||||
Intermediate Representation should be specifically formed to be suitable for low precision inference.
|
||||
Such a model is called a Low Precision IR and can be generated in two ways:
|
||||
- By [quantizing regular IR with the Post-Training Optimization tool](@ref pot_introduction)
|
||||
- Using Model Optimizer for a model pre-trained for Low Precision inference: TensorFlow pre-TFLite models (`.pb` model file with `FakeQuantize*` operations) and ONNX quantized models.
|
||||
Both TensorFlow and ONNX quantized models can be prepared by [Neural Network Compression Framework](https://github.com/openvinotoolkit/nncf/blob/develop/README.md).
|
||||
|
||||
* By :doc:`quantizing regular IR with the Post-Training Optimization tool <pot_introduction>`
|
||||
* Using Model Optimizer for a model pre-trained for Low Precision inference: TensorFlow models (``.pb`` model file with ``FakeQuantize`` operations), quantized TensorFlow Lite models and ONNX quantized models.
|
||||
TensorFlow and ONNX quantized models can be prepared by `Neural Network Compression Framework <https://github.com/openvinotoolkit/nncf/blob/develop/README.md>`__.
|
||||
|
||||
For an operation to be executed in INT8, it must have `FakeQuantize` operations as inputs.
|
||||
For more details, see the [specification of `FakeQuantize` operation](../../../ops/quantization/FakeQuantize_1.md).
|
||||
For more details, see the :doc:`specification of FakeQuantize operation <openvino_docs_ops_quantization_FakeQuantize_1>`.
|
||||
|
||||
To execute the `Convolution` operation in INT8 on CPU, both data and weight inputs should have `FakeQuantize` as an input operation:
|
||||

|
||||
To execute the ``Convolution`` operation in INT8 on CPU, both data and weight inputs should have ``FakeQuantize`` as an input operation:
|
||||
|
||||
Low precision IR is also suitable for FP32 and FP16 inference if a chosen plugin supports all operations of the IR. The only difference between a Low Precision IR and FP16 or FP32 IR is the existence of `FakeQuantize` in the Low Precision IR.
|
||||
.. image:: _static/images/expanded_int8_Convolution_weights.png
|
||||
|
||||
|
||||
Low precision IR is also suitable for FP32 and FP16 inference if a chosen plugin supports all operations of the IR. The only difference between a Low Precision IR and FP16 or FP32 IR is the existence of ``FakeQuantize`` in the Low Precision IR.
|
||||
Plugins that support Low Precision Inference recognize these sub-graphs and quantize them during inference.
|
||||
The ones that do not, execute all operations, including `FakeQuantize`, as is in the FP32 or FP16 precision.
|
||||
The ones that do not, execute all operations, including ``FakeQuantize``, as is in the FP32 or FP16 precision.
|
||||
|
||||
Consequently, when `FakeQuantize` operations are present in an OpenVINO IR, it suggests to the inference device how to quantize particular operations in the model.
|
||||
Consequently, when ``FakeQuantize`` operations are present in an OpenVINO IR, it suggests to the inference device how to quantize particular operations in the model.
|
||||
If the device is capable, it accepts the suggestion and performs Low Precision Inference. If not, it executes the model in the floating-point precision.
|
||||
|
||||
## Compressed Low Precision Weights
|
||||
Compressed Low Precision Weights
|
||||
################################
|
||||
|
||||
Weighted operations, such as `Convolution` and `MatMul`, store weights as the floating-point `Constant` in the graph followed by the `FakeQuantize` operation.
|
||||
The `Constant` followed by the `FakeQuantize` operation could be optimized memory-wise due to the `FakeQuantize` operation semantics.
|
||||
The resulting weights sub-graph stores weights in Low Precision `Constant`, which gets unpacked back to floating point with the `Convert` operation.
|
||||
Weights compression replaces `FakeQuantize` with optional `Subtract` and `Multiply` operation leaving output arithmetically the same and weights storing takes four times less memory.
|
||||
Weighted operations, such as ``Convolution`` and ``MatMul``, store weights as the floating-point ``Constant`` in the graph followed by the `FakeQuantize` operation.
|
||||
The ``Constant`` followed by the ``FakeQuantize`` operation could be optimized memory-wise due to the ``FakeQuantize`` operation semantics.
|
||||
The resulting weights sub-graph stores weights in Low Precision ``Constant``, which gets unpacked back to floating point with the ``Convert`` operation.
|
||||
Weights compression replaces ``FakeQuantize`` with optional ``Subtract`` and ``Multiply`` operation leaving output arithmetically the same and weights storing takes four times less memory.
|
||||
|
||||
See the visualization of `Convolution` with the compressed weights:
|
||||

|
||||
|
||||
.. image:: _static/images/compressed_int8_Convolution_weights.png
|
||||
|
||||
Both Model Optimizer and Post-Training Optimization tool generate a compressed IR by default.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_ONNX
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_PyTorch
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow_Lite
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_Paddle
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_MxNet
|
||||
openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_Caffe
|
||||
@@ -18,7 +19,7 @@
|
||||
|
||||
**OpenVINO IR (Intermediate Representation)** - the proprietary format of OpenVINO™, benefiting from the full extent of its features.
|
||||
|
||||
**ONNX, PaddlePaddle, TensorFlow** - formats supported directly, which means they can be used with OpenVINO Runtime without any prior conversion. For a guide on how to run inference on ONNX, PaddlePaddle, or TensorFlow, see how to :doc:`Integrate OpenVINO™ with Your Application <openvino_docs_OV_UG_Integrate_OV_with_your_application>`.
|
||||
**ONNX, PaddlePaddle, TensorFlow, TensorFlow Lite** - formats supported directly, which means they can be used with OpenVINO Runtime without any prior conversion. For a guide on how to run inference on ONNX, PaddlePaddle, or TensorFlow, see how to :doc:`Integrate OpenVINO™ with Your Application <openvino_docs_OV_UG_Integrate_OV_with_your_application>`.
|
||||
|
||||
**MXNet, Caffe, Kaldi** - formats supported indirectly, which means they need to be converted to OpenVINO IR before running inference. The conversion is done with Model Optimizer and in some cases may involve intermediate steps.
|
||||
|
||||
@@ -27,6 +28,7 @@ Refer to the following articles for details on conversion for different formats
|
||||
* :doc:`How to convert ONNX <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_ONNX>`
|
||||
* :doc:`How to convert PaddlePaddle <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_Paddle>`
|
||||
* :doc:`How to convert TensorFlow <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow>`
|
||||
* :doc:`How to convert TensorFlow Lite <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow_Lite>`
|
||||
* :doc:`How to convert MXNet <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_MxNet>`
|
||||
* :doc:`How to convert Caffe <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_Caffe>`
|
||||
* :doc:`How to convert Kaldi <openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_Kaldi>`
|
||||
|
||||
@@ -219,7 +219,7 @@ To generate ``vocab.bpe.32000``, execute the ``nmt/scripts/wmt16_en_de.sh`` scri
|
||||
--output_dir /path/to/output/IR/
|
||||
|
||||
|
||||
Input and output cutting with the ``--input`` and ``--output`` options is required since OpenVINO™ does not support ``IteratorGetNext`` and ``LookupTableFindV2`` operations.
|
||||
Input and output cutting with the ``--input`` and ``--output`` options is required since OpenVINO™ does not support ``IteratorGetNext`` and ``LookupTableFindV2`` operations.
|
||||
|
||||
Input cutting:
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ The Wide and Deep model is no longer in the master branch of the repository but
|
||||
|
||||
**Step 2**. Train the model
|
||||
|
||||
As the OpenVINO™ toolkit does not support the categorical with hash and crossed features, such feature types must be switched off in the model
|
||||
As the OpenVINO™ toolkit does not support the categorical with hash and crossed features, such feature types must be switched off in the model
|
||||
by changing the ``build_model_columns()`` function in `census_dataset.py` as follows:
|
||||
|
||||
.. code-block:: python
|
||||
@@ -146,7 +146,7 @@ Use the following command line to convert the saved model file with the checkpoi
|
||||
--output head/predictions/probabilities
|
||||
|
||||
|
||||
The model contains operations unsupported by the OpenVINO™ toolkit such as ``IteratorGetNext`` and ``LookupTableFindV2``, so the Model Optimizer must prune these nodes.
|
||||
The model contains operations unsupported by the OpenVINO™ toolkit such as ``IteratorGetNext`` and ``LookupTableFindV2``, so the Model Optimizer must prune these nodes.
|
||||
The pruning is specified through `--input` option. The prunings for ``IteratorGetNext:*`` nodes correspond to numeric features.
|
||||
The pruning for each categorical feature consists of three prunings for the following nodes: ``*/to_sparse_input/indices:0``, ``*/hash_table_Lookup/LookupTableFindV2:0``, and ``*/to_sparse_input/dense_shape:0``.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
This article describes Model Optimizer internals. Altering them may result in application instability, and in case of future changes to the API, lack of backward compatibility.
|
||||
|
||||
> **NOTE**: If you want to add support for ONNX, PaddlePaddle or Tensorflow operations, or you are not familiar with other extension alternatives in OpenVINO, read [this guide](../../../Extensibility_UG/Intro.md) instead.
|
||||
> **NOTE**: If you want to add support for ONNX, TensorFlow Lite, PaddlePaddle or TensorFlow operations, or you are not familiar with other extension alternatives in OpenVINO, read [this guide](../../../Extensibility_UG/Intro.md) instead.
|
||||
|
||||
<a name="model-optimizer-extensibility"></a>Model Optimizer extensibility mechanism enables support of new operations and custom transformations to generate the optimized intermediate representation (IR) as described in the
|
||||
[Deep Learning Network Intermediate Representation and Operation Sets in OpenVINO™](../../IR_and_opsets.md). This
|
||||
@@ -238,7 +238,7 @@ Methods `in_port()` and `output_port()` of the `Node` class are used to get and
|
||||
how to use them, refer to the [Graph Traversal and Modification Using Ports and Connections](@ref graph-ports-and-conneсtions) section.
|
||||
|
||||
> **NOTE**: A shape inference function should perform output shape calculation in the original model layout. For
|
||||
> example, OpenVINO™ supports Convolution operations in NCHW layout only but TensorFlow supports NHWC layout as
|
||||
> example, OpenVINO™ supports Convolution operations in NCHW layout only but TensorFlow supports NHWC layout as
|
||||
> well. Model Optimizer shape inference function calculates output shapes for NHWC Convolutions in NHWC layout and only
|
||||
> during the layout change phase the shape is converted to NCHW.
|
||||
|
||||
@@ -259,7 +259,7 @@ More information on how to develop middle transformations and dedicated API desc
|
||||
|
||||
There are several middle transformations responsible for changing model layout from NHWC to NCHW. These transformations are triggered by default for TensorFlow models as TensorFlow supports Convolution operations in the NHWC layout.
|
||||
|
||||
This layout change is disabled automatically if the model does not have operations that OpenVINO&trade needs to execute in the NCHW layout, for example, Convolutions in NHWC layout.
|
||||
This layout change is disabled automatically if the model does not have operations that OpenVINO™ needs to execute in the NCHW layout, for example, Convolutions in NHWC layout.
|
||||
|
||||
|
||||
For more details on how it works, refer to the source code of the transformations mentioned in the below summary of the process:
|
||||
|
||||
@@ -1,91 +1,110 @@
|
||||
# Model Caching Overview {#openvino_docs_OV_UG_Model_caching_overview}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
As described in :doc:`Integrate OpenVINO™ with Your Application <openvino_docs_OV_UG_Integrate_OV_with_your_application>`,
|
||||
a common application flow consists of the following steps:
|
||||
|
||||
As described in the :doc:`Integrate OpenVINO™ with Your Application <openvino_docs_OV_UG_Integrate_OV_with_your_application>`, a common application flow consists of the following steps:
|
||||
1. | **Create a Core object**:
|
||||
| First step to manage available devices and read model objects
|
||||
2. | **Read the Intermediate Representation**:
|
||||
| Read an Intermediate Representation file into an object of the `ov::Model <classov_1_1Model.html#doxid-classov-1-1-model>`__
|
||||
3. | **Prepare inputs and outputs**:
|
||||
| If needed, manipulate precision, memory layout, size or color format
|
||||
4. | **Set configuration**:
|
||||
| Pass device-specific loading configurations to the device
|
||||
5. | **Compile and Load Network to device**:
|
||||
| Use the `ov::Core::compile_model() <classov_1_1Core.html#doxid-classov-1-1-core-1a46555f0803e8c29524626be08e7f5c5a>`__ method with a specific device
|
||||
6. | **Set input data**:
|
||||
| Specify input tensor
|
||||
7. | **Execute**:
|
||||
| Carry out inference and process results
|
||||
|
||||
1. **Create a Core object**: First step to manage available devices and read model objects
|
||||
Step 5 can potentially perform several time-consuming device-specific optimizations and network compilations.
|
||||
To reduce the resulting delays at application startup, you can use Model Caching. It exports the compiled model
|
||||
automatically and reuses it to significantly reduce the model compilation time.
|
||||
|
||||
2. **Read the Intermediate Representation**: Read an Intermediate Representation file into an object of the `ov::Model <classov_1_1Model.html#doxid-classov-1-1-model>`__
|
||||
.. important::
|
||||
|
||||
3. **Prepare inputs and outputs**: If needed, manipulate precision, memory layout, size or color format
|
||||
The :doc:`Compile Tool <openvino_inference_engine_tools_compile_tool_README>` may serve the same purpose
|
||||
for C++ applications, but is considered a legacy solution and you should use Model Caching instead.
|
||||
|
||||
4. **Set configuration**: Pass device-specific loading configurations to the device
|
||||
Not all devices support the network import/export feature. They will perform normally but will not
|
||||
enable the compilation stage speed-up.
|
||||
|
||||
5. **Compile and Load Network to device**: Use the `ov::Core::compile_model() <classov_1_1Core.html#doxid-classov-1-1-core-1a46555f0803e8c29524626be08e7f5c5a>`__ method with a specific device
|
||||
|
||||
6. **Set input data**: Specify input tensor
|
||||
|
||||
7. **Execute**: Carry out inference and process results
|
||||
|
||||
Step 5 can potentially perform several time-consuming device-specific optimizations and network compilations,
|
||||
and such delays can lead to a bad user experience on application startup. To avoid this, some devices offer
|
||||
import/export network capability, and it is possible to either use the :doc:`Compile tool <openvino_inference_engine_tools_compile_tool_README>`
|
||||
or enable model caching to export compiled model automatically. Reusing cached model can significantly reduce compile model time.
|
||||
|
||||
Set "cache_dir" config option to enable model caching
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
To enable model caching, the application must specify a folder to store cached blobs, which is done like this:
|
||||
To enable model caching, the application must specify a folder to store the cached blobs:
|
||||
|
||||
.. tab-set::
|
||||
|
||||
.. tab-item:: C++
|
||||
:sync: cpp
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.cpp
|
||||
:language: cpp
|
||||
:fragment: [ov:caching:part0]
|
||||
|
||||
.. tab-item:: Python
|
||||
:sync: py
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.py
|
||||
:language: py
|
||||
:fragment: [ov:caching:part0]
|
||||
|
||||
|
||||
.. tab:: C++
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.cpp
|
||||
:language: cpp
|
||||
:fragment: [ov:caching:part0]
|
||||
|
||||
.. tab:: Python
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.py
|
||||
:language: python
|
||||
:fragment: [ov:caching:part0]
|
||||
|
||||
|
||||
With this code, if the device specified by ``device_name`` supports import/export model capability, a cached blob is automatically created inside the ``/path/to/cache/dir`` folder.
|
||||
If the device does not support import/export capability, cache is not created and no error is thrown.
|
||||
|
||||
Depending on your device, total time for compiling model on application startup can be significantly reduced.
|
||||
Also note that the very first ``compile_model`` (when cache is not yet created) takes slightly longer time to "export" the compiled blob into a cache file:
|
||||
With this code, if the device specified by ``device_name`` supports import/export model capability,
|
||||
a cached blob is automatically created inside the ``/path/to/cache/dir`` folder.
|
||||
If the device does not support the import/export capability, cache is not created and no error is thrown.
|
||||
|
||||
Note that the first ``compile_model`` operation takes slightly longer, as the cache needs to be created -
|
||||
the compiled blob is saved into a cache file:
|
||||
|
||||
.. image:: _static/images/caching_enabled.svg
|
||||
|
||||
|
||||
Even faster: use compile_model(modelPath)
|
||||
+++++++++++++++++++++++++++++++++++++++++
|
||||
Make it even faster: use compile_model(modelPath)
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
In some cases, applications do not need to customize inputs and outputs every time. Such application always
|
||||
call ``model = core.read_model(...)``, then ``core.compile_model(model, ..)`` and it can be further optimized.
|
||||
call ``model = core.read_model(...)``, then ``core.compile_model(model, ..)``, which can be further optimized.
|
||||
For these cases, there is a more convenient API to compile the model in a single call, skipping the read step:
|
||||
|
||||
.. tab-set::
|
||||
|
||||
.. tab:: C++
|
||||
.. tab-item:: C++
|
||||
:sync: cpp
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.cpp
|
||||
:language: cpp
|
||||
:fragment: [ov:caching:part1]
|
||||
|
||||
.. tab:: Python
|
||||
.. tab-item:: Python
|
||||
:sync: py
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.py
|
||||
:language: python
|
||||
:language: py
|
||||
:fragment: [ov:caching:part1]
|
||||
|
||||
|
||||
With model caching enabled, total load time is even smaller, if ``read_model`` is optimized as well.
|
||||
With model caching enabled, the total load time is even shorter, if ``read_model`` is optimized as well.
|
||||
|
||||
.. tab-set::
|
||||
|
||||
.. tab:: C++
|
||||
.. tab-item:: C++
|
||||
:sync: cpp
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.cpp
|
||||
:language: cpp
|
||||
:fragment: [ov:caching:part2]
|
||||
|
||||
.. tab:: Python
|
||||
.. tab-item:: Python
|
||||
:sync: py
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.py
|
||||
:language: python
|
||||
:language: py
|
||||
:fragment: [ov:caching:part2]
|
||||
|
||||
|
||||
@@ -94,25 +113,30 @@ With model caching enabled, total load time is even smaller, if ``read_model`` i
|
||||
Advanced Examples
|
||||
++++++++++++++++++++
|
||||
|
||||
Not every device supports network import/export capability. For those that don't, enabling caching has no effect.
|
||||
Not every device supports the network import/export capability. For those that don't, enabling caching has no effect.
|
||||
To check in advance if a particular device supports model caching, your application can use the following code:
|
||||
|
||||
.. tab-set::
|
||||
|
||||
.. tab:: C++
|
||||
.. tab-item:: C++
|
||||
:sync: cpp
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.cpp
|
||||
:language: cpp
|
||||
:fragment: [ov:caching:part3]
|
||||
|
||||
.. tab:: Python
|
||||
.. tab-item:: Python
|
||||
:sync: py
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_caching.py
|
||||
:language: python
|
||||
:language: py
|
||||
:fragment: [ov:caching:part3]
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
For GPU, model caching is currently implemented as a preview feature. Before it is fully supported, kernel caching can be used in the same manner: by setting the CACHE_DIR configuration key to a folder where the cache should be stored (see the :doc:`GPU plugin documentation <openvino_docs_OV_UG_supported_plugins_GPU>`). To activate the preview feature of model caching, set the OV_GPU_CACHE_MODEL environment variable to 1.
|
||||
For GPU, model caching is currently supported fully for static models only. For dynamic models,
|
||||
kernel caching is used and multiple ‘.cl_cache’ files are generated along with the ‘.blob’ file.
|
||||
See the :doc:`GPU plugin documentation <openvino_docs_OV_UG_supported_plugins_GPU>`.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Operations Specifications {#openvino_docs_operations_specifications}
|
||||
# Operation Specifications {#openvino_docs_operations_specifications}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
DeformablePSROIPooling-1 <openvino_docs_ops_detection_DeformablePSROIPooling_1>
|
||||
DepthToSpace-1 <openvino_docs_ops_movement_DepthToSpace_1>
|
||||
DetectionOutput-1 <openvino_docs_ops_detection_DetectionOutput_1>
|
||||
DetectionOutput-1 <openvino_docs_ops_detection_DetectionOutput_8>
|
||||
DetectionOutput-8 <openvino_docs_ops_detection_DetectionOutput_8>
|
||||
DFT-7 <openvino_docs_ops_signals_DFT_7>
|
||||
Divide-1 <openvino_docs_ops_arithmetic_Divide_1>
|
||||
Einsum-7 <openvino_docs_ops_matrix_Einsum_7>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# OpenVINO™ Python API Exclusives {#openvino_docs_OV_UG_Python_API_exclusives}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
OpenVINO™ Runtime Python API offers additional features and helpers to enhance user experience. The main goal of Python API is to provide user-friendly and simple yet powerful tool for Python users.
|
||||
|
||||
Easier Model Compilation
|
||||
@@ -9,7 +11,7 @@ Easier Model Compilation
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [auto_compilation]
|
||||
|
||||
|
||||
@@ -20,7 +22,7 @@ Besides functions aligned to C++ API, some of them have their Python counterpart
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [properties_example]
|
||||
|
||||
|
||||
@@ -33,7 +35,7 @@ Python API allows passing data as tensors. The ``Tensor`` object holds a copy of
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [tensor_basics]
|
||||
|
||||
|
||||
@@ -44,7 +46,7 @@ Shared Memory Mode
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [tensor_shared_mode]
|
||||
|
||||
|
||||
@@ -57,7 +59,7 @@ All infer methods allow users to pass data as popular *numpy* arrays, gathered i
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [passing_numpy_array]
|
||||
|
||||
|
||||
@@ -65,7 +67,7 @@ Results from inference can be obtained in various ways:
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [getting_results]
|
||||
|
||||
|
||||
@@ -76,10 +78,34 @@ Python API provides different synchronous calls to infer model, which block the
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [sync_infer]
|
||||
|
||||
|
||||
Inference Results - OVDict
|
||||
++++++++++++++++++++++++++
|
||||
|
||||
|
||||
Synchronous calls return a special data structure called ``OVDict``. It can be compared to a "frozen dictionary". There are various ways of accessing the object's elements:
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: python
|
||||
:fragment: [ov_dict]
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
It is possible to convert ``OVDict`` to a native dictionary using the ``to_dict()`` method.
|
||||
|
||||
|
||||
.. warning::
|
||||
|
||||
Using ``to_dict()`` results in losing access via strings and integers. Additionally,
|
||||
it performs a shallow copy, thus any modifications may affect the original
|
||||
object as well.
|
||||
|
||||
|
||||
AsyncInferQueue
|
||||
++++++++++++++++++++
|
||||
|
||||
@@ -91,7 +117,7 @@ The ``start_async`` function call is not required to be synchronized - it waits
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [asyncinferqueue]
|
||||
|
||||
|
||||
@@ -102,7 +128,7 @@ After the call to ``wait_all``, jobs and their data can be safely accessed. Acqu
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [asyncinferqueue_access]
|
||||
|
||||
|
||||
@@ -115,7 +141,7 @@ The callback of ``AsyncInferQueue`` is uniform for every job. When executed, GIL
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [asyncinferqueue_set_callback]
|
||||
|
||||
|
||||
@@ -127,7 +153,7 @@ To create an input tensor with such element types, you may need to pack your dat
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [packing_data]
|
||||
|
||||
|
||||
@@ -135,7 +161,7 @@ To extract low precision values from a tensor into the *numpy* array, you can us
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [unpacking]
|
||||
|
||||
|
||||
@@ -146,7 +172,7 @@ Some functions in Python API release the Global Lock Interpreter (GIL) while run
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_exclusives.py
|
||||
:language: cpp
|
||||
:language: python
|
||||
:fragment: [releasing_gil]
|
||||
|
||||
|
||||
@@ -178,3 +204,5 @@ List of Functions that Release the GIL
|
||||
* openvino.runtime.InferRequest.query_state
|
||||
* openvino.runtime.Model.reshape
|
||||
* openvino.preprocess.PrePostProcessor.build
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
89
docs/OV_Runtime_UG/Python_API_inference.md
Normal file
89
docs/OV_Runtime_UG/Python_API_inference.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# OpenVINO™ Runtime Python API Advanced Inference {#openvino_docs_OV_UG_Python_API_inference}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. warning::
|
||||
|
||||
All mentioned methods are very dependent on a specific hardware and software set-up.
|
||||
Consider conducting your own experiments with various models and different input/output
|
||||
sizes. The methods presented here are not universal, they may or may not apply to the
|
||||
specific pipeline. Please consider all tradeoffs and avoid premature optimizations.
|
||||
|
||||
|
||||
Direct Inference with ``CompiledModel``
|
||||
#######################################
|
||||
|
||||
The ``CompiledModel`` class provides the ``__call__`` method that runs a single synchronous inference using the given model. In addition to a compact code, all future calls to ``CompiledModel.__call__`` will result in less overhead, as the object reuses the already created ``InferRequest``.
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_inference.py
|
||||
:language: python
|
||||
:fragment: [direct_inference]
|
||||
|
||||
|
||||
Shared Memory on Inputs
|
||||
#######################
|
||||
|
||||
While using ``CompiledModel``, ``InferRequest`` and ``AsyncInferQueue``,
|
||||
OpenVINO™ Runtime Python API provides an additional mode - "Shared Memory".
|
||||
Specify the ``shared_memory`` flag to enable or disable this feature.
|
||||
The "Shared Memory" mode may be beneficial when inputs are large and copying
|
||||
data is considered an expensive operation. This feature creates shared ``Tensor``
|
||||
instances with the "zero-copy" approach, reducing overhead of setting inputs
|
||||
to minimum. Example usage:
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_inference.py
|
||||
:language: python
|
||||
:fragment: [shared_memory_inference]
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
"Shared Memory" is enabled by default in ``CompiledModel.__call__``.
|
||||
For other methods, like ``InferRequest.infer`` or ``InferRequest.start_async``,
|
||||
it is required to set the flag to ``True`` manually.
|
||||
|
||||
.. warning::
|
||||
|
||||
When data is being shared, all modifications may affect inputs of the inference!
|
||||
Use this feature with caution, especially in multi-threaded/parallel code,
|
||||
where data can be modified outside of the function's control flow.
|
||||
|
||||
|
||||
Hiding Latency with Asynchronous Calls
|
||||
######################################
|
||||
|
||||
Asynchronous calls allow to hide latency to optimize overall runtime of a codebase.
|
||||
For example, ``InferRequest.start_async`` releases the GIL and provides non-blocking call.
|
||||
It is beneficial to process other calls while waiting to finish compute-intensive inference.
|
||||
Example usage:
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_inference.py
|
||||
:language: python
|
||||
:fragment: [hiding_latency]
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
It is up to the user/developer to optimize the flow in a codebase to benefit from potential parallelization.
|
||||
|
||||
|
||||
"Postponed Return" with Asynchronous Calls
|
||||
##########################################
|
||||
|
||||
"Postponed Return" is a practice to omit overhead of ``OVDict``, which is always returned from
|
||||
synchronous calls. "Postponed Return" could be applied when:
|
||||
* only a part of output data is required. For example, only one specific output is significant
|
||||
in a given pipeline step and all outputs are large, thus, expensive to copy.
|
||||
* data is not required "now". For example, it can be later extracted inside the pipeline as
|
||||
a part of latency hiding.
|
||||
* data return is not required at all. For example, models are being chained with the pure ``Tensor`` interface.
|
||||
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_python_inference.py
|
||||
:language: python
|
||||
:fragment: [no_return_inference]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -112,6 +112,7 @@ OpenVINO Runtime uses frontend libraries dynamically to read models in different
|
||||
|
||||
- ``openvino_ir_frontend`` is used to read OpenVINO IR.
|
||||
- ``openvino_tensorflow_frontend`` is used to read TensorFlow file format.
|
||||
- ``openvino_tensorflow_lite_frontend`` is used to read TensorFlow Lite file format.
|
||||
- ``openvino_onnx_frontend`` is used to read ONNX file format.
|
||||
- ``openvino_paddle_frontend`` is used to read Paddle file format.
|
||||
|
||||
@@ -119,7 +120,7 @@ Depending on the model format types that are used in the application in `ov::Cor
|
||||
|
||||
.. note::
|
||||
|
||||
To optimize the size of final distribution package, you are recommended to convert models to OpenVINO IR by using :doc:`Model Optimizer <openvino_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide>`. This way you don't have to keep TensorFlow, ONNX, PaddlePaddle, and other frontend libraries in the distribution package.
|
||||
To optimize the size of final distribution package, you are recommended to convert models to OpenVINO IR by using :doc:`Model Optimizer <openvino_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide>`. This way you don't have to keep TensorFlow, TensorFlow Lite, ONNX, PaddlePaddle, and other frontend libraries in the distribution package.
|
||||
|
||||
(Legacy) Preprocessing via G-API
|
||||
++++++++++++++++++++++++++++++++
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
openvino_docs_OV_UG_Model_Representation
|
||||
openvino_docs_OV_UG_Infer_request
|
||||
openvino_docs_OV_UG_Python_API_inference
|
||||
openvino_docs_OV_UG_Python_API_exclusives
|
||||
openvino_docs_MO_DG_TensorFlow_Frontend
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
To run inference on multiple devices, you can choose either of the following ways:
|
||||
|
||||
- Use the :ref:`CUMULATIVE_THROUGHPUT option <cumulative throughput>` of the Automatic Device Selection mode. This way, you can use all available devices in the system without the need to specify them.
|
||||
- Use the Multi-Device execution mode. This page will explain how it works and how to use it.
|
||||
- Use the Multi-Device execution mode. It shares the same behaviors as the :ref:`CUMULATIVE_THROUGHPUT option <cumulative throughput>` of the Automatic Device Selection mode. The difference is,it needs <device list> or ``ov::device::priorities`` to be set explicitly.
|
||||
|
||||
How MULTI Works
|
||||
####################
|
||||
@@ -39,7 +39,7 @@ Following the OpenVINO™ naming convention, the Multi-Device mode is assigned t
|
||||
+----------------------------+---------------------------------+------------------------------------------------------------+
|
||||
|
||||
|
||||
Specifying the device list explicitly is required by MULTI, as it defines the devices available for inference and sets their priorities. Importantly, the list may also specify the number of requests for MULTI to keep for each device, as described below.
|
||||
Specifying the device list explicitly is required by MULTI, as it defines the devices available for inference and sets their priorities.
|
||||
|
||||
Note that OpenVINO™ Runtime enables you to use “GPU” as an alias for “GPU.0” in function calls. More details on enumerating devices can be found in :doc:`Working with devices <openvino_docs_OV_UG_Working_with_devices>`.
|
||||
|
||||
@@ -59,24 +59,6 @@ The following commands are accepted by the API:
|
||||
:fragment: [MULTI_0]
|
||||
|
||||
|
||||
Notice that MULTI allows you to **change device priorities on the fly**. You can alter the order, exclude a device, and bring an excluded device back. Still, it does not allow adding new devices.
|
||||
|
||||
|
||||
.. tab:: C++
|
||||
|
||||
.. doxygensnippet:: docs/snippets/MULTI1.cpp
|
||||
:language: cpp
|
||||
:fragment: [part1]
|
||||
|
||||
.. tab:: Python
|
||||
|
||||
.. doxygensnippet:: docs/snippets/ov_multi.py
|
||||
:language: python
|
||||
:fragment: [MULTI_1]
|
||||
|
||||
|
||||
One more thing you can define is the **number of requests to allocate for each device**. You can do it simply by adding the number to each device in parentheses, like this: ``"MULTI:CPU(2),GPU(2)"``. However, this method is not recommended as it is not performance-portable. The suggested approach is to configure individual devices and query the resulting number of requests to be used at the application level, as described in `Configuring Individual Devices and Creating MULTI On Top <#configuring-individual-devices-and-creating-the-multi-device-on-top>`__.
|
||||
|
||||
To check what devices are present in the system, you can use the Device API. For information on how to do it, check :doc:`Query device properties and configuration <openvino_docs_OV_UG_query_api>`.
|
||||
|
||||
|
||||
@@ -155,11 +137,4 @@ Additional Resources
|
||||
- :doc:`Automatic Device Selection <openvino_docs_OV_UG_supported_plugins_AUTO>`
|
||||
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe allowfullscreen mozallowfullscreen msallowfullscreen oallowfullscreen webkitallowfullscreen width="560" height="315" src="https://www.youtube.com/embed/xbORYFEmrqU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
|
||||
.. note:: This video is currently available only for C++, but many of the same concepts apply to Python.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
openvino_docs_OV_UG_model_state_intro
|
||||
|
||||
|
||||
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. Use the OpenVINO Runtime API to read an Intermediate Representation (IR), TensorFlow, ONNX, or PaddlePaddle model and execute it on preferred devices.
|
||||
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. Use the OpenVINO Runtime API to read an Intermediate Representation (IR), TensorFlow, TensorFlow Lite, ONNX, or PaddlePaddle model and execute it on preferred devices.
|
||||
|
||||
OpenVINO Runtime uses a plugin architecture. Its plugins are software components that contain complete implementation for inference on a particular Intel® hardware device: CPU, GPU, GNA, etc. Each plugin implements the unified API and provides additional hardware-specific APIs for configuring devices or API interoperability between OpenVINO Runtime and underlying plugin backend.
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ When some preprocessing steps cannot be integrated into the execution graph usin
|
||||
Model Optimizer command-line options (for example, ``YUV``->``RGB`` color space conversion,
|
||||
``Resize``, etc.), it is possible to write a simple code which:
|
||||
|
||||
* Reads the original model (OpenVINO IR, TensorFlow, ONNX, PaddlePaddle).
|
||||
* Reads the original model (OpenVINO IR, TensorFlow, TensorFlow Lite, ONNX, PaddlePaddle).
|
||||
* Adds the preprocessing/postprocessing steps.
|
||||
* Saves resulting model as IR (``.xml`` and ``.bin``).
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ This guide presents how to use OpenVINO securely with protected models.
|
||||
Secure Model Deployment
|
||||
#######################
|
||||
|
||||
After a model is optimized by the OpenVINO Model Optimizer, it's deployednto target devices in the OpenVINO Intermediate Representation (OpenVINO IR) format. An optimized model is stored on edge device and is executed by the OpenVINO Runtime. TensorFlow, ONNX and PaddlePaddle models can be read natively by OpenVINO Runtime as well.
|
||||
After a model is optimized by the OpenVINO Model Optimizer, it's deployed to target devices in the OpenVINO Intermediate Representation (OpenVINO IR) format. An optimized model is stored on edge device and is executed by the OpenVINO Runtime. TensorFlow, TensorFlow Lite, ONNX and PaddlePaddle models can be read natively by OpenVINO Runtime as well.
|
||||
|
||||
Encrypting and optimizing model before deploying it to the edge device can be used to protect deep-learning models. The edge device should keep the stored model protected all the time and have the model decrypted **in runtime only** for use by the OpenVINO Runtime.
|
||||
|
||||
|
||||
@@ -292,24 +292,27 @@ For more details, see the :doc:`preprocessing API<openvino_docs_OV_UG_Preprocess
|
||||
Model Caching
|
||||
+++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Cache for the GPU plugin may be enabled via the common OpenVINO ``ov::cache_dir`` property. GPU plugin implementation supports only caching of compiled kernels, so all plugin-specific model transformations are executed on each ``ov::Core::compile_model()`` call regardless of the ``cache_dir`` option.
|
||||
Still, since kernel compilation is a bottleneck in the model loading process, a significant load time reduction can be achieved with the ``ov::cache_dir`` property enabled.
|
||||
Model Caching helps reduce application startup delays by exporting and reusing
|
||||
the compiled model automatically. The cache for the GPU plugin may be enabled
|
||||
via the common OpenVINO ``ov::cache_dir`` property.
|
||||
|
||||
.. note::
|
||||
This means that all plugin-specific model transformations are executed on each ``ov::Core::compile_model()``
|
||||
call, regardless of the ``ov::cache_dir`` option. Still, since kernel compilation is a bottleneck in the model
|
||||
loading process, a significant load time reduction can be achieved.
|
||||
Currently, GPU plugin implementation fully supports static models only. For dynamic models,
|
||||
kernel caching is used instead and multiple ‘.cl_cache’ files are generated along with the ‘.blob’ file.
|
||||
|
||||
Full model caching support is currently implemented as a preview feature. To activate it, set the OV_GPU_CACHE_MODEL environment variable to 1.
|
||||
|
||||
For more details, see the :doc:`Model caching overview<openvino_docs_OV_UG_Model_caching_overview>`.
|
||||
For more details, see the :doc:`Model caching overview <openvino_docs_OV_UG_Model_caching_overview>`.
|
||||
|
||||
Extensibility
|
||||
+++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
For information on this subject, see the :doc:`GPU Extensibility<openvino_docs_Extensibility_UG_GPU>`.
|
||||
For information on this subject, see the :doc:`GPU Extensibility <openvino_docs_Extensibility_UG_GPU>`.
|
||||
|
||||
GPU Context and Memory Sharing via RemoteTensor API
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
For information on this subject, see the :doc:`RemoteTensor API of GPU Plugin<openvino_docs_OV_UG_supported_plugins_GPU_RemoteTensor_API>`.
|
||||
For information on this subject, see the :doc:`RemoteTensor API of GPU Plugin <openvino_docs_OV_UG_supported_plugins_GPU_RemoteTensor_API>`.
|
||||
|
||||
Supported Properties
|
||||
#######################################
|
||||
@@ -373,18 +376,18 @@ GPU Performance Checklist: Summary
|
||||
Since OpenVINO relies on the OpenCL kernels for the GPU implementation, many general OpenCL tips apply:
|
||||
|
||||
- Prefer ``FP16`` inference precision over ``FP32``, as Model Optimizer can generate both variants, and the ``FP32`` is the default. To learn about optimization options, see :doc:`Optimization Guide<openvino_docs_model_optimization_guide>`.
|
||||
- Try to group individual infer jobs by using :doc:`automatic batching<openvino_docs_OV_UG_Automatic_Batching>`.
|
||||
- Consider :doc:`caching<openvino_docs_OV_UG_Model_caching_overview>` to minimize model load time.
|
||||
- If your application performs inference on the CPU alongside the GPU, or otherwise loads the host heavily, make sure that the OpenCL driver threads do not starve. :doc:`CPU configuration options<openvino_docs_OV_UG_supported_plugins_CPU>` can be used to limit the number of inference threads for the CPU plugin.
|
||||
- Even in the GPU-only scenario, a GPU driver might occupy a CPU core with spin-loop polling for completion. If CPU load is a concern, consider the dedicated ``queue_throttle`` property mentioned previously. Note that this option may increase inference latency, so consider combining it with multiple GPU streams or :doc:`throughput performance hints<openvino_docs_OV_UG_Performance_Hints>`.
|
||||
- When operating media inputs, consider :doc:`remote tensors API of the GPU Plugin<openvino_docs_OV_UG_supported_plugins_GPU_RemoteTensor_API>`.
|
||||
- Try to group individual infer jobs by using :doc:`automatic batching <openvino_docs_OV_UG_Automatic_Batching>`.
|
||||
- Consider :doc:`caching <openvino_docs_OV_UG_Model_caching_overview>` to minimize model load time.
|
||||
- If your application performs inference on the CPU alongside the GPU, or otherwise loads the host heavily, make sure that the OpenCL driver threads do not starve. :doc:`CPU configuration options <openvino_docs_OV_UG_supported_plugins_CPU>` can be used to limit the number of inference threads for the CPU plugin.
|
||||
- Even in the GPU-only scenario, a GPU driver might occupy a CPU core with spin-loop polling for completion. If CPU load is a concern, consider the dedicated ``queue_throttle`` property mentioned previously. Note that this option may increase inference latency, so consider combining it with multiple GPU streams or :doc:`throughput performance hints <openvino_docs_OV_UG_Performance_Hints>`.
|
||||
- When operating media inputs, consider :doc:`remote tensors API of the GPU Plugin <openvino_docs_OV_UG_supported_plugins_GPU_RemoteTensor_API>`.
|
||||
|
||||
|
||||
Additional Resources
|
||||
#######################################
|
||||
|
||||
* :doc:`Supported Devices<openvino_docs_OV_UG_supported_plugins_Supported_Devices>`.
|
||||
* :doc:`Optimization guide<openvino_docs_deployment_optimization_guide_dldt_optimization_guide>`.
|
||||
* :doc:`Supported Devices <openvino_docs_OV_UG_supported_plugins_Supported_Devices>`.
|
||||
* :doc:`Optimization guide <openvino_docs_deployment_optimization_guide_dldt_optimization_guide>`.
|
||||
* `GPU plugin developers documentation <https://github.com/openvinotoolkit/openvino/blob/master/src/plugins/intel_gpu/README.md>`__
|
||||
|
||||
|
||||
|
||||
@@ -17,21 +17,21 @@ The OpenVINO Runtime provides unique capabilities to infer deep learning models
|
||||
+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
|
||||
| OpenVINO Device | Supported Hardware |
|
||||
+==========================================================================+===============================================================================================================+
|
||||
|| :doc:`GPU <openvino_docs_OV_UG_supported_plugins_GPU>` | Intel® Processor Graphics, including Intel® HD Graphics and Intel® Iris® Graphics |
|
||||
|| :doc:`GPU <openvino_docs_OV_UG_supported_plugins_GPU>` | Intel® Processor Graphics, including Intel® HD Graphics and Intel® Iris® Graphics |
|
||||
+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
|
||||
|| :doc:`CPU <openvino_docs_OV_UG_supported_plugins_CPU>` | 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) |
|
||||
|| :doc:`CPU <openvino_docs_OV_UG_supported_plugins_CPU>` | 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) |
|
||||
+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
|
||||
|| :doc:`GNA plugin <openvino_docs_OV_UG_supported_plugins_GNA>` | Intel® Speech Enabling Developer Kit, Amazon Alexa* Premium Far-Field Developer Kit, Intel® |
|
||||
|| (available in the Intel® Distribution of OpenVINO™ toolkit) | 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 |
|
||||
|| :doc:`GNA plugin <openvino_docs_OV_UG_supported_plugins_GNA>` | Intel® Speech Enabling Developer Kit, Amazon Alexa* Premium Far-Field Developer Kit, Intel® |
|
||||
|| (available in the Intel® Distribution of OpenVINO™ toolkit) | 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 |
|
||||
+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+
|
||||
|| :doc:`Arm® CPU <openvino_docs_OV_UG_supported_plugins_ARM_CPU>` | Raspberry Pi™ 4 Model B, Apple® Mac mini with M1 chip, NVIDIA® Jetson Nano™, Android™ devices |
|
||||
|| (unavailable in the Intel® Distribution of OpenVINO™ toolkit) | |
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,421 +1,511 @@
|
||||
Network model,Release,IE-Type,Platform name,Throughput-INT8,Throughput-FP16,Throughput-FP32,Value,Efficiency,Price,TDP,Sockets,Price/socket,TDP/socket,Latency
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,96.06,,35.627,0.146,0.582,$658 ,165,1,$658 ,165,17.1432
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,53.093,,22.253,0.081,0.322,$658 ,165,1,$658 ,165,22.0002
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,108.306,,44.797,0.165,0.656,$658 ,165,1,$658 ,165,
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,2.763,,1.332,0.081,0.291,$34 ,9.5,1,$34 ,9.5,350.2746
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,5.694,,2.002,0.085,0.475,$67 ,12,1,$67 ,12,183.1711
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,16.11,,10.009,0.24,1.343,$67 ,12,1,$67 ,12,79.7607
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,21.128,,11.81,0.315,1.761,$67 ,12,1,$67 ,12,
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,14.212,,4.255,0.12,0.947,$118 ,15,1,$118 ,15,72.6516
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,18.983,,8.696,0.161,1.266,$118 ,15,1,$118 ,15,62.9729
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,30.866,,12.087,0.262,2.058,$118 ,15,1,$118 ,15,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,645.77,,213.877,0.138,1.745,"$4,678 ",370,2,"$2,339 ",185,6.7612
|
||||
bert-base-cased ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,23.721,,14.457,0.203,0.365,$117 ,65,1,$117 ,65,44.0371
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,30.141,,16.38,0.141,0.861,$214 ,35,1,$214 ,35,46.6064
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,30.541,,19.319,0.159,0.47,$192 ,65,1,$192 ,65,27.8871
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,41.504,,22.75,0.137,1.186,$303 ,35,1,$303 ,35,27.974
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,32.073,,16.558,0.066,0.916,$488 ,35,1,$488 ,35,39.7617
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,69.053,,40.243,0.116,0.552,$594 ,125,1,$594 ,125,18.309
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,23.402,,14.614,0.094,0.33,$249 ,71,1,$249 ,71,44.8984
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,266.949,,79.033,0.085,1.271,"$3,144 ",210,2,"$1,572 ",105,12.4065
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,2090.76,,326.55,0.292,4.646,"$7,166 ",450,2,"$3,583 ",225,4.61
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,682.593,,225.713,0.04,1.665,"$16,954 ",410,2,"$8,477 ",205,6.9035
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,256.994,,75.502,0.128,1.028,"$2,004 ",250,2,"$1,002 ",125,13.0382
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,64.632,,18.394,0.138,2.308,$469 ,28,1,$469 ,28,17.638
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,95.656,,44.056,0.204,3.416,$469 ,28,1,$469 ,28,14.1005
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,128.005,,50.592,0.273,4.572,$469 ,28,1,$469 ,28,
|
||||
bert-base-cased ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,906.3,348.52,,0.471,6.042,"$1,925 ",150,1,"$1,925 ",150,7.381
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,7.714,,3.093,0.012,0.047,$658 ,165,1,$658 ,165,155.3633
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,5.617,,1.978,0.009,0.034,$658 ,165,1,$658 ,165,181.8303
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,10.602,,3.753,0.016,0.064,$658 ,165,1,$658 ,165,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.272,,0.125,0.008,0.029,$34 ,9.5,1,$34 ,9.5,3861.0657
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.488,,0.188,0.007,0.041,$67 ,12,1,$67 ,12,2090.8266
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.395,,0.774,0.021,0.116,$67 ,12,1,$67 ,12,727.6781
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,1.827,,0.845,0.027,0.152,$67 ,12,1,$67 ,12,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.199,,0.377,0.01,0.08,$118 ,15,1,$118 ,15,831.301
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.051,,0.766,0.017,0.137,$118 ,15,1,$118 ,15,494.5363
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,3.118,,1.127,0.026,0.208,$118 ,15,1,$118 ,15,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,43.436,,17.379,0.009,0.117,"$4,678 ",370,2,"$2,339 ",185,52.2862
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.067,,1.278,0.018,0.032,$117 ,65,1,$117 ,65,495.0786
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,2.619,,1.536,0.012,0.075,$214 ,35,1,$214 ,35,502.3687
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,2.72,,1.679,0.014,0.042,$192 ,65,1,$192 ,65,320.168
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,3.625,,2.11,0.012,0.104,$303 ,35,1,$303 ,35,309.2848
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.906,,1.693,0.006,0.083,$488 ,35,1,$488 ,35,386.4947
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,4.801,,2.729,0.008,0.038,$594 ,125,1,$594 ,125,200.0794
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.098,,1.32,0.008,0.03,$249 ,71,1,$249 ,71,492.0938
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,21.062,,7.021,0.007,0.1,"$3,144 ",210,2,"$1,572 ",105,101.4694
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,651.95,,91.18,0.091,1.449,"$7,166 ",450,2,"$3,583 ",225,12.87
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,46.064,,19.051,0.003,0.112,"$16,954 ",410,2,"$8,477 ",205,49.4869
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,20.014,,6.726,0.01,0.08,"$2,004 ",250,2,"$1,002 ",125,105.9423
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,5.192,,1.626,0.011,0.185,$469 ,28,1,$469 ,28,203.6311
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,10.476,,3.914,0.022,0.374,$469 ,28,1,$469 ,28,95.6598
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,11.75,,4.168,0.025,0.42,$469 ,28,1,$469 ,28,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,74.47,25.77,,0.039,0.496,"$1,925 ",150,1,"$1,925 ",150,19.768
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,99.078,,36.552,0.151,0.6,$658 ,165,1,$658 ,165,11.269
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,57.707,,13.789,0.088,0.35,$658 ,165,1,$658 ,165,16.263
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,115.59,,39.82,0.176,0.701,$658 ,165,1,$658 ,165,
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.327,,1.496,0.098,0.35,$34 ,9.5,1,$34 ,9.5,308.0916
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,6.07,,3.041,0.091,0.506,$67 ,12,1,$67 ,12,166.5404
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,5.196,0,0,$67 ,12,1,$67 ,12,217.0439
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,9.877,,7.145,0.147,0.823,$67 ,12,1,$67 ,12,
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,13.516,,4.681,0.115,0.901,$118 ,15,1,$118 ,15,74.1061
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,22.35,,4.635,0.189,1.49,$118 ,15,1,$118 ,15,42.9657
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,34.576,,8.955,0.293,2.305,$118 ,15,1,$118 ,15,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,559.145,,134.159,0.12,1.511,"$4,678 ",370,2,"$2,339 ",185,5.356
|
||||
deeplabv3,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,27.171,,15.947,0.232,0.418,$117 ,65,1,$117 ,65,36.6584
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,34.907,,16.72,0.163,0.997,$214 ,35,1,$214 ,35,38.8986
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,35.07,,20.497,0.183,0.54,$192 ,65,1,$192 ,65,22.1865
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,47.647,,23.747,0.157,1.361,$303 ,35,1,$303 ,35,22.628
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,36.559,,18.235,0.075,1.045,$488 ,35,1,$488 ,35,27.138
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,79.42,,21.03,0.134,0.635,$594 ,125,1,$594 ,125,12.8397
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,26.173,,16.906,0.105,0.369,$249 ,71,1,$249 ,71,37.9245
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,248.049,,81.667,0.079,1.181,"$3,144 ",210,2,"$1,572 ",105,8.9485
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,1139.5,,271.62,0.159,2.532,"$7,166 ",450,2,"$3,583 ",225,2.47
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,632.113,,168.65,0.037,1.542,"$16,954 ",410,2,"$8,477 ",205,4.0073
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,241.703,,78.963,0.121,0.967,"$2,004 ",250,2,"$1,002 ",125,9.356
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,64.13,,18.519,0.137,2.29,$469 ,28,1,$469 ,28,16.6586
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,104.926,,24.592,0.224,3.747,$469 ,28,1,$469 ,28,9.1435
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,121.441,,30.498,0.259,4.337,$469 ,28,1,$469 ,28,
|
||||
deeplabv3,OV-2022.3-8991,accel,Intel® Flex-170 GPU,882.04,98.95,,0.458,5.88,"$1,925 ",150,1,"$1,925 ",150,2.674
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,457.193,,165.166,0.695,2.771,$658 ,165,1,$658 ,165,3.141
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,203.417,,68.438,0.309,1.233,$658 ,165,1,$658 ,165,6.6728
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,575.442,,179.858,0.875,3.488,$658 ,165,1,$658 ,165,
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,13.344,,5.882,0.392,1.405,$34 ,9.5,1,$34 ,9.5,80.7014
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,24.172,,10.554,0.361,2.014,$67 ,12,1,$67 ,12,43.668
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,30.615,0,0,$67 ,12,1,$67 ,12,30.0241
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,39.365,,38.926,0.588,3.28,$67 ,12,1,$67 ,12,
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,58.965,,15.713,0.5,3.931,$118 ,15,1,$118 ,15,18.3425
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,86.162,,25.34,0.73,5.744,$118 ,15,1,$118 ,15,20.7907
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,140.891,,39.929,1.194,9.393,$118 ,15,1,$118 ,15,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,3094.742,,701.32,0.662,8.364,"$4,678 ",370,2,"$2,339 ",185,2.131
|
||||
densenet-121,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,120.121,,66.624,1.027,1.848,$117 ,65,1,$117 ,65,9.3755
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,142.623,,80.872,0.666,4.075,$214 ,35,1,$214 ,35,10.2536
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,149.112,,85.051,0.777,2.294,$192 ,65,1,$192 ,65,6.0817
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,194.559,,111.988,0.642,5.559,$303 ,35,1,$303 ,35,6.1906
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,146.463,,69.186,0.3,4.185,$488 ,35,1,$488 ,35,8.6496
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,360.501,,182.543,0.607,2.884,$594 ,125,1,$594 ,125,3.6046
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,114.844,,67.188,0.461,1.618,$249 ,71,1,$249 ,71,9.7609
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,1116.372,,295.952,0.355,5.316,"$3,144 ",210,2,"$1,572 ",105,3.9606
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,8279.14,,1137.41,1.155,18.398,"$7,166 ",450,2,"$3,583 ",225,2.39
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,3155.106,,815.725,0.186,7.695,"$16,954 ",410,2,"$8,477 ",205,2.8831
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1064.824,,283.423,0.531,4.259,"$2,004 ",250,2,"$1,002 ",125,4.0689
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,265.167,,74.501,0.565,9.47,$469 ,28,1,$469 ,28,4.7413
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,391.185,,123.519,0.834,13.971,$469 ,28,1,$469 ,28,6.5259
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,526.12,,150.35,1.122,18.79,$469 ,28,1,$469 ,28,
|
||||
densenet-121,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3440.18,1178.68,,1.787,22.935,"$1,925 ",150,1,"$1,925 ",150,3.302
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,112.297,,64.06,0.171,0.681,$658 ,165,1,$658 ,165,11.8265
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,73.766,,38.742,0.112,0.447,$658 ,165,1,$658 ,165,21.403
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,128.735,,76.62,0.196,0.78,$658 ,165,1,$658 ,165,
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.812,,2.565,0.112,0.401,$34 ,9.5,1,$34 ,9.5,274.5947
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,7.248,,5.17,0.108,0.604,$67 ,12,1,$67 ,12,143.7999
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,22.697,,15.635,0.339,1.891,$67 ,12,1,$67 ,12,59.0651
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,26.855,,17.296,0.401,2.238,$67 ,12,1,$67 ,12,
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,15.949,,10.417,0.135,1.063,$118 ,15,1,$118 ,15,62.2765
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,25.936,,14.073,0.22,1.729,$118 ,15,1,$118 ,15,54.0166
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,32.767,,20.733,0.278,2.184,$118 ,15,1,$118 ,15,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,424.388,,256.503,0.091,1.147,"$4,678 ",370,2,"$2,339 ",185,
|
||||
efficientdet-d0,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,36.666,,24.041,0.313,0.564,$117 ,65,1,$117 ,65,30.2521
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,45.331,,26.92,0.212,1.295,$214 ,35,1,$214 ,35,32.8946
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,44.921,,32.357,0.234,0.691,$192 ,65,1,$192 ,65,19.7048
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,62.749,,37.807,0.207,1.793,$303 ,35,1,$303 ,35,19.901
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,50.35,,29.935,0.103,1.439,$488 ,35,1,$488 ,35,24.2916
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,94.981,,36.434,0.16,0.76,$594 ,125,1,$594 ,125,12.658
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,35.831,,27.306,0.144,0.505,$249 ,71,1,$249 ,71,30.9469
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,239.06,,161.224,0.076,1.138,"$3,144 ",210,2,"$1,572 ",105,13.9735
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,875.53,,560.48,0.122,1.946,"$7,166 ",450,2,"$3,583 ",225,5.07
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,471.02,,300.291,0.028,1.149,"$16,954 ",410,2,"$8,477 ",205,9.3866
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,231.873,,156.285,0.116,0.927,"$2,004 ",250,2,"$1,002 ",125,14.1605
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,71.482,,41.123,0.152,2.553,$469 ,28,1,$469 ,28,16.6952
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,92.52,,50.538,0.197,3.304,$469 ,28,1,$469 ,28,17.295
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,107.688,,56.901,0.23,3.846,$469 ,28,1,$469 ,28,
|
||||
efficientdet-d0,OV-2022.3-8991,accel,Intel® Flex-170 GPU,463.67,295.13,,0.241,3.091,"$1,925 ",150,1,"$1,925 ",150,5.603
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,12.921,,4.016,0.02,0.078,$658 ,165,1,$658 ,165,89.8929
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,6.802,,1.82,0.01,0.041,$658 ,165,1,$658 ,165,149.7396
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,15.679,,4.499,0.024,0.095,$658 ,165,1,$658 ,165,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.32,,0.131,0.009,0.034,$34 ,9.5,1,$34 ,9.5,3206.1652
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.592,,0.242,0.009,0.049,$67 ,12,1,$67 ,12,1727.27
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.301,,0.728,0.019,0.108,$67 ,12,1,$67 ,12,776.0692
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,1.683,,0.865,0.025,0.14,$67 ,12,1,$67 ,12,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.563,,0.417,0.013,0.104,$118 ,15,1,$118 ,15,640.0005
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.616,,0.725,0.022,0.174,$118 ,15,1,$118 ,15,389.3563
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,4.056,,1.107,0.034,0.27,$118 ,15,1,$118 ,15,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,74.93,,19.965,0.016,0.203,"$4,678 ",370,2,"$2,339 ",185,65.5753
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.988,,1.473,0.026,0.046,$117 ,65,1,$117 ,65,340.7313
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,3.633,,1.926,0.017,0.104,$214 ,35,1,$214 ,35,430.1967
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,3.852,,1.982,0.02,0.059,$192 ,65,1,$192 ,65,241.5513
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,4.999,,2.648,0.016,0.143,$303 ,35,1,$303 ,35,260.2284
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,3.71,,2.005,0.008,0.106,$488 ,35,1,$488 ,35,280.1493
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,8.977,,4.542,0.015,0.072,$594 ,125,1,$594 ,125,137.1747
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.867,,1.464,0.012,0.04,$249 ,71,1,$249 ,71,353.2042
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,29.332,,8.19,0.009,0.14,"$3,144 ",210,2,"$1,572 ",105,78.1722
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,282.45,,32.43,0.003,0.044,"$7,166 ",450,2,"$3,583 ",225,12.03
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,85.213,,22.066,0.005,0.208,"$16,954 ",410,2,"$8,477 ",205,30.4317
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,27.847,,7.786,0.014,0.111,"$2,004 ",250,2,"$1,002 ",125,78.6604
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,7.027,,1.855,0.015,0.251,$469 ,28,1,$469 ,28,151.8783
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,13.823,,3.545,0.029,0.494,$469 ,28,1,$469 ,28,70.7933
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,16.898,,4.191,0.036,0.604,$469 ,28,1,$469 ,28,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,accel,Intel® Flex-170 GPU,216.3,23.42,,0.112,1.442,"$1,925 ",150,1,"$1,925 ",150,9.137
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,121.813,,39.391,0.185,0.738,$658 ,165,1,$658 ,165,11.0425
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,71.229,,17.755,0.108,0.432,$658 ,165,1,$658 ,165,19.7132
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,175.049,,44.894,0.266,1.061,$658 ,165,1,$658 ,165,
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.12,,1.344,0.092,0.328,$34 ,9.5,1,$34 ,9.5,335.3712
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,5.677,,2.364,0.085,0.473,$67 ,12,1,$67 ,12,181.8897
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,17.009,,8.302,0.254,1.417,$67 ,12,1,$67 ,12,78.0548
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,21.713,,10.37,0.324,1.809,$67 ,12,1,$67 ,12,
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,15.576,,4.073,0.132,1.038,$118 ,15,1,$118 ,15,65.7272
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,28.105,,6.681,0.238,1.874,$118 ,15,1,$118 ,15,46.2616
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,41.918,,10.163,0.355,2.795,$118 ,15,1,$118 ,15,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,881.403,,205.296,0.188,2.382,"$4,678 ",370,2,"$2,339 ",185,4.7029
|
||||
Inception-V4,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,30.004,,15.51,0.256,0.462,$117 ,65,1,$117 ,65,35.0513
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,35.882,,19.222,0.168,1.025,$214 ,35,1,$214 ,35,37.6472
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,37.987,,19.998,0.198,0.584,$192 ,65,1,$192 ,65,21.5144
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,48.903,,26.356,0.161,1.397,$303 ,35,1,$303 ,35,22.2402
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,37.301,,19.475,0.076,1.066,$488 ,35,1,$488 ,35,28.572
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,92.646,,44.966,0.156,0.741,$594 ,125,1,$594 ,125,12.3153
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,28.537,,15.13,0.115,0.402,$249 ,71,1,$249 ,71,36.8888
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,301.215,,77.005,0.096,1.434,"$3,144 ",210,2,"$1,572 ",105,10.5711
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,3406.7,,331.56,0.475,7.57,"$7,166 ",450,2,"$3,583 ",225,3.23
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,937.139,,225.776,0.055,2.286,"$16,954 ",410,2,"$8,477 ",205,5.6984
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,287.767,,73.617,0.144,1.151,"$2,004 ",250,2,"$1,002 ",125,11.1114
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,71.295,,18.482,0.152,2.546,$469 ,28,1,$469 ,28,15.8294
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,158.282,,36.884,0.337,5.653,$469 ,28,1,$469 ,28,10.6245
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,182.132,,44.198,0.388,6.505,$469 ,28,1,$469 ,28,
|
||||
Inception-V4,OV-2022.3-8991,accel,Intel® Flex-170 GPU,2986.91,298.6,,1.552,19.913,"$1,925 ",150,1,"$1,925 ",150,3.968
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,1054.462,,346.546,1.603,6.391,$658 ,165,1,$658 ,165,1.4898
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,493.088,,145.503,0.749,2.988,$658 ,165,1,$658 ,165,2.472
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,1056.241,,361.472,1.605,6.401,$658 ,165,1,$658 ,165,
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,28.032,,12.691,0.824,2.951,$34 ,9.5,1,$34 ,9.5,38.1991
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,50.352,,23.675,0.752,4.196,$67 ,12,1,$67 ,12,20.8993
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,100.377,,60.647,1.498,8.365,$67 ,12,1,$67 ,12,11.6812
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,148.458,,79.575,2.216,12.372,$67 ,12,1,$67 ,12,
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,123.806,,38.981,1.049,8.254,$118 ,15,1,$118 ,15,8.4121
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,168.473,,53.272,1.428,11.232,$118 ,15,1,$118 ,15,7.8961
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,238.511,,83.721,2.021,15.901,$118 ,15,1,$118 ,15,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,6730.68,,1634.937,1.439,18.191,"$4,678 ",370,2,"$2,339 ",185,0.7265
|
||||
mobilenet-ssd ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,244.598,,140.009,2.091,3.763,$117 ,65,1,$117 ,65,4.4481
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,303.938,,173.562,1.42,8.684,$214 ,35,1,$214 ,35,4.7946
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,304.802,,185.045,1.588,4.689,$192 ,65,1,$192 ,65,2.8007
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,412.261,,241.37,1.361,11.779,$303 ,35,1,$303 ,35,2.8749
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,315.107,,152.342,0.646,9.003,$488 ,35,1,$488 ,35,3.5896
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,774.346,,345.309,1.304,6.195,$594 ,125,1,$594 ,125,1.5452
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,233.43,,147.098,0.937,3.288,$249 ,71,1,$249 ,71,4.5879
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,2331.207,,691.743,0.741,11.101,"$3,144 ",210,2,"$1,572 ",105,1.4852
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,16445.75,,2736.2,2.295,36.546,"$7,166 ",450,2,"$3,583 ",225,0.65
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,6691.915,,1796.357,0.395,16.322,"$16,954 ",410,2,"$8,477 ",205,1.0518
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,2225.935,,667.692,1.111,8.904,"$2,004 ",250,2,"$1,002 ",125,1.5444
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,579.307,,166.959,1.235,20.69,$469 ,28,1,$469 ,28,2.0215
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,582.636,,243.945,1.242,20.808,$469 ,28,1,$469 ,28,2.548
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,744.231,,292.071,1.587,26.58,$469 ,28,1,$469 ,28,
|
||||
mobilenet-ssd ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3548.98,1412.68,,1.844,23.66,"$1,925 ",150,1,"$1,925 ",150,1.344
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,2446.221,,1003.129,3.718,14.826,$658 ,165,1,$658 ,165,0.7182
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,1265.969,,389.894,1.924,7.673,$658 ,165,1,$658 ,165,1.3894
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,2680.458,,1013.049,4.074,16.245,$658 ,165,1,$658 ,165,
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,81.572,,45.013,2.399,8.587,$34 ,9.5,1,$34 ,9.5,13.4692
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,143.134,,81.991,2.136,11.928,$67 ,12,1,$67 ,12,7.609
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,164.945,0,0,$67 ,12,1,$67 ,12,7.0306
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,227.898,,202.181,3.401,18.992,$67 ,12,1,$67 ,12,
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,316.763,,124.654,2.684,21.118,$118 ,15,1,$118 ,15,3.391
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,525.084,,141.61,4.45,35.006,$118 ,15,1,$118 ,15,4.9197
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,807.397,,255.964,6.842,53.826,$118 ,15,1,$118 ,15,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,14679.84,,4065.139,3.138,39.675,"$4,678 ",370,2,"$2,339 ",185,0.4828
|
||||
mobilenet-v2 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,619.507,,452.366,5.295,9.531,$117 ,65,1,$117 ,65,1.8067
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,806.314,,441.904,3.768,23.038,$214 ,35,1,$214 ,35,2.1078
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,766.072,,558.975,3.99,11.786,$192 ,65,1,$192 ,65,1.2307
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,1081.253,,664.108,3.568,30.893,$303 ,35,1,$303 ,35,1.2788
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,825.071,,413.091,1.691,23.573,$488 ,35,1,$488 ,35,1.6818
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,2067.162,,868.25,3.48,16.537,$594 ,125,1,$594 ,125,0.7363
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,594.283,,479.567,2.387,8.37,$249 ,71,1,$249 ,71,1.8531
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,5882.455,,1895.498,1.871,28.012,"$3,144 ",210,2,"$1,572 ",105,1.3871
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,28383.76,,7254.28,3.961,63.075,"$7,166 ",450,2,"$3,583 ",225,0.55
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,15616.083,,4308.927,0.921,38.088,"$16,954 ",410,2,"$8,477 ",205,0.8685
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,5616.283,,1835.686,2.803,22.465,"$2,004 ",250,2,"$1,002 ",125,1.404
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,1463.21,,538.597,3.12,52.258,$469 ,28,1,$469 ,28,0.8864
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,2076.015,,544.641,4.426,74.143,$469 ,28,1,$469 ,28,1.7212
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,2677.374,,698.942,5.709,95.621,$469 ,28,1,$469 ,28,
|
||||
mobilenet-v2 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,18371.95,4738.33,,9.544,122.48,"$1,925 ",150,1,"$1,925 ",150,1.15
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,804.771,,212.574,1.223,4.877,$658 ,165,1,$658 ,165,1.3886
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,491.337,,146.839,0.747,2.978,$658 ,165,1,$658 ,165,2.2655
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,1180.984,,365.777,1.795,7.157,$658 ,165,1,$658 ,165,
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,22.96,,9.564,0.675,2.417,$34 ,9.5,1,$34 ,9.5,44.5491
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,40.944,,16.158,0.611,3.412,$67 ,12,1,$67 ,12,25.1377
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,161.381,,60.863,2.409,13.448,$67 ,12,1,$67 ,12,10.983
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,197.477,,73.927,2.947,16.456,$67 ,12,1,$67 ,12,
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,105.574,,28.914,0.895,7.038,$118 ,15,1,$118 ,15,9.6165
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,194.694,,55.341,1.65,12.98,$118 ,15,1,$118 ,15,6.643
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,291.441,,82.105,2.47,19.429,$118 ,15,1,$118 ,15,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,5761.961,,1431.864,1.232,15.573,"$4,678 ",370,2,"$2,339 ",185,0.6512
|
||||
resnet-18 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,208.65,,103.699,1.783,3.21,$117 ,65,1,$117 ,65,5.0231
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,252.987,,127.448,1.182,7.228,$214 ,35,1,$214 ,35,5.2921
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,262.785,,134.002,1.369,4.043,$192 ,65,1,$192 ,65,3.0597
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,344.219,,175.433,1.136,9.835,$303 ,35,1,$303 ,35,3.1665
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,265.351,,130.166,0.544,7.581,$488 ,35,1,$488 ,35,4.0471
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,654.533,,307.741,1.102,5.236,$594 ,125,1,$594 ,125,1.6723
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,198.189,,101.399,0.796,2.791,$249 ,71,1,$249 ,71,5.2039
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,2017.368,,547.47,0.642,9.607,"$3,144 ",210,2,"$1,572 ",105,1.2913
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,27331.02,,2329.12,3.814,60.736,"$7,166 ",450,2,"$3,583 ",225,0.38
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,6320.391,,1582.817,0.373,15.416,"$16,954 ",410,2,"$8,477 ",205,0.667
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1940.935,,522.654,0.969,7.764,"$2,004 ",250,2,"$1,002 ",125,1.3451
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,480.992,,126.244,1.026,17.178,$469 ,28,1,$469 ,28,2.242
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,1061.591,,297.705,2.264,37.914,$469 ,28,1,$469 ,28,1.793
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,1237.94,,342.513,2.64,44.212,$469 ,28,1,$469 ,28,
|
||||
resnet-18 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,27454.08,2264.67,,14.262,183.027,"$1,925 ",150,1,"$1,925 ",150,0.946
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,400.118,,133.834,0.608,2.425,$658 ,165,1,$658 ,165,3.0384
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,229.863,,66.122,0.349,1.393,$658 ,165,1,$658 ,165,5.2538
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,574.341,,155.749,0.873,3.481,$658 ,165,1,$658 ,165,
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,11.094,,4.516,0.326,1.168,$34 ,9.5,1,$34 ,9.5,92.6182
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,20.114,,8.254,0.3,1.676,$67 ,12,1,$67 ,12,51.0598
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,66.119,,29.408,0.987,5.51,$67 ,12,1,$67 ,12,21.6857
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,82.95,,35.81,1.238,6.913,$67 ,12,1,$67 ,12,
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,52.004,,14.152,0.441,3.467,$118 ,15,1,$118 ,15,19.6053
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,90.685,,24.633,0.769,6.046,$118 ,15,1,$118 ,15,14.6415
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,140.062,,37.864,1.187,9.337,$118 ,15,1,$118 ,15,-
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,2793.997,,691.079,0.597,7.551,"$4,678 ",370,2,"$2,339 ",185,1.3288
|
||||
resnet-50,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,102.328,,52.896,0.875,1.574,$117 ,65,1,$117 ,65,10.4475
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,123.574,,63.836,0.577,3.531,$214 ,35,1,$214 ,35,11.6252
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,129.174,,68.242,0.673,1.987,$192 ,65,1,$192 ,65,6.8498
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,168.016,,88.675,0.555,4.8,$303 ,35,1,$303 ,35,6.9723
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,129.371,,56.366,0.265,3.696,$488 ,35,1,$488 ,35,8.7659
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,317.744,,149.441,0.535,2.542,$594 ,125,1,$594 ,125,3.6469
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,97.606,,52.17,0.392,1.375,$249 ,71,1,$249 ,71,10.851
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,980.813,,268.009,0.312,4.671,"$3,144 ",210,2,"$1,572 ",105,2.9838
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,2905.803,,748.583,0.405,6.457,"$7,166 ",450,2,"$3,583 ",225,1.475
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,11359.88,,1118.97,0.67,27.707,"$16,954 ",410,2,"$8,477 ",205,0.94
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,937.572,,255.866,0.468,3.75,"$2,004 ",250,2,"$1,002 ",125,3.0985
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,235.061,,63.241,0.501,8.395,$469 ,28,1,$469 ,28,4.7975
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,235.061,,63.241,0.501,8.395,$469 ,28,1,$469 ,28,4.7975
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,235.061,,63.241,0.501,8.395,$469 ,28,1,$469 ,28,4.7975
|
||||
resnet-50,OV-2022.3-8991,accel,Intel® Flex-170 GPU,10810.92,1005.16,,5.616,72.073,"$1,925 ",150,1,"$1,925 ",150,1.624
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,6.712,,2.394,0.01,0.041,$658 ,165,1,$658 ,165,175.7493
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,4.228,,1.262,0.006,0.026,$658 ,165,1,$658 ,165,241.7838
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,6.666,,2.393,0.01,0.04,$658 ,165,1,$658 ,165,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.171,,0.081,0.005,0.018,$34 ,9.5,1,$34 ,9.5,5985.7525
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.31,,0.133,0.005,0.026,$67 ,12,1,$67 ,12,3246.0878
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,0.965,,0.615,0.014,0.08,$67 ,12,1,$67 ,12,1053.0078
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,0.31,,0.133,0.005,0.026,$67 ,12,1,$67 ,12,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,0.806,,0.23,0.007,0.054,$118 ,15,1,$118 ,15,1240.6212
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,1.582,,0.486,0.013,0.105,$118 ,15,1,$118 ,15,649.3806
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,0.806,,0.231,0.007,0.054,$118 ,15,1,$118 ,15,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,41.52,,12.672,0.009,0.112,"$4,678 ",370,2,"$2,339 ",185,79.0111
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,1.606,,0.959,0.014,0.025,$117 ,65,1,$117 ,65,644.0626
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,1.932,,1.177,0.009,0.055,$214 ,35,1,$214 ,35,712.3677
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,2.067,,1.248,0.011,0.032,$192 ,65,1,$192 ,65,401.8765
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,2.66,,1.606,0.009,0.076,$303 ,35,1,$303 ,35,434.9877
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.046,,1.242,0.004,0.058,$488 ,35,1,$488 ,35,485.4343
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,4.871,,2.935,0.008,0.039,$594 ,125,1,$594 ,125,239.8346
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,1.55,,0.919,0.006,0.022,$249 ,71,1,$249 ,71,665.2714
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,15.706,,4.572,0.005,0.075,"$3,144 ",210,2,"$1,572 ",105,132.0319
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,152.74,,20.32,0.021,0.339,"$7,166 ",450,2,"$3,583 ",225,14.48
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,47.365,,14.722,0.003,0.116,"$16,954 ",410,2,"$8,477 ",205,44.387
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,14.966,,4.35,0.007,0.06,"$2,004 ",250,2,"$1,002 ",125,138.9625
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,3.556,,1.015,0.008,0.127,$469 ,28,1,$469 ,28,284.2379
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,8.239,,2.545,0.018,0.294,$469 ,28,1,$469 ,28,122.4561
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,3.565,,1.01,0.008,0.127,$469 ,28,1,$469 ,28,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,132.44,18.19,,0.069,0.883,"$1,925 ",150,1,"$1,925 ",150,19.933
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,10.652,,3.873,0.016,0.065,$658 ,165,1,$658 ,165,111.0757
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,7.059,,2.154,0.011,0.043,$658 ,165,1,$658 ,165,142.0745
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,14.933,,4.935,0.023,0.091,$658 ,165,1,$658 ,165,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.258,,0.039,0.008,0.027,$34 ,9.5,1,$34 ,9.5,3959.594
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.482,,0.061,0.007,0.04,$67 ,12,1,$67 ,12,2094.2569
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.994,,0.989,0.03,0.166,$67 ,12,1,$67 ,12,502.6095
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,2.242,,0.597,0.033,0.187,$67 ,12,1,$67 ,12,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.471,,0.374,0.012,0.098,$118 ,15,1,$118 ,15,678.4977
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.715,,0.802,0.023,0.181,$118 ,15,1,$118 ,15,368.8973
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,4.12,,1.142,0.035,0.275,$118 ,15,1,$118 ,15,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,81.838,,19.314,0.017,0.221,"$4,678 ",370,2,"$2,339 ",185,41.506
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.482,,1.54,0.021,0.038,$117 ,65,1,$117 ,65,412.1291
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,3.031,,1.9,0.014,0.087,$214 ,35,1,$214 ,35,457.5992
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,3.227,,2.018,0.017,0.05,$192 ,65,1,$192 ,65,256.5479
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,4.155,,2.6,0.014,0.119,$303 ,35,1,$303 ,35,277.7416
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.907,,2.004,0.006,0.083,$488 ,35,1,$488 ,35,319.7667
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,7.413,,4.615,0.012,0.059,$594 ,125,1,$594 ,125,157.3622
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.386,,1.481,0.01,0.034,$249 ,71,1,$249 ,71,422.1157
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,29.251,,7.301,0.009,0.139,"$3,144 ",210,2,"$1,572 ",105,69.3596
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,381.85,,30.96,0.053,0.849,"$7,166 ",450,2,"$3,583 ",225,7.95
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,93.081,,21.382,0.005,0.227,"$16,954 ",410,2,"$8,477 ",205,22.9476
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,27.814,,6.966,0.014,0.111,"$2,004 ",250,2,"$1,002 ",125,72.9773
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,6.54,,1.677,0.014,0.234,$469 ,28,1,$469 ,28,152.602
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,15.391,,4.571,0.033,0.55,$469 ,28,1,$469 ,28,61.6002
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,17.962,,4.848,0.038,0.642,$469 ,28,1,$469 ,28,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,218.12,35.2,,0.113,1.454,"$1,925 ",150,1,"$1,925 ",150,7.149
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,428.506,,162.077,0.651,2.597,$658 ,165,1,$658 ,165,2.4778
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,245.738,,84.457,0.373,1.489,$658 ,165,1,$658 ,165,3.8792
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,598.947,,195.608,0.91,3.63,$658 ,165,1,$658 ,165,
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,12.406,,6.124,0.365,1.306,$34 ,9.5,1,$34 ,9.5,83.8614
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,22.94,,10.395,0.342,1.912,$67 ,12,1,$67 ,12,44.6243
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,66.641,,38.178,0.995,5.553,$67 ,12,1,$67 ,12,15.7687
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,86.38,,45.819,1.289,7.198,$67 ,12,1,$67 ,12,
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,55.629,,18.246,0.471,3.709,$118 ,15,1,$118 ,15,18.2291
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,106.588,,31.376,0.903,7.106,$118 ,15,1,$118 ,15,10.8727
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,153.471,,46.125,1.301,10.231,$118 ,15,1,$118 ,15,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,2733.627,,761.534,0.584,7.388,"$4,678 ",370,2,"$2,339 ",185,1.1267
|
||||
yolo_v3_tiny,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,114.701,,66.266,0.98,1.765,$117 ,65,1,$117 ,65,8.9295
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,141.001,,79.694,0.659,4.029,$214 ,35,1,$214 ,35,9.9196
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,145.659,,85.158,0.759,2.241,$192 ,65,1,$192 ,65,5.465
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,191.931,,109.625,0.633,5.484,$303 ,35,1,$303 ,35,5.5981
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,147.041,,84.448,0.301,4.201,$488 ,35,1,$488 ,35,7.0171
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,359.61,,173.635,0.605,2.877,$594 ,125,1,$594 ,125,2.9037
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,109.066,,64.87,0.438,1.536,$249 ,71,1,$249 ,71,9.3792
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,1058.322,,337.035,0.337,5.04,"$3,144 ",210,2,"$1,572 ",105,2.4971
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,7344.88,,1405.51,1.025,16.322,"$7,166 ",450,2,"$3,583 ",225,1.06
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,2931.242,,901.832,0.173,7.149,"$16,954 ",410,2,"$8,477 ",205,1.215
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1015.77,,321.263,0.507,4.063,"$2,004 ",250,2,"$1,002 ",125,2.6076
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,258.05,,79.963,0.55,9.216,$469 ,28,1,$469 ,28,4.1833
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,492.645,,157.98,1.05,17.594,$469 ,28,1,$469 ,28,2.5788
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,606.117,,186.339,1.292,21.647,$469 ,28,1,$469 ,28,
|
||||
yolo_v3_tiny,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3634.16,1209.67,,1.888,24.228,"$1,925 ",150,1,"$1,925 ",150,1.293
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,21.833,,7.096,0.033,0.132,$658 ,165,1,$658 ,165,58.4745
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,11.956,,3.869,0.018,0.072,$658 ,165,1,$658 ,165,85.1633
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,26.693,,8.644,0.041,0.162,$658 ,165,1,$658 ,165,
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.522,,0.248,0.015,0.055,$34 ,9.5,1,$34 ,9.5,1900.0218
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.99,,0.43,0.015,0.083,$67 ,12,1,$67 ,12,1019.82
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,3.413,,1.752,0.051,0.284,$67 ,12,1,$67 ,12,295.7702
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,3.999,,2.087,0.06,0.333,$67 ,12,1,$67 ,12,
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,2.453,,0.748,0.021,0.164,$118 ,15,1,$118 ,15,407.2474
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,4.758,,1.434,0.04,0.317,$118 ,15,1,$118 ,15,212.7987
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,7.048,,2.122,0.06,0.47,$118 ,15,1,$118 ,15,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,126.954,,35.481,0.027,0.343,"$4,678 ",370,2,"$2,339 ",185,37.8189
|
||||
yolo_v4,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,4.971,,2.885,0.042,0.076,$117 ,65,1,$117 ,65,203.4163
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,6.182,,3.532,0.029,0.177,$214 ,35,1,$214 ,35,227.5786
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,6.356,,3.757,0.033,0.098,$192 ,65,1,$192 ,65,123.3181
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,8.44,,4.868,0.028,0.241,$303 ,35,1,$303 ,35,135.9719
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,6.399,,3.765,0.013,0.183,$488 ,35,1,$488 ,35,155.642
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,15.614,,7.925,0.026,0.125,$594 ,125,1,$594 ,125,71.631
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,4.674,,2.804,0.019,0.066,$249 ,71,1,$249 ,71,214.0957
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,47.338,,14.464,0.015,0.225,"$3,144 ",210,2,"$1,572 ",105,45.7699
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,252.03,,58.12,0.035,0.56,"$7,166 ",450,2,"$3,583 ",225,15.01
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,131.466,,41.001,0.008,0.321,"$16,954 ",410,2,"$8,477 ",205,19.2807
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,45.047,,13.741,0.022,0.18,"$2,004 ",250,2,"$1,002 ",125,48.0344
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,11.067,,3.259,0.024,0.395,$469 ,28,1,$469 ,28,92.2912
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,25.048,,7.384,0.053,0.895,$469 ,28,1,$469 ,28,39.1492
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,29.658,,8.32,0.063,1.059,$469 ,28,1,$469 ,28,
|
||||
yolo_v4,OV-2022.3-8991,accel,Intel® Flex-170 GPU,454.49,56.78,,0.236,3.03,"$1,925 ",150,1,"$1,925 ",150,6.969
|
||||
end_rec,,,,,,,,,,,,,,
|
||||
Network model,Release,IE-Type,Platform name,Throughput-INT8,Throughput-FP16,Throughput-FP32,Value,Efficiency,Price,TDP,Sockets,Price/socket,TDP/socket,Latency,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,163.72,,57.83,0.273,1.310,$599 ,125,1,$599,125,15.53,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,56.07,,23.3,0.094,0.449,$599 ,125,1,$599,125,19.62,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,210.17,,85.83,0.351,1.681,$599 ,125,1,$599,125,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,128.05,,45.94,0.389,1.024,$329 ,125,1,$329,125,12.71,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,53.03,,21.9,0.161,0.424,$329 ,125,1,$329,125,20.81,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,163.33,,64.74,0.496,1.307,$329 ,125,1,$329,125,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,96.06,,35.627,0.146,0.582,$658 ,165,1,$658 ,165,17.1432,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,53.093,,22.253,0.081,0.322,$658 ,165,1,$658 ,165,22.0002,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,108.306,,44.797,0.165,0.656,$658 ,165,1,$658 ,165,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,2.763,,1.332,0.081,0.291,$34 ,9.5,1,$34 ,9.5,350.2746,,,
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,5.694,,2.002,0.085,0.475,$67 ,12,1,$67 ,12,183.1711,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,16.11,,10.009,0.240,1.343,$67 ,12,1,$67 ,12,79.7607,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,21.128,,11.81,0.315,1.761,$67 ,12,1,$67 ,12,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,14.212,,4.255,0.120,0.947,$118 ,15,1,$118 ,15,72.6516,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,18.983,,8.696,0.161,1.266,$118 ,15,1,$118 ,15,62.9729,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,30.866,,12.087,0.262,2.058,$118 ,15,1,$118 ,15,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,645.77,,213.877,0.138,1.745,"$4,678 ",370,2,"$2,339 ",185,6.7612,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,23.721,,14.457,0.203,0.365,$117 ,65,1,$117 ,65,44.0371,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,30.141,,16.38,0.141,0.861,$214 ,35,1,$214 ,35,46.6064,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,30.541,,19.319,0.159,0.470,$192 ,65,1,$192 ,65,27.8871,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,41.504,,22.75,0.137,1.186,$303 ,35,1,$303 ,35,27.974,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,32.073,,16.558,0.066,0.916,$488 ,35,1,$488 ,35,39.7617,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,69.053,,40.243,0.116,0.552,$594 ,125,1,$594 ,125,18.309,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,23.402,,14.614,0.094,0.330,$249 ,71,1,$249 ,71,44.8984,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,266.949,,79.033,0.085,1.271,"$3,144 ",210,2,"$1,572 ",105,12.4065,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,2090.76,1372.2,1368.68,0.292,4.646,"$7,166 ",450,2,"$3,583 ",225,4.61,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,682.593,,225.713,0.040,1.665,"$16,954 ",410,2,"$8,477 ",205,6.9035,,,
|
||||
bert-base-cased ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,256.994,,75.502,0.128,1.028,"$2,004 ",250,2,"$1,002 ",125,13.0382,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,64.632,,18.394,0.138,2.308,$469 ,28,1,$469 ,28,17.638,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,95.656,,44.056,0.204,3.416,$469 ,28,1,$469 ,28,14.1005,,,
|
||||
bert-base-cased ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,128.005,,50.592,0.273,4.572,$469 ,28,1,$469 ,28,,,,
|
||||
bert-base-cased ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,906.3,348.52,,0.471,6.042,"$1,925 ",150,1,"$1,925 ",150,7.381,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,51.72,,17.6,0.086,0.414,$599 ,125,1,$599 ,125,49.13,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,19.05,,6.88,0.032,0.152,$599 ,125,1,$599 ,125,55.82,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,53,,19.95,0.088,0.424,$599 ,125,1,$599 ,125,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,35.31,,11.04,0.107,0.282,$329 ,125,1,$329 ,125,41.56,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,17.93,,6.46,0.054,0.143,$329 ,125,1,$329 ,125,59.37,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,43.42,,16.19,0.132,0.347,$329 ,125,1,$329 ,125,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,7.714,,3.093,0.012,0.047,$658 ,165,1,$658 ,165,155.3633,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,5.617,,1.978,0.009,0.034,$658 ,165,1,$658 ,165,181.8303,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,10.602,,3.753,0.016,0.064,$658 ,165,1,$658 ,165,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.272,,0.125,0.008,0.029,$34 ,9.5,1,$34 ,9.5,3861.0657,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.488,,0.188,0.007,0.041,$67 ,12,1,$67 ,12,2090.8266,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.395,,0.774,0.021,0.116,$67 ,12,1,$67 ,12,727.6781,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,1.827,,0.845,0.027,0.152,$67 ,12,1,$67 ,12,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.199,,0.377,0.010,0.080,$118 ,15,1,$118 ,15,831.301,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.051,,0.766,0.017,0.137,$118 ,15,1,$118 ,15,494.5363,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,3.118,,1.127,0.026,0.208,$118 ,15,1,$118 ,15,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,43.436,,17.379,0.009,0.117,"$4,678 ",370,2,"$2,339 ",185,52.2862,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.067,,1.278,0.018,0.032,$117 ,65,1,$117 ,65,495.0786,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,2.619,,1.536,0.012,0.075,$214 ,35,1,$214 ,35,502.3687,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,2.72,,1.679,0.014,0.042,$192 ,65,1,$192 ,65,320.168,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,3.625,,2.11,0.012,0.104,$303 ,35,1,$303 ,35,309.2848,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.906,,1.693,0.006,0.083,$488 ,35,1,$488 ,35,386.4947,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,4.801,,2.729,0.008,0.038,$594 ,125,1,$594 ,125,200.0794,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.098,,1.32,0.008,0.030,$249 ,71,1,$249 ,71,492.0938,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,21.062,,7.021,0.007,0.100,"$3,144 ",210,2,"$1,572 ",105,101.4694,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,651.95,378.57,384.02,0.091,1.449,"$7,166 ",450,2,"$3,583 ",225,12.87,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,46.064,,19.051,0.003,0.112,"$16,954 ",410,2,"$8,477 ",205,49.4869,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,20.014,,6.726,0.010,0.080,"$2,004 ",250,2,"$1,002 ",125,105.9423,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,5.192,,1.626,0.011,0.185,$469 ,28,1,$469 ,28,203.6311,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,10.476,,3.914,0.022,0.374,$469 ,28,1,$469 ,28,95.6598,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,11.75,,4.168,0.025,0.420,$469 ,28,1,$469 ,28,,,,
|
||||
bert-large-uncased-whole-word-masking-squad-0001 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,74.47,25.77,,0.039,0.496,"$1,925 ",150,1,"$1,925 ",150,19.768,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,184.93,,63.79,0.309,1.479,$599 ,125,1,$599 ,125,10.31,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,69.31,,22.67,0.116,0.554,$599 ,125,1,$599 ,125,15.02,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,191.48,,62.99,0.320,1.532,$599 ,125,1,$599 ,125,,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,139.02,,48.48,0.423,1.112,$329 ,125,1,$329 ,125,10.48,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,65.55,,21.24,0.199,0.524,$329 ,125,1,$329 ,125,16.12,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,154.19,,52.87,0.469,1.234,$329 ,125,1,$329 ,125,,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,99.078,,36.552,0.151,0.600,$658 ,165,1,$658 ,165,11.269,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,57.707,,13.789,0.088,0.350,$658 ,165,1,$658 ,165,16.263,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,115.59,,39.82,0.176,0.701,$658 ,165,1,$658 ,165,,,,
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.327,,1.496,0.098,0.350,$34 ,9.5,1,$34 ,9.5,308.0916,,,
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,6.07,,3.041,0.091,0.506,$67 ,12,1,$67 ,12,166.5404,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,5.196,0.000,0.000,$67 ,12,1,$67 ,12,217.0439,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,9.877,,7.145,0.147,0.823,$67 ,12,1,$67 ,12,,,,
|
||||
deeplabv3,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,13.516,,4.681,0.115,0.901,$118 ,15,1,$118 ,15,74.1061,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,22.35,,4.635,0.189,1.490,$118 ,15,1,$118 ,15,42.9657,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,34.576,,8.955,0.293,2.305,$118 ,15,1,$118 ,15,,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,559.145,,134.159,0.120,1.511,"$4,678 ",370,2,"$2,339 ",185,5.356,,,
|
||||
deeplabv3,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,27.171,,15.947,0.232,0.418,$117 ,65,1,$117 ,65,36.6584,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,34.907,,16.72,0.163,0.997,$214 ,35,1,$214 ,35,38.8986,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,35.07,,20.497,0.183,0.540,$192 ,65,1,$192 ,65,22.1865,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,47.647,,23.747,0.157,1.361,$303 ,35,1,$303 ,35,22.628,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,36.559,,18.235,0.075,1.045,$488 ,35,1,$488 ,35,27.138,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,79.42,,21.03,0.134,0.635,$594 ,125,1,$594 ,125,12.8397,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,26.173,,16.906,0.105,0.369,$249 ,71,1,$249 ,71,37.9245,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,248.049,,81.667,0.079,1.181,"$3,144 ",210,2,"$1,572 ",105,8.9485,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,1139.5,702.28,699.04,0.159,2.532,"$7,166 ",450,2,"$3,583 ",225,2.47,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,632.113,,168.65,0.037,1.542,"$16,954 ",410,2,"$8,477 ",205,4.0073,,,
|
||||
deeplabv3,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,241.703,,78.963,0.121,0.967,"$2,004 ",250,2,"$1,002 ",125,9.356,,,
|
||||
deeplabv3,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,64.13,,18.519,0.137,2.290,$469 ,28,1,$469 ,28,16.6586,,,
|
||||
deeplabv3,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,104.926,,24.592,0.224,3.747,$469 ,28,1,$469 ,28,9.1435,,,
|
||||
deeplabv3,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,121.441,,30.498,0.259,4.337,$469 ,28,1,$469 ,28,,,,
|
||||
deeplabv3,OV-2022.3-8991,accel,Intel® Flex-170 GPU,882.04,98.95,,0.458,5.88,"$1,925 ",150,1,"$1,925 ",150,2.674,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,777.86,,284.56,1.299,6.223,$599 ,125,1,$599 ,125,3.26,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,195.3,,66.46,0.326,1.562,$599 ,125,1,$599 ,125,6.8,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,899.5,,293.29,1.502,7.196,$599 ,125,1,$599 ,125,,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,612.99,,184.9,1.863,4.904,$329 ,125,1,$329 ,125,3.12,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,178.37,,62.69,0.542,1.427,$329 ,125,1,$329 ,125,8.37,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,707.99,,207.12,2.152,5.664,$329 ,125,1,$329 ,125,,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,457.193,,165.166,0.695,2.771,$658 ,165,1,$658 ,165,3.141,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,203.417,,68.438,0.309,1.233,$658 ,165,1,$658 ,165,6.6728,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,575.442,,179.858,0.875,3.488,$658 ,165,1,$658 ,165,,,,
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,13.344,,5.882,0.392,1.405,$34 ,9.5,1,$34 ,9.5,80.7014,,,
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,24.172,,10.554,0.361,2.014,$67 ,12,1,$67 ,12,43.668,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,30.615,0.000,0.000,$67 ,12,1,$67 ,12,30.0241,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,39.365,,38.926,0.588,3.280,$67 ,12,1,$67 ,12,,,,
|
||||
densenet-121,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,58.965,,15.713,0.500,3.931,$118 ,15,1,$118 ,15,18.3425,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,86.162,,25.34,0.730,5.744,$118 ,15,1,$118 ,15,20.7907,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,140.891,,39.929,1.194,9.393,$118 ,15,1,$118 ,15,,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,3094.742,,701.32,0.662,8.364,"$4,678 ",370,2,"$2,339 ",185,2.131,,,
|
||||
densenet-121,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,120.121,,66.624,1.027,1.848,$117 ,65,1,$117 ,65,9.3755,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,142.623,,80.872,0.666,4.075,$214 ,35,1,$214 ,35,10.2536,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,149.112,,85.051,0.777,2.294,$192 ,65,1,$192 ,65,6.0817,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,194.559,,111.988,0.642,5.559,$303 ,35,1,$303 ,35,6.1906,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,146.463,,69.186,0.300,4.185,$488 ,35,1,$488 ,35,8.6496,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,360.501,,182.543,0.607,2.884,$594 ,125,1,$594 ,125,3.6046,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,114.844,,67.188,0.461,1.618,$249 ,71,1,$249 ,71,9.7609,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,1116.372,,295.952,0.355,5.316,"$3,144 ",210,2,"$1,572 ",105,3.9606,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,8279.14,4856.54,4862.51,1.155,18.398,"$7,166 ",450,2,"$3,583 ",225,2.39,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,3155.106,,815.725,0.186,7.695,"$16,954 ",410,2,"$8,477 ",205,2.8831,,,
|
||||
densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1064.824,,283.423,0.531,4.259,"$2,004 ",250,2,"$1,002 ",125,4.0689,,,
|
||||
densenet-121,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,265.167,,74.501,0.565,9.470,$469 ,28,1,$469 ,28,4.7413,,,
|
||||
densenet-121,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,391.185,,123.519,0.834,13.971,$469 ,28,1,$469 ,28,6.5259,,,
|
||||
densenet-121,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,526.12,,150.35,1.122,18.790,$469 ,28,1,$469 ,28,,,,
|
||||
densenet-121,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3440.18,1178.68,,1.787,22.935,"$1,925 ",150,1,"$1,925 ",150,3.302,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,209.26,,106.11,0.349,1.674,$599 ,125,1,$599 ,125,10.36,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,82.04,,47.85,0.137,0.656,$599 ,125,1,$599 ,125,22.35,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,197.85,,108.3,0.330,1.583,$599 ,125,1,$599 ,125,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,155.65,,90.91,0.473,1.245,$329 ,125,1,$329 ,125,9.92,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,77.28,,44.91,0.235,0.618,$329 ,125,1,$329 ,125,22.93,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,172.54,,95.94,0.524,1.380,$329 ,125,1,$329 ,125,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,112.297,,64.06,0.171,0.681,$658 ,165,1,$658 ,165,11.8265,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,73.766,,38.742,0.112,0.447,$658 ,165,1,$658 ,165,21.403,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,128.735,,76.62,0.196,0.780,$658 ,165,1,$658 ,165,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.812,,2.565,0.112,0.401,$34 ,9.5,1,$34 ,9.5,274.5947,,,
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,7.248,,5.17,0.108,0.604,$67 ,12,1,$67 ,12,143.7999,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,22.697,,15.635,0.339,1.891,$67 ,12,1,$67 ,12,59.0651,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,26.855,,17.296,0.401,2.238,$67 ,12,1,$67 ,12,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,15.949,,10.417,0.135,1.063,$118 ,15,1,$118 ,15,62.2765,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,25.936,,14.073,0.220,1.729,$118 ,15,1,$118 ,15,54.0166,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,32.767,,20.733,0.278,2.184,$118 ,15,1,$118 ,15,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,424.388,,256.503,0.091,1.147,"$4,678 ",370,2,"$2,339 ",185,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,36.666,,24.041,0.313,0.564,$117 ,65,1,$117 ,65,30.2521,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,45.331,,26.92,0.212,1.295,$214 ,35,1,$214 ,35,32.8946,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,44.921,,32.357,0.234,0.691,$192 ,65,1,$192 ,65,19.7048,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,62.749,,37.807,0.207,1.793,$303 ,35,1,$303 ,35,19.901,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,50.35,,29.935,0.103,1.439,$488 ,35,1,$488 ,35,24.2916,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,94.981,,36.434,0.160,0.760,$594 ,125,1,$594 ,125,12.658,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,35.831,,27.306,0.144,0.505,$249 ,71,1,$249 ,71,30.9469,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,239.06,,161.224,0.076,1.138,"$3,144 ",210,2,"$1,572 ",105,13.9735,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,875.53,495.04,492.93,0.122,1.946,"$7,166 ",450,2,"$3,583 ",225,5.07,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,471.02,,300.291,0.028,1.149,"$16,954 ",410,2,"$8,477 ",205,9.3866,,,
|
||||
efficientdet-d0,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,231.873,,156.285,0.116,0.927,"$2,004 ",250,2,"$1,002 ",125,14.1605,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,71.482,,41.123,0.152,2.553,$469 ,28,1,$469 ,28,16.6952,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,92.52,,50.538,0.197,3.304,$469 ,28,1,$469 ,28,17.295,,,
|
||||
efficientdet-d0,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,107.688,,56.901,0.230,3.846,$469 ,28,1,$469 ,28,,,,
|
||||
efficientdet-d0,OV-2022.3-8991,accel,Intel® Flex-170 GPU,463.67,295.13,,0.241,3.091,"$1,925 ",150,1,"$1,925 ",150,5.603,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,5.94,,2.41,0.010,0.048,$599 ,125,1,$599 ,125,270.57,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,2.3,,0.71,0.004,0.018,$599 ,125,1,$599 ,125,437.94,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,6.45,,2.25,0.011,0.052,$599 ,125,1,$599 ,125,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,4.55,,1.88,0.014,0.036,$329 ,125,1,$329 ,125,310.58,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,2.17,,0.67,0.007,0.017,$329 ,125,1,$329 ,125,465.03,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,5.3,,2.01,0.016,0.042,$329 ,125,1,$329 ,125,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,12.921,,4.016,0.020,0.078,$658 ,165,1,$658 ,165,89.8929,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,6.802,,1.82,0.010,0.041,$658 ,165,1,$658 ,165,149.7396,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,15.679,,4.499,0.024,0.095,$658 ,165,1,$658 ,165,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.32,,0.131,0.009,0.034,$34 ,9.5,1,$34 ,9.5,3206.1652,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.592,,0.242,0.009,0.049,$67 ,12,1,$67 ,12,1727.27,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.301,,0.728,0.019,0.108,$67 ,12,1,$67 ,12,776.0692,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,1.683,,0.865,0.025,0.140,$67 ,12,1,$67 ,12,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.563,,0.417,0.013,0.104,$118 ,15,1,$118 ,15,640.0005,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.616,,0.725,0.022,0.174,$118 ,15,1,$118 ,15,389.3563,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,4.056,,1.107,0.034,0.270,$118 ,15,1,$118 ,15,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,74.93,,19.965,0.016,0.203,"$4,678 ",370,2,"$2,339 ",185,65.5753,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.988,,1.473,0.026,0.046,$117 ,65,1,$117 ,65,340.7313,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,3.633,,1.926,0.017,0.104,$214 ,35,1,$214 ,35,430.1967,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,3.852,,1.982,0.020,0.059,$192 ,65,1,$192 ,65,241.5513,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,4.999,,2.648,0.016,0.143,$303 ,35,1,$303 ,35,260.2284,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,3.71,,2.005,0.008,0.106,$488 ,35,1,$488 ,35,280.1493,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,8.977,,4.542,0.015,0.072,$594 ,125,1,$594 ,125,137.1747,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.867,,1.464,0.012,0.040,$249 ,71,1,$249 ,71,353.2042,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,29.332,,8.19,0.009,0.140,"$3,144 ",210,2,"$1,572 ",105,78.1722,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,19.71,18.01,18.15,0.003,0.044,"$7,166 ",450,2,"$3,583 ",225,129.2,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,85.213,,22.066,0.005,0.208,"$16,954 ",410,2,"$8,477 ",205,30.4317,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,27.847,,7.786,0.014,0.111,"$2,004 ",250,2,"$1,002 ",125,78.6604,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,7.027,,1.855,0.015,0.251,$469 ,28,1,$469 ,28,151.8783,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,13.823,,3.545,0.029,0.494,$469 ,28,1,$469 ,28,70.7933,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,16.898,,4.191,0.036,0.604,$469 ,28,1,$469 ,28,,,,
|
||||
faster_rcnn_resnet50_coco,OV-2022.3-8991,accel,Intel® Flex-170 GPU,216.3,23.42,,0.112,1.442,"$1,925 ",150,1,"$1,925 ",150,9.137,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,219.06,,71.15,0.366,1.752,$599 ,125,1,$599 ,125,10.19,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,65.91,,18.1,0.110,0.527,$599 ,125,1,$599 ,125,16.55,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,279.58,,78.65,0.467,2.237,$599 ,125,1,$599 ,125,,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,171.19,,45.8,0.520,1.370,$329 ,125,1,$329 ,125,9.14,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,62.45,,17.02,0.190,0.500,$329 ,125,1,$329 ,125,17.48,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,219.02,,52.56,0.666,1.752,$329 ,125,1,$329 ,125,,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,121.813,,39.391,0.185,0.738,$658 ,165,1,$658 ,165,11.0425,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,71.229,,17.755,0.108,0.432,$658 ,165,1,$658 ,165,19.7132,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,175.049,,44.894,0.266,1.061,$658 ,165,1,$658 ,165,,,,
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,3.12,,1.344,0.092,0.328,$34 ,9.5,1,$34 ,9.5,335.3712,,,
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,5.677,,2.364,0.085,0.473,$67 ,12,1,$67 ,12,181.8897,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,17.009,,8.302,0.254,1.417,$67 ,12,1,$67 ,12,78.0548,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,21.713,,10.37,0.324,1.809,$67 ,12,1,$67 ,12,,,,
|
||||
Inception-V4,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,15.576,,4.073,0.132,1.038,$118 ,15,1,$118 ,15,65.7272,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,28.105,,6.681,0.238,1.874,$118 ,15,1,$118 ,15,46.2616,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,41.918,,10.163,0.355,2.795,$118 ,15,1,$118 ,15,,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,881.403,,205.296,0.188,2.382,"$4,678 ",370,2,"$2,339 ",185,4.7029,,,
|
||||
Inception-V4,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,30.004,,15.51,0.256,0.462,$117 ,65,1,$117 ,65,35.0513,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,35.882,,19.222,0.168,1.025,$214 ,35,1,$214 ,35,37.6472,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,37.987,,19.998,0.198,0.584,$192 ,65,1,$192 ,65,21.5144,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,48.903,,26.356,0.161,1.397,$303 ,35,1,$303 ,35,22.2402,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,37.301,,19.475,0.076,1.066,$488 ,35,1,$488 ,35,28.572,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,92.646,,44.966,0.156,0.741,$594 ,125,1,$594 ,125,12.3153,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,28.537,,15.13,0.115,0.402,$249 ,71,1,$249 ,71,36.8888,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,301.215,,77.005,0.096,1.434,"$3,144 ",210,2,"$1,572 ",105,10.5711,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,3406.7,1879.09,1867.99,0.475,7.570,"$7,166 ",450,2,"$3,583 ",225,3.23,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,937.139,,225.776,0.055,2.286,"$16,954 ",410,2,"$8,477 ",205,5.6984,,,
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,287.767,,73.617,0.144,1.151,"$2,004 ",250,2,"$1,002 ",125,11.1114,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,71.295,,18.482,0.152,2.546,$469 ,28,1,$469 ,28,15.8294,,,
|
||||
Inception-V4,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,158.282,,36.884,0.337,5.653,$469 ,28,1,$469 ,28,10.6245,,,
|
||||
Inception-V4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,182.132,,44.198,0.388,6.505,$469 ,28,1,$469 ,28,,,,
|
||||
Inception-V4,OV-2022.3-8991,accel,Intel® Flex-170 GPU,2986.91,298.6,,1.552,19.913,"$1,925 ",150,1,"$1,925 ",150,3.968,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,1754.44,,664.82,2.929,14.036,$599 ,125,1,$599 ,125,1.4,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,528.03,,168.57,0.882,4.224,$599 ,125,1,$599 ,125,2.35,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,1568.83,,665.79,2.619,12.551,$599 ,125,1,$599 ,125,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,1240.01,,437.11,3.769,9.920,$329 ,125,1,$329 ,125,1.47,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,493.18,,157.94,1.499,3.945,$329 ,125,1,$329 ,125,2.43,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,1063.27,,454.21,3.232,8.506,$329 ,125,1,$329 ,125,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,1054.462,,346.546,1.603,6.391,$658 ,165,1,$658 ,165,1.4898,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,493.088,,145.503,0.749,2.988,$658 ,165,1,$658 ,165,2.472,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,1056.241,,361.472,1.605,6.401,$658 ,165,1,$658 ,165,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,28.032,,12.691,0.824,2.951,$34 ,9.5,1,$34 ,9.5,38.1991,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,50.352,,23.675,0.752,4.196,$67 ,12,1,$67 ,12,20.8993,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,100.377,,60.647,1.498,8.365,$67 ,12,1,$67 ,12,11.6812,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,148.458,,79.575,2.216,12.372,$67 ,12,1,$67 ,12,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,123.806,,38.981,1.049,8.254,$118 ,15,1,$118 ,15,8.4121,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,168.473,,53.272,1.428,11.232,$118 ,15,1,$118 ,15,7.8961,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,238.511,,83.721,2.021,15.901,$118 ,15,1,$118 ,15,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,6730.68,,1634.937,1.439,18.191,"$4,678 ",370,2,"$2,339 ",185,0.7265,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,244.598,,140.009,2.091,3.763,$117 ,65,1,$117 ,65,4.4481,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,303.938,,173.562,1.420,8.684,$214 ,35,1,$214 ,35,4.7946,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,304.802,,185.045,1.588,4.689,$192 ,65,1,$192 ,65,2.8007,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,412.261,,241.37,1.361,11.779,$303 ,35,1,$303 ,35,2.8749,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,315.107,,152.342,0.646,9.003,$488 ,35,1,$488 ,35,3.5896,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,774.346,,345.309,1.304,6.195,$594 ,125,1,$594 ,125,1.5452,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,233.43,,147.098,0.937,3.288,$249 ,71,1,$249 ,71,4.5879,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,2331.207,,691.743,0.741,11.101,"$3,144 ",210,2,"$1,572 ",105,1.4852,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,16445.75,8733.64,8626.42,2.295,36.546,"$7,166 ",450,2,"$3,583 ",225,0.65,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,6691.915,,1796.357,0.395,16.322,"$16,954 ",410,2,"$8,477 ",205,1.0518,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,2225.935,,667.692,1.111,8.904,"$2,004 ",250,2,"$1,002 ",125,1.5444,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,579.307,,166.959,1.235,20.690,$469 ,28,1,$469 ,28,2.0215,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,582.636,,243.945,1.242,20.808,$469 ,28,1,$469 ,28,2.548,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,744.231,,292.071,1.587,26.580,$469 ,28,1,$469 ,28,,,,
|
||||
mobilenet-ssd ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3548.98,1412.68,,1.844,23.66,"$1,925 ",150,1,"$1,925 ",150,1.344,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,4041.77,,2123.33,6.748,32.334,$599 ,125,1,$599 ,125,0.66,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,978.61,,424.34,1.634,7.829,$599 ,125,1,$599 ,125,1.21,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,4630.44,,1944.62,7.730,37.044,$599 ,125,1,$599 ,125,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,3306.92,,1403.57,10.051,26.455,$329 ,125,1,$329 ,125,0.65,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,919.85,,384.42,2.796,7.359,$329 ,125,1,$329 ,125,1.36,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,3556.06,,1332.32,10.809,28.448,$329 ,125,1,$329 ,125,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,2446.221,,1003.129,3.718,14.826,$658 ,165,1,$658 ,165,0.7182,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,1265.969,,389.894,1.924,7.673,$658 ,165,1,$658 ,165,1.3894,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,2680.458,,1013.049,4.074,16.245,$658 ,165,1,$658 ,165,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,81.572,,45.013,2.399,8.587,$34 ,9.5,1,$34 ,9.5,13.4692,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,143.134,,81.991,2.136,11.928,$67 ,12,1,$67 ,12,7.609,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,,,164.945,0.000,0.000,$67 ,12,1,$67 ,12,7.0306,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,227.898,,202.181,3.401,18.992,$67 ,12,1,$67 ,12,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,316.763,,124.654,2.684,21.118,$118 ,15,1,$118 ,15,3.391,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,525.084,,141.61,4.450,35.006,$118 ,15,1,$118 ,15,4.9197,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,807.397,,255.964,6.842,53.826,$118 ,15,1,$118 ,15,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,14679.84,,4065.139,3.138,39.675,"$4,678 ",370,2,"$2,339 ",185,0.4828,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,619.507,,452.366,5.295,9.531,$117 ,65,1,$117 ,65,1.8067,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,806.314,,441.904,3.768,23.038,$214 ,35,1,$214 ,35,2.1078,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,766.072,,558.975,3.990,11.786,$192 ,65,1,$192 ,65,1.2307,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,1081.253,,664.108,3.568,30.893,$303 ,35,1,$303 ,35,1.2788,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,825.071,,413.091,1.691,23.573,$488 ,35,1,$488 ,35,1.6818,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,2067.162,,868.25,3.480,16.537,$594 ,125,1,$594 ,125,0.7363,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,594.283,,479.567,2.387,8.370,$249 ,71,1,$249 ,71,1.8531,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,5882.455,,1895.498,1.871,28.012,"$3,144 ",210,2,"$1,572 ",105,1.3871,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,28383.76,16212.74,16065.38,3.961,63.075,"$7,166 ",450,2,"$3,583 ",225,0.55,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,15616.083,,4308.927,0.921,38.088,"$16,954 ",410,2,"$8,477 ",205,0.8685,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,5616.283,,1835.686,2.803,22.465,"$2,004 ",250,2,"$1,002 ",125,1.404,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,1463.21,,538.597,3.120,52.258,$469 ,28,1,$469 ,28,0.8864,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,2076.015,,544.641,4.426,74.143,$469 ,28,1,$469 ,28,1.7212,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,2677.374,,698.942,5.709,95.621,$469 ,28,1,$469 ,28,,,,
|
||||
mobilenet-v2 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,18371.95,4738.33,,9.544,122.48,"$1,925 ",150,1,"$1,925 ",150,1.15,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,1495.77,,415.82,2.497,11.966,$599 ,125,1,$599 ,125,1.38,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,497.54,,150.99,0.831,3.980,$599 ,125,1,$599 ,125,2.19,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,1821.4,,615.14,3.041,14.571,$599 ,125,1,$599 ,125,,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,1169.04,,336.09,3.553,9.352,$329 ,125,1,$329 ,125,1.5,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,467.43,,141.76,1.421,3.739,$329 ,125,1,$329 ,125,2.36,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,1443.42,,445.25,4.387,11.547,$329 ,125,1,$329 ,125,,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,804.771,,212.574,1.223,4.877,$658 ,165,1,$658 ,165,1.3886,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,491.337,,146.839,0.747,2.978,$658 ,165,1,$658 ,165,2.2655,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,1180.984,,365.777,1.795,7.157,$658 ,165,1,$658 ,165,,,,
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,22.96,,9.564,0.675,2.417,$34 ,9.5,1,$34 ,9.5,44.5491,,,
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,40.944,,16.158,0.611,3.412,$67 ,12,1,$67 ,12,25.1377,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,161.381,,60.863,2.409,13.448,$67 ,12,1,$67 ,12,10.983,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,197.477,,73.927,2.947,16.456,$67 ,12,1,$67 ,12,,,,
|
||||
resnet-18 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,105.574,,28.914,0.895,7.038,$118 ,15,1,$118 ,15,9.6165,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,194.694,,55.341,1.650,12.980,$118 ,15,1,$118 ,15,6.643,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,291.441,,82.105,2.470,19.429,$118 ,15,1,$118 ,15,,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,5761.961,,1431.864,1.232,15.573,"$4,678 ",370,2,"$2,339 ",185,0.6512,,,
|
||||
resnet-18 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,208.65,,103.699,1.783,3.210,$117 ,65,1,$117 ,65,5.0231,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,252.987,,127.448,1.182,7.228,$214 ,35,1,$214 ,35,5.2921,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,262.785,,134.002,1.369,4.043,$192 ,65,1,$192 ,65,3.0597,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,344.219,,175.433,1.136,9.835,$303 ,35,1,$303 ,35,3.1665,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,265.351,,130.166,0.544,7.581,$488 ,35,1,$488 ,35,4.0471,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,654.533,,307.741,1.102,5.236,$594 ,125,1,$594 ,125,1.6723,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,198.189,,101.399,0.796,2.791,$249 ,71,1,$249 ,71,5.2039,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,2017.368,,547.47,0.642,9.607,"$3,144 ",210,2,"$1,572 ",105,1.2913,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,27331.02,16095.24,16009.04,3.814,60.736,"$7,166 ",450,2,"$3,583 ",225,0.38,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,6320.391,,1582.817,0.373,15.416,"$16,954 ",410,2,"$8,477 ",205,0.667,,,
|
||||
resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1940.935,,522.654,0.969,7.764,"$2,004 ",250,2,"$1,002 ",125,1.3451,,,
|
||||
resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,480.992,,126.244,1.026,17.178,$469 ,28,1,$469 ,28,2.242,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,1061.591,,297.705,2.264,37.914,$469 ,28,1,$469 ,28,1.793,,,
|
||||
resnet-18 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,1237.94,,342.513,2.640,44.212,$469 ,28,1,$469 ,28,,,,
|
||||
resnet-18 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,27454.08,2264.67,,14.262,183.027,"$1,925 ",150,1,"$1,925 ",150,0.946,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,729.93,,240.59,1.219,5.839,$599 ,125,1,$599 ,125,2.91,,,
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,238.44,,68.18,0.398,1.908,$599 ,125,1,$599 ,125,4.74,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,895.28,,255.91,1.495,7.162,$599 ,125,1,$599 ,125,,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,576.86,,153.71,1.753,4.615,$329 ,125,1,$329 ,125,3.04,,,
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,216.97,,64.36,0.659,1.736,$329 ,125,1,$329 ,125,5.3,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,717.91,,188.59,2.182,5.743,$329 ,125,1,$329 ,125,,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,400.118,,133.834,0.608,2.425,$658 ,165,1,$658 ,165,3.0384,,,
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,229.863,,66.122,0.349,1.393,$658 ,165,1,$658 ,165,5.2538,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,574.341,,155.749,0.873,3.481,$658 ,165,1,$658 ,165,,,,
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,11.094,,4.516,0.326,1.168,$34 ,9.5,1,$34 ,9.5,92.6182,,,
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,20.114,,8.254,0.300,1.676,$67 ,12,1,$67 ,12,51.0598,,,````
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,66.119,,29.408,0.987,5.510,$67 ,12,1,$67 ,12,21.6857,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,82.95,,35.81,1.238,6.913,$67 ,12,1,$67 ,12,,,,
|
||||
resnet-50,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,52.004,,14.152,0.441,3.467,$118 ,15,1,$118 ,15,19.6053,,,
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,90.685,,24.633,0.769,6.046,$118 ,15,1,$118 ,15,14.6415,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,140.062,,37.864,1.187,9.337,$118 ,15,1,$118 ,15,-,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,2793.997,,691.079,0.597,7.551,"$4,678 ",370,2,"$2,339 ",185,1.3288,,,
|
||||
resnet-50,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,102.328,,52.896,0.875,1.574,$117 ,65,1,$117 ,65,10.4475,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,123.574,,63.836,0.577,3.531,$214 ,35,1,$214 ,35,11.6252,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,129.174,,68.242,0.673,1.987,$192 ,65,1,$192 ,65,6.8498,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,168.016,,88.675,0.555,4.800,$303 ,35,1,$303 ,35,6.9723,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,129.371,,56.366,0.265,3.696,$488 ,35,1,$488 ,35,8.7659,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,317.744,,149.441,0.535,2.542,$594 ,125,1,$594 ,125,3.6469,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,97.606,,52.17,0.392,1.375,$249 ,71,1,$249 ,71,10.851,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,980.813,,268.009,0.312,4.671,"$3,144 ",210,2,"$1,572 ",105,2.9838,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,2905.803,,748.583,0.405,6.457,"$7,166 ",450,2,"$3,583 ",225,1.475,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,11359.88,5494.15,5497.22,0.670,27.707,"$16,954 ",410,2,"$8,477 ",205,0.94,,,
|
||||
resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,937.572,,255.866,0.468,3.750,"$2,004 ",250,2,"$1,002 ",125,3.0985,,,
|
||||
resnet-50,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,235.061,,63.241,0.501,8.395,$469 ,28,1,$469 ,28,4.7975,,,
|
||||
resnet-50,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,504.247,,125.407,1.075,18.009,$469 ,28,1,$469 ,28,4.7975,,,
|
||||
resnet-50,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,595.133,,150.024,1.269,21.255,$469 ,28,1,$469 ,28,4.7975,,,
|
||||
resnet-50,OV-2022.3-8991,accel,Intel® Flex-170 GPU,10810.92,1005.16,,5.616,72.073,"$1,925 ",150,1,"$1,925 ",150,1.624,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,11.75,,4.24,0.020,0.094,$599 ,125,1,$599 ,125,162.07,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,4.5,,1.45,0.008,0.036,$599 ,125,1,$599 ,125,226.99,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,11.63,,4.24,0.019,0.093,$599 ,125,1,$599 ,125,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,8.21,,2.7,0.025,0.066,$329 ,125,1,$329 ,125,147.53,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,4.22,,1.36,0.013,0.034,$329 ,125,1,$329 ,125,241.92,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,8,,2.7,0.024,0.064,$329 ,125,1,$329 ,125,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,6.712,,2.394,0.010,0.041,$658 ,165,1,$658 ,165,175.7493,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,4.228,,1.262,0.006,0.026,$658 ,165,1,$658 ,165,241.7838,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,6.666,,2.393,0.010,0.040,$658 ,165,1,$658 ,165,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.171,,0.081,0.005,0.018,$34 ,9.5,1,$34 ,9.5,5985.7525,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.31,,0.133,0.005,0.026,$67 ,12,1,$67 ,12,3246.0878,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,0.965,,0.615,0.014,0.080,$67 ,12,1,$67 ,12,1053.0078,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,0.31,,0.133,0.005,0.026,$67 ,12,1,$67 ,12,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,0.806,,0.23,0.007,0.054,$118 ,15,1,$118 ,15,1240.6212,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,1.582,,0.486,0.013,0.105,$118 ,15,1,$118 ,15,649.3806,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,0.806,,0.231,0.007,0.054,$118 ,15,1,$118 ,15,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,41.52,,12.672,0.009,0.112,"$4,678 ",370,2,"$2,339 ",185,79.0111,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,1.606,,0.959,0.014,0.025,$117 ,65,1,$117 ,65,644.0626,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,1.932,,1.177,0.009,0.055,$214 ,35,1,$214 ,35,712.3677,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,2.067,,1.248,0.011,0.032,$192 ,65,1,$192 ,65,401.8765,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,2.66,,1.606,0.009,0.076,$303 ,35,1,$303 ,35,434.9877,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.046,,1.242,0.004,0.058,$488 ,35,1,$488 ,35,485.4343,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,4.871,,2.935,0.008,0.039,$594 ,125,1,$594 ,125,239.8346,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,1.55,,0.919,0.006,0.022,$249 ,71,1,$249 ,71,665.2714,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,15.706,,4.572,0.005,0.075,"$3,144 ",210,2,"$1,572 ",105,132.0319,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,152.74,144.16,144.02,0.021,0.339,"$7,166 ",450,2,"$3,583 ",225,14.48,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,47.365,,14.722,0.003,0.116,"$16,954 ",410,2,"$8,477 ",205,44.387,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,14.966,,4.35,0.007,0.060,"$2,004 ",250,2,"$1,002 ",125,138.9625,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,3.556,,1.015,0.008,0.127,$469 ,28,1,$469 ,28,284.2379,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,8.239,,2.545,0.018,0.294,$469 ,28,1,$469 ,28,122.4561,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,3.565,,1.01,0.008,0.127,$469 ,28,1,$469 ,28,,,,
|
||||
ssd-resnet34-1200 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,132.44,18.19,,0.069,0.883,"$1,925 ",150,1,"$1,925 ",150,19.933,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,18.79,,6.86,0.031,0.150,$599 ,125,1,$599 ,125,99.01,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,7.59,,2.3,0.013,0.061,$599 ,125,1,$599 ,125,132.32,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,18.14,,7,0.030,0.145,$599 ,125,1,$599 ,125,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,12.91,,4.36,0.039,0.103,$329 ,125,1,$329 ,125,95.92,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,7.13,,2.16,0.022,0.057,$329 ,125,1,$329 ,125,140.88,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,16.63,,5.72,0.051,0.133,$329 ,125,1,$329 ,125,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,10.652,,3.873,0.016,0.065,$658 ,165,1,$658 ,165,111.0757,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,7.059,,2.154,0.011,0.043,$658 ,165,1,$658 ,165,142.0745,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,14.933,,4.935,0.023,0.091,$658 ,165,1,$658 ,165,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.258,,0.039,0.008,0.027,$34 ,9.5,1,$34 ,9.5,3959.594,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.482,,0.061,0.007,0.040,$67 ,12,1,$67 ,12,2094.2569,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,1.994,,0.989,0.030,0.166,$67 ,12,1,$67 ,12,502.6095,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,2.242,,0.597,0.033,0.187,$67 ,12,1,$67 ,12,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,1.471,,0.374,0.012,0.098,$118 ,15,1,$118 ,15,678.4977,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,2.715,,0.802,0.023,0.181,$118 ,15,1,$118 ,15,368.8973,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,4.12,,1.142,0.035,0.275,$118 ,15,1,$118 ,15,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,81.838,,19.314,0.017,0.221,"$4,678 ",370,2,"$2,339 ",185,41.506,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,2.482,,1.54,0.021,0.038,$117 ,65,1,$117 ,65,412.1291,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,3.031,,1.9,0.014,0.087,$214 ,35,1,$214 ,35,457.5992,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,3.227,,2.018,0.017,0.050,$192 ,65,1,$192 ,65,256.5479,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,4.155,,2.6,0.014,0.119,$303 ,35,1,$303 ,35,277.7416,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,2.907,,2.004,0.006,0.083,$488 ,35,1,$488 ,35,319.7667,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,7.413,,4.615,0.012,0.059,$594 ,125,1,$594 ,125,157.3622,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,2.386,,1.481,0.010,0.034,$249 ,71,1,$249 ,71,422.1157,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,29.251,,7.301,0.009,0.139,"$3,144 ",210,2,"$1,572 ",105,69.3596,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,381.85,151.97,151.98,0.053,0.849,"$7,166 ",450,2,"$3,583 ",225,7.95,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,93.081,,21.382,0.005,0.227,"$16,954 ",410,2,"$8,477 ",205,22.9476,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,27.814,,6.966,0.014,0.111,"$2,004 ",250,2,"$1,002 ",125,72.9773,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,6.54,,1.677,0.014,0.234,$469 ,28,1,$469 ,28,152.602,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,15.391,,4.571,0.033,0.550,$469 ,28,1,$469 ,28,61.6002,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,17.962,,4.848,0.038,0.642,$469 ,28,1,$469 ,28,,,,
|
||||
unet-camvid--0001 ,OV-2022.3-8991,accel,Intel® Flex-170 GPU,218.12,35.2,,0.113,1.454,"$1,925 ",150,1,"$1,925 ",150,7.149,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,802.63,,252.57,1.340,6.421,$599 ,125,1,$599 ,125,2.69,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,249.5,,86.81,0.417,1.996,$599 ,125,1,$599 ,125,4.79,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,795.31,,247.17,1.328,6.362,$599 ,125,1,$599 ,125,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,638.25,,206.62,1.940,5.106,$329 ,125,1,$329 ,125,2.59,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,229.22,,81.49,0.697,1.834,$329 ,125,1,$329 ,125,5.22,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,631.71,,205.81,1.920,5.054,$329 ,125,1,$329 ,125,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,428.506,,162.077,0.651,2.597,$658 ,165,1,$658 ,165,2.4778,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,245.738,,84.457,0.373,1.489,$658 ,165,1,$658 ,165,3.8792,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,598.947,,195.608,0.910,3.630,$658 ,165,1,$658 ,165,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,12.406,,6.124,0.365,1.306,$34 ,9.5,1,$34 ,9.5,83.8614,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,22.94,,10.395,0.342,1.912,$67 ,12,1,$67 ,12,44.6243,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,66.641,,38.178,0.995,5.553,$67 ,12,1,$67 ,12,15.7687,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,86.38,,45.819,1.289,7.198,$67 ,12,1,$67 ,12,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,55.629,,18.246,0.471,3.709,$118 ,15,1,$118 ,15,18.2291,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,106.588,,31.376,0.903,7.106,$118 ,15,1,$118 ,15,10.8727,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,153.471,,46.125,1.301,10.231,$118 ,15,1,$118 ,15,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,2733.627,,761.534,0.584,7.388,"$4,678 ",370,2,"$2,339 ",185,1.1267,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,114.701,,66.266,0.980,1.765,$117 ,65,1,$117 ,65,8.9295,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,141.001,,79.694,0.659,4.029,$214 ,35,1,$214 ,35,9.9196,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,145.659,,85.158,0.759,2.241,$192 ,65,1,$192 ,65,5.465,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,191.931,,109.625,0.633,5.484,$303 ,35,1,$303 ,35,5.5981,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,147.041,,84.448,0.301,4.201,$488 ,35,1,$488 ,35,7.0171,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,359.61,,173.635,0.605,2.877,$594 ,125,1,$594 ,125,2.9037,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,109.066,,64.87,0.438,1.536,$249 ,71,1,$249 ,71,9.3792,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,1058.322,,337.035,0.337,5.040,"$3,144 ",210,2,"$1,572 ",105,2.4971,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,7344.88,5212.9,5236.28,1.025,16.322,"$7,166 ",450,2,"$3,583 ",225,1.06,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,2931.242,,901.832,0.173,7.149,"$16,954 ",410,2,"$8,477 ",205,1.215,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,1015.77,,321.263,0.507,4.063,"$2,004 ",250,2,"$1,002 ",125,2.6076,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,258.05,,79.963,0.550,9.216,$469 ,28,1,$469 ,28,4.1833,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,492.645,,157.98,1.050,17.594,$469 ,28,1,$469 ,28,2.5788,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,606.117,,186.339,1.292,21.647,$469 ,28,1,$469 ,28,,,,
|
||||
yolo_v3_tiny,OV-2022.3-8991,accel,Intel® Flex-170 GPU,3634.16,1209.67,,1.888,24.228,"$1,925 ",150,1,"$1,925 ",150,1.293,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
begin_rec,,,,,,,,,,,,,,,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i9-13900K CPU-only,37.15,,13.03,0.062,0.297,$599 ,125,1,$599 ,125,55.96,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-13900K iGPU-only,12.92,,4.26,0.022,0.103,$599 ,125,1,$599 ,125,78.73,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-13900K CPU+iGPU,37.16,,13.54,0.062,0.297,$599 ,125,1,$599 ,125,,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i5-13600K CPU-only,25.5,,8.36,0.078,0.204,$329 ,125,1,$329 ,125,53.79,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i5-13600K iGPU-only,12.15,,4,0.037,0.097,$329 ,125,1,$329 ,125,83.64,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i5-13600K CPU+iGPU,31.99,,10.82,0.097,0.256,$329 ,125,1,$329 ,125,,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i9-12900K CPU-only,21.833,,7.096,0.033,0.132,$658 ,165,1,$658 ,165,58.4745,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i9-12900K iGPU-only,11.956,,3.869,0.018,0.072,$658 ,165,1,$658 ,165,85.1633,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i9-12900K CPU+iGPU,26.693,,8.644,0.041,0.162,$658 ,165,1,$658 ,165,,,,
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Atom™ x5-E3940 CPU-only,0.522,,0.248,0.015,0.055,$34 ,9.5,1,$34 ,9.5,1900.0218,,,
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Atom™ x6425E CPU-only,0.99,,0.43,0.015,0.083,$67 ,12,1,$67 ,12,1019.82,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Atom™ x6425E iGPU-only,3.413,,1.752,0.051,0.284,$67 ,12,1,$67 ,12,295.7702,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Atom™ x6425E CPU+iGPU,3.999,,2.087,0.060,0.333,$67 ,12,1,$67 ,12,,,,
|
||||
yolo_v4,OV-2022.3-8991,atom,Intel® Celeron™ 6305E CPU-only,2.453,,0.748,0.021,0.164,$118 ,15,1,$118 ,15,407.2474,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Celeron™ 6305E iGPU-only,4.758,,1.434,0.040,0.317,$118 ,15,1,$118 ,15,212.7987,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Celeron™ 6305E CPU+iGPU,7.048,,2.122,0.060,0.470,$118 ,15,1,$118 ,15,,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6336Y CPU-only,126.954,,35.481,0.027,0.343,"$4,678 ",370,2,"$2,339 ",185,37.8189,,,
|
||||
yolo_v4,OV-2022.3-8991,core ,Intel® Core™ i3-8100 CPU-only,4.971,,2.885,0.042,0.076,$117 ,65,1,$117 ,65,203.4163,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i5-10500TE CPU-only,6.182,,3.532,0.029,0.177,$214 ,35,1,$214 ,35,227.5786,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,6.356,,3.757,0.033,0.098,$192 ,65,1,$192 ,65,123.3181,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,8.44,,4.868,0.028,0.241,$303 ,35,1,$303 ,35,135.9719,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i9-10900TE CPU-only,6.399,,3.765,0.013,0.183,$488 ,35,1,$488 ,35,155.642,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® W1290P CPU-only,15.614,,7.925,0.026,0.125,$594 ,125,1,$594 ,125,71.631,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® E-2124G CPU-only,4.674,,2.804,0.019,0.066,$249 ,71,1,$249 ,71,214.0957,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 5218T CPU-only,47.338,,14.464,0.015,0.225,"$3,144 ",210,2,"$1,572 ",105,45.7699,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6448Y CPU-only,252.03,228.55,228.67,0.035,0.560,"$7,166 ",450,2,"$3,583 ",225,15.01,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Platinum 8270 CPU-only,131.466,,41.001,0.008,0.321,"$16,954 ",410,2,"$8,477 ",205,19.2807,,,
|
||||
yolo_v4,OV-2022.3-8991,xeon,Intel® Xeon® Silver 4216R CPU-only,45.047,,13.741,0.022,0.180,"$2,004 ",250,2,"$1,002 ",125,48.0344,,,
|
||||
yolo_v4,OV-2022.3-8991,core,Intel® Core™ i7-1165G7 CPU-only,11.067,,3.259,0.024,0.395,$469 ,28,1,$469 ,28,92.2912,,,
|
||||
yolo_v4,OV-2022.3-8991,core-iGPU,Intel® Core™ i7-1165G7 iGPU-only,25.048,,7.384,0.053,0.895,$469 ,28,1,$469 ,28,39.1492,,,
|
||||
yolo_v4,OV-2022.3-8991,core-CPU+iGPU,Intel® Core™ i7-1165G7 CPU+iGPU,29.658,,8.32,0.063,1.059,$469 ,28,1,$469 ,28,,,,
|
||||
yolo_v4,OV-2022.3-8991,accel,Intel® Flex-170 GPU,454.49,56.78,,0.236,3.03,"$1,925 ",150,1,"$1,925 ",150,6.969,,,
|
||||
end_rec,,,,,,,,,,,,,,,,,
|
||||
|
105
docs/_static/benchmarks_files/OVMS-benchmark-data.csv
vendored
Normal file
105
docs/_static/benchmarks_files/OVMS-benchmark-data.csv
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
Network model,Release,IE-Type,Platform name,Throughput-OVMS-INT8,Throughput-OV-INT8,Throughput-OVMS-FP32,Throughput-OV-FP32
|
||||
begin_rec,,,,,,,
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,19.05,19.24,12.84,13.02
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,21.75,22.97,17.16,17.32
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,18.00,18.33,11.91,12.06
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,81.48,87.59,46.81,48.37
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,207.39,231.10,104.07,125.89
|
||||
bert-small-uncased-whole-word-masking-squad-0002,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,282.09,287.81,159.05,162.28
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
DeeplabV3,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,28.29,31.56,15.94,16.90
|
||||
DeeplabV3,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,37.92,40.93,19.35,20.38
|
||||
DeeplabV3,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,26.10,27.99,15.33,15.78
|
||||
DeeplabV3,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,118.32,142.36,26.18,27.37
|
||||
DeeplabV3,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,347.24,391.34,53.95,73.45
|
||||
DeeplabV3,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,425.70,538.96,125.09,132.23
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Densenet-121,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,117.68,123.85,68.41,71.42
|
||||
Densenet-121,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,151.83,161.15,90.37,94.03
|
||||
Densenet-121,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,97.49,101.95,61.08,62.79
|
||||
Densenet-121,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,765.57,857.26,205.00,225.97
|
||||
Densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,2039.41,2205.00,582.14,600.78
|
||||
Densenet-121,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,2316.39,2501.85,662.25,686.40
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Efficientdet-D0,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,42.26,43.69,25.09,26.62
|
||||
Efficientdet-D0,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,49.48,50.11,29.37,30.93
|
||||
Efficientdet-D0,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,37.48,38.96,26.29,27.90
|
||||
Efficientdet-D0,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,125.90,143.68,51.04,55.33
|
||||
Efficientdet-D0,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,302.06,335.20,168.52,177.62
|
||||
Efficientdet-D0,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,362.66,415.28,244.88,254.03
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,29.95,33.16,16.58,17.08
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,43.60,44.77,22.21,22.39
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,27.76,28.08,14.16,14.41
|
||||
Inception-V4,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,253.30,275.06,60.19,63.55
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,656.23,690.46,158.05,161.39
|
||||
Inception-V4,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,747.08,782.74,185.16,187.21
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Mobilenet-SSD ,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,247.50,275.77,133.42,148.03
|
||||
Mobilenet-SSD ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,311.96,358.32,176.63,199.53
|
||||
Mobilenet-SSD ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,213.07,237.43,128.63,138.09
|
||||
Mobilenet-SSD ,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,1382.37,1935.88,391.43,484.28
|
||||
Mobilenet-SSD ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,3578.49,4790.04,1062.88,1141.50
|
||||
Mobilenet-SSD ,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,4131.44,5693.82,1319.32,1494.70
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Mobilenet-V2 ,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,470.51,546.68,286.64,336.47
|
||||
Mobilenet-V2 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,567.21,690.80,378.24,462.46
|
||||
Mobilenet-V2 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,399.15,470.87,283.32,318.23
|
||||
Mobilenet-V2 ,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,2493.12,3426.14,765.45,941.54
|
||||
Mobilenet-V2 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,6679.14,9143.29,2302.78,2511.31
|
||||
Mobilenet-V2 ,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,7371.67,10494.29,2672.91,3192.44
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,210.80,228.46,106.61,116.30
|
||||
Resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,279.43,303.27,142.79,151.45
|
||||
Resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,184.06,194.48,91.60,94.53
|
||||
Resnet-18 ,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,1490.65,1809.32,409.17,464.62
|
||||
Resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,3918.52,4568.67,1138.07,1166.20
|
||||
Resnet-18 ,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,4477.09,5192.77,1294.96,1309.89
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Resnet-50,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,108.35,114.48,55.15,57.62
|
||||
Resnet-50,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,142.74,149.99,73.33,75.63
|
||||
Resnet-50,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,98.10,100.62,47.21,48.40
|
||||
Resnet-50,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,786.06,893.37,182.61,200.00
|
||||
Resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,2066.51,2231.60,464.01,518.88
|
||||
Resnet-50,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,2336.42,2508.77,613.40,632.38
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,1.74,1.83,0.89,1.05
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,2.46,2.48,1.37,1.42
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,1.41,1.58,0.66,0.88
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,14.59,15.29,3.97,4.03
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,35.42,36.77,10.14,10.46
|
||||
SSD-Resnet34-1200 ,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,41.35,43.93,11.73,12.20
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,2.57,2.78,1.62,1.70
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,3.68,3.71,2.15,2.29
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,2.25,2.38,1.36,1.45
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,25.52,26.93,5.57,5.69
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,60.15,65.11,15.01,15.15
|
||||
Unet-Camvid--0001 ,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,69.58,76.46,17.16,17.97
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,114.02,127.37,67.06,72.20
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,148.72,168.41,85.62,91.66
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,98.44,107.53,56.42,60.41
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,592.92,850.58,207.96,240.90
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,1631.49,2031.46,534.51,611.68
|
||||
Yolo_V3_Tiny,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,1774.41,2428.00,691.96,725.60
|
||||
end_rec,,,,,,,
|
||||
begin_rec,,,,,,,
|
||||
Yolo_V4,OV-2022.3-8991,core,Intel® Core™ i3-10100 CPU-only,5.44,5.66,3.17,3.25
|
||||
Yolo_V4,OV-2022.3-8991,core,Intel® Core™ i5-8500 CPU-only,7.24,7.40,4.19,4.21
|
||||
Yolo_V4,OV-2022.3-8991,core,Intel® Core™ i7-8700T CPU-only,4.60,4.71,2.45,2.68
|
||||
Yolo_V4,OV-2022.3-8991,core,Intel® Core™ i9-10920X CPU-only,36.33,40.21,10.52,10.90
|
||||
Yolo_V4,OV-2022.3-8991,xeon,Intel® Xeon® Gold 6238 CPU-only,81.88,95.46,26.43,27.57
|
||||
Yolo_V4,OV-2022.3-8991,xeon,Intel® Xeon® 8260 CPU-only,96.58,111.93,30.48,34.50
|
||||
end_rec,,,,,,,
|
||||
|
BIN
docs/_static/benchmarks_files/platform_list_22.3.pdf
vendored
BIN
docs/_static/benchmarks_files/platform_list_22.3.pdf
vendored
Binary file not shown.
3
docs/_static/images/compressed_int8_Convolution_weights.png
vendored
Normal file
3
docs/_static/images/compressed_int8_Convolution_weights.png
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4b14b03ebb6a00b5f52a8404282f83d4ad214c8d04aea74738027a775c4ef545
|
||||
size 100581
|
||||
3
docs/_static/images/expanded_int8_Convolution_weights.png
vendored
Normal file
3
docs/_static/images/expanded_int8_Convolution_weights.png
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cbfadd457b4d943ffb46906a7daf03516e971fe49d2806cd32c84c5015178f03
|
||||
size 92819
|
||||
3
docs/_static/images/fq.common.svg
vendored
Normal file
3
docs/_static/images/fq.common.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d4daac1d270f60e4819683b467c20967f78cb736eef5ff760a9a15ad428ab48b
|
||||
size 15681
|
||||
3
docs/_static/images/fq.transformed.svg
vendored
Normal file
3
docs/_static/images/fq.transformed.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c1d986eea3590b2c214551e4f76a323b1f3ff4f14d6237bd6faaca17c3a0fbb7
|
||||
size 23275
|
||||
3
docs/_static/images/low_precision_transformation_pipeline.svg
vendored
Normal file
3
docs/_static/images/low_precision_transformation_pipeline.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3b5ccafe14d5dae83894b520d8b6d65bc2cb08015b54cfa88c784db4eb009964
|
||||
size 22741
|
||||
3
docs/_static/images/model_fq_and_convolution.common.svg
vendored
Normal file
3
docs/_static/images/model_fq_and_convolution.common.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:81e8cda60a44b726cd6c021c452029c4d815f1ab2625a16a3022b206367840f9
|
||||
size 27133
|
||||
3
docs/_static/images/model_fq_and_convolution.transformed.svg
vendored
Normal file
3
docs/_static/images/model_fq_and_convolution.transformed.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:28a4d377a646d45905960e317b507e816ce60f66e9e015a91f06590ea1a884b8
|
||||
size 29783
|
||||
3
docs/_static/images/model_qdq_and_convolution.common.svg
vendored
Normal file
3
docs/_static/images/model_qdq_and_convolution.common.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:222f890cbcc7ca8e2498808a2d2d976a4c8f91e3152aaf4c69df8ae2464de7a4
|
||||
size 39429
|
||||
3
docs/_static/images/qdq_propagation.png
vendored
Normal file
3
docs/_static/images/qdq_propagation.png
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e0bab657bf979494cb84459e29024e5b8b9cd320388c62c6a91b74b897b19718
|
||||
size 18108
|
||||
3
docs/_static/images/small_IR_graph_demonstration.png
vendored
Normal file
3
docs/_static/images/small_IR_graph_demonstration.png
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e8a86ea362473121a266c0ec1257c8d428a4bb6438fecdc9d4a4f1ff5cfc9047
|
||||
size 26220
|
||||
3
docs/_static/images/step2_markup1.svg
vendored
Normal file
3
docs/_static/images/step2_markup1.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e336651c517c77c32126fd0a718b15b704340216d7e3fb155b2e06743c24d3a8
|
||||
size 62139
|
||||
3
docs/_static/images/step2_markup2.svg
vendored
Normal file
3
docs/_static/images/step2_markup2.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:abba6671b011a2a7c4126364e0b5e7ae5ebc95d2ea5cc4269afdbddbda31278f
|
||||
size 63263
|
||||
3
docs/_static/images/step2_markup3.svg
vendored
Normal file
3
docs/_static/images/step2_markup3.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8e6244537b1cf1f1e1c72af87c7e8fff5e2d1f06b19e262aaad43da65deb5edd
|
||||
size 63943
|
||||
3
docs/_static/images/step2_markup4.svg
vendored
Normal file
3
docs/_static/images/step2_markup4.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fdb5721ca6b5ffe1941f7bf799c2e0179ea24970f04d63f642e412f56cc34fb8
|
||||
size 65682
|
||||
3
docs/_static/images/step2_markup5.svg
vendored
Normal file
3
docs/_static/images/step2_markup5.svg
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aa4e5a1055a3707c50936fab1266da11babad65c4857b5ecd8392617ebb5ea77
|
||||
size 68218
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user