From b1cd3aa867ac6fc7387b84dfe782584e98c45c48 Mon Sep 17 00:00:00 2001 From: Pawel Raasz Date: Wed, 18 Sep 2024 14:49:55 +0200 Subject: [PATCH 01/49] [core] Improve Constant get_vector for low precisions (#26177) ### Details: - The Constant `get_vector` works correctly for low precisions. - Initialize not used bits in Constant buffer for low precisions to avoid undefined values. ### Tickets: - CVS-149867 --- src/core/include/openvino/op/constant.hpp | 39 +++++++-- src/core/src/op/constant.cpp | 37 +++++++- src/core/tests/constant.cpp | 86 +++++++++++-------- .../ir/tests/frontend_test_basic.cpp | 86 +++++++++++++++++++ 4 files changed, 206 insertions(+), 42 deletions(-) diff --git a/src/core/include/openvino/op/constant.hpp b/src/core/include/openvino/op/constant.hpp index 8247e41cd3ff07..df630e96576db7 100644 --- a/src/core/include/openvino/op/constant.hpp +++ b/src/core/include/openvino/op/constant.hpp @@ -277,13 +277,33 @@ class OPENVINO_API Constant : public Op { /// \return The initialization literals for the tensor constant. std::vector get_value_strings() const; - template + /// @brief Get constant buffer as vector of element type T. + /// + /// For low precision the vector do not perform bit unpacks. + /// The returned vector has N elements where: + /// - N is (elements count * (precision byte size / T byte size)) for standard precisions. + /// - N is (byte size) for low precisions. + /// + /// @tparam T Output vector type which byte size must be less or equal of byte size of Constant's precision. + /// @return Vector of N elements of Type T. + template ::value>::type* = nullptr> std::vector get_vector() const { - const T* p = get_data_ptr(); - if (p == nullptr) { - OPENVINO_THROW("Cannot create vector! Buffer is not allocated."); + const auto p = get_data_ptr(); + OPENVINO_ASSERT(p != nullptr, "Cannot create vector! Buffer is not allocated."); + auto v = std::vector(p, p + (get_byte_size() / sizeof(T))); + if (!m_alloc_buffer_on_visit_attributes) { + // result vector requires update when Constant share data (e.g read weight from IR binary file) + set_unused_bits(v.data()); } - return std::vector(p, p + shape_size(m_shape)); + return v; + } + + template ::value>::type* = nullptr> + std::vector get_vector() const { + const auto p = get_data_ptr(); + OPENVINO_ASSERT(p != nullptr, "Cannot create vector! Buffer is not allocated."); + auto v = std::vector(p, p + (get_byte_size() / sizeof(T))); + return v; } /// \brief Return the Constant's value as a vector cast to type T @@ -403,7 +423,7 @@ class OPENVINO_API Constant : public Op { void alloc_buffer_on_visit_attributes(bool val); /// @brief Get view on constant data as tensor. - /// @return OV::Tensor with constant data. + /// @return ov::Tensor with constant data. const Tensor get_tensor_view() const; /// @return Constant's strides in bytes. @@ -414,6 +434,13 @@ class OPENVINO_API Constant : public Op { size_t get_num_elements_to_cast(const int64_t n) const; + /// \brief Sets buffer's not used bits to zero. + /// + /// In case of low precision there can be some storage area which is not used (not defined state). + /// + /// \param buffer Pointer to buffer with Constant values. + void set_unused_bits(void* buffer) const; + #ifdef __clang__ # pragma clang diagnostic push # ifdef __has_warning diff --git a/src/core/src/op/constant.cpp b/src/core/src/op/constant.cpp index fb3086553782ca..90b293fb564672 100644 --- a/src/core/src/op/constant.cpp +++ b/src/core/src/op/constant.cpp @@ -258,9 +258,41 @@ void Constant::allocate_buffer(bool memset_allocation) { if (m_element_type == ov::element::string) { m_data = std::make_shared(num_elements, byte_size, host_alignment(), memset_allocation); } else { + constexpr uint8_t init_value = 0; m_data = std::make_shared(byte_size, host_alignment()); + if (memset_allocation) { - std::memset(m_data->get_ptr(), 0, m_data->size()); + std::memset(m_data->get_ptr(), init_value, m_data->size()); + } else { + set_unused_bits(m_data->get_ptr()); + } + } +} + +void Constant::set_unused_bits(void* buffer) const { + const auto byte_size = m_data->size(); + + if (byte_size > 0) { + const auto num_elements = shape_size(m_shape); + + if (element::is_bit_type(m_element_type)) { + constexpr size_t storage_unit_byte_size = 1; + const auto not_aligned_elements = num_elements % (8 / m_element_type.bitwidth()); + const uint8_t not_used_bits_mask = 0xff >> (m_element_type.bitwidth() * not_aligned_elements); + reinterpret_cast(buffer)[byte_size - storage_unit_byte_size] &= ~not_used_bits_mask; + } else if (element::is_nibble_type(m_element_type) && (num_elements % 2)) { + constexpr size_t storage_unit_byte_size = 1; + reinterpret_cast(buffer)[byte_size - storage_unit_byte_size] &= 0x0FU; + } else if (element::is_split_bit_type(m_element_type)) { + constexpr size_t storage_unit_byte_size = 3; + const auto num_values = (24U / m_element_type.bitwidth()); + const auto not_aligned_elements = num_elements % num_values; + const uint16_t not_used_upper_mask = ~(0xffff >> (not_aligned_elements * (16U / num_values))); + + auto ptr = reinterpret_cast(buffer) + (byte_size - storage_unit_byte_size); + ptr[0] &= not_used_upper_mask >> 8U; + ptr[1] &= not_used_upper_mask & 0x00ff; + ptr[2] &= ~(0xff >> (not_aligned_elements * (8U / num_values))); } } } @@ -290,7 +322,8 @@ Constant::Constant(const Constant& other) m_byte_strides{other.m_byte_strides}, m_data{other.m_data}, m_all_elements_bitwise_identical{other.m_all_elements_bitwise_identical.load()}, - m_all_elements_bitwise_identical_checked{other.m_all_elements_bitwise_identical_checked.load()} { + m_all_elements_bitwise_identical_checked{other.m_all_elements_bitwise_identical_checked.load()}, + m_alloc_buffer_on_visit_attributes{other.m_alloc_buffer_on_visit_attributes} { constructor_validate_and_infer_types(); } diff --git a/src/core/tests/constant.cpp b/src/core/tests/constant.cpp index aaf91a4335f798..012a2aab6cfa13 100644 --- a/src/core/tests/constant.cpp +++ b/src/core/tests/constant.cpp @@ -100,7 +100,7 @@ TEST(constant, boolean_vector) { EXPECT_EQ(v[2], 1); EXPECT_EQ(v[3], 0); - const char* p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 1); EXPECT_EQ(p[1], 0); EXPECT_EQ(p[2], 1); @@ -301,7 +301,7 @@ TEST(constant, int4_string) { const auto p = c.get_data_ptr(); EXPECT_EQ(0x01, p[0]); - EXPECT_EQ(0x0F, p[1] & 0x0F); + EXPECT_EQ(0x0F, p[1]); EXPECT_EQ(input, c.get_value_strings()); @@ -322,7 +322,7 @@ TEST(constant, int4_string_broadcast_negative_number) { const auto p = c.get_data_ptr(); EXPECT_EQ(0xFF, p[0]); - EXPECT_EQ(0x0F, p[1] & 0x0F); + EXPECT_EQ(0x0F, p[1]); EXPECT_EQ(std::vector(3, "-1"), c.get_value_strings()); } @@ -338,7 +338,7 @@ TEST(constant, int4_string_broadcast_positive_number) { const auto p = c.get_data_ptr(); EXPECT_EQ(0x11, p[0]); - EXPECT_EQ(0x01, p[1] & 0x0F); + EXPECT_EQ(0x01, p[1]); EXPECT_EQ(std::vector(3, "1"), c.get_value_strings()); } @@ -354,7 +354,7 @@ TEST(constant, int4_vector_negative_number) { const auto p = c.get_data_ptr(); EXPECT_EQ(0xEF, p[0]); - EXPECT_EQ(0x0F, p[1] & 0x0F); + EXPECT_EQ(0x0F, p[1]); } TEST(constant, int4_vector_positive_number) { @@ -368,7 +368,7 @@ TEST(constant, int4_vector_positive_number) { const auto p = c.get_data_ptr(); EXPECT_EQ(0x21, p[0]); - EXPECT_EQ(0x05, p[1] & 0x0F); + EXPECT_EQ(0x05, p[1]); } TEST(constant, int4_vector_broadcast_negative_number) { @@ -382,7 +382,7 @@ TEST(constant, int4_vector_broadcast_negative_number) { const auto p = c.get_data_ptr(); EXPECT_EQ(0xFF, p[0]); - EXPECT_EQ(0x0F, p[1] & 0x0F); + EXPECT_EQ(0x0F, p[1]); } TEST(constant, int4_vector_broadcast_positive_number) { @@ -394,9 +394,9 @@ TEST(constant, int4_vector_broadcast_positive_number) { EXPECT_EQ(v[1], int8_t(3)); EXPECT_EQ(v[2], int8_t(3)); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(0x33, p[0]); - EXPECT_EQ(0x03, p[1] & 0x0F); + EXPECT_EQ(0x03, p[1]); } TEST(constant, int4_input_value_validation) { @@ -447,8 +447,6 @@ TEST(constant, int8_string) { EXPECT_EQ(input, c.get_value_strings()); - EXPECT_EQ(input, c.get_value_strings()); - for (unsigned i = 0; i != input.size(); ++i) { EXPECT_EQ(input[i], c.convert_value_to_string(i)); } @@ -1004,8 +1002,8 @@ TEST(constant, uint3_string_broadcast) { const auto p = c.get_data_ptr(); EXPECT_EQ(p[0], 0b01010101); - EXPECT_EQ(p[1] & 0b11000000, 0b01000000); - EXPECT_EQ(p[2] & 0b11000000, 0b11000000); + EXPECT_EQ(p[1], 0b01000000); + EXPECT_EQ(p[2], 0b11111000); } TEST(constant, uint3_vector_less_than_one_storage_unit) { @@ -1018,10 +1016,10 @@ TEST(constant, uint3_vector_less_than_one_storage_unit) { ASSERT_EQ(v.size(), shape_size(shape)); EXPECT_THAT(v, ElementsAre(5, 3, 1)); - const auto p = c.get_data_ptr(); - EXPECT_EQ(p[0] & 0b11111100, 0b01110100); - // p[1] ignore - EXPECT_EQ(p[2] & 0b11100000, 0b10000000); + const auto p = c.get_vector(); + EXPECT_EQ(p[0], 0b01110100); + EXPECT_EQ(p[1], 0); + EXPECT_EQ(p[2], 0b10000000); } TEST(constant, uint3_vector_greater_than_one_storage_unit) { @@ -1034,14 +1032,14 @@ TEST(constant, uint3_vector_greater_than_one_storage_unit) { ASSERT_EQ(v.size(), shape_size(shape)); EXPECT_THAT(v, ElementsAre(2, 3, 1, 0, 4, 5, 6, 7, 5, 2)); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 0b10110100); EXPECT_EQ(p[1], 0b00011011); EXPECT_EQ(p[2], 0b00001111); - EXPECT_EQ(p[3] & 0b11110000, 0b01100000); - // p[4] ignore - EXPECT_EQ(p[5] & 0b11000000, 0b10000000); + EXPECT_EQ(p[3], 0b01100000); + EXPECT_EQ(p[4], 0); + EXPECT_EQ(p[5], 0b10000000); } TEST(constant, uint3_vector_broadcast) { @@ -1143,7 +1141,7 @@ TEST(constant, uint4_vector) { EXPECT_EQ(v[2], 1); EXPECT_EQ(v[3], 0); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 0x01); EXPECT_EQ(p[1], 0x01); } @@ -1159,9 +1157,29 @@ TEST(constant, uint4_vector_broadcast) { const auto p = c.get_data_ptr(); const auto first_byte = p[0]; - const auto second_byte = p[1] & 0x0F; + const auto second_byte = p[1]; EXPECT_EQ(0x11, first_byte); EXPECT_EQ(0x01, second_byte); + + const auto vector = c.get_vector(); + EXPECT_EQ(vector[0], 0x11); + EXPECT_EQ(vector[1], 0x01); +} + +TEST(constant, uint4_get_vector_from_one_element) { + auto c = std::make_shared(element::u4, Shape{1}, 9); + auto v = c->get_vector(); + + ASSERT_EQ(v.size(), 1); + EXPECT_EQ(v[0], 0x09); +} + +TEST(constant, uint4_get_vector_from_scalar) { + auto c = std::make_shared(element::u4, Shape{}, 8); + auto v = c->get_vector(); + + ASSERT_EQ(v.size(), 1); + EXPECT_EQ(v[0], 0x08); } TEST(constant, uint4_input_value_validation) { @@ -1240,8 +1258,8 @@ TEST(constant, uint6_vector_less_than_one_storage_unit) { const auto p = c.get_data_ptr(); EXPECT_EQ(p[0], 0x57); - EXPECT_EQ(p[1] & 0xF0, 0x10); - EXPECT_EQ(p[2] & 0b1111100, 0b00010000); + EXPECT_EQ(p[1], 0x10); + EXPECT_EQ(p[2], 0b00010000); } TEST(constant, uint6_vector_greater_than_one_storage_unit) { @@ -1254,14 +1272,14 @@ TEST(constant, uint6_vector_greater_than_one_storage_unit) { ASSERT_EQ(v.size(), shape_size(shape)); EXPECT_THAT(v, ElementsAre(25, 3, 1, 0, 45, 5)); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 0x93); EXPECT_EQ(p[1], 0x10); EXPECT_EQ(p[2], 0b01000000); EXPECT_EQ(p[3], 0xd5); - // p[4] ignore - EXPECT_EQ(p[5] & 0b11110000, 0b10000000); + EXPECT_EQ(p[4], 0); + EXPECT_EQ(p[5], 0b10000000); } TEST(constant, uint6_vector_broadcast) { @@ -1667,7 +1685,7 @@ TEST(constant, nf4_write_custom_type) { auto p = c.get_data_ptr(); EXPECT_EQ(p[0], 0x20); - EXPECT_EQ(p[1] & 0x0f, 0x0f); + EXPECT_EQ(p[1], 0x0f); EXPECT_THROW(c.get_strides(), Exception); } @@ -2016,7 +2034,7 @@ TEST(constant, f4e2m1_vector) { const auto p = c.get_data_ptr(); EXPECT_EQ(p[0], 0x6b); EXPECT_EQ(p[1], 0x3c); - EXPECT_EQ(p[2] & 0x0F, 0x0d); + EXPECT_EQ(p[2], 0x0d); } TEST(constant, f4e2m1_from_float_vector) { @@ -2024,10 +2042,10 @@ TEST(constant, f4e2m1_from_float_vector) { auto v = c.cast_vector(); EXPECT_THAT(v, ElementsAre(-1.5f, 4.0f, -2.0f, 1.5f, -3.0f)); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 0x6b); EXPECT_EQ(p[1], 0x3c); - EXPECT_EQ(p[2] & 0x0F, 0x0d); + EXPECT_EQ(p[2], 0x0d); } TEST(constant, f4e2m1_vector_broadcast) { @@ -2039,7 +2057,7 @@ TEST(constant, f4e2m1_vector_broadcast) { const auto p = c.get_data_ptr(); EXPECT_EQ(0x33, p[0]); - EXPECT_EQ(0x03, p[1] & 0x0F); + EXPECT_EQ(0x03, p[1]); } TEST(constant, f4e2m1_write_then_cast_custom_type) { @@ -2109,7 +2127,7 @@ TEST(constant, f8e8m0_from_float_vector) { auto v = c.cast_vector(); EXPECT_THAT(v, ElementsAre(std::numeric_limits::min() / 2, 4.0f, 2.0f, 2.0f, 2.0f)); - const auto p = c.get_data_ptr(); + const auto p = c.get_vector(); EXPECT_EQ(p[0], 0x00); EXPECT_EQ(p[1], 0x81); EXPECT_EQ(p[2], 0x80); diff --git a/src/frontends/ir/tests/frontend_test_basic.cpp b/src/frontends/ir/tests/frontend_test_basic.cpp index 5780168ce80dba..ca1a244ffc7900 100644 --- a/src/frontends/ir/tests/frontend_test_basic.cpp +++ b/src/frontends/ir/tests/frontend_test_basic.cpp @@ -356,6 +356,92 @@ TEST_P(IRFrontendMMapTests, model_with_weights_reading_from_disk) { EXPECT_TRUE(res.valid) << res.message; } +TEST_P(IRFrontendMMapTests, model_with_lp_weights_reading_from_disk) { + std::string xmlModel = R"V0G0N( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +)V0G0N"; + + std::vector buffer(1, 0); + auto buffer_ptr = reinterpret_cast(buffer.data()); + buffer_ptr[0] = 0x18; + auto t = ov::Tensor(ov::element::u4, ov::Shape{}, buffer.data()); + + createTemporalModelFile(xmlModel, buffer); + + std::shared_ptr model; + + ov::Core new_core; + new_core.set_property(ov::enable_mmap(GetParam())); + OV_ASSERT_NO_THROW(model = new_core.read_model(xmlFileName, binFileName)); + ASSERT_TRUE(!!model); + + std::shared_ptr modelRef; + { + auto parameter = std::make_shared(ov::element::u4, ov::Shape{}); + parameter->set_friendly_name("A"); + auto constant = std::make_shared(t); + constant->set_friendly_name("my_const"); + auto transpose = std::make_shared(parameter, constant); + transpose->set_friendly_name("Add_4"); + auto result = std::make_shared(transpose); + result->set_friendly_name("Result_5"); + modelRef = std::make_shared(ov::NodeVector{result}, ov::ParameterVector{parameter}); + } + + const auto fc = FunctionsComparator::with_default() + .enable(FunctionsComparator::ATTRIBUTES) + .enable(FunctionsComparator::PRECISIONS) + .enable(FunctionsComparator::RUNTIME_KEYS) + .enable(FunctionsComparator::NAMES) + .enable(FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(model, modelRef); + EXPECT_TRUE(res.valid) << res.message; + + for (auto&& op : model->get_ops()) { + if (auto c = ov::as_type(op.get())) { + const auto v = c->get_vector(); + EXPECT_EQ(v[0], 0x08); + } + } +} + INSTANTIATE_TEST_SUITE_P(EnableMMapPropery, IRFrontendMMapTests, ::testing::Bool()); TEST_F(IRFrontendTests, model_without_weights_reading_from_disk) { From f081f099630ef9282efe87ad881b59e47ed932d0 Mon Sep 17 00:00:00 2001 From: Alina Kladieva Date: Wed, 18 Sep 2024 14:55:57 +0200 Subject: [PATCH 02/49] [GHA] Actualize docker docs & add section about reproducibility (#26597) Co-authored-by: Andrei Kashchikhin --- docs/dev/ci/github_actions/docker_images.md | 140 ++++++++++++++++---- 1 file changed, 117 insertions(+), 23 deletions(-) diff --git a/docs/dev/ci/github_actions/docker_images.md b/docs/dev/ci/github_actions/docker_images.md index ee2ddcc74845f8..5bc51c3b85b3a8 100644 --- a/docs/dev/ci/github_actions/docker_images.md +++ b/docs/dev/ci/github_actions/docker_images.md @@ -44,39 +44,133 @@ Here are some pros and cons of having your own container registry: * The registry does not automatically mirror images available on Docker Hub * The necessary images must be manually added to the registry -The available Docker images use the following pattern for their names: `openvinogithubactions.azurecr.io/dockerhub/:`. +The available Docker images use the following pattern for their names: `openvinogithubactions.azurecr.io/:` or `openvinogithubactions.azurecr.io/library/:` -Most of the images on the OpenVINO ACR are mirrors of the images with the same names on Docker Hub. +Most of the images on the OpenVINO ACR are either mirrors of the images from Docker Hub or based on them. Examples: -* `openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04` corresponds to `ubuntu:20.04` from Docker Hub -* `openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04` corresponds to `ubuntu:22.04` from Docker Hub -* `openvinogithubactions.azurecr.io/dockerhub/nvidia/cuda:11.8.0-runtime-ubuntu20.04` corresponds to `nvidia/cuda:11.8.0-runtime-ubuntu20.04` from Docker Hub +* `openvinogithubactions.azurecr.io/library/ubuntu:22.04` corresponds to `ubuntu:22.04` from Docker Hub +* `openvinogithubactions.azurecr.io/nvidia/cuda:11.8.0-runtime-ubuntu20.04` corresponds to `nvidia/cuda:11.8.0-runtime-ubuntu20.04` from Docker Hub + +Image mirroring is performed automatically via [ACR artifact cache rules](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-artifact-cache), +so no manual upload from a public DockerHub to OpenVINO ACR instance is required. + +## Custom docker images and handle_docker action + +To optimize the time required to install dependencies in workflows and to make local reproduction of workflow steps easier, +we create custom Docker images for different types of validation and use them in our workflows. +The dockerfiles for these images are stored in the OpenVINO repository in [`.github/dockerfiles`](./../../../../.github/dockerfiles) +folder. Dockerfiles are organized as follows: + +* [`.github/dockerfiles/ov_build`](./../../../../.github/dockerfiles/ov_build) - contains environment setup for +build workflows for different OSes (e.g., installation of [install_build_dependencies.sh](./../../../../install_build_dependencies.sh)) +* [`.github/dockerfiles/ov_test`](./../../../../.github/dockerfiles/ov_test) - contains environment setup for +test workflows for different OSes (e.g., installation of [scripts/install_dependencies/install_openvino_dependencies.sh](./../../../../scripts/install_dependencies/install_openvino_dependencies.sh)) + +The changes to these dockerfiles are getting checked and applied automatically in pre-commits via a custom action +[handle_docker](./../../../../.github/actions/handle_docker), which is executed in workflows before starting actual +validation in a separate job called Docker. The action checks if a pull request changes either dockerfiles or +environment setup scripts, and if so - triggers affected docker images build and validation with the updated images. +The images are tagged with the ID of the pull request that changes them, and the tag must be updated in git by changing +PR ID in [.github/dockerfiles/docker_tag](./../../../../.github/dockerfiles/docker_tag). The action will prompt you +to do that once you change something that alters docker environment. + +**Important**: If you add a new environment configuration script to be used in dockerfiles, please, add its path under +`category: docker_env` key in [.github/labeler.yml](./../../../../.github/labeler.yml) (this will +ensure that the changes to this script are detected by handle_docker action and applied automatically), and exclude +the path to this script from [.dockerignore](./../../../../.dockerignore) (this will make sure that Docker itself +detects a script file). + +The action accepts a list of the desired images to build as an input and outputs fully-qualified Docker image references +to use in workflow jobs. + +### Using custom images in workflow jobs + +* Make sure that Docker job is called in your workflow. Pass a path or multiple paths to the folders with dockerfiles, +that are going to be used further in a workflow, to `images` parameter of the `handle_docker` action. Example: +```yaml + Docker: + needs: Smart_CI + runs-on: aks-linux-4-cores-16gb-docker-build + container: + image: openvinogithubactions.azurecr.io/docker_build:0.2 + volumes: + - /mount:/mount + outputs: + images: "${{ steps.handle_docker.outputs.images }}" + steps: + - name: Checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + + - uses: ./.github/actions/handle_docker + id: handle_docker + with: + images: | + ov_build/ubuntu_22_04_x64 + ov_build/ubuntu_22_04_x64_nvidia + ov_test/ubuntu_22_04_x64 + registry: 'openvinogithubactions.azurecr.io' + dockerfiles_root_dir: '.github/dockerfiles' + changed_components: ${{ needs.smart_ci.outputs.changed_components }} +``` +* Add "Docker" to the `needs:` block of the job that will be executed with the desired custom image and set +`container.image` key in this job to point to the docker image taken from `handle_docker`'s outputs, like that: +```yaml + Build: + needs: [Smart_CI, Docker] + ... + runs-on: aks-linux-16-cores-32gb + container: + image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_x64 }} +``` +**Note**, that Azure-based runner (aks-***) is required to use custom Docker images, since the access to our +Azure Container Registry is enabled only from this type of runners. + ## How to Choose an Image -The Docker image choice depends on the nature of the job and the configuration being tested. +The Docker image choice depends on the nature of the job and the configuration being tested. Please, review the images +in [.github/dockerfiles](./../../../../.github/dockerfiles). Typically for jobs that require compilation you'll +choose **ov_build** images, and **ov_test** for others, as described in the previous section. -An example `Build` job from the [`ubuntu_22.yml`](./../../../../.github/workflows/ubuntu_22.yml) workflow: +If no existing images suit your needs, and you need a separate Docker image with their own dependencies installed, +feel free to add a new dockerfile under `.github/dockerfiles//` folder and refer to it +in a workflow as described above. + +If you don't need any system dependencies to be installed in your pipeline, it might be enough to use a plain +image from DockerHub. In this case, refer to the mirror of this DockerHub image in our +private Azure Container Registry. For example, if you need to use the `ubuntu:22.04` image, which you locally pull like that: +``` +docker pull ubuntu:22.04 +... +Status: Downloaded newer image for ubuntu:22.04 +docker.io/library/ubuntu:22.04 +``` +Note the last line starting with `docker.io`, replace `docker.io` with `openvinogithubactions.azurecr.io` and use the +resulting image reference in your workflow: ```yaml -Build: - ... - container: - image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04 - volumes: - - /mount:/mount - ... + SomeJob: + ... + container: + image: openvinogithubactions.azurecr.io/library/ubuntu:22.04 ``` +The image will be mirrored from DockerHub to our Azure Container Registry automatically. -The `openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04` Docker image is used for this job -and **for other jobs in the workflow**. -Usually, if one Docker image is used for the building job, other jobs use the same image for testing. -If the tests do not require any specific OS or distribution, it is recommended to use -the available images, for example, `openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04`. +## Local reproducibility -If testing requires a specific OS or distribution (for example, `fedora`), -the Docker image for this flavor should be uploaded to the OpenVINO ACR first and -then used in a workflow. +Custom docker images can also be built locally to reproduce CI results in the same environment: +1. Install [Docker](https://docs.docker.com/engine/install) on your local machine (Linux is the best option). +2. If you're running behind proxy on a host where you run a docker build, +[add proxy](https://docs.docker.com/engine/cli/proxy/#configure-the-docker-client) to your `~/.docker/config.json`. +3. Clone openvino repo, go to the root of the repository, and execute `docker build` for a desired image, for example: +``` +cd _git/openvino +docker build -f .github/dockerfiles/ov_test/ubuntu_22_04_x64/Dockerfile -t my_local_ov_test_build . +``` +4. To run an interactive shell session within a built image: +``` +docker run --entrypoint bash -it my_local_ov_test_build +``` -Contact a member of the CI team for assistance with the image uploading. +Please, contact a member of the CI team for any assistance regarding Docker environment. From 6570afa030674e014a664d7f773d0bb2265abced Mon Sep 17 00:00:00 2001 From: "Anastasiya(Asya) Pronina" Date: Wed, 18 Sep 2024 16:54:25 +0200 Subject: [PATCH 03/49] [NPUW]: Adding functional tests for NPUW with partitioning (#25997) ### Details: - *This PR adds functional tests for NPUW launched with online partitioning, mostly the same tests that were added for unpartitioned NPUW, except for some interesting ones for folding and pipelining* - *This PR also introduces 1 accuracy test, that, however, checked on simple (in terms of computations, not structure) model for now* ### Tickets: - *ticket-id* --- .../behavior/npuw/behavior_tests.cpp | 667 ++++++++++++++---- .../behavior/npuw/behavior_tests.hpp | 59 +- .../behavior/npuw/comparators/nrmse.cpp | 137 ++++ .../behavior/npuw/comparators/nrmse.hpp | 27 + .../npuw/generators/model_generator.cpp | 180 +++++ .../npuw/generators/model_generator.hpp | 25 + .../behavior/npuw/mocks/mock_plugins.cpp | 54 +- .../behavior/npuw/mocks/mock_plugins.hpp | 9 +- 8 files changed, 996 insertions(+), 162 deletions(-) create mode 100644 src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.cpp create mode 100644 src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.hpp create mode 100644 src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.cpp create mode 100644 src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.hpp diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.cpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.cpp index 3471d832d3bf36..31d83e4f0d21d5 100644 --- a/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.cpp +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.cpp @@ -3,36 +3,58 @@ // #include "behavior_tests.hpp" -#include "openvino/opsets/opset11.hpp" -#include "openvino/runtime/exec_model_info.hpp" -#include "openvino/runtime/internal_properties.hpp" -#include "openvino/runtime/make_tensor.hpp" -#include "openvino/runtime/properties.hpp" -#include "openvino/util/file_util.hpp" +#include "comparators/nrmse.hpp" #include "openvino/util/shared_object.hpp" -#include "npuw_private_properties.hpp" +#include "openvino/util/file_util.hpp" + +#include using namespace testing; using namespace ov::npuw::tests; +using namespace ov::intel_npu::npuw; -std::shared_ptr BehaviorTestsNPUW::create_example_model() { - auto param = std::make_shared(ov::element::i64, ov::PartialShape{1, 3, 2, 2}); - param->set_friendly_name("input"); - auto const_value = ov::opset11::Constant::create(ov::element::i64, ov::Shape{1, 1, 1, 1}, {1}); - const_value->set_friendly_name("const_val"); - auto add = std::make_shared(param, const_value); - add->set_friendly_name("add"); - auto result = std::make_shared(add); - result->set_friendly_name("res"); - return std::make_shared(ov::ResultVector{result}, ov::ParameterVector{param}); -} +#define TIMES(times) times + +#define THROW(...) \ + .WillOnce(Throw(std::runtime_error(__VA_ARGS__))) + +#define EXPECT_COMPILE_MODEL(device, times, ...) \ + EXPECT_CALL(*device##_plugin, \ + compile_model(A&>(), _)) \ + .Times(times) \ + __VA_ARGS__ \ + +#define MODEL(idx) idx + +#define INFER_REQ(idx) idx + +#define EXPECT_CREATE_SYNC_INFER_REQ(device, model_idx, times, ...) \ + device##_plugin->set_expectations_to_comp_models(model_idx, [](MockCompiledModel& model) { \ + EXPECT_CALL(model, create_sync_infer_request()) \ + .Times(times) \ + __VA_ARGS__; \ + }) + +#define EXPECT_INFER(device, model_idx, times, ...) \ + device##_plugin->set_expectations_to_infer_reqs(model_idx, 0, [](MockInferRequest& request) { \ + EXPECT_CALL(request, infer()) \ + .Times(times) \ + __VA_ARGS__; \ + }); + +#define EXPECT_INFER_FOR(device, model_idx, req_idx, times, ...) \ + device##_plugin->set_expectations_to_infer_reqs(model_idx, req_idx, [](MockInferRequest& request) { \ + EXPECT_CALL(request, infer()) \ + .Times(times) \ + __VA_ARGS__; \ + }); TEST_F(BehaviorTestsNPUW, TestInfrastructureIsCorrect) { // Set expectations first: - EXPECT_CALL(*npu_plugin, get_property).Times(AnyNumber()); - EXPECT_CALL(*npu_plugin, get_property(std::string("AVAILABLE_DEVICES"), _)).Times(1); - EXPECT_CALL(*cpu_plugin, get_property).Times(AnyNumber()); - EXPECT_CALL(*cpu_plugin, get_property(std::string("AVAILABLE_DEVICES"), _)).Times(1); + EXPECT_CALL(*mock_npu_plugin, get_property).Times(AnyNumber()); + EXPECT_CALL(*mock_npu_plugin, get_property(std::string("AVAILABLE_DEVICES"), _)).Times(1); + EXPECT_CALL(*mock_cpu_plugin, get_property).Times(AnyNumber()); + EXPECT_CALL(*mock_cpu_plugin, get_property(std::string("AVAILABLE_DEVICES"), _)).Times(1); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); @@ -53,209 +75,602 @@ TEST_F(BehaviorTestsNPUW, TestInfrastructureIsCorrect) { } TEST_F(BehaviorTestsNPUW, CompilationIsSuccessful) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: - EXPECT_CALL(*npu_plugin, - compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, - compile_model(A&>(), _)).Times(0); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - EXPECT_NO_THROW(core.compile_model(model, "NPU", npuw_properties)); + use_npuw_props.emplace(devices("MockNPU")); + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); } TEST_F(BehaviorTestsNPUW, CompilationIsFailSafe) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: { InSequence s; - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)) - .Times(1) - .WillOnce(Throw(std::runtime_error("Compilation on MockNPU is failed"))); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(1); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1), THROW("Compilation on MockNPU is failed")); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); } // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU,MockCPU")}; - EXPECT_NO_THROW(core.compile_model(model, "NPU", npuw_properties)); + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); } TEST_F(BehaviorTestsNPUW, CompilationIsFailed) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)) - .Times(1) - .WillOnce(Throw(std::runtime_error("Compilation on MockNPU is failed"))); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(0); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1), THROW("Compilation on MockNPU is failed")); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - EXPECT_ANY_THROW(core.compile_model(model, "NPU", npuw_properties)); + use_npuw_props.emplace(devices("MockNPU")); + EXPECT_ANY_THROW(core.compile_model(model, "NPU", use_npuw_props)); } TEST_F(BehaviorTestsNPUW, InferRequestCreationIsSuccessful) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(0); - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); EXPECT_NO_THROW(compiled_model.create_infer_request()); } TEST_F(BehaviorTestsNPUW, InferRequestCreationIsFailSafe) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: { InSequence s; - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(1); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); } - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()) - .Times(1) - .WillOnce(Throw(std::runtime_error("Infer request creation on MockNPU is failed"))); - }); - cpu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1), THROW("Infer request creation on MockNPU is failed")); + EXPECT_CREATE_SYNC_INFER_REQ(mock_cpu, MODEL(0), TIMES(1)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU,MockCPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); EXPECT_NO_THROW(compiled_model.create_infer_request()); } TEST_F(BehaviorTestsNPUW, InferRequestCreationIsFailed) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(0); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()) - .Times(1) - .WillOnce(Throw(std::runtime_error("Infer request creation on MockNPU is failed"))); - }); + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1), THROW("Infer request creation on MockNPU is failed")); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); EXPECT_ANY_THROW(compiled_model.create_infer_request()); } TEST_F(BehaviorTestsNPUW, InferIsSuccessful) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(0); - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); - npu_plugin->set_expectations_to_infer_reqs(0, [](MockInferRequest& request) { - EXPECT_CALL(request, infer()).Times(1); - }); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1)); + EXPECT_INFER(mock_npu, MODEL(0), TIMES(1)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); auto infer_request = compiled_model.create_infer_request(); EXPECT_NO_THROW(infer_request.infer()); } TEST_F(BehaviorTestsNPUW, InferIsFailSafe) { + model = model_generator.get_model_with_one_op(); + // Set expectations first: { InSequence seq; - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(1); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); } - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); - npu_plugin->set_expectations_to_infer_reqs(0, [](MockInferRequest& request) { - EXPECT_CALL(request, infer()) - .Times(1) - .WillOnce(Throw(std::runtime_error("Infer on MockNPU is failed"))); - }); - cpu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); - cpu_plugin->set_expectations_to_infer_reqs(0, [](MockInferRequest& request) { - EXPECT_CALL(request, infer()).Times(1); - }); + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1)); + EXPECT_INFER(mock_npu, MODEL(0), TIMES(1), THROW("Infer on MockNPU is failed")); + EXPECT_CREATE_SYNC_INFER_REQ(mock_cpu, MODEL(0), TIMES(1)); + EXPECT_INFER(mock_cpu, MODEL(0), TIMES(1)); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU,MockCPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); auto infer_request = compiled_model.create_infer_request(); EXPECT_NO_THROW(infer_request.infer()); } TEST_F(BehaviorTestsNPUW, InferIsFailed) { + model = model_generator.get_model_with_one_op(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(0), TIMES(1)); + EXPECT_INFER(mock_npu, MODEL(0), TIMES(1), THROW("Infer on MockNPU is failed")); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_ANY_THROW(infer_request.infer()); +} + +using BehaviorTestsNPUWOnlinePartitioning = BehaviorTestsNPUW; +TEST_F(BehaviorTestsNPUWOnlinePartitioning, CompilationIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, CompilationIsFailSafe) { + model = model_generator.get_model_with_repeated_blocks(); + // Set expectations first: + { + InSequence s; + + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1), THROW("Compilation on MockNPU is failed")); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(11)); + + } + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, CompilationIsFailed) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(1), THROW("Compilation on MockNPU is failed")); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + EXPECT_ANY_THROW(core.compile_model(model, "NPU", use_npuw_props)); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferRequestCreationIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + for (int i = 0; i < 12; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + EXPECT_NO_THROW(compiled_model.create_infer_request()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferRequestCreationIsFailSafe) { + model = model_generator.get_model_with_repeated_blocks(); + // Set expectations first: + { + InSequence s; + + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); + } + + for (int i = 0; i < 11; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(11), TIMES(1), THROW("Infer request creation on MockNPU is failed")); + EXPECT_CREATE_SYNC_INFER_REQ(mock_cpu, MODEL(0), TIMES(1)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + EXPECT_NO_THROW(compiled_model.create_infer_request()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferRequestCreationIsFailed) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + for (int i = 0; i < 11; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(11), TIMES(1), THROW("Infer request creation on MockNPU is failed")); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + EXPECT_ANY_THROW(compiled_model.create_infer_request()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + for (int i = 0; i < 12; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + EXPECT_INFER(mock_npu, MODEL(i), TIMES(1)); + } + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_NO_THROW(infer_request.infer()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferIsFailSafe) { + model = model_generator.get_model_with_repeated_blocks(); + // Set expectations first: { InSequence seq; - EXPECT_CALL(*npu_plugin, compile_model(A&>(), _)).Times(1); - EXPECT_CALL(*cpu_plugin, compile_model(A&>(), _)).Times(0); + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(1)); } - npu_plugin->set_expectations_to_comp_models(0, [](MockCompiledModel& model) { - EXPECT_CALL(model, create_sync_infer_request()).Times(1); - }); - npu_plugin->set_expectations_to_infer_reqs(0, [](MockInferRequest& request) { - EXPECT_CALL(request, infer()) - .Times(1) - .WillOnce(Throw(std::runtime_error("Infer on MockNPU is failed"))); - }); + for (int i = 0; i < 12; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + for (int i = 0; i < 11; i++) { + EXPECT_INFER(mock_npu, MODEL(i), TIMES(1)); + } + EXPECT_INFER(mock_npu, MODEL(11), TIMES(1), THROW("Infer on MockNPU is failed")); + + EXPECT_CREATE_SYNC_INFER_REQ(mock_cpu, MODEL(0), TIMES(1)); + EXPECT_INFER(mock_cpu, MODEL(0), TIMES(1)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU,MockCPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_NO_THROW(infer_request.infer()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, InferIsFailed) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + { + InSequence seq; + EXPECT_COMPILE_MODEL(mock_npu, TIMES(12)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + } + for (int i = 0; i < 12; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + for (int i = 0; i < 11; i++) { + EXPECT_INFER(mock_npu, MODEL(i), TIMES(1)); + } + EXPECT_INFER(mock_npu, MODEL(11), TIMES(1), THROW("Infer on MockNPU is failed")); // Register mock objects as plugins in OpenVINO: register_mock_plugins_in_ov(); // Do the actual test: - auto npuw_properties = - ov::AnyMap{ov::intel_npu::use_npuw(true), - ov::intel_npu::npuw::devices("MockNPU")}; - auto compiled_model = core.compile_model(model, "NPU", npuw_properties); + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); auto infer_request = compiled_model.create_infer_request(); EXPECT_ANY_THROW(infer_request.infer()); } + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, RepeatedBlocksAreFolded) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + { + InSequence seq; + EXPECT_COMPILE_MODEL(mock_npu, TIMES(3)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + } + for (int i = 0; i < 3; i++) { + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(1)); + } + + // 1st model infer request is called once -- head + EXPECT_INFER(mock_npu, MODEL(0), TIMES(1)); + // 2nd model infer request is called 10 times -- repeated block + EXPECT_INFER(mock_npu, MODEL(1), TIMES(10)); + // 3rd model infer request is called once -- tail + EXPECT_INFER(mock_npu, MODEL(2), TIMES(1)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + use_npuw_props.emplace(partitioning::fold(true)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_NO_THROW(infer_request.infer()); +} + +TEST_F(BehaviorTestsNPUWOnlinePartitioning, FoldingAndPipelining) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + { + InSequence seq; + EXPECT_COMPILE_MODEL(mock_npu, TIMES(3)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + } + + for (int i = 0; i < 3; i++) { + // Here we will create 2 infer requests per model, + // so `create_sync_infer_request()` should be called twice + // per model: + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i), TIMES(2)); + } + + // 1st model 1st infer request is called once -- head + EXPECT_INFER_FOR(mock_npu, MODEL(0), INFER_REQ(0), TIMES(1)); + // 1st model 2nd infer request is never called, + // it is not a function and is not repeated + EXPECT_INFER_FOR(mock_npu, MODEL(0), INFER_REQ(1), TIMES(0)); + + // Repeated block + // 2nd model 1st infer request is called 5 times + EXPECT_INFER_FOR(mock_npu, MODEL(1), INFER_REQ(0), TIMES(5)); + // 2nd model 2nd infer request (brother of 1st one) is called 5 times + EXPECT_INFER_FOR(mock_npu, MODEL(1), INFER_REQ(1), TIMES(5)); + + // 3rd model 1st infer request is called once -- tail + EXPECT_INFER_FOR(mock_npu, MODEL(2), INFER_REQ(0), TIMES(1)); + // 3rd model 2nd infer request is never called, + // it is not a function and is not repeated + EXPECT_INFER_FOR(mock_npu, MODEL(2), INFER_REQ(1), TIMES(0)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Do the actual test: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::min_size(12)); + use_npuw_props.emplace(partitioning::fold(true)); + use_npuw_props.emplace(partitioning::dcoff_type("f16")); + use_npuw_props.emplace(partitioning::dcoff_with_scale(true)); + use_npuw_props.emplace(funcall_async(true)); + auto compiled_model = core.compile_model(model, "NPU", use_npuw_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_NO_THROW(infer_request.infer()); +} + +using BehaviorTestsNPUWOfflinePartitioning = BehaviorTestsNPUW; +TEST_F(BehaviorTestsNPUWOfflinePartitioning, CompilationIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + // For plan generation and execution (twice compiled): + EXPECT_COMPILE_MODEL(mock_npu, TIMES(24)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Generate plan: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::dump_plan("test_partitioning.xml")); + + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); + EXPECT_TRUE(std::filesystem::exists("test_partitioning.xml")); + + // Do the actual test: + ov::AnyMap offline_plan_props = { ::ov::intel_npu::use_npuw(true), + devices("MockNPU"), + partitioning::plan("test_partitioning.xml") }; + ov::CompiledModel compiled_model; + EXPECT_NO_THROW(compiled_model = core.compile_model(model, "NPU", offline_plan_props)); + EXPECT_EQ("test_partitioning.xml", + compiled_model.get_property(partitioning::plan.name()).as()); + EXPECT_TRUE(std::filesystem::remove("test_partitioning.xml")); +} + +TEST_F(BehaviorTestsNPUWOfflinePartitioning, InferRequestCreationIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + // For plan generation and execution (twice compiled): + EXPECT_COMPILE_MODEL(mock_npu, TIMES(24)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + for (int i = 0; i < 12; i++) { + // First 12 models are compiled only to generate partitioning plan: + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i + 12), 1); + } + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Generate plan: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::dump_plan("test_partitioning.xml")); + use_npuw_props.emplace(partitioning::online::pipeline("REP")); + + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); + EXPECT_TRUE(std::filesystem::exists("test_partitioning.xml")); + + // Do the actual test: + ov::AnyMap offline_plan_props = { ::ov::intel_npu::use_npuw(true), + devices("MockNPU"), + partitioning::plan("test_partitioning.xml") }; + auto compiled_model = core.compile_model(model, "NPU", offline_plan_props); + EXPECT_NO_THROW(compiled_model.create_infer_request()); + EXPECT_EQ("test_partitioning.xml", + compiled_model.get_property(partitioning::plan.name()).as()); + EXPECT_TRUE(std::filesystem::remove("test_partitioning.xml")); +} + +TEST_F(BehaviorTestsNPUWOfflinePartitioning, InferIsSuccessful) { + model = model_generator.get_model_with_repeated_blocks(); + + // Set expectations first: + // For plan generation and execution (twice compiled): + EXPECT_COMPILE_MODEL(mock_npu, TIMES(24)); + EXPECT_COMPILE_MODEL(mock_cpu, TIMES(0)); + + for (int i = 0; i < 12; i++) { + // First 12 models are compiled only to generate partitioning plan: + EXPECT_CREATE_SYNC_INFER_REQ(mock_npu, MODEL(i + 12), 1); + EXPECT_INFER(mock_npu, MODEL(i + 12), 1); + } + + // Register mock objects as plugins in OpenVINO: + register_mock_plugins_in_ov(); + + // Generate plan: + use_npuw_props.emplace(devices("MockNPU")); + use_npuw_props.emplace(partitioning::online::dump_plan("test_partitioning.xml")); + use_npuw_props.emplace(partitioning::online::pipeline("REP")); + + EXPECT_NO_THROW(core.compile_model(model, "NPU", use_npuw_props)); + EXPECT_TRUE(std::filesystem::exists("test_partitioning.xml")); + + // Do the actual test: + ov::AnyMap offline_plan_props = { ::ov::intel_npu::use_npuw(true), + devices("MockNPU"), + partitioning::plan("test_partitioning.xml") }; + auto compiled_model = core.compile_model(model, "NPU", offline_plan_props); + auto infer_request = compiled_model.create_infer_request(); + EXPECT_NO_THROW(infer_request.infer()); + EXPECT_EQ("test_partitioning.xml", + compiled_model.get_property(partitioning::plan.name()).as()); + EXPECT_TRUE(std::filesystem::remove("test_partitioning.xml")); +} + +TEST(BehaviorTestsNPUWAccuracy, RepAndNonePartPipesGiveSameResults) { + // Register TEMPLATE plugin in OpenVINO: + ov::Core core; + auto plugin_path = + ov::util::make_plugin_library_name(ov::test::utils::getExecutableDirectory(), + std::string(ov::test::utils::TEMPLATE_LIB) + + OV_BUILD_POSTFIX); + if (!ov::util::file_exists(plugin_path)) { + OPENVINO_THROW("Plugin: " + plugin_path + " does not exists!"); + } + core.register_plugin(plugin_path, ov::test::utils::DEVICE_TEMPLATE); + + // Create model: + ModelGenerator model_generator; + const auto &model = model_generator.get_model_with_repeated_blocks(32); + + // Do the test: + ov::AnyMap online_rep_props { ::ov::intel_npu::use_npuw(true), + devices("TEMPLATE"), + partitioning::online::pipeline("REP") }; + ov::AnyMap online_none_props { ::ov::intel_npu::use_npuw(true), + devices("TEMPLATE"), + partitioning::online::pipeline("NONE") }; + + auto rep_compiled_model = core.compile_model(model, "NPU", online_rep_props); + auto none_compiled_model = core.compile_model(model, "NPU", online_none_props); + auto rep_infer_request = rep_compiled_model.create_infer_request(); + auto none_infer_request = rep_compiled_model.create_infer_request(); + + set_random_inputs(rep_infer_request); + set_random_inputs(none_infer_request); + + rep_infer_request.infer(); + none_infer_request.infer(); + + metrics::NRMSE nrmse(0.01); + + for (const auto& output : rep_infer_request.get_compiled_model().outputs()) { + const auto& rep_tensor = rep_infer_request.get_tensor(output); + const auto& none_tensor = none_infer_request.get_tensor(output); + EXPECT_TRUE(nrmse(rep_tensor, none_tensor)); + } +} diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.hpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.hpp index eb2cce0673f1c0..85658ac4a42dd1 100644 --- a/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.hpp +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/behavior_tests.hpp @@ -4,15 +4,18 @@ #pragma once #include +#include #include #include "openvino/runtime/core.hpp" #include "openvino/runtime/iplugin.hpp" #include "openvino/runtime/make_tensor.hpp" +#include "npuw_private_properties.hpp" #include "mocks/mock_plugins.hpp" #include "mocks/register_in_ov.hpp" +#include "generators/model_generator.hpp" namespace ov { namespace npuw { @@ -21,31 +24,63 @@ namespace tests { class BehaviorTestsNPUW : public ::testing::Test { public: ov::Core core; - std::shared_ptr npu_plugin; - std::shared_ptr cpu_plugin; - std::shared_ptr model; + std::shared_ptr mock_npu_plugin; + std::shared_ptr mock_cpu_plugin; + ov::AnyMap use_npuw_props; + std::shared_ptr model; + ModelGenerator model_generator; void SetUp() override { - model = create_example_model(); - npu_plugin = std::make_shared(); - npu_plugin->create_implementation(); - cpu_plugin = std::make_shared(); - cpu_plugin->create_implementation(); + mock_npu_plugin = std::make_shared(); + mock_npu_plugin->create_implementation(); + mock_cpu_plugin = std::make_shared(); + mock_cpu_plugin->create_implementation(); + use_npuw_props = ov::AnyMap{ov::intel_npu::use_npuw(true)}; } // Make sure it is called after expectations are set! void register_mock_plugins_in_ov() { - m_shared_objects.push_back(reg_plugin(core, npu_plugin)); - m_shared_objects.push_back(reg_plugin(core, cpu_plugin)); + m_shared_objects.push_back(reg_plugin(core, mock_npu_plugin)); + m_shared_objects.push_back(reg_plugin(core, mock_cpu_plugin)); } - std::shared_ptr create_example_model(); - private: std::vector> m_shared_objects; }; +template +using uniform_distribution_common = typename std::conditional< + std::is_floating_point::value, + std::uniform_real_distribution, + typename std::conditional::value, std::uniform_int_distribution, void>::type>::type; +template + +ov::Tensor make_random_tensor(ov::element::Type type, + ov::Shape shape, + T rand_min = std::numeric_limits::min(), + T rand_max = std::numeric_limits::max()) { + size_t tensor_size = + std::accumulate(shape.begin(), shape.end(), std::size_t(1), std::multiplies()); + auto tensor = ov::Tensor(type, shape); + auto data = tensor.data(); + + std::mt19937 gen(0); + uniform_distribution_common distribution(rand_min, rand_max); + for (size_t i = 0; i < tensor_size; i++) { + data[i] = static_cast(distribution(gen)); + } + return tensor; +} + +template +void set_random_inputs(ov::InferRequest infer_request) { + for (const auto& input : infer_request.get_compiled_model().inputs()) { + // TODO: Extend template header to two types. + // For float16 call should be make_random_tensor + infer_request.set_tensor(input, make_random_tensor(input.get_element_type(), input.get_shape())); + } +} } // namespace tests } // namespace npuw } // namespace ov diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.cpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.cpp new file mode 100644 index 00000000000000..925352669b6a18 --- /dev/null +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.cpp @@ -0,0 +1,137 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "nrmse.hpp" + +#include +#include +#include + +namespace { +template +void to_f32(const ov::Tensor& in, ov::Tensor& out) { + OPENVINO_ASSERT(in.is_continuous()); + OPENVINO_ASSERT(out.is_continuous()); + OPENVINO_ASSERT(in.get_shape() == out.get_shape()); + + if (ov::element::Type_t::f32 == in.get_element_type()) { + in.copy_to(out); + return; + } + + const InT* in_buffer = in.data(); + OPENVINO_ASSERT(in_buffer != nullptr); + const auto out_buffer = out.data(); + OPENVINO_ASSERT(out_buffer != nullptr); + + // NOTE: ov::parallel_for takes care of splitting the work among threads such way, + // that the passed lambda function will be called sequentially + // on some part of "in.get_size()" range inside the each thread + ov::parallel_for(in.get_size(), [in_buffer, out_buffer](int64_t index) { + out_buffer[index] = static_cast(in_buffer[index]); + }); +} + +void to_f32(const ov::Tensor& in, ov::Tensor& out) { + switch (in.get_element_type()) { + case ov::element::Type_t::f32: + ::to_f32(in, out); + break; + case ov::element::Type_t::u64: + ::to_f32(in, out); + break; + case ov::element::Type_t::i64: + ::to_f32(in, out); + break; + case ov::element::Type_t::u32: + ::to_f32(in, out); + break; + case ov::element::Type_t::i32: + ::to_f32(in, out); + break; + case ov::element::Type_t::u16: + ::to_f32(in, out); + break; + case ov::element::Type_t::i16: + ::to_f32(in, out); + break; + case ov::element::Type_t::u8: + ::to_f32(in, out); + break; + case ov::element::Type_t::i8: + ::to_f32(in, out); + break; + case ov::element::Type_t::f16: + ::to_f32(in, out); + break; + case ov::element::Type_t::bf16: + ::to_f32(in, out); + break; + default: + OPENVINO_THROW("Unsupported precision {0}", in.get_element_type().get_type_name()); + break; + } +} +} // anynomous namespace + +ov::npuw::tests::metrics::NRMSE::NRMSE(double threshold) : m_threshold(threshold) {} + +bool ov::npuw::tests::metrics::NRMSE::operator()(const ov::Tensor& actual, + const ov::Tensor& reference) const { + OPENVINO_ASSERT(actual.is_continuous()); + OPENVINO_ASSERT(reference.is_continuous()); + OPENVINO_ASSERT(actual.get_shape() == reference.get_shape()); + // Check for alignment: + OPENVINO_ASSERT(actual.get_byte_size() == reference.get_byte_size()); + // FIXME: Check for strides + + ov::Tensor actual_f32; + ov::Tensor reference_f32; + + if (ov::element::Type_t::f32 == actual.get_element_type()) { + actual_f32 = actual; + } else { + ov::Tensor dst(ov::element::Type_t::f32, actual.get_shape()); + to_f32(actual, dst); + actual_f32 = std::move(dst); + } + + if (ov::element::Type_t::f32 == reference.get_element_type()) { + reference_f32 = reference; + } else { + ov::Tensor dst(ov::element::Type_t::f32, reference.get_shape()); + to_f32(reference, dst); + reference_f32 = dst; + } + + float* actual_data = actual_f32.data(); + float* reference_data = reference_f32.data(); + const std::size_t size = actual_f32.get_size(); + + double squared_error{}; + for (size_t i = 0; i < size; ++i) { + double diff = (actual_data[i] - reference_data[i]); + squared_error += (diff * diff); + } + + if (squared_error <= std::numeric_limits::epsilon()) { + std::cout << "NRMSE loss: 0.0, threshold: " << m_threshold << ".\n"; + return true; + } + + double rmse = sqrt(squared_error / size); + OPENVINO_ASSERT(rmse >= 0.0); + + auto actual_min_max = std::minmax_element(actual_data, actual_data + size); + auto reference_min_max = std::minmax_element(reference_data, reference_data + size); + double den = std::max({0.001f, + std::max(0.f, *reference_min_max.second) - std::min(0.f, *reference_min_max.first), + std::max(0.f, *actual_min_max.second) - std::min(0.f, *actual_min_max.first)}); + + double nrmse = rmse / den; + std::cout << "NRMSE loss: " << nrmse << ", threshold: " << m_threshold << ".\n"; + + bool success = nrmse <= m_threshold; + return success; +} diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.hpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.hpp new file mode 100644 index 00000000000000..dcf59292c877fa --- /dev/null +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/comparators/nrmse.hpp @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/openvino.hpp" +#include "openvino/runtime/icompiled_model.hpp" +#include "openvino/runtime/so_ptr.hpp" + +namespace ov { +namespace npuw { +namespace tests { +namespace metrics { +class NRMSE { +public: + explicit NRMSE(double threshold); + bool operator()(const ov::Tensor& actual, const ov::Tensor& reference) const; + +private: + double m_threshold{}; +}; + +} // namespace metrics +} // namespace tests +} // namespace npuw +} // namespace ov diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.cpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.cpp new file mode 100644 index 00000000000000..39f7f9c1569efe --- /dev/null +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.cpp @@ -0,0 +1,180 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "model_generator.hpp" + +#include "openvino/openvino.hpp" +#include "openvino/opsets/opset11.hpp" +#include "openvino/op/ops.hpp" + + +std::shared_ptr ModelGenerator::get_model_with_one_op() { + auto param = std::make_shared(ov::element::i64, ov::PartialShape{1, 3, 2, 2}); + param->set_friendly_name("input"); + auto const_value = ov::opset11::Constant::create(ov::element::i64, ov::Shape{1, 1, 1, 1}, {1}); + const_value->set_friendly_name("const_val"); + auto add = std::make_shared(param, const_value); + add->set_friendly_name("add"); + auto result = std::make_shared(add); + result->set_friendly_name("res"); + return std::make_shared(ov::ResultVector{result}, ov::ParameterVector{param}); +} + +std::shared_ptr ModelGenerator::get_model_without_repeated_blocks() { + std::shared_ptr input = std::make_shared(ov::element::i32, ov::Shape{1, 1, 40}); + m_nodes.push_back(input); + set_name(input); + + std::shared_ptr res = get_block(input); + + auto result = std::make_shared(res); + m_nodes.push_back(result); + set_name(result); + + ov::ParameterVector params = {input}; + ov::ResultVector results = {result}; + + return std::make_shared(results, params); +} + +std::shared_ptr ModelGenerator::get_model_with_repeated_blocks(std::size_t repetitions) { + // Generate head + std::shared_ptr input = std::make_shared(ov::element::i32, ov::Shape{1, 1, 40}); + m_nodes.push_back(input); + set_name(input); + + std::vector> head(7, nullptr); + head[0] = std::make_shared(input, input); + head[1] = std::make_shared(ov::element::i32, ov::Shape{1}, std::vector{2}); + head[2] = std::make_shared(head[0], head[1], true); + head[3] = std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{1, 1, 4, 10}); + head[4] = std::make_shared(ov::element::i64, ov::Shape{3}, std::vector{1, 1, 40}); + head[5] = std::make_shared(head[2], head[3], false); + head[6] = std::make_shared(head[5], head[4], false); + + for (const auto& h : head) { + m_nodes.push_back(h); + set_name(h); + } + + // Generate repeated blocks + std::shared_ptr output = get_block(head[6]); + std::vector> outputs; + outputs.push_back(output); + + for (size_t i = 0; i < repetitions - 1; ++i) { + output = get_block(output); + outputs.push_back(output); + } + + // Generate tail + std::vector> tail(6, nullptr); + tail[0] = std::make_shared(outputs, -1); + tail[1] = std::make_shared(ov::element::i32, ov::Shape{3}, std::vector{1, 40, int(repetitions)}); + tail[2] = std::make_shared(tail[0], tail[1], false); + tail[3] = std::make_shared(ov::element::i32, ov::Shape{1, 1, 1}); + tail[4] = std::make_shared(tail[2], tail[3]); + tail[5] = std::make_shared(tail[4], tail[4]); + + for (const auto& t : tail) { + m_nodes.push_back(t); + set_name(t); + } + + // Create model + auto result = std::make_shared(tail[5]); + m_nodes.push_back(result); + set_name(result); + + ov::ParameterVector params = {input}; + ov::ResultVector results = {result}; + + return std::make_shared(results, params); +} + +std::shared_ptr ModelGenerator::get_model_with_repeated_blocks() { + return get_model_with_repeated_blocks(10); +} + +std::shared_ptr ModelGenerator::get_block(const std::shared_ptr& input) { + // Parameters + // input + + // Constants + std::vector> model_c(18, nullptr); + model_c[0] = std::make_shared(ov::element::i32, ov::Shape{4}, std::vector{0, 2, 1, 3}); + model_c[1] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{1}); + model_c[2] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{0}); + model_c[3] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{2}); + model_c[4] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{0}); + model_c[5] = std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{1, 1, 1, 1}); + model_c[6] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{1}); + model_c[7] = std::make_shared(ov::element::i64, ov::Shape{1}, std::vector{0}); + model_c[8] = std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{1, 1, 1, 1}); + model_c[9] = std::make_shared(ov::element::i32, ov::Shape{4}, std::vector{1, 1, 1, 2}); + model_c[10] = std::make_shared(ov::element::i32, ov::Shape{4}, std::vector{1, 1, 1, 1}); + model_c[11] = std::make_shared(ov::element::i32, ov::Shape{4}, std::vector{1, 1, 1, 2}); + model_c[12] = std::make_shared(ov::element::i32, ov::Shape{1, 1, 1, 1}); + model_c[13] = std::make_shared(ov::element::i32, ov::Shape{1, 1, 1, 1}); + model_c[14] = std::make_shared(ov::element::i32, ov::Shape{1, 1, 1, 1}); + model_c[15] = std::make_shared(ov::element::f32, ov::Shape{40, 40}); + model_c[16] = std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{1, 1, 4, 10}); + model_c[17] = std::make_shared(ov::element::i32, ov::Shape{3}, std::vector{1, 1, 40}); + + for (const auto& c : model_c) { + m_nodes.push_back(c); + set_name(c); + } + + // Converts + std::vector> convert(3, nullptr); + convert[0] = std::make_shared(model_c[15], ov::element::f16); + convert[1] = std::make_shared(convert[0], ov::element::i32); + convert[2] = std::make_shared(model_c[12], ov::element::i32); + + for (const auto& c : convert) { + m_nodes.push_back(c); + set_name(c); + } + + // Ops + std::vector> op(16, nullptr); + op[0] = std::make_shared(input, convert[1], false, true); + op[1] = std::make_shared(op[0], model_c[16], false); + op[2] = std::make_shared(op[1], model_c[0]); + op[3] = std::make_shared(op[2]); + op[4] = std::make_shared(op[3], model_c[1], model_c[2]); + op[5] = std::make_shared(op[4], model_c[3], true); + op[6] = std::make_shared(op[5]); + op[7] = std::make_shared(model_c[5], model_c[6], op[6], model_c[7]); + op[8] = std::make_shared(op[2], + model_c[8], + op[7], + model_c[9], + std::vector{1, 1, 1, 1}, + std::vector{1, 1, 1, 1}); + op[9] = std::make_shared(op[2], + op[7], + model_c[10], + model_c[11], + std::vector{1, 1, 1, 1}, + std::vector{1, 1, 1, 1}); + op[10] = std::make_shared(op[9], convert[2]); + op[11] = std::make_shared(std::vector>{op[10], op[8]}, -1); + op[12] = std::make_shared(model_c[13], op[11]); + op[13] = std::make_shared(model_c[14], op[2]); + op[14] = std::make_shared(op[13], op[12]); + op[15] = std::make_shared(op[14], model_c[17], false); + + for (const auto& o : op) { + m_nodes.push_back(o); + set_name(o); + } + + return op[15]; +} + +void ModelGenerator::set_name(const std::shared_ptr& node) { + node->set_friendly_name("node_" + std::to_string(m_name_idx++)); +} diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.hpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.hpp new file mode 100644 index 00000000000000..ca5cd8a38bc023 --- /dev/null +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/generators/model_generator.hpp @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/openvino.hpp" + +class ModelGenerator { +public: + ModelGenerator() = default; + + std::shared_ptr get_model_with_one_op(); + std::shared_ptr get_model_without_repeated_blocks(); + std::shared_ptr get_model_with_repeated_blocks(std::size_t repetitions); + std::shared_ptr get_model_with_repeated_blocks(); + +private: + std::shared_ptr get_block(const std::shared_ptr& input); + void set_name(const std::shared_ptr& node); + +private: + std::vector> m_nodes; + size_t m_name_idx; +}; diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.cpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.cpp index 666776a22d6800..ed4bf72a945f79 100644 --- a/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.cpp +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.cpp @@ -52,9 +52,9 @@ void MockInferRequestBase::create_implementation() { MockCompiledModelBase::MockCompiledModelBase(const std::shared_ptr& model, std::shared_ptr plugin, const ov::AnyMap& config, - std::shared_ptr, bool>> infer_req_expectations_ptr) + std::shared_ptr, bool>>> infer_reqs_to_expectations_ptr) : ov::ICompiledModel(model, plugin), - m_infer_req_expectations_ptr(infer_req_expectations_ptr), + m_infer_reqs_to_expectations_ptr(infer_reqs_to_expectations_ptr), m_model(model), m_config(config) { } @@ -99,12 +99,17 @@ void MockCompiledModelBase::create_implementation() { auto mock_sync_infer_request = std::make_shared( std::dynamic_pointer_cast(shared_from_this())); mock_sync_infer_request->create_implementation(); - if (m_infer_req_expectations_ptr) { - auto& expectation = m_infer_req_expectations_ptr->first; - auto& status = m_infer_req_expectations_ptr->second; + if (m_infer_reqs_to_expectations_ptr && + m_infer_reqs_to_expectations_ptr->count(m_num_created_infer_requests)) { + auto& expectation_and_status = (*m_infer_reqs_to_expectations_ptr)[m_num_created_infer_requests]; + auto& expectation = expectation_and_status.first; + auto& status = expectation_and_status.second; expectation(*mock_sync_infer_request); status = true; // Expectation will be checked } + + ++m_num_created_infer_requests; + return mock_sync_infer_request; }); } @@ -134,14 +139,14 @@ void MockPluginBase::create_implementation() { .WillByDefault([this](const std::shared_ptr& model, const ov::AnyMap& properties) { std::lock_guard lock(m_mock_creation_mutex); - std::shared_ptr, bool>> infer_req_expectations; - if (m_infer_reqs_to_expectations.count(m_num_compiled_models)) { - infer_req_expectations = m_infer_reqs_to_expectations[m_num_compiled_models]; + std::shared_ptr, bool>>> infer_reqs_to_expectations; + if (m_models_to_reqs_to_expectations.count(m_num_compiled_models)) { + infer_reqs_to_expectations = m_models_to_reqs_to_expectations[m_num_compiled_models]; } auto mock_compiled_model = std::make_shared( model, shared_from_this(), properties, - infer_req_expectations); + infer_reqs_to_expectations); mock_compiled_model->create_implementation(); @@ -265,10 +270,14 @@ void MockPluginBase::set_expectations_to_comp_models(int model_idx, } template -void MockPluginBase::set_expectations_to_infer_reqs(int req_idx, +void MockPluginBase::set_expectations_to_infer_reqs(int model_idx, int req_idx, std::function expectations) { - m_infer_reqs_to_expectations[req_idx] = - std::make_shared, bool>>(expectations, false); + if (!m_models_to_reqs_to_expectations.count(model_idx)) { + m_models_to_reqs_to_expectations[model_idx] = + std::make_shared, bool>>>(); + } + m_models_to_reqs_to_expectations[model_idx]->insert( + {req_idx, std::pair, bool>(expectations, false)}); } template @@ -277,16 +286,21 @@ MockPluginBase::~MockPluginBase() { auto idx = idx_to_expectation_and_status.first; auto expectation_and_status = idx_to_expectation_and_status.second; if (!expectation_and_status.second) { - ADD_FAILURE() << DeviceType::name << ": Expectation for model with index " << idx - << " was set, but model with that idx was not compiled"; + ADD_FAILURE() << DeviceType::name << ": Expectation for model[" << idx + << "] was set, but that model was not compiled"; } } - for (auto const& idx_to_expectation_and_status : m_infer_reqs_to_expectations) { - auto idx = idx_to_expectation_and_status.first; - auto expectation_and_status = *idx_to_expectation_and_status.second; - if (!expectation_and_status.second) { - ADD_FAILURE() << DeviceType::name << ": Expectation for request with index " << idx - << " was set, but request with that idx was not created"; + for (auto const& idx_to_reqs_to_expectation_and_status : m_models_to_reqs_to_expectations) { + OPENVINO_ASSERT(idx_to_reqs_to_expectation_and_status.second); + for (auto const& req_to_expectation_and_status : *idx_to_reqs_to_expectation_and_status.second) { + auto req_idx = req_to_expectation_and_status.first; + auto expectation_and_status = req_to_expectation_and_status.second; + if (!expectation_and_status.second) { + auto model_idx = idx_to_reqs_to_expectation_and_status.first; + ADD_FAILURE() << DeviceType::name << ": Expectation for request[" << req_idx + << "] of model[" << model_idx << "] was set, but that request was " + << "not created"; + } } } } diff --git a/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.hpp b/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.hpp index 5c02f96ebd581e..4d720796c6abbf 100644 --- a/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.hpp +++ b/src/plugins/intel_npu/tests/functional/behavior/npuw/mocks/mock_plugins.hpp @@ -57,7 +57,7 @@ class MockCompiledModelBase : public ov::ICompiledModel { MockCompiledModelBase( const std::shared_ptr& model, std::shared_ptr plugin, const ov::AnyMap& config, - std::shared_ptr, bool>> infer_req_expectations); + std::shared_ptr, bool>>> infer_reqs_to_expectations); // Methods from a base class ov::ICompiledModel MOCK_METHOD(const std::vector>&, outputs, (), (const, override)); @@ -74,7 +74,8 @@ class MockCompiledModelBase : public ov::ICompiledModel { private: std::mutex m_mock_creation_mutex; - std::shared_ptr, bool>> m_infer_req_expectations_ptr; + int m_num_created_infer_requests{}; + std::shared_ptr, bool>>> m_infer_reqs_to_expectations_ptr; std::shared_ptr m_model; ov::AnyMap m_config; @@ -119,7 +120,7 @@ class MockPluginBase : public ov::IPlugin { // This must be called *before* the custom ON_CALL() statements. void create_implementation(); void set_expectations_to_comp_models(int model_idx, std::function expectations); - void set_expectations_to_infer_reqs(int req_idx, std::function expectations); + void set_expectations_to_infer_reqs(int model_idx, int req_idx, std::function expectations); ~MockPluginBase() override; @@ -129,7 +130,7 @@ class MockPluginBase : public ov::IPlugin { int m_num_compiled_models{}; // TODO: Make thread-safe and simplify. std::map, bool>> m_models_to_expectations; - std::map, bool>>> m_infer_reqs_to_expectations; + std::map, bool>>>> m_models_to_reqs_to_expectations; // Properties int32_t num_streams{0}; From e4dbed21f16ce894be2e5644543874a396814fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hubert=20B=C5=82aszczyk?= <56601011+hub-bla@users.noreply.github.com> Date: Wed, 18 Sep 2024 17:16:34 +0200 Subject: [PATCH 04/49] [GHA] Enable parallel execution of TensorFlow Lite Layer python tests (#26662) ### Details: - Enabled parallel call - Fixed tests to be compatible with pytest-xdist plugin (pass function name instead of reference) - `os.path.dirname` caused saving model in `/out` directory instead of `/out/{temp_dir}` beacause it didn't have '/' char at the end and it treated `temp_dir` like a file ### Tickets: - [None](https://github.com/openvinotoolkit/openvino/issues/20920) Without parallel execution ![Screenshot from 2024-09-18 14-15-16](https://github.com/user-attachments/assets/f1b00954-de59-445a-904f-5b13819c0971) With parallel execution (8 cpu cores) ![Screenshot from 2024-09-18 14-32-48](https://github.com/user-attachments/assets/2fc144cc-f771-43aa-909b-f41dedc1ccca) --- .github/workflows/job_python_unit_tests.yml | 2 +- .github/workflows/windows_vs2019_release.yml | 2 +- .../common/tflite_layer_test_class.py | 2 +- .../layer_tests/common/utils/tflite_utils.py | 6 +-- .../test_tfl_ArgValue.py | 6 +-- .../tensorflow_lite_tests/test_tfl_Binary.py | 30 ++++++------ .../test_tfl_BinaryWithActivation.py | 12 ++--- .../tensorflow_lite_tests/test_tfl_Pool.py | 6 +-- .../tensorflow_lite_tests/test_tfl_Reduce.py | 16 +++---- .../tensorflow_lite_tests/test_tfl_Resize.py | 6 +-- .../tensorflow_lite_tests/test_tfl_Unary.py | 46 +++++++++---------- 11 files changed, 67 insertions(+), 67 deletions(-) diff --git a/.github/workflows/job_python_unit_tests.yml b/.github/workflows/job_python_unit_tests.yml index c4ab208c54e6a8..862ade24810e8c 100644 --- a/.github/workflows/job_python_unit_tests.yml +++ b/.github/workflows/job_python_unit_tests.yml @@ -260,7 +260,7 @@ jobs: - name: TensorFlow Lite Layer Tests - TFL FE if: fromJSON(inputs.affected-components).TFL_FE.test - run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow_lite_tests/ --junitxml=${INSTALL_TEST_DIR}/TEST-tfl_fe.xml + run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow_lite_tests/ -n logical --junitxml=${INSTALL_TEST_DIR}/TEST-tfl_fe.xml env: TEST_DEVICE: CPU TEST_PRECISION: FP16 diff --git a/.github/workflows/windows_vs2019_release.yml b/.github/workflows/windows_vs2019_release.yml index a1ff614672cccd..b9d5d1687f773e 100644 --- a/.github/workflows/windows_vs2019_release.yml +++ b/.github/workflows/windows_vs2019_release.yml @@ -340,7 +340,7 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test shell: cmd run: | - python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml + python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ -n logical --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml env: TEST_DEVICE: CPU TEST_PRECISION: FP16 diff --git a/tests/layer_tests/common/tflite_layer_test_class.py b/tests/layer_tests/common/tflite_layer_test_class.py index 8b1fdd9f794a67..2bc75c76a3ca05 100644 --- a/tests/layer_tests/common/tflite_layer_test_class.py +++ b/tests/layer_tests/common/tflite_layer_test_class.py @@ -34,7 +34,7 @@ def produce_tflite_model(self, framework_model, save_path): input_tensors=input_tensors, output_tensors=output_tensors).convert() - tflite_model_path = os.path.join(os.path.dirname(save_path), 'model.tflite') + tflite_model_path = os.path.join(save_path, 'model.tflite') with tf.io.gfile.GFile(tflite_model_path, 'wb') as f: f.write(tflite_model) return tflite_model_path diff --git a/tests/layer_tests/common/utils/tflite_utils.py b/tests/layer_tests/common/utils/tflite_utils.py index 475858c1a7b777..5754e063a7f198 100644 --- a/tests/layer_tests/common/utils/tflite_utils.py +++ b/tests/layer_tests/common/utils/tflite_utils.py @@ -54,13 +54,13 @@ def activation_helper(input_node, activation_name, name): ], [ {'activation': None}, - {'activation': tf.nn.relu}, - {'activation': tf.nn.relu6}, + {'activation': 'tf.nn.relu'}, + {'activation': 'tf.nn.relu6'}, # skip tanh and signbit since tflite doesn't fuse such activations # https://github.com/tensorflow/tensorflow/blob/77d8c333405a080c57850c45531dbbf077b2bd0e/tensorflow/compiler/mlir/lite/transforms/optimize_patterns.td#L86:L89 # {'activation': tf.math.tanh}, # {'activation': lambda x, name: tf.identity(tf.experimental.numpy.signbit(x), name=name)}, - {'activation': lambda x, name: tf.math.minimum(tf.math.maximum(-1., x), 1., name=name)} + {'activation': 'lambda x, name: tf.math.minimum(tf.math.maximum(-1., x), 1., name=name)'} ] ] diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_ArgValue.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_ArgValue.py index 70dadf58722c0f..87bf7c4c96599b 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_ArgValue.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_ArgValue.py @@ -6,8 +6,8 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': 'ARG_MAX', 'op_func': tf.math.argmax}, - {'op_name': 'ARG_MIN', 'op_func': tf.math.argmin}, + {'op_name': 'ARG_MAX', 'op_func': 'tf.math.argmax'}, + {'op_name': 'ARG_MIN', 'op_func': 'tf.math.argmin'}, ] test_params = [ @@ -31,7 +31,7 @@ def make_model(self, params): with tf.compat.v1.Session() as sess: place_holder = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[0]) - params['op_func'](place_holder, axis=params['axis'], name=self.outputs[0]) + eval(params['op_func'])(place_holder, axis=params['axis'], name=self.outputs[0]) net = sess.graph_def return net diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Binary.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Binary.py index 71e117c8c6893d..99fe3c0caa2245 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Binary.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Binary.py @@ -6,20 +6,20 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': 'EQUAL', 'op_func': tf.math.equal}, - {'op_name': 'FLOOR_MOD', 'op_func': tf.math.floormod, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'FLOOR_DIV', 'op_func': tf.math.floordiv, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'GREATER', 'op_func': tf.math.greater}, - {'op_name': 'GREATER_EQUAL', 'op_func': tf.math.greater_equal}, - {'op_name': 'LESS', 'op_func': tf.math.less}, - {'op_name': 'LESS_EQUAL', 'op_func': tf.math.less_equal}, - {'op_name': 'LOGICAL_AND', 'op_func': tf.math.logical_and, 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, - {'op_name': 'LOGICAL_OR', 'op_func': tf.math.logical_or, 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, - {'op_name': 'MAXIMUM', 'op_func': tf.math.maximum}, - {'op_name': 'MINIMUM', 'op_func': tf.math.minimum}, - {'op_name': 'NOT_EQUAL', 'op_func': tf.math.not_equal}, - {'op_name': 'POW', 'op_func': tf.math.pow, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'SQUARED_DIFFERENCE', 'op_func': tf.math.squared_difference}, + {'op_name': 'EQUAL', 'op_func': 'tf.math.equal'}, + {'op_name': 'FLOOR_MOD', 'op_func': 'tf.math.floormod', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'FLOOR_DIV', 'op_func': 'tf.math.floordiv', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'GREATER', 'op_func': 'tf.math.greater'}, + {'op_name': 'GREATER_EQUAL', 'op_func': 'tf.math.greater_equal'}, + {'op_name': 'LESS', 'op_func': 'tf.math.less'}, + {'op_name': 'LESS_EQUAL', 'op_func': 'tf.math.less_equal'}, + {'op_name': 'LOGICAL_AND', 'op_func': 'tf.math.logical_and', 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, + {'op_name': 'LOGICAL_OR', 'op_func': 'tf.math.logical_or', 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, + {'op_name': 'MAXIMUM', 'op_func': 'tf.math.maximum'}, + {'op_name': 'MINIMUM', 'op_func': 'tf.math.minimum'}, + {'op_name': 'NOT_EQUAL', 'op_func': 'tf.math.not_equal'}, + {'op_name': 'POW', 'op_func': 'tf.math.pow', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'SQUARED_DIFFERENCE', 'op_func': 'tf.math.squared_difference'}, ] test_params = [ @@ -44,7 +44,7 @@ def make_model(self, params): name=self.inputs[0]) place_holder1 = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[1]) - params['op_func'](place_holder0, place_holder1, name=self.outputs[0]) + eval(params['op_func'])(place_holder0, place_holder1, name=self.outputs[0]) net = sess.graph_def return net diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_BinaryWithActivation.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_BinaryWithActivation.py index 1e44bfdb6b01f4..6e6ed7625f8f3e 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_BinaryWithActivation.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_BinaryWithActivation.py @@ -6,10 +6,10 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': 'ADD', 'op_func': tf.math.add}, - {'op_name': 'DIV', 'op_func': tf.math.divide, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'MUL', 'op_func': tf.math.multiply}, - {'op_name': 'SUB', 'op_func': tf.math.subtract}, + {'op_name': 'ADD', 'op_func': 'tf.math.add'}, + {'op_name': 'DIV', 'op_func': 'tf.math.divide', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'MUL', 'op_func': 'tf.math.multiply'}, + {'op_name': 'SUB', 'op_func': 'tf.math.subtract'}, ] test_params = [ @@ -35,8 +35,8 @@ def make_model(self, params): in1 = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[1]) bin_op_name = self.outputs[0] if not params['activation'] else \ self.outputs[0] + "/op" - op = params['op_func'](in0, in1, name=bin_op_name) - op = activation_helper(op, params['activation'], self.outputs[0]) + op = eval(params['op_func'])(in0, in1, name=bin_op_name) + op = activation_helper(op, eval(params['activation']) if params['activation'] else None, self.outputs[0]) net = sess.graph_def return net diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Pool.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Pool.py index fd96bcf08cdf3c..89067a0b33fda9 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Pool.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Pool.py @@ -5,8 +5,8 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': 'AVERAGE_POOL_2D', 'op_func': tf.nn.avg_pool2d}, - {'op_name': 'MAX_POOL_2D', 'op_func': tf.nn.max_pool2d}, + {'op_name': 'AVERAGE_POOL_2D', 'op_func': 'tf.nn.avg_pool2d'}, + {'op_name': 'MAX_POOL_2D', 'op_func': 'tf.nn.max_pool2d'}, ] test_params = [ @@ -32,7 +32,7 @@ def make_model(self, params): with tf.compat.v1.Session() as sess: place_holder = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[0]) - params['op_func'](place_holder, params['ksize'], params['strides'], + eval(params['op_func'])(place_holder, params['ksize'], params['strides'], params['padding'], 'NHWC', name=self.outputs[0]) net = sess.graph_def return net diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Reduce.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Reduce.py index 6a2c1449f520e7..9cbc56045175ac 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Reduce.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Reduce.py @@ -6,13 +6,13 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': 'MEAN', 'op_func': tf.math.reduce_mean}, - {'op_name': 'REDUCE_ALL', 'op_func': tf.math.reduce_all, 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, - {'op_name': 'REDUCE_ANY', 'op_func': tf.math.reduce_any, 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, - {'op_name': 'REDUCE_MAX', 'op_func': tf.math.reduce_max}, - {'op_name': 'REDUCE_MIN', 'op_func': tf.math.reduce_min}, - {'op_name': 'REDUCE_PROD', 'op_func': tf.math.reduce_prod, 'kwargs_to_prepare_input': 'short_range'}, - {'op_name': 'SUM', 'op_func': tf.math.reduce_sum}, + {'op_name': 'MEAN', 'op_func': 'tf.math.reduce_mean'}, + {'op_name': 'REDUCE_ALL', 'op_func': 'tf.math.reduce_all', 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, + {'op_name': 'REDUCE_ANY', 'op_func': 'tf.math.reduce_any', 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, + {'op_name': 'REDUCE_MAX', 'op_func': 'tf.math.reduce_max'}, + {'op_name': 'REDUCE_MIN', 'op_func': 'tf.math.reduce_min'}, + {'op_name': 'REDUCE_PROD', 'op_func': 'tf.math.reduce_prod', 'kwargs_to_prepare_input': 'short_range'}, + {'op_name': 'SUM', 'op_func': 'tf.math.reduce_sum'}, ] test_params = [ @@ -36,7 +36,7 @@ def make_model(self, params): with tf.compat.v1.Session() as sess: place_holder = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[0]) - params['op_func'](place_holder, axis=params['axis'], name=self.outputs[0]) + eval(params['op_func'])(place_holder, axis=params['axis'], name=self.outputs[0]) net = sess.graph_def return net diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Resize.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Resize.py index 5c37153e965856..18c90af71a80ef 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Resize.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Resize.py @@ -5,8 +5,8 @@ from common.utils.tflite_utils import parametrize_tests test_ops = [ - {'op_name': ['RESIZE_BILINEAR'], 'op_func': tf.compat.v1.image.resize_bilinear}, - {'op_name': ['RESIZE_NEAREST_NEIGHBOR'], 'op_func': tf.compat.v1.image.resize_nearest_neighbor}, + {'op_name': ['RESIZE_BILINEAR'], 'op_func': 'tf.compat.v1.image.resize_bilinear'}, + {'op_name': ['RESIZE_NEAREST_NEIGHBOR'], 'op_func': 'tf.compat.v1.image.resize_nearest_neighbor'}, ] test_params = [ @@ -35,7 +35,7 @@ def make_model(self, params): with tf.compat.v1.Session() as sess: placeholder = tf.compat.v1.placeholder(params.get("dtype", tf.float32), params["shape"], name=self.inputs[0]) - params['op_func'](placeholder, size=params['size'], + eval(params['op_func'])(placeholder, size=params['size'], align_corners=params['align_corners'], half_pixel_centers=params['half_pixel_centers'], name=self.outputs[0]) diff --git a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Unary.py b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Unary.py index 8d348b54aa44d1..212951e6d4d698 100644 --- a/tests/layer_tests/tensorflow_lite_tests/test_tfl_Unary.py +++ b/tests/layer_tests/tensorflow_lite_tests/test_tfl_Unary.py @@ -12,28 +12,28 @@ np.random.seed(42) test_ops = [ - {'op_name': 'ABS', 'op_func': tf.math.abs}, - {'op_name': 'CAST', 'op_func': partial(tf.cast, dtype=tf.int32)}, - {'op_name': 'CEIL', 'op_func': tf.math.ceil}, - {'op_name': 'COS', 'op_func': tf.math.cos}, - {'op_name': 'ELU', 'op_func': tf.nn.elu}, - {'op_name': 'EXP', 'op_func': tf.math.exp, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'FLOOR', 'op_func': tf.math.floor}, - {'op_name': 'LEAKY_RELU', 'op_func': partial(tf.nn.leaky_relu, alpha=-0.5)}, - {'op_name': 'LOG', 'op_func': tf.math.log, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'LOG_SOFTMAX', 'op_func': partial(tf.nn.log_softmax, axis=-1)}, - {'op_name': 'LOGICAL_NOT', 'op_func': tf.math.logical_not, 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, - {'op_name': 'LOGISTIC', 'op_func': tf.math.sigmoid}, - {'op_name': 'NEG', 'op_func': tf.math.negative}, - {'op_name': 'RELU6', 'op_func': tf.nn.relu6}, - {'op_name': 'RELU', 'op_func': tf.nn.relu}, - {'op_name': 'ROUND', 'op_func': tf.math.round}, - {'op_name': 'RSQRT', 'op_func': tf.math.rsqrt, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'SIN', 'op_func': tf.math.sin}, - {'op_name': 'SOFTMAX', 'op_func': partial(tf.nn.softmax, axis=-1)}, # additionally test with alpha - {'op_name': 'SQRT', 'op_func': tf.math.sqrt, 'kwargs_to_prepare_input': 'positive'}, - {'op_name': 'SQUARE', 'op_func': tf.math.square}, - {'op_name': 'TANH', 'op_func': tf.math.tanh}, + {'op_name': 'ABS', 'op_func': 'tf.math.abs'}, + {'op_name': 'CAST', 'op_func': 'partial(tf.cast, dtype=tf.int32)'}, + {'op_name': 'CEIL', 'op_func': 'tf.math.ceil'}, + {'op_name': 'COS', 'op_func': 'tf.math.cos'}, + {'op_name': 'ELU', 'op_func': 'tf.nn.elu'}, + {'op_name': 'EXP', 'op_func': 'tf.math.exp', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'FLOOR', 'op_func': 'tf.math.floor'}, + {'op_name': 'LEAKY_RELU', 'op_func': 'partial(tf.nn.leaky_relu, alpha=-0.5)'}, + {'op_name': 'LOG', 'op_func': 'tf.math.log', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'LOG_SOFTMAX', 'op_func': 'partial(tf.nn.log_softmax, axis=-1)'}, + {'op_name': 'LOGICAL_NOT', 'op_func': 'tf.math.logical_not', 'kwargs_to_prepare_input': 'boolean', 'dtype': tf.bool}, + {'op_name': 'LOGISTIC', 'op_func': 'tf.math.sigmoid'}, + {'op_name': 'NEG', 'op_func': 'tf.math.negative'}, + {'op_name': 'RELU6', 'op_func': 'tf.nn.relu6'}, + {'op_name': 'RELU', 'op_func': 'tf.nn.relu'}, + {'op_name': 'ROUND', 'op_func': 'tf.math.round'}, + {'op_name': 'RSQRT', 'op_func': 'tf.math.rsqrt', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'SIN', 'op_func': 'tf.math.sin'}, + {'op_name': 'SOFTMAX', 'op_func': 'partial(tf.nn.softmax, axis=-1)'}, # additionally test with alpha + {'op_name': 'SQRT', 'op_func': 'tf.math.sqrt', 'kwargs_to_prepare_input': 'positive'}, + {'op_name': 'SQUARE', 'op_func': 'tf.math.square'}, + {'op_name': 'TANH', 'op_func': 'tf.math.tanh'}, # These operations are getting optimized out by tflite aka empty tfl model # {'op_name': 'RANK', 'op_func': tf.rank}, @@ -63,7 +63,7 @@ def make_model(self, params): with tf.compat.v1.Session() as sess: place_holder = tf.compat.v1.placeholder(params.get('dtype', tf.float32), params['shape'], name=self.inputs[0]) - params['op_func'](place_holder, name=self.outputs[0]) + eval(params['op_func'])(place_holder, name=self.outputs[0]) net = sess.graph_def return net From 1d3a71160b56da7ad631bcac5b9b5e5f21746b9b Mon Sep 17 00:00:00 2001 From: Sebastian Golebiewski Date: Wed, 18 Sep 2024 17:34:47 +0200 Subject: [PATCH 05/49] [DOCS] Documenting the support for MXFP4 data format. (#26554) Providing info about support for MXFP4 data format in quantization on CPU. This PR addresses JIRA ticket no. 151042. --- .../weight-compression.rst | 9 ++++ .../microscaling-quantization.rst | 52 +++++++++++++++++++ .../cpu-device.rst | 21 ++++---- 3 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression/microscaling-quantization.rst diff --git a/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression.rst b/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression.rst index 2b67dc0ddf5cbb..6c85473502ff9b 100644 --- a/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression.rst +++ b/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression.rst @@ -1,6 +1,13 @@ Weight Compression ================== +.. toctree:: + :maxdepth: 1 + :hidden: + + weight-compression/microscaling-quantization + + Weight compression is a technique for enhancing the efficiency of models, especially those with large memory requirements. This method reduces the model's memory footprint, a crucial factor for Large Language Models (LLMs). @@ -289,6 +296,7 @@ from Optimum Intel instead of NNCF to compress the model to INT8_ASYM. results = pipe(phrase) print(results) + Exporting and Loading Compressed Models ######################################## @@ -485,3 +493,4 @@ Additional Resources - `NNCF GitHub `__ - :doc:`Post-training Quantization ` - :doc:`Training-time Optimization ` +- `OCP Microscaling Formats (MX) Specification `__ diff --git a/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression/microscaling-quantization.rst b/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression/microscaling-quantization.rst new file mode 100644 index 00000000000000..d4dfad2868cb1a --- /dev/null +++ b/docs/articles_en/openvino-workflow/model-optimization-guide/weight-compression/microscaling-quantization.rst @@ -0,0 +1,52 @@ +Microscaling (MX) Quantization +============================== + +Microscaling (MX) Quantization method has been introduced to enable users +to quantize LLMs with a high compression rate at minimal cost of accuracy. +The method helps maintain model performance comparable to that of the conventional +FP32. It increases compute and storage efficiency by using low bit-width +floating point and integer-based data formats: + ++---------------+-----------------+----------------------------+ +| Data format | Data type | Description | ++===============+=================+============================+ +| MXFP8 | | FP8 (E5M2) | | Floating point, 8-bit | +| | | FP8 (E4M3) | | Floating point, 8-bit | ++---------------+-----------------+----------------------------+ +| MXFP6 | | FP6 (E3M2) | | Floating point, 6-bit | +| | | FP6 (E2M3) | | Floating point, 6-bit | ++---------------+-----------------+----------------------------+ +| **MXFP4** | **FP4 (E2M1)** | **Floating point, 4-bit** | ++---------------+-----------------+----------------------------+ +| MXINT8 | INT8 | Integer, 8-bit | ++---------------+-----------------+----------------------------+ + + +.. _mxfp4_support: + +**Currently, only the** +`MXFP4 (E2M1) `__ +**data format is supported in NNCF and for quantization on CPU.** +E2M1 may be considered for improving accuracy, however, quantized models will +not be faster than the ones compressed to INT8_ASYM. + +Quantization to the E2M1 data type will compress weights to 4-bit without a zero +point and with 8-bit E8M0 scales. To quantize a model to E2M1, set +``mode=CompressWeightsMode.E2M1`` in ``nncf.compress_weights()``. It is +recommended to use ``group size = 32``. See the example below: + +.. code-block:: py + + from nncf import compress_weights, CompressWeightsMode + compressed_model = compress_weights(model, mode=CompressWeightsMode.E2M1, group_size=32, all_layers=True) + +.. note:: + + Different values for ``group_size`` and ``ratio`` are also supported. + + +Additional Resources +#################### + +* `OCP Microscaling Formats (MX) Specification `__ +* `Intel® Neural Compressor Documentation `__ \ No newline at end of file diff --git a/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/cpu-device.rst b/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/cpu-device.rst index d4ee9af90c5a23..f1a914e6b9dac3 100644 --- a/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/cpu-device.rst +++ b/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/cpu-device.rst @@ -53,24 +53,27 @@ the ``ov::Core::compile_model()`` method: :fragment: [compile_model_default] -Supported Inference Data Types -########################################################### +Supported Model Precision +######################### CPU plugin supports the following data types as inference precision of internal primitives: - Floating-point data types: - - ``f32`` (Intel® x86-64, Arm®) - - ``bf16`` (Intel® x86-64) - - ``f16`` (Intel® x86-64, Arm®) + - ``FP32`` (Intel® x86-64, Arm®) + - ``BF16`` (Intel® x86-64) + - ``FP16`` (Intel® x86-64, Arm®) + - ``:ref:`MXFP4 ``` (Intel® x86-64) + - Integer data types: - - ``i32`` (Intel® x86-64, Arm®) + - ``INT32`` (Intel® x86-64, Arm®) + - Quantized data types: - - ``u8`` (Intel® x86-64) - - ``i8`` (Intel® x86-64) - - ``u1`` (Intel® x86-64) + - ``uINT8`` (Intel® x86-64) + - ``INT8`` (Intel® x86-64) + - ``uINT1`` (Intel® x86-64) :doc:`Hello Query Device C++ Sample <../../../learn-openvino/openvino-samples/hello-query-device>` can be used to print out supported data types for all detected devices. From 311e2b36668e4e2a8e29799f3c1ca9c7bb62b8d1 Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Wed, 18 Sep 2024 18:30:56 +0200 Subject: [PATCH 06/49] Docs release notes 24.4 mstr (#26665) port: https://github.com/openvinotoolkit/openvino/pull/26529 https://github.com/openvinotoolkit/openvino/pull/26659 --- .../additional-resources/terms-of-use.rst | 4 +- .../about-openvino/release-notes-openvino.rst | 634 +++++++++++++----- .../system-requirements.rst | 77 +-- docs/sphinx_setup/api/api_reference.rst | 3 +- .../api/nodejs_api/nodejs_api.rst | 12 + 5 files changed, 482 insertions(+), 248 deletions(-) diff --git a/docs/articles_en/about-openvino/additional-resources/terms-of-use.rst b/docs/articles_en/about-openvino/additional-resources/terms-of-use.rst index afdf10aef06c5c..06a5c6dbf035b1 100644 --- a/docs/articles_en/about-openvino/additional-resources/terms-of-use.rst +++ b/docs/articles_en/about-openvino/additional-resources/terms-of-use.rst @@ -58,6 +58,4 @@ Your costs and results may vary. No product or component can be absolutely secure. -Intel technologies may require enabled hardware, software or service activation. - -OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos. \ No newline at end of file +Intel technologies may require enabled hardware, software or service activation. \ No newline at end of file diff --git a/docs/articles_en/about-openvino/release-notes-openvino.rst b/docs/articles_en/about-openvino/release-notes-openvino.rst index 2f7cffccd5076b..c60371119de69b 100644 --- a/docs/articles_en/about-openvino/release-notes-openvino.rst +++ b/docs/articles_en/about-openvino/release-notes-openvino.rst @@ -15,282 +15,540 @@ OpenVINO Release Notes -2024.3 - 31 July 2024 +2024.4 - 18 September 2024 ############################# :doc:`System Requirements <./release-notes-openvino/system-requirements>` | :doc:`Release policy <./release-notes-openvino/release-policy>` | :doc:`Installation Guides <./../get-started/install-openvino>` + What's new -+++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * More Gen AI coverage and framework integrations to minimize code changes. - * OpenVINO pre-optimized models are now available in Hugging Face making it easier for developers - to get started with these models. + * Support for GLM-4-9B Chat, MiniCPM-1B, Llama 3 and 3.1, Phi-3-Mini, Phi-3-Medium and + YOLOX-s models. + * Noteworthy notebooks added: Florence-2, NuExtract-tiny Structure Extraction, Flux.1 Image + Generation, PixArt-α: Photorealistic Text-to-Image Synthesis, and Phi-3-Vision Visual + Language Assistant. * Broader Large Language Model (LLM) support and more model compression techniques. - * Significant improvement in LLM performance on Intel discrete GPUs with the addition of - Multi-Head Attention (MHA) and OneDNN enhancements. + * OpenVINO™ runtime optimized for Intel® Xe Matrix Extensions (Intel® XMX) systolic arrays on + built-in GPUs for efficient matrix multiplication resulting in significant LLM performance + boost with improved 1st and 2nd token latency, as well as a smaller memory footprint on + Intel® Core™ Ultra Processors (Series 2). + * Memory sharing enabled for NPUs on Intel® Core™ Ultra Processors (Series 2) for efficient + pipeline integration without memory copy overhead. + * Addition of the PagedAttention feature for discrete GPUs* enables a significant boost in + throughput for parallel inferencing when serving LLMs on Intel® Arc™ Graphics or Intel® + Data Center GPU Flex Series. * More portability and performance to run AI at the edge, in the cloud, or locally. - * Improved CPU performance when serving LLMs with the inclusion of vLLM and continuous batching - in the OpenVINO Model Server (OVMS). vLLM is an easy-to-use open-source library that supports - efficient LLM inferencing and model serving. - * Ubuntu 24.04 is now officially supported. + * Support for Intel® Core Ultra Processors Series 2 (formerly codenamed Lunar Lake) on Windows. + * OpenVINO™ Model Server now comes with production-quality support for OpenAI-compatible API + which enables significantly higher throughput for parallel inferencing on Intel® Xeon® + processors when serving LLMs to many concurrent users. + * Improved performance and memory consumption with prefix caching, KV cache compression, and + other optimizations for serving LLMs using OpenVINO™ Model Server. + * Support for Python 3.12. + * Support for Red Hat Enterprise Linux (RHEL) version 9.3 - 9.4. +Now deprecated ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +* The following will not be available beyond the 2024.4 OpenVINO version: -OpenVINO™ Runtime -+++++++++++++++++++++++++++++ + * The macOS x86_64 debug bins + * Python 3.8 + * dKMB support -Common ------------------------------ +* Intel® Streaming SIMD Extensions (Intel® SSE) will be supported in source code form, but not + enabled in the binary package by default, starting with OpenVINO 2025.0. -* OpenVINO may now be used as a backend for vLLM, offering better CPU performance due to - fully-connected layer optimization, fusing multiple fully-connected layers (MLP), U8 KV cache, - and dynamic split fuse. -* Ubuntu 24.04 is now officially supported, which means OpenVINO is now validated on this - system (preview support). -* The following have been improved: +| Check the `deprecation section <#deprecation-and-support>`__ for more information. - * Increasing support for models like YoloV10 or PixArt-XL-2, thanks to enabling Squeeze and - Concat layers. - * Performance of precision conversion FP16/BF16 -> FP32. +Common ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -AUTO Inference Mode ------------------------------ +* Encryption and decryption of topology in model cache is now supported with callback functions + provided by the user (CPU only for now; ov::cache_encryption_callbacks). +* The Ubuntu20 and Ubuntu22 Docker images now include the tokenizers and GenAI CPP modules, + including pre-installed Python modules, in development versions of these images. +* Python 3.12 is now supported. -* Model cache is now disabled for CPU acceleration even when cache_dir is set, because CPU - acceleration is skipped when the cached model is ready for the target device in the 2nd run. +CPU Device Plugin ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +* The following is now supported: -Heterogeneous Inference Mode ------------------------------ -* PIPELINE_PARALLEL policy is now available, to inference large models on multiple devices per - available memory size, being especially useful for large language models that don't fit into - one discrete GPU (a preview feature). + * Tensor parallel feature for multi-socket CPU inference, with performance improvement for + LLMs with 6B+ parameters (enabled through model_distribution_policy hint configurations). + * RMSNorm operator, optimized with JIT kernel to improve both the 1st and 2nd token + performance of LLMs. +* The following has been improved: -CPU Device Plugin ------------------------------ + * vLLM support, with PagedAttention exposing attention score as the second output. It can now + be used in the cache eviction algorithm to improve LLM serving performance. + * 1st token performance with Llama series of models, with additional CPU operator optimization + (such as MLP, SDPA) on BF16 precision. + * Default oneTBB version on Linux is now 2021.13.0, improving overall performance on latest + Intel XEON platforms. + * MXFP4 weight compression models (compressing weights to 4-bit with the e2m1 data type + without a zero point and with 8-bit e8m0 scales) have been optimized for Xeon platforms + thanks to fullyconnected compressed weight LLM support. -* Fully Connected layers have been optimized together with RoPE optimization with JIT kernel to - improve performance for LLM serving workloads on Intel AMX platforms. -* Dynamic quantization of Fully Connected layers is now enabled by default on Intel AVX2 and - AVX512 platforms, improving out-of-the-box performance for 8bit/4bit weight-compressed LLMs. -* Performance has been improved for: +* The following has been fixed: - * ARM server configuration, due to migration to Intel® oneAPI Threading Building Blocks 2021.13. - * ARM for FP32 and FP16. + * Memory leak when ov::num_streams value is 0. + * CPU affinity mask is changed after OpenVINO execution when OpenVINO is compiled + with -DTHREADING=SEQ. GPU Device Plugin ------------------------------ - -* Performance has been improved for: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - * LLMs and Stable Diffusion on discrete GPUs, due to latency decrease, through optimizations - such as Multi-Head Attention (MHA) and oneDNN improvements. - * Whisper models on discrete GPU. +* Dynamic quantization for LLMs is now supported on discrete GPU platforms. +* Stable Diffusion 3 is now supported with good accuracy on Intel GPU platforms. +* Both first and second token latency for LLMs have been improved on Intel GPU platforms. +* The issue of model cache not regenerating with the value changes of + ``ov::hint::performance_mode`` or ``ov::hint::dynamic_quantization_group_size`` has been + fixed. NPU Device Plugin ------------------------------ - -* NPU inference of LLMs is now supported with GenAI API (preview feature). To support LLMs on - NPU (requires the most recent version of the NPU driver), additional relevant features are - also part of the NPU plugin now. -* Models bigger than 2GB are now supported on both NPU driver - (Intel® NPU Driver - Windows* 32.0.100.2540) and NPU plugin side (both Linux and Windows). -* Memory optimizations have been implemented: - - * Weights are no longer copied from NPU compiler adapter. - * Improved memory and first-ever inference latency for inference on NPU. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +* `Remote Tensor API `__ + is now supported. +* You can now query the available number of tiles (ov::intel_npu::max_tiles) and force a + specific number of tiles to be used by the model, per inference request + (ov::intel_npu::tiles). **Note:** ov::intel_npu::tiles overrides the default number of tiles + selected by the compiler based on performance hints (ov::hint::performance_mode). Any tile + number other than 1 may be a problem for cross platform compatibility, if not tested + explicitly versus the max_tiles value. +* You can now bypass the model caching mechanism in the driver + (ov::intel_npu::bypass_umd_caching). Read more about driver and OpenVINO caching. +* Memory footprint at model execution has been reduced by one blob (compiled model) size. + For execution, the plugin no longer retrieves the compiled model from the driver, it uses the + level zero graph handle directly, instead. The compiled model is now retrieved from the driver + only during the export method. OpenVINO Python API ------------------------------ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* visit_attributes is now available for custom operation implemented in Python, enabling - serialization of operation attributes. -* Python API is now extended with new methods for Model class, e.g. Model.get_sink_index, new - overloads for Model.get_result_index. +* Openvino.Tensor, when created in the shared memory mode, now prevents “garbage collection” of + numpy memory. +* The ``openvino.experimental`` submodule is now available, providing access to experimental + functionalities under development. +* New python-exclusive openvino.Model constructors have been added. +* Image padding in PreProcessor is now available. +* OpenVINO Runtime is now compatible with numpy 2.0. OpenVINO Node.js API ------------------------------ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* Tokenizers and StringTensor are now supported for LLM inference. -* Compatibility with electron.js is now restored for desktop application developers. -* Async version of Core.import_model and enhancements for Core.read_model methods are now - available, for more efficient model reading, especially for LLMs. +* The following has been improved -TensorFlow Framework Support ----------------------------------- + * Unit tests for increased efficiency and stability + * Security updates applied to dependencies -* Models with keras.LSTM operations are now more performant in CPU inference. -* The tensor list initialized with an undefined element shape value is now supported. +* `Electron `__ + compatibility is now confirmed with new end-to-end tests. +* `New API methods `__ added. -TensorFlow Lite Framework Support ----------------------------------- -* Constants containing spare tensors are now supported. +TensorFlow Framework Support ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -PyTorch Framework Support ------------------------------ +* TensorFlow 2.17.0 is now supported. +* JAX 0.4.31 is now supported via a path of jax2tf with native_serialization=False +* `8 NEW* operations `__ + have been added. +* Tensor lists with multiple undefined dimensions in element_shape are now supported, enabling + support for TF Hub lite0-detection/versions/1 model. -* Setting types/shapes for nested structures (e.g., dictionaries and tuples) is now supported. -* The aten::layer_norm has been updated to support dynamic shape normalization. -* Dynamic shapes support in the FX graph has been improved, benefiting torch.compile and - torch.export based applications, improving performance for gemma and chatglm model - families. -ONNX Framework Support ------------------------------ +PyTorch Framework Support ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* More models are now supported: +* Torch 2.4 is now supported. +* Inplace ops are now supported automatically if the regular version is supported. +* Symmetric GPTQ model from Hugging Face will now be automatically converted to the signed type + (INT4) and zero-points will be removed. - * Models using the new version of the ReduceMean operation (introduced in ONNX opset 18). - * Models using the Multinomial operation (introduced in ONNX opset 7). +ONNX Framework Support ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -OpenVINO Model Server -+++++++++++++++++++++++++++++ +* ONNX 1.16.0 is now supported +* models with constants/inputs of uint4/int4 types are now supported. +* 4 NEW operations have been added. -* The following has been improved in OpenAI API text generation: - * Performance results, due to OpenVINO Runtime and sampling algorithms. - * Reporting generation engine metrics in the logs. - * Extra sampling parameters added. - * Request parameters affecting memory consumption now have value restrictions, within a - configurable range. +OpenVINO Model Server ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* The following has been fixed in OpenAI API text generation: +* OpenAI API for text generation is now officially supported and recommended for production + usage. It comes with the following new features: - * Generating streamer responses impacting incomplete utf-8 sequences. - * A sporadic generation hang. - * Incompatibility of the last response from the ``completions`` endpoint stream with the vLLM - benchmarking script. + * Prefix caching feature, caching the prompt evaluation to speed up text generation. + * Ability to compress the KV Cache to a lower precision, reducing memory consumption without + a significant loss of accuracy. + * ``stop`` sampling parameters, to define a sequence that stops text generation. + * ``logprobs`` sampling parameter, returning the probabilities to returned tokens, which can + be used to calculate the model perplexity metric, among other things. + * Generic metrics related to execution of the MediaPipe graph that can be used for autoscaling + based on the current load and the level of concurrency. + * `Demo of text generation horizontal scalability `__ + using basic docker containers and Kubernetes. + * Automatic cancelling of text generation for disconnected clients. + * Non-UTF-8 responses from the model can be now automatically changed to Unicode replacement + characters, due to their configurable handling. + * Support for Llama3.1 models. +* The following has been improved: + * Handling of model templates without bos_token is now fixed. + * Performance of the multinomial sampling algorithm. + * ``finish_reason`` in the response correctly determines reaching max_tokens (length) and + completing the sequence (stop). + * Security and stability. Neural Network Compression Framework -+++++++++++++++++++++++++++++++++++++ - -* The `MXFP4 `__ - data format is now supported in the Weight Compression method, compressing weights to 4-bit - with the e2m1 data type without a zero point and with 8-bit e8m0 scales. This feature - is enabled by setting ``mode=CompressWeightsMode.E2M1`` in nncf.compress_weights(). -* The AWQ algorithm in the Weight Compression method has been extended for patterns: - Act->MatMul and Act->MUltiply->MatMul to cover the Phi family models. -* The representation of symmetrically quantized weights has been updated to a signed data type - with no zero point. This allows NPU to support compressed LLMs with the symmetric mode. -* BF16 models in Post-Training Quantization are now supported; nncf.quantize(). -* `Activation Sparsity `__ (Contextual Sparsity) algorithm in - the Weight Compression method is now supported (preview), speeding up LLM inference. - The algorithm is enabled by setting the ``target_sparsity_by_scope`` option in - nncf.compress_weights() and supports Torch models only. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +* The LoRA Correction algorithm is now included in the Weight Compression method, improving the + accuracy of INT4-compressed models on top of other data-aware algorithms, such as AWQ and + Scale Estimation. To enable it, set the lora_correction option to True in + nncf.compress_weights(). +* The GPTQ compression algorithm can now be combined with the Scale Estimation algorithm, + making it possible to run GPTQ, AWQ, and Scale Estimation together, for the optimum-accuracy + INT4-compressed models. +* INT8 quantization of LSTMSequence and Convolution operations for constant inputs is now + enabled, resulting in better performance and reduced model size. OpenVINO Tokenizers -+++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* The following is now supported: +* Split and BPE tokenization operations have been reimplemented, resulting in improved + tokenization accuracy and performance. +* New building options are now available, offering up to a 12x reduction in binary size. +* An operation is now available to validate and skip/replace model-generated non-Unicode + bytecode sequences during detokenization. - * Full Regex syntax with the PCRE2 library for text normalization and splitting. - * Left padding side for all tokenizer types. +OpenVINO.GenAI ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -* GLM-4 tokenizer support, as well as detokenization support for Phi-3 and Gemma have been - improved. +* New samples and pipelines are now available: + * An example IterableStreamer implementation in + `multinomial_causal_lm/python sample `__ +* GenAI compilation is now available as part of OpenVINO via the –DOPENVINO_EXTRA_MODULES CMake + option. Other Changes and Known Issues -+++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Jupyter Notebooks ----------------------------- -* `Stable Diffusion V3 `__ -* `Depth Anything V2 `__ -* `RAG System with LLamaIndex `__ -* `Image Synthesis with Pixart `__ -* `Function calling LLM agent with Qwen-Agent `__ -* `Jina-CLIP `__ -* `MiniCPM -V2 Visual Language Assistant `__ -* `OpenVINO XAI: first steps `__ -* `OpenVINO XAI: deep dive `__ -* `LLM Agent with LLamaIndex `__ -* `Stable Audio `__ -* `Phi-3-vision `__ +* `Florence-2 `__ +* `NuExtract: Structure Extraction `__ +* `Flux.1 Image Generation `__ +* `PixArt-α: Photorealistic Text-to-Image Synthesis `__ +* `Phi-3-Vision Visual Language Assistant `__ +* `MiniCPMV2.6 `__ +* `InternVL2 `__ +* The list of supported models in + `LLM chatbot `__ + now includes Phi3.5, Gemma2 support -OpenVINO.GenAI +Known Issues ----------------------------- -* Performance counters have been added. -* Preview support for NPU is now available. +| **Component: CPU** +| ID: CVS-150542, CVS-145996 +| Description: +| The upgrade of default oneTBB on Linux platforms to 2021.13.0 improves overall + performance on latest Intel XEON platform but causes regression in some cases. Limit the + threads usage of postprocessing done by Torch can mitigate the regression (For example: + torch.set_num_threads(n), n can be 1, beam search number, prompt batch size or other + numbers). + +| **Component: OpenVINO.Genai** +| ID: 149694 +| Description: +| Passing openvino.Tensor instance to LLMPipleine triggers incompatible arguments error if + OpenVINO and GenAI are installed from PyPI on Windows. -Hugging Face ------------------------------ +| **Component: OpenVINO.Genai** +| ID: 148308 +| Description: +| OpenVINO.GenAI archive doesn't have debug libraries for OpenVINO Tokenizers and + OpenVINO.GenAI. -OpenVINO pre-optimized models are now available on Hugging Face: -* Phi-3-mini-128k-instruct ( - `INT4 `__, - `INT8 `__, - `FP16 `__) -* Mistral-7B-Instruct-v0.2 ( - `INT4 `__, - `INT8 `__, - `FP16 `__) -* Mixtral-8x7b-Instruct-v0.1 ( - `INT4 `__, - `INT8 `__) -* LCM_Dreamshaper_v7 ( - `INT8 `__, - `FP16 `__) -* starcoder2-7b ( - `INT4 `__, - `INT8 `__, - `FP16 `__) -* For all the models see `HuggingFace `__ +Previous 2024 releases ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -Known Issues ------------------------------ +.. dropdown:: 2024.3 - 31 July 2024 + :animate: fade-in-slide-down + :color: secondary -| **Component: OpenVINO.GenAI** -| ID: 148308 -| Description: -| The OpenVINO.GenAI archive distribution doesn't include debug libraries for OpenVINO - Tokenizers and OpenVINO.GenAI. + **What's new** -| **Component: GPU** -| ID: 146283 -| Description: -| For some LLM models, longer prompts, such as several thousand tokens, may result in - decreased accuracy on the GPU plugin. -| Workaround: -| It is recommended to run the model in the FP32 precision to avoid the issue. + * More Gen AI coverage and framework integrations to minimize code changes. + * OpenVINO pre-optimized models are now available in Hugging Face making it easier for developers + to get started with these models. + * Broader Large Language Model (LLM) support and more model compression techniques. + * Significant improvement in LLM performance on Intel discrete GPUs with the addition of + Multi-Head Attention (MHA) and OneDNN enhancements. + * More portability and performance to run AI at the edge, in the cloud, or locally. + * Improved CPU performance when serving LLMs with the inclusion of vLLM and continuous batching + in the OpenVINO Model Server (OVMS). vLLM is an easy-to-use open-source library that supports + efficient LLM inferencing and model serving. + * Ubuntu 24.04 is now officially supported. -Previous 2024 releases -+++++++++++++++++++++++++++++ + **OpenVINO™ Runtime** + + *Common* + + * OpenVINO may now be used as a backend for vLLM, offering better CPU performance due to + fully-connected layer optimization, fusing multiple fully-connected layers (MLP), U8 KV cache, + and dynamic split fuse. + * Ubuntu 24.04 is now officially supported, which means OpenVINO is now validated on this + system (preview support). + * The following have been improved: + + * Increasing support for models like YoloV10 or PixArt-XL-2, thanks to enabling Squeeze and + Concat layers. + * Performance of precision conversion FP16/BF16 -> FP32. + + *AUTO Inference Mode* + + * Model cache is now disabled for CPU acceleration even when cache_dir is set, because CPU + acceleration is skipped when the cached model is ready for the target device in the 2nd run. + + *Heterogeneous Inference Mode* + + * PIPELINE_PARALLEL policy is now available, to inference large models on multiple devices per + available memory size, being especially useful for large language models that don't fit into + one discrete GPU (a preview feature). + + *CPU Device Plugin* + + * Fully Connected layers have been optimized together with RoPE optimization with JIT kernel to + improve performance for LLM serving workloads on Intel AMX platforms. + * Dynamic quantization of Fully Connected layers is now enabled by default on Intel AVX2 and + AVX512 platforms, improving out-of-the-box performance for 8bit/4bit weight-compressed LLMs. + * Performance has been improved for: + + * ARM server configuration, due to migration to Intel® oneAPI Threading Building Blocks 2021.13. + * ARM for FP32 and FP16. + + *GPU Device Plugin* + + * Performance has been improved for: + + * LLMs and Stable Diffusion on discrete GPUs, due to latency decrease, through optimizations + such as Multi-Head Attention (MHA) and oneDNN improvements. + * Whisper models on discrete GPU. + + + *NPU Device Plugin* + + * NPU inference of LLMs is now supported with GenAI API (preview feature). To support LLMs on + NPU (requires the most recent version of the NPU driver), additional relevant features are + also part of the NPU plugin now. + * Models bigger than 2GB are now supported on both NPU driver + (Intel® NPU Driver - Windows* 32.0.100.2540) and NPU plugin side (both Linux and Windows). + * Memory optimizations have been implemented: + + * Weights are no longer copied from NPU compiler adapter. + * Improved memory and first-ever inference latency for inference on NPU. + + *OpenVINO Python API* + + * visit_attributes is now available for custom operation implemented in Python, enabling + serialization of operation attributes. + * Python API is now extended with new methods for Model class, e.g. Model.get_sink_index, new + overloads for Model.get_result_index. + + *OpenVINO Node.js API* + + * Tokenizers and StringTensor are now supported for LLM inference. + * Compatibility with electron.js is now restored for desktop application developers. + * Async version of Core.import_model and enhancements for Core.read_model methods are now + available, for more efficient model reading, especially for LLMs. + + *TensorFlow Framework Support* + + * Models with keras.LSTM operations are now more performant in CPU inference. + * The tensor list initialized with an undefined element shape value is now supported. + + *TensorFlow Lite Framework Support* + + * Constants containing spare tensors are now supported. + + *PyTorch Framework Support* + + * Setting types/shapes for nested structures (e.g., dictionaries and tuples) is now supported. + * The aten::layer_norm has been updated to support dynamic shape normalization. + * Dynamic shapes support in the FX graph has been improved, benefiting torch.compile and + torch.export based applications, improving performance for gemma and chatglm model + families. + + *ONNX Framework Support* + + * More models are now supported: + + * Models using the new version of the ReduceMean operation (introduced in ONNX opset 18). + * Models using the Multinomial operation (introduced in ONNX opset 7). + + + **OpenVINO Model Server** + + * The following has been improved in OpenAI API text generation: + + * Performance results, due to OpenVINO Runtime and sampling algorithms. + * Reporting generation engine metrics in the logs. + * Extra sampling parameters added. + * Request parameters affecting memory consumption now have value restrictions, within a + configurable range. + + * The following has been fixed in OpenAI API text generation: + + * Generating streamer responses impacting incomplete utf-8 sequences. + * A sporadic generation hang. + * Incompatibility of the last response from the ``completions`` endpoint stream with the vLLM + benchmarking script. + + **Neural Network Compression Framework** + + * The `MXFP4 `__ + data format is now supported in the Weight Compression method, compressing weights to 4-bit + with the e2m1 data type without a zero point and with 8-bit e8m0 scales. This feature + is enabled by setting ``mode=CompressWeightsMode.E2M1`` in nncf.compress_weights(). + * The AWQ algorithm in the Weight Compression method has been extended for patterns: + Act->MatMul and Act->MUltiply->MatMul to cover the Phi family models. + * The representation of symmetrically quantized weights has been updated to a signed data type + with no zero point. This allows NPU to support compressed LLMs with the symmetric mode. + * BF16 models in Post-Training Quantization are now supported; nncf.quantize(). + * `Activation Sparsity `__ (Contextual Sparsity) algorithm in + the Weight Compression method is now supported (preview), speeding up LLM inference. + The algorithm is enabled by setting the ``target_sparsity_by_scope`` option in + nncf.compress_weights() and supports Torch models only. + + + **OpenVINO Tokenizers** + + * The following is now supported: + + * Full Regex syntax with the PCRE2 library for text normalization and splitting. + * Left padding side for all tokenizer types. + + * GLM-4 tokenizer support, as well as detokenization support for Phi-3 and Gemma have been + improved. + + + + + + **Other Changes and Known Issues** + + *Jupyter Notebooks* + + * `Stable Diffusion V3 `__ + * `Depth Anything V2 `__ + * `RAG System with LLamaIndex `__ + * `Image Synthesis with Pixart `__ + * `Function calling LLM agent with Qwen-Agent `__ + * `Jina-CLIP `__ + * `MiniCPM -V2 Visual Language Assistant `__ + * `OpenVINO XAI: first steps `__ + * `OpenVINO XAI: deep dive `__ + * `LLM Agent with LLamaIndex `__ + * `Stable Audio `__ + * `Phi-3-vision `__ + + *OpenVINO.GenAI* + + * Performance counters have been added. + * Preview support for NPU is now available. + + *Hugging Face* + + OpenVINO pre-optimized models are now available on Hugging Face: + + * Phi-3-mini-128k-instruct ( + `INT4 `__, + `INT8 `__, + `FP16 `__) + * Mistral-7B-Instruct-v0.2 ( + `INT4 `__, + `INT8 `__, + `FP16 `__) + * Mixtral-8x7b-Instruct-v0.1 ( + `INT4 `__, + `INT8 `__) + * LCM_Dreamshaper_v7 ( + `INT8 `__, + `FP16 `__) + * starcoder2-7b ( + `INT4 `__, + `INT8 `__, + `FP16 `__) + * For all the models see `HuggingFace `__ + + + + + *Known Issues* + + | **Component: OpenVINO.GenAI** + | ID: 148308 + | Description: + | The OpenVINO.GenAI archive distribution doesn't include debug libraries for OpenVINO + Tokenizers and OpenVINO.GenAI. + + | **Component: GPU** + | ID: 146283 + | Description: + | For some LLM models, longer prompts, such as several thousand tokens, may result in + decreased accuracy on the GPU plugin. + | Workaround: + | It is recommended to run the model in the FP32 precision to avoid the issue. + + + + + +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. dropdown:: 2024.2 - 17 June 2024 :animate: fade-in-slide-down @@ -522,6 +780,8 @@ Previous 2024 releases +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. dropdown:: 2024.1 - 24 April 2024 :animate: fade-in-slide-down @@ -1041,8 +1301,18 @@ Discontinued in 2024 Deprecated and to be removed in the future -------------------------------------------- +* The macOS x86_64 debug bins will no longer be provided with the OpenVINO toolkit, starting + with OpenVINO 2024.5. +* Python 3.8 is now considered deprecated, and it will not be available beyond the 2024.4 + OpenVINO version. +* dKMB support is now considered deprecated and will be fully removed with OpenVINO 2024.5 +* Intel® Streaming SIMD Extensions (Intel® SSE) will be supported in source code form, but not + enabled in the binary package by default, starting with OpenVINO 2025.0 +* The openvino-nightly PyPI module will soon be discontinued. End-users should proceed with the + Simple PyPI nightly repo instead. More information in + `Release Policy `__. * The OpenVINO™ Development Tools package (pip install openvino-dev) will be removed from - installation options and distribution channels beginning with OpenVINO 2025. + installation options and distribution channels beginning with OpenVINO 2025.0. * Model Optimizer will be discontinued with OpenVINO 2025.0. Consider using the :doc:`new conversion methods <../openvino-workflow/model-preparation/convert-model-to-ir>` instead. For more details, see the @@ -1165,26 +1435,20 @@ are available on request. Intel technologies' features and benefits depend on system configuration and may require enabled hardware, software or service activation. Learn more at -`http://www.intel.com/ `__ +`www.intel.com `__ or from the OEM or retailer. No computer system can be absolutely secure. -Intel, Atom, Arria, Core, Movidius, Xeon, OpenVINO, and the Intel logo are trademarks +Intel, Atom, Core, Xeon, OpenVINO, and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. -OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos - Other names and brands may be claimed as the property of others. Copyright © 2024, Intel Corporation. All rights reserved. For more complete information about compiler optimizations, see our Optimization Notice. -Performance varies by use, configuration and other factors. Learn more at -`www.Intel.com/PerformanceIndex `__. - - - +Performance varies by use, configuration and other factors. diff --git a/docs/articles_en/about-openvino/release-notes-openvino/system-requirements.rst b/docs/articles_en/about-openvino/release-notes-openvino/system-requirements.rst index a224bf39427fab..d44e57bf7215c2 100644 --- a/docs/articles_en/about-openvino/release-notes-openvino/system-requirements.rst +++ b/docs/articles_en/about-openvino/release-notes-openvino/system-requirements.rst @@ -24,7 +24,7 @@ CPU * Intel Atom® processor with Intel® SSE4.2 support * Intel® Pentium® processor N4200/5, N3350/5, N3450/5 with Intel® HD Graphics * 6th - 14th generation Intel® Core™ processors - * Intel® Core™ Ultra (codename Meteor Lake) + * Intel® Core™ Ultra Series 1 and Series 2 (Windows only) * 1st - 5th generation Intel® Xeon® Scalable Processors * ARM CPUs with armv7a and higher, ARM64 CPUs with arm64-v8a and higher, Apple® Mac with Apple silicon @@ -33,12 +33,11 @@ CPU * Ubuntu 24.04 long-term support (LTS), 64-bit (Kernel 6.8+) (preview support) * Ubuntu 22.04 long-term support (LTS), 64-bit (Kernel 5.15+) * Ubuntu 20.04 long-term support (LTS), 64-bit (Kernel 5.15+) - * Ubuntu 18.04 long-term support (LTS) with limitations, 64-bit (Kernel 5.4+) * Windows 10, 64-bit * Windows 11, 64-bit * macOS 12.6 and above, 64-bit and ARM64 * CentOS 7 - * Red Hat Enterprise Linux 8, 64-bit + * Red Hat Enterprise Linux 9.3-9.4, 64-bit * openSUSE Tumbleweed, 64-bit and ARM64 * Ubuntu 20.04 ARM64 @@ -60,13 +59,13 @@ GPU .. tab-item:: Supported Operating Systems - * Ubuntu 24.04 long-term support (LTS), 64-bit (preview support) + * Ubuntu 24.04 long-term support (LTS), 64-bit * Ubuntu 22.04 long-term support (LTS), 64-bit * Ubuntu 20.04 long-term support (LTS), 64-bit * Windows 10, 64-bit * Windows 11, 64-bit * CentOS 7 - * Red Hat Enterprise Linux 8, 64-bit + * Red Hat Enterprise Linux 9.3-9.4, 64-bit .. tab-item:: Additional considerations @@ -78,10 +77,8 @@ GPU * While this release of OpenVINO supports Ubuntu 20.04, the driver stack for Intel discrete graphic cards does not fully support Ubuntu 20.04. We recommend using Ubuntu 22.04 and later when executing on discrete graphics. - * The following minimum (i.e., used for old hardware) OpenCL™ driver's versions - were used during OpenVINO internal validation: 22.43 for Ubuntu 22.04, 21.48 - for Ubuntu 20.04 and 21.49 for Red Hat Enterprise Linux 8 (some hardware may require - higher versions of drivers). + * OpenCL™ driver versions required may vary, depending on hardware and operating Systems + used. Consult driver documentation to select the best version for your setup. Intel® Neural Processing Unit ################################ @@ -110,14 +107,14 @@ Operating systems and developer environment .. tab-item:: Linux OS - * Ubuntu 24.04 with Linux kernel 6.8+ (preview support) + * Ubuntu 24.04 with Linux kernel 6.8+ * Ubuntu 22.04 with Linux kernel 5.15+ * Ubuntu 20.04 with Linux kernel 5.15+ - * Red Hat Enterprise Linux 8 with Linux kernel 5.4 + * Red Hat Enterprise Linux 9.3-9.4 with Linux kernel 5.4 Build environment components: - * Python* 3.8-3.11 + * Python 3.8-3.12 * `Intel® HD Graphics Driver `__ required for inference on GPU * GNU Compiler Collection and CMake are needed for building from source: @@ -135,7 +132,7 @@ Operating systems and developer environment * `Microsoft Visual Studio 2019 `__ * `CMake `__ 3.16 or higher - * `Python `__ 3.8-3.11 + * `Python `__ 3.8-3.12 * `Intel® HD Graphics Driver `__ required for inference on GPU @@ -147,13 +144,15 @@ Operating systems and developer environment * `Xcode `__ 10.3 * `CMake `__ 3.13 or higher - * `Python `__ 3.8-3.11 + * `Python `__ 3.8-3.12 - .. tab-item:: DL frameworks versions: + .. tab-item:: DL framework versions: - * TensorFlow 1.15.5, 2.16.1 - * ONNX 1.15 + * TensorFlow 1.15.5 - 2.17 + * PyTorch 2.4 + * ONNX 1.16 * PaddlePaddle 2.6 + * JAX 0.4.31 (via a path of jax2tf with native_serialization=False) This package can be installed on other versions of DL Frameworks but only the versions specified here are fully validated. @@ -165,45 +164,5 @@ Operating systems and developer environment - -Legal Information -+++++++++++++++++++++++++++++++++++++++++++++ - -You may not use or facilitate the use of this document in connection with any infringement -or other legal analysis concerning Intel products described herein. - -You agree to grant Intel a non-exclusive, royalty-free license to any patent claim -thereafter drafted which includes subject matter disclosed herein. - -No license (express or implied, by estoppel or otherwise) to any intellectual property -rights is granted by this document. - -All information provided here is subject to change without notice. Contact your Intel -representative to obtain the latest Intel product specifications and roadmaps. - -The products described may contain design defects or errors known as errata which may -cause the product to deviate from published specifications. Current characterized errata -are available on request. - -Intel technologies' features and benefits depend on system configuration and may require -enabled hardware, software or service activation. Learn more at -`http://www.intel.com/ `__ -or from the OEM or retailer. - -No computer system can be absolutely secure. - -Intel, Atom, Arria, Core, Movidius, Xeon, OpenVINO, and the Intel logo are trademarks -of Intel Corporation in the U.S. and/or other countries. - -OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos - -Other names and brands may be claimed as the property of others. - -Copyright © 2024, Intel Corporation. All rights reserved. - -For more complete information about compiler optimizations, see our Optimization Notice. - -Performance varies by use, configuration and other factors. Learn more at -`www.Intel.com/PerformanceIndex `__. - - +The claims stated here may not apply to all use cases and setups. See +:doc:`Legal notices and terms of use <../additional-resources/terms-of-use>` for more information. \ No newline at end of file diff --git a/docs/sphinx_setup/api/api_reference.rst b/docs/sphinx_setup/api/api_reference.rst index ac59abca93db7b..acf816364ca0fc 100644 --- a/docs/sphinx_setup/api/api_reference.rst +++ b/docs/sphinx_setup/api/api_reference.rst @@ -4,7 +4,8 @@ API Reference ------------- .. meta:: - :description: Explore the features of Python, C, C++ APIs in Intel® Distribution of OpenVINO™ Toolkit. + :description: Explore the features of Python, C, C++, and Node.js APIs in the Intel® + Distribution of OpenVINO™ Toolkit. .. toctree:: :maxdepth: 2 diff --git a/docs/sphinx_setup/api/nodejs_api/nodejs_api.rst b/docs/sphinx_setup/api/nodejs_api/nodejs_api.rst index f71424d05294dd..995ceb3d29c003 100644 --- a/docs/sphinx_setup/api/nodejs_api/nodejs_api.rst +++ b/docs/sphinx_setup/api/nodejs_api/nodejs_api.rst @@ -37,6 +37,18 @@ For more details, refer to the `__ + +API Development +##################### + +OpenVINO 2024.4 has introduced the following methods: + +- Model.clone() +- Model.getoutputelementtype() +- CompiledModel getProperty() +- CompiledModel.setProperty() + + Additional Resources ##################### From 6c9d7962aa79d6ade904934f07affd51e12fc800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hubert=20B=C5=82aszczyk?= <56601011+hub-bla@users.noreply.github.com> Date: Wed, 18 Sep 2024 20:12:48 +0200 Subject: [PATCH 07/49] [JAX FE]:Support jax.lax.ge and jax.lax.gt operation for JAX (#26640) ### Details: - support jax.lax.ge and jax.lax.gt operation - create unit tests ### Tickets: - [None](https://github.com/openvinotoolkit/openvino/issues/26572) --------- Co-authored-by: Roman Kazantsev --- src/frontends/jax/src/op/binary_op.cpp | 34 ++++++++++++ src/frontends/jax/src/op_table.cpp | 5 ++ .../jax_tests/test_binary_comparison.py | 55 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 src/frontends/jax/src/op/binary_op.cpp create mode 100644 tests/layer_tests/jax_tests/test_binary_comparison.py diff --git a/src/frontends/jax/src/op/binary_op.cpp b/src/frontends/jax/src/op/binary_op.cpp new file mode 100644 index 00000000000000..9fd5cc12525b89 --- /dev/null +++ b/src/frontends/jax/src/op/binary_op.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "openvino/frontend/jax/node_context.hpp" +#include "openvino/op/greater.hpp" +#include "openvino/op/greater_eq.hpp" +#include "utils.hpp" + +using namespace std; +using namespace ov; +using namespace ov::op; + +namespace ov { +namespace frontend { +namespace jax { +namespace op { + +template +OutputVector translate_binary_op(const NodeContext& context) { + num_inputs_check(context, 2, 2); + auto lhs = context.get_input(0); + auto rhs = context.get_input(1); + Output binary_op = make_shared(lhs, rhs); + return {binary_op}; +} + +template OutputVector translate_binary_op(const NodeContext& context); +template OutputVector translate_binary_op(const NodeContext& context); + +} // namespace op +} // namespace jax +} // namespace frontend +} // namespace ov diff --git a/src/frontends/jax/src/op_table.cpp b/src/frontends/jax/src/op_table.cpp index f7db07afe67f36..c0bcb85c724dbb 100644 --- a/src/frontends/jax/src/op_table.cpp +++ b/src/frontends/jax/src/op_table.cpp @@ -8,6 +8,8 @@ #include "openvino/op/divide.hpp" #include "openvino/op/erf.hpp" #include "openvino/op/exp.hpp" +#include "openvino/op/greater.hpp" +#include "openvino/op/greater_eq.hpp" #include "openvino/op/maximum.hpp" #include "openvino/op/multiply.hpp" #include "openvino/op/reduce_max.hpp" @@ -29,6 +31,7 @@ namespace op { template \ OutputVector op(const ov::frontend::jax::NodeContext& node) +OP_T_CONVERTER(translate_binary_op); OP_CONVERTER(translate_broadcast_in_dim); OP_CONVERTER(translate_concatenate); OP_CONVERTER(translate_constant); @@ -62,6 +65,8 @@ const std::map get_supported_ops_jaxpr() { {"dot_general", op::translate_dot_general}, {"erf", op::translate_1to1_match_1_input}, {"exp", op::translate_1to1_match_1_input}, + {"ge", op::translate_binary_op}, + {"gt", op::translate_binary_op}, {"integer_pow", op::translate_integer_pow}, {"max", op::translate_1to1_match_2_inputs}, {"mul", op::translate_1to1_match_2_inputs}, diff --git a/tests/layer_tests/jax_tests/test_binary_comparison.py b/tests/layer_tests/jax_tests/test_binary_comparison.py new file mode 100644 index 00000000000000..0a85b1e4a551c2 --- /dev/null +++ b/tests/layer_tests/jax_tests/test_binary_comparison.py @@ -0,0 +1,55 @@ +# Copyright (C) 2018-2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np +import pytest +from jax import lax +from jax import numpy as jnp + +from jax_layer_test_class import JaxLayerTest + +rng = np.random.default_rng(56342) + +class TestBinaryComparison(JaxLayerTest): + def _prepare_input(self): + if np.issubdtype(self.input_type, np.floating): + x = rng.uniform(-5.0, 5.0, self.input_shapes[0]).astype(self.input_type) + y = rng.uniform(-5.0, 5.0, self.input_shapes[1]).astype(self.input_type) + elif np.issubdtype(self.input_type, np.signedinteger): + x = rng.integers(-8, 8, self.input_shapes[0]).astype(self.input_type) + y = rng.integers(-8, 8, self.input_shapes[1]).astype(self.input_type) + else: + x = rng.integers(0, 8, self.input_shapes[0]).astype(self.input_type) + y = rng.integers(0, 8, self.input_shapes[1]).astype(self.input_type) + x = jnp.array(x) + y = jnp.array(y) + return [x, y] + + def create_model(self, input_shapes, binary_op, input_type): + reduce_map = { + 'ge': lax.ge, + 'gt': lax.gt + } + + self.input_shapes = input_shapes + self.input_type = input_type + + def jax_binary(x, y): + return reduce_map[binary_op](x, y) + + return jax_binary, None, binary_op + + @pytest.mark.parametrize('input_shapes', [[[5], [1]], [[1], [5]], [[2, 2, 4], [1, 1, 4]], + [[5, 10], [5, 10]], [[2, 4, 6], [1, 4, 6]], + [[5, 8, 10, 128], [5, 1, 10, 128]]]) + @pytest.mark.parametrize('binary_op', ['ge', 'gt']) + @pytest.mark.parametrize('input_type', [np.int8, np.uint8, np.int16, np.uint16, + np.int32, np.uint32, np.int64, np.uint64, + np.float16, np.float32, np.float64]) + @pytest.mark.nightly + @pytest.mark.precommit + @pytest.mark.precommit_jax_fe + def test_binary(self, input_shapes, binary_op, input_type, + ie_device, precision, ir_version): + self._test(*self.create_model(input_shapes, binary_op, input_type), + ie_device, precision, ir_version) From 4ed5ed09c0c49b581cf5e8ee8d3b34d416d5c15b Mon Sep 17 00:00:00 2001 From: Roman Kazantsev Date: Wed, 18 Sep 2024 22:13:00 +0400 Subject: [PATCH 08/49] [TF FE][SDL] Fix performance inefficiencies (#26644) **Details:** Fix performance inefficiencies **Ticket:** 123298 Signed-off-by: Kazantsev, Roman --- src/frontends/tensorflow/src/decoder_proto.cpp | 4 ++-- src/frontends/tensorflow_common/include/helper_ops/merge.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/frontends/tensorflow/src/decoder_proto.cpp b/src/frontends/tensorflow/src/decoder_proto.cpp index 157dca36f42202..b28161faa1af83 100644 --- a/src/frontends/tensorflow/src/decoder_proto.cpp +++ b/src/frontends/tensorflow/src/decoder_proto.cpp @@ -150,7 +150,7 @@ void parse_producer_name(const std::string& producer_port_name, "Port id is not specified or not a number. Value: ", port_id); producer_output_port_index = std::stoi(port_id); - producer_output_port_name = port_name; + producer_output_port_name = std::move(port_name); return; } else if (first_colon != std::string::npos) { // just one colon case @@ -186,7 +186,7 @@ std::vector<::tensorflow::AttrValue> DecoderProto::decode_attribute_helper(const auto attr_map = m_node_def->attr(); if (attr_map.contains(name)) { auto value = m_node_def->attr().at(name); - return {value}; + return {std::move(value)}; } else { return {}; } diff --git a/src/frontends/tensorflow_common/include/helper_ops/merge.hpp b/src/frontends/tensorflow_common/include/helper_ops/merge.hpp index 045c651a8714ce..2a04d12ba4190e 100644 --- a/src/frontends/tensorflow_common/include/helper_ops/merge.hpp +++ b/src/frontends/tensorflow_common/include/helper_ops/merge.hpp @@ -84,7 +84,7 @@ class Merge : public InternalOperation { cf_marker_exists(this_node), "[TensorFlow Frontend] internal error: Switch node has not set conditional flow marker"); auto cf_marker = get_cf_marker(this_node); - for (auto eliminated_marker : cf_marker.merge_eliminated_markers) { + for (const auto& eliminated_marker : cf_marker.merge_eliminated_markers) { resulted_indices.push_back(eliminated_marker.first); } return resulted_indices; From 327f8e224d97559f9392c4adc7621cb139e201f9 Mon Sep 17 00:00:00 2001 From: David Nam Date: Thu, 19 Sep 2024 11:54:20 +0800 Subject: [PATCH 09/49] [GPU] Support different input and output data type in convolution ref (#26501) ### Details: - For fp model, some convolutions may not be compressed to fp16 depending on the transformation policy and those convolutions may have the fused node which is of fp16. Then convolution node input data type will be fp32 while output data type fp16. Convolution needs to support this case. ### Tickets: - 147689 --- .../convolution/convolution_kernel_ref.cpp | 3 +- .../unit/test_cases/convolution_gpu_test.cpp | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_ref.cpp b/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_ref.cpp index 7ddc42b6c152b0..776ef796ab92b5 100644 --- a/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_ref.cpp +++ b/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_ref.cpp @@ -123,7 +123,8 @@ bool ConvolutionKernel_Ref::Validate(const Params& params) const { // int8/uint8 inputs (quantization case) require additional checks // require some additional checks. - if (input_type == output_type && input_type != Datatype::UINT8 && input_type != Datatype::INT8) + if (input_type != Datatype::UINT8 && input_type != Datatype::INT8 && + output_type != Datatype::UINT8 && output_type != Datatype::INT8) return true; // (u)int8 input + fp weights diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp index ce07bffe3666f3..5939e8066b9537 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -1639,6 +1640,47 @@ TEST(convolution_f32_fw_gpu, basic_convolution) { } } +TEST(convolution_f32_fw_gpu, input_f32_output_f16_dynamic_ref_kernel) { + auto& engine = get_test_engine(); + + auto in_layout = layout{ov::PartialShape::dynamic(4), data_types::f32, format::bfyx}; + auto input = engine.allocate_memory({ data_types::f32, format::bfyx, { 1, 1, 5, 4 } }); + auto weights = engine.allocate_memory({ data_types::i8, format::bfyx, { 1, 1, 3, 2 } }); + auto biases = engine.allocate_memory({ data_types::f32, format::bfyx, { 1, 1, 1, 1 } }); + auto eltwise_data = engine.allocate_memory({ data_types::f32, format::bfyx, { 1, 1, 1, 1 } }); + + set_values(input, { + 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 2.0f, 2.0f, 3.0f, + 4.0f, 6.0f, 3.0f, 3.0f, + 3.0f, 5.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f } + ); + + topology topology( + input_layout("input", in_layout), + data("weights", weights), + data("biases", biases), + data("eltwise_data", eltwise_data), + convolution( "conv", input_info("input"), "weights", "biases", 1, {2, 1}, {1, 1}, {0, 0}, {0, 0}, false), + eltwise("eltwise", { input_info("conv"), input_info("eltwise_data") }, eltwise_mode::prod, data_types::f16), + permute("permute", input_info("eltwise"), {0, 1, 2, 3})); + + ExecutionConfig config = get_test_default_config(engine); + ov::intel_gpu::ImplementationDesc conv_impl_ref = { format::bfyx, "convolution_gpu_ref", impl_types::ocl }; + config.set_property(ov::intel_gpu::force_implementations(ov::intel_gpu::ImplForcingMap{ { "conv", conv_impl_ref } })); + config.set_property(ov::intel_gpu::allow_new_shape_infer(true)); + + network network(engine, topology, config); + network.set_input_data("input", input); + + auto outputs = network.execute(); + + ASSERT_EQ(outputs.size(), size_t(1)); + ASSERT_FALSE(has_node(*network.get_program(), "eltwise")); + ASSERT_EQ(outputs.at("permute").get_layout().data_type, data_types::f16); +} + TEST(convolution_f32_fw_gpu, convolution_big_size_weights) { auto& engine = get_test_engine(); From bdc01107d989310c6efa7dd61c7fa5743c971f1d Mon Sep 17 00:00:00 2001 From: Taylor Yeonbok Lee Date: Thu, 19 Sep 2024 15:59:57 +0900 Subject: [PATCH 10/49] [GPU] Fuse more eltwises for horizontally fused FC (#26599) ### Details: - Target pattern: FCs to be fused by horizontal fusing pass and they have Add users which can be regarded as bias add. Here if we fuse the FCs as is, the fused pattern will be fused_fc -> VariadicSplit -> Add so the Adds cannot be fused to the FCs. - This PR sets such Add users as the FC's bias inputs so that the fused FC can handle them as fused bias. ### Tickets: - CVS-151841 --- .../transformations/fc_horizontal_fusion.cpp | 140 ++++++++++++++---- .../horizontal_fc_fusion_test.cpp | 80 ++++++++++ 2 files changed, 192 insertions(+), 28 deletions(-) diff --git a/src/plugins/intel_gpu/src/plugin/transformations/fc_horizontal_fusion.cpp b/src/plugins/intel_gpu/src/plugin/transformations/fc_horizontal_fusion.cpp index a5ec6c0060ef81..a0651b484e2431 100644 --- a/src/plugins/intel_gpu/src/plugin/transformations/fc_horizontal_fusion.cpp +++ b/src/plugins/intel_gpu/src/plugin/transformations/fc_horizontal_fusion.cpp @@ -13,6 +13,7 @@ #include "openvino/pass/pattern/op/wrap_type.hpp" #include "transformations/utils/utils.hpp" #include "intel_gpu/op/placeholder.hpp" +#include "intel_gpu/runtime/debug_configuration.hpp" namespace ov { namespace intel_gpu { @@ -40,13 +41,12 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { return std::dynamic_pointer_cast(node); }; // Three FCs connected to the same input - const int num_fcs_to_fuse = 3; + const int min_num_fcs_to_fuse = 3; + const int max_num_fcs_to_fuse = 3; const auto& fc = std::dynamic_pointer_cast(output.get_node_shared_ptr()); const auto& input = fc->get_input_node_shared_ptr(0); if (!fc->get_input_partial_shape(0).is_dynamic()) return false; - if (input->get_users().size() < num_fcs_to_fuse) - return false; size_t user_fc_count = 0; int32_t nodes_with_bias = 0; int32_t nodes_with_zp = 0; @@ -67,8 +67,9 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { } user_fc_count++; } - return (user_fc_count == num_fcs_to_fuse) && (nodes_with_bias == num_fcs_to_fuse || nodes_with_bias == 0) && - (nodes_with_zp == num_fcs_to_fuse || nodes_with_zp == 0); + return (user_fc_count >= min_num_fcs_to_fuse) && (user_fc_count <= max_num_fcs_to_fuse) && + (nodes_with_bias == static_cast(user_fc_count) || nodes_with_bias == 0) && + (nodes_with_zp == static_cast(user_fc_count) || nodes_with_zp == 0); }; auto target_fc = wrap_type(is_target_pattern); @@ -78,6 +79,7 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { auto m_fc = pattern_map.at(target_fc).get_node_shared_ptr(); auto input_node = m_fc->get_input_node_shared_ptr(0); std::vector> fc_nodes; + ov::NodeVector fc_nodes_vec; ov::NodeVector weight_nodes; ov::NodeVector scale_nodes; ov::NodeVector bias_nodes; @@ -87,6 +89,7 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { if (fc_user) { OPENVINO_ASSERT(fc_user->inputs().size() >= 4, "Compressed FC should have at least 4 inputs"); fc_nodes.push_back(fc_user); + fc_nodes_vec.push_back(fc_user); weight_nodes.push_back(fc_user->get_input_node_shared_ptr(1)); if (!std::dynamic_pointer_cast(fc_user->get_input_node_shared_ptr(2))) bias_nodes.push_back(fc_user->get_input_node_shared_ptr(2)); @@ -95,33 +98,109 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { zp_nodes.push_back(fc_user->get_input_node_shared_ptr(4)); } } - auto weight_dtype = fc_nodes[0]->get_input_element_type(1); - auto k_size = fc_nodes[0]->get_input_shape(1)[fc_nodes[0]->get_input_shape(1).size() - 1]; + // fc weight is already transposed to [N, K] + const size_t weight_idx = 1; + if (fc_nodes[0]->get_input_shape(weight_idx).size() != 2) + return false; + const size_t n_axis = 0; + const size_t k_axis = 1; + auto weight_dtype = fc_nodes[0]->get_input_element_type(weight_idx); + auto k_size = fc_nodes[0]->get_input_shape(weight_idx)[k_axis]; std::vector orig_n_sizes; // merge weights, scale, zp for (auto fc : fc_nodes) { - if (k_size != fc->get_input_shape(1)[fc->get_input_shape(1).size() - 1]) + if (k_size != fc->get_input_shape(weight_idx)[k_axis]) return false; - if (weight_dtype != fc->get_input_element_type(1)) + if (weight_dtype != fc->get_input_element_type(weight_idx)) return false; - orig_n_sizes.push_back(fc->get_input_shape(1)[fc->get_input_shape(1).size() - 2]); + orig_n_sizes.push_back(fc->get_input_shape(weight_idx)[n_axis]); + } + ov::OutputVector weight_nodes_as_output_vector; + for (size_t i = 0; i < weight_nodes.size(); ++i) { + weight_nodes_as_output_vector.push_back(weight_nodes[i]); } - auto weight_nodes_as_output_vector = ov::OutputVector{weight_nodes[0], weight_nodes[1], weight_nodes[2]}; auto fused_weight = std::make_shared(weight_nodes_as_output_vector, 0); - fused_weight->set_friendly_name(weight_nodes[0]->get_friendly_name() + "_fused"); - ov::copy_runtime_info({weight_nodes[0], weight_nodes[1], weight_nodes[2]}, fused_weight); + fused_weight->set_friendly_name(weight_nodes[0]->get_friendly_name() + "_fused_weight"); + ov::copy_runtime_info(weight_nodes, fused_weight); + + ov::OutputVector scales_as_output_vector; + for (size_t i = 0; i < scale_nodes.size(); ++i) { + scales_as_output_vector.push_back(scale_nodes[i]); + } - auto scale_nodes_as_output_vector = ov::OutputVector{scale_nodes[0], scale_nodes[1], scale_nodes[2]}; - auto fused_scale = std::make_shared(scale_nodes_as_output_vector, 0); - fused_scale->set_friendly_name(scale_nodes[0]->get_friendly_name() + "_fused"); - ov::copy_runtime_info({scale_nodes[0], scale_nodes[1], scale_nodes[2]}, fused_scale); + auto fused_scale = std::make_shared(scales_as_output_vector, 0); + fused_scale->set_friendly_name(scale_nodes[0]->get_friendly_name() + "_fused_scale"); + ov::copy_runtime_info(scale_nodes, fused_scale); + // check if all of the fc has a bias user, set it as bias input + size_t n_bias_users = 0; + for (auto fc : fc_nodes) { + if (fc->get_users().size() == 1 + && fc->get_users()[0]->get_type_info() == ov::opset1::Add::get_type_info_static() + && ov::is_type(fc->get_users()[0]->inputs()[1].get_source_output().get_node())) { + n_bias_users++; + } + } + size_t bias_concat_axis = 0; + if (bias_nodes.empty() && n_bias_users == fc_nodes.size()) { + // Set Add user as bias input to FC + for (size_t i = 0; i < fc_nodes.size(); ++i) { + auto orig_fc = fc_nodes[i]; + auto bias_node = orig_fc->get_users()[0]; + auto bias_const_ptr = orig_fc->get_users()[0]->get_input_node_shared_ptr(1); + bias_nodes.push_back(bias_const_ptr); + } + // Check shape and find axis + const auto bias_rank = bias_nodes[0]->get_output_partial_shape(0).size(); + size_t non_zero_diffs = 0; + for (size_t i = 0; i < bias_rank; ++i) { + std::unordered_set dims; + for (size_t j = 0; j < bias_nodes.size(); ++j) { + dims.insert(bias_nodes[j]->get_output_partial_shape(0)[i].get_length()); + } + if (dims.size() > 1) { + bias_concat_axis = i; + non_zero_diffs++; + } + } + if (non_zero_diffs <= 1) { + for (size_t i = 0; i < fc_nodes.size(); ++i) { + auto orig_fc = fc_nodes[i]; + auto bias_node = orig_fc->get_users()[0]; + GPU_DEBUG_TRACE_DETAIL << "Set Add op user " << bias_node->get_friendly_name() << " as the FC " + << orig_fc->get_friendly_name() << "'s bias input" << std::endl; + auto bias_const = orig_fc->get_users()[0]->input_value(1); + auto orig_users_of_bias_user = bias_node->get_users(); + ov::OutputVector fc_inputs = orig_fc->input_values(); + fc_inputs[2] = bias_const; + auto new_fc = orig_fc->clone_with_new_inputs(fc_inputs); + new_fc->set_friendly_name(orig_fc->get_friendly_name() + "_with_bias"); + ov::copy_runtime_info(orig_fc, new_fc); + for (auto u : orig_users_of_bias_user) { + for (size_t idx = 0; idx < u->inputs().size(); ++idx) { + if (u->get_input_node_shared_ptr(idx) == bias_node) { + u->input(idx).replace_source_output(new_fc->output(0)); + } + } + } + fc_nodes[i] = std::dynamic_pointer_cast(new_fc); + bias_node->clear_control_dependencies(); + orig_fc->clear_control_dependencies(); + } + } else { + // biases cannot be fusable. Not to set users as bias input + bias_nodes.clear(); + } + } std::shared_ptr fused_bias; - if (bias_nodes.size() == 3) { - auto bias_nodes_as_output_vector = ov::OutputVector{bias_nodes[0], bias_nodes[1], bias_nodes[2]}; - fused_bias = std::make_shared(bias_nodes_as_output_vector, 0); - fused_bias->set_friendly_name(bias_nodes[0]->get_friendly_name() + "_fused"); - ov::copy_runtime_info({bias_nodes[0], bias_nodes[1], bias_nodes[2]}, fused_bias); + if (bias_nodes.size() == fc_nodes.size()) { + ov::OutputVector bias_nodes_as_output_vector; + for (size_t i = 0; i < bias_nodes.size(); ++i) { + bias_nodes_as_output_vector.push_back(bias_nodes[i]); + } + fused_bias = std::make_shared(bias_nodes_as_output_vector, bias_concat_axis); + fused_bias->set_friendly_name(bias_nodes[0]->get_friendly_name() + "_fused_bias"); + ov::copy_runtime_info(bias_nodes, fused_bias); } else { fused_bias = std::make_shared(); } @@ -161,9 +240,12 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { return false; } } else { - auto zp_nodes_as_output_vector = ov::OutputVector{zp_nodes[0], zp_nodes[1], zp_nodes[2]}; + ov::OutputVector zp_nodes_as_output_vector; + for (size_t i = 0; i < zp_nodes.size(); ++i) { + zp_nodes_as_output_vector.push_back(zp_nodes[i]); + } fused_zps = std::make_shared(zp_nodes_as_output_vector, 0); - fused_zps->set_friendly_name(zp_nodes[0]->get_friendly_name() + "_fused"); + fused_zps->set_friendly_name(zp_nodes[0]->get_friendly_name() + "_fused_zps"); } } // Create new fc with merged weights, bias, scale, zp @@ -182,16 +264,17 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { fused_scale, fc_nodes[0]->get_output_type()); - auto new_fc_name = fc_nodes[0]->get_friendly_name() + "_fused"; + auto new_fc_name = fc_nodes[0]->get_friendly_name() + "_fused_" + std::to_string(fc_nodes.size()) + "FCs"; new_fc->set_friendly_name(new_fc_name); - copy_runtime_info({fc_nodes[0], fc_nodes[1], fc_nodes[2]}, new_fc); + copy_runtime_info(fc_nodes_vec, new_fc); // Split output and connect to the orig users auto split_name = fc_nodes[0]->get_friendly_name() + "_split"; auto axis_const = ov::op::v0::Constant::create(ov::element::i64, ov::Shape{1}, {new_fc->get_output_partial_shape(0).size() - 1}); - auto split_const = ov::op::v0::Constant::create(ov::element::i64, ov::Shape{3}, orig_n_sizes); + auto split_size = fc_nodes.size(); + auto split_const = ov::op::v0::Constant::create(ov::element::i64, ov::Shape{split_size}, orig_n_sizes); auto output_split = std::make_shared(new_fc, axis_const, split_const); - copy_runtime_info({fc_nodes[0], fc_nodes[1], fc_nodes[2]}, output_split); + copy_runtime_info(fc_nodes_vec, output_split); output_split->set_friendly_name(split_name); for (size_t i = 0; i < fc_nodes.size(); ++i) { auto org_fc = fc_nodes[i]; @@ -204,6 +287,7 @@ FullyConnectedHorizontalFusion::FullyConnectedHorizontalFusion() { } org_fc->clear_control_dependencies(); } + GPU_DEBUG_TRACE_DETAIL << "Created a new fused FC " << new_fc_name << std::endl; return true; }; diff --git a/src/plugins/intel_gpu/tests/unit/transformations/horizontal_fc_fusion_test.cpp b/src/plugins/intel_gpu/tests/unit/transformations/horizontal_fc_fusion_test.cpp index fababa0c20df38..b94ba03a7565e8 100644 --- a/src/plugins/intel_gpu/tests/unit/transformations/horizontal_fc_fusion_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/transformations/horizontal_fc_fusion_test.cpp @@ -17,6 +17,7 @@ #include "openvino/op/concat.hpp" #include "openvino/op/variadic_split.hpp" #include "openvino/op/reshape.hpp" +#include "openvino/op/add.hpp" #include "openvino/pass/manager.hpp" #include @@ -162,6 +163,85 @@ TEST_F(TransformationTestsF, FullyConnectedHorizontalFusion_bias_zp) { comparator.enable(FunctionsComparator::ATTRIBUTES); } } + +TEST_F(TransformationTestsF, FullyConnectedHorizontalFusion_eltwise_bias_zp) { + std::vector pattern = {7, -1}; + { + auto input = std::make_shared(ov::element::f16, ov::PartialShape{-1, 7, 4096}); + auto weight1 = std::make_shared(ov::element::u4, ov::Shape{1024, 4096}); + weight1->set_friendly_name("weight1_1"); + auto weight2 = std::make_shared(ov::element::u4, ov::Shape{512, 4096}); + weight2->set_friendly_name("weight1_2"); + auto weight3 = std::make_shared(ov::element::u4, ov::Shape{128, 4096}); + weight3->set_friendly_name("weight1_3"); + + auto bias1 = std::make_shared(); + auto bias2 = std::make_shared(); + auto bias3 = std::make_shared(); + + auto scale1 = std::make_shared(ov::element::f16, ov::Shape{1024, 32}); + auto scale2 = std::make_shared(ov::element::f16, ov::Shape{512, 32}); + auto scale3 = std::make_shared(ov::element::f16, ov::Shape{128, 32}); + auto fc1 = std::make_shared(input, weight1, bias1, scale1); + fc1->set_friendly_name("fc1"); + auto fc2 = std::make_shared(input, weight2, bias2, scale2); + auto fc3 = std::make_shared(input, weight3, bias3, scale3); + + auto add_input1 = std::make_shared(ov::element::f16, ov::Shape{1, 1024}); + auto add1 = std::make_shared(fc1, add_input1); + + auto add_input2 = std::make_shared(ov::element::f16, ov::Shape{1, 512}); + auto add2 = std::make_shared(fc2, add_input2); + + auto add_input3 = std::make_shared(ov::element::f16, ov::Shape{1, 128}); + auto add3 = std::make_shared(fc3, add_input3); + + auto reshape_pattern = std::make_shared(ov::element::i64, ov::Shape{2}, pattern); + auto reshape1 = std::make_shared(add1, reshape_pattern, true); + auto reshape2 = std::make_shared(add2, reshape_pattern, true); + auto reshape3 = std::make_shared(add3, reshape_pattern, true); + auto result1 = std::make_shared(reshape1); + auto result2 = std::make_shared(reshape2); + auto result3 = std::make_shared(reshape3); + model = std::make_shared(ov::ResultVector{result1, result2, result3}, ov::ParameterVector{input}); + manager.register_pass(); + } + { + auto input = std::make_shared(ov::element::f16, ov::PartialShape{-1, 7, 4096}); + auto weight1 = std::make_shared(ov::element::u4, ov::Shape{1024, 4096}); + weight1->set_friendly_name("weight2_1"); + auto weight2 = std::make_shared(ov::element::u4, ov::Shape{512, 4096}); + weight2->set_friendly_name("weight2_2"); + auto weight3 = std::make_shared(ov::element::u4, ov::Shape{128, 4096}); + weight3->set_friendly_name("weight2_3"); + auto weights = ov::OutputVector{weight1, weight2, weight3}; + auto weight_fused = std::make_shared(weights, 0); + auto bias1 = std::make_shared(ov::element::f16, ov::Shape{1, 1024}); + auto bias2 = std::make_shared(ov::element::f16, ov::Shape{1, 512}); + auto bias3 = std::make_shared(ov::element::f16, ov::Shape{1, 128}); + auto biases = ov::OutputVector{bias1, bias2, bias3}; + auto bias_fused = std::make_shared(biases, 1); + auto scale1 = std::make_shared(ov::element::f16, ov::Shape{1024, 32}); + auto scale2 = std::make_shared(ov::element::f16, ov::Shape{512, 32}); + auto scale3 = std::make_shared(ov::element::f16, ov::Shape{128, 32}); + auto scales = ov::OutputVector{scale1, scale2, scale3}; + auto scale_fused = std::make_shared(scales, 0); + auto fc_fused = std::make_shared(input, weight_fused, bias_fused, scale_fused); + auto axis_const = ov::op::v0::Constant::create(ov::element::i64, ov::Shape{1}, {fc_fused->get_output_partial_shape(0).size() - 1}); + std::vector orig_n_sizes = {1024, 512, 128}; + auto split_const = ov::op::v0::Constant::create(ov::element::i64, ov::Shape{3}, orig_n_sizes); + auto split = std::make_shared(fc_fused, axis_const, split_const); + auto reshape_pattern = std::make_shared(ov::element::i64, ov::Shape{2}, pattern); + auto reshape1 = std::make_shared(split->output(0), reshape_pattern, true); + auto reshape2 = std::make_shared(split->output(1), reshape_pattern, true); + auto reshape3 = std::make_shared(split->output(2), reshape_pattern, true); + auto result1 = std::make_shared(reshape1); + auto result2 = std::make_shared(reshape2); + auto result3 = std::make_shared(reshape3); + model_ref = std::make_shared(ov::ResultVector{result1, result2, result3}, ov::ParameterVector{input}); + comparator.enable(FunctionsComparator::ATTRIBUTES); + } +} } // namespace intel_gpu } // namespace test } // namespace ov \ No newline at end of file From f0c5d2f434605da626243f641aecd6e43c5c4ec9 Mon Sep 17 00:00:00 2001 From: Vladislav Golubev Date: Thu, 19 Sep 2024 13:05:27 +0200 Subject: [PATCH 11/49] [Snippets] Fix sporadic issue in MHAParallelWAOptimizer (#26660) ### Details: - *Currently, `loops_to_split` in `MHAParallelWAOptimizer` are stored in unordered_map, so elements order is not determined. This sporadically leads to the situation when loop last iteration has work_amount more than main body's increment. This might lead to failures* - *In this PR, 'loops_to_split' are stored in vector, so loop information updates are always called for expanded loop infos in determined order: FIRST_ITER->MAIN_BODY->LAST_ITER* - *Also, the corresponding assert is added to `InsertSpecificIterations::get_decomposed_loop_work_amount` in order to throw an exception on early stage in case of incorrect configuration. This assert also allows to cover the changes by the existing tests (some of them fail if assert is added but the fix is not applied)* ### Tickets: - *N/A* --- .../include/snippets/runtime_configurator.hpp | 4 ++-- .../lowered/pass/insert_specific_iterations.cpp | 6 +++++- src/common/snippets/src/runtime_configurator.cpp | 15 ++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/common/snippets/include/snippets/runtime_configurator.hpp b/src/common/snippets/include/snippets/runtime_configurator.hpp index a2c605fd8b5356..10c15a4621a72a 100644 --- a/src/common/snippets/include/snippets/runtime_configurator.hpp +++ b/src/common/snippets/include/snippets/runtime_configurator.hpp @@ -179,13 +179,13 @@ class RuntimeConfigurator { static std::unordered_set find_unsqueezed_params( const ov::snippets::lowered::LinearIRCPtr& linear_ir, const std::unordered_set& brgemms); - static std::unordered_set find_loops_to_split( + static std::vector find_loops_to_split( const ov::snippets::lowered::LinearIRCPtr& linear_ir, const std::unordered_set& unsqueezed_params); RuntimeConfigurator* configurator = nullptr; - std::unordered_set loops_to_split{}; + std::vector loops_to_split{}; std::unordered_set unsqueezed_params{}; std::vector> optimized_layouts{}; std::vector m_dim_idces{}; diff --git a/src/common/snippets/src/lowered/pass/insert_specific_iterations.cpp b/src/common/snippets/src/lowered/pass/insert_specific_iterations.cpp index 1e99f8c845161f..9ca5181883af36 100644 --- a/src/common/snippets/src/lowered/pass/insert_specific_iterations.cpp +++ b/src/common/snippets/src/lowered/pass/insert_specific_iterations.cpp @@ -85,8 +85,12 @@ size_t InsertSpecificIterations::get_decomposed_loop_work_amount(const UnifiedLo return is_dynamic ? remaining_work_amount : increment; case (SpecificLoopIterType::MAIN_BODY): return is_dynamic ? remaining_work_amount : (remaining_work_amount / increment) * increment; - case (SpecificLoopIterType::LAST_ITER): + case (SpecificLoopIterType::LAST_ITER): { + OPENVINO_ASSERT(is_dynamic || remaining_work_amount < unified_loop_info->get_increment(), + "Last iter work amount (", remaining_work_amount, + ") must be less than the UnifiedLoopInfo's increment: ", unified_loop_info->get_increment()); return remaining_work_amount; + } default: OPENVINO_THROW("Unknown SpecificLoopIterType!"); } diff --git a/src/common/snippets/src/runtime_configurator.cpp b/src/common/snippets/src/runtime_configurator.cpp index 609005a9b86d80..9174d93eea3f98 100644 --- a/src/common/snippets/src/runtime_configurator.cpp +++ b/src/common/snippets/src/runtime_configurator.cpp @@ -477,21 +477,21 @@ std::unordered_set RuntimeConfigurator::MHAParallelWAOptimizer::find_uns return unsqueezed_params; } -std::unordered_set RuntimeConfigurator::MHAParallelWAOptimizer::find_loops_to_split( +std::vector RuntimeConfigurator::MHAParallelWAOptimizer::find_loops_to_split( const lowered::LinearIRCPtr& linear_ir, const std::unordered_set& unsqueezed_params) { const auto loop_manager = linear_ir->get_loop_manager(); - std::unordered_set loops_to_split; + std::set loop_idces_to_split; std::vector prev_loop_idces; - auto add_loops_to_split = [&](const ExpressionPtr& expr) { + auto add_loop_idx_to_split = [&](const ExpressionPtr& expr) { const auto& loop_idces = expr->get_loop_ids(); if (loop_idces != prev_loop_idces) { prev_loop_idces = loop_idces; for (const auto& loop_id : loop_idces) { const auto expanded_loop_info = loop_manager->get_loop_info(loop_id); if (expanded_loop_info->get_dim_idx() == m_dim_idx) { - loops_to_split.insert(expanded_loop_info); + loop_idces_to_split.insert(loop_id); } } } @@ -505,8 +505,13 @@ std::unordered_set RuntimeConfigurator::MHAParallelWAOptimi // Ops after non related params mustn't be traversed if (unsqueezed_params.count(i++)) continue; - utils::visit_path(param, visited, add_loops_to_split, false); + utils::visit_path(param, visited, add_loop_idx_to_split, false); } + + const auto& loops_map = linear_ir->get_loop_manager()->get_map(); + std::vector loops_to_split; + for (const auto& id : loop_idces_to_split) + loops_to_split.push_back(ov::as_type_ptr(loops_map.at(id))); return loops_to_split; } From 94fe66cf6adac68afe84da236ad3f0fb62ee9816 Mon Sep 17 00:00:00 2001 From: Nikolay Shchegolev Date: Thu, 19 Sep 2024 16:37:45 +0400 Subject: [PATCH 12/49] [CPU] Could not deserialize the RMS node (#26658) ### Details: - *Could not deserialize RMS node during reading model from cache* - *...* ### Tickets: - *152740* --- src/plugins/intel_cpu/src/extension.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/intel_cpu/src/extension.cpp b/src/plugins/intel_cpu/src/extension.cpp index 5e43da6e2bfb86..c55012d67c2d9f 100644 --- a/src/plugins/intel_cpu/src/extension.cpp +++ b/src/plugins/intel_cpu/src/extension.cpp @@ -11,6 +11,7 @@ #include "ov_ops/multiclass_nms_ie_internal.hpp" #include "ov_ops/nms_ie_internal.hpp" #include "ov_ops/nms_static_shape_ie.hpp" +#include "ov_ops/rms.hpp" #include "ov_ops/rotary_positional_embeddings.hpp" #include "ov_ops/type_relaxed.hpp" #include "snippets/op/subgraph.hpp" @@ -81,6 +82,7 @@ class TypeRelaxedExtension : public ov::OpExtension> { OP_EXTENSION(ov::op::internal::AUGRUCell) \ OP_EXTENSION(ov::op::internal::AUGRUSequence) \ OP_EXTENSION(ov::op::internal::NmsStaticShapeIE) \ + OP_EXTENSION(ov::op::internal::RMS) \ OP_EXTENSION(ov::op::internal::RoPE) \ OP_EXTENSION_X64(ov::intel_cpu::MHANode) \ OP_EXTENSION_X64(ov::intel_cpu::InteractionNode) \ From 67a4c180754922bad45da5925f2f33c29d410307 Mon Sep 17 00:00:00 2001 From: Pawel Raasz Date: Thu, 19 Sep 2024 14:44:35 +0200 Subject: [PATCH 13/49] [core] ShapeOf preserve lower bound when upper is infinite (#21414) ### Details: - `ShapeOf` preserve lower bound when upper is infinite ### Tickets: - [CVS-126430](https://jira.devtools.intel.com/browse/CVS-126430) --- src/core/src/op/shape_of.cpp | 9 ++++----- src/core/tests/type_prop/prior_box.cpp | 4 ++-- src/core/tests/type_prop/prior_box_clustered.cpp | 4 ++-- src/core/tests/type_prop/shape_of.cpp | 2 +- src/core/tests/type_prop/split.cpp | 2 +- src/core/tests/type_prop/squeeze.cpp | 2 +- src/core/tests/type_prop/tile.cpp | 2 +- src/core/tests/type_prop/top_k.cpp | 16 ++++++++-------- src/core/tests/type_prop/unsqueeze.cpp | 2 +- 9 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/core/src/op/shape_of.cpp b/src/core/src/op/shape_of.cpp index 1c12b54b1fdbe9..293c1b5fc5a59c 100644 --- a/src/core/src/op/shape_of.cpp +++ b/src/core/src/op/shape_of.cpp @@ -68,17 +68,16 @@ bool evaluate_bound(const Node* const node, ov::TensorVector& outputs, const boo // use node output type as it can be different than output tensor type // e.g. when v3::ShapeOf is converted to v0::ShapeOf then the output tensor will have always i64 // but node output type is transferred from v3 and can be i32 (dimension inf bound is i32 max) - const auto is_out_type_i32 = node->get_output_element_type(0) == element::i32; - if (is_out_type_i32 || !is_upper) { + if (node->get_output_element_type(0) == element::i32) { const auto in_shape_rank = in_shape.size(); - const auto max_et_val = is_out_type_i32 ? static_cast(std::numeric_limits::max()) - : std::numeric_limits::max(); + constexpr auto max_et_val = static_cast(std::numeric_limits::max()); + const auto get_val = is_upper ? &Interval::get_max_val : &Interval::get_min_val; auto limit_val = is_upper ? max_et_val : static_cast(0); auto dynamic_mask = std::vector(in_shape_rank); std::transform(in_shape.begin(), in_shape.end(), dynamic_mask.begin(), [&](const Dimension& d) { - return static_cast(d.get_interval().get_max_val() >= max_et_val); + return static_cast((d.get_interval().*get_val)() >= max_et_val); }); const auto limit = Tensor(out_et, Shape{}, &limit_val); diff --git a/src/core/tests/type_prop/prior_box.cpp b/src/core/tests/type_prop/prior_box.cpp index 67595a3d980e9f..0e75ef576c9664 100644 --- a/src/core/tests/type_prop/prior_box.cpp +++ b/src/core/tests/type_prop/prior_box.cpp @@ -212,7 +212,7 @@ TYPED_TEST_P(PriorBoxTest, preseve_partial_values_and_symbols_on_inputs) { } TYPED_TEST_P(PriorBoxTest, preseve_partial_values_inf_bound) { - auto out_size_shape = PartialShape{{1, 4}, {5, -1}}; // ShapeOf make 2nd Dim {0, -1} + auto out_size_shape = PartialShape{{1, 4}, {5, -1}}; set_shape_symbols(out_size_shape); const auto output_size = std::make_shared(element::u64, out_size_shape); @@ -223,7 +223,7 @@ TYPED_TEST_P(PriorBoxTest, preseve_partial_values_inf_bound) { EXPECT_EQ(op->get_output_size(), 1); EXPECT_EQ(op->get_output_element_type(0), element::f32); - EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {0, -1}})); + EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {100, -1}})); EXPECT_THAT(get_shape_symbols(op->get_output_partial_shape(0)), Each(nullptr)); } diff --git a/src/core/tests/type_prop/prior_box_clustered.cpp b/src/core/tests/type_prop/prior_box_clustered.cpp index 3470d798df6eec..ba5a3603aff6e7 100644 --- a/src/core/tests/type_prop/prior_box_clustered.cpp +++ b/src/core/tests/type_prop/prior_box_clustered.cpp @@ -186,7 +186,7 @@ TYPED_TEST_P(PriorBoxClusteredTest, preseve_partial_values_and_symbols_on_inputs } TYPED_TEST_P(PriorBoxClusteredTest, preseve_partial_values_inf_bound) { - auto out_size_shape = PartialShape{{1, 4}, {5, -1}}; // ShapeOf make 2nd Dim {0, -1} + auto out_size_shape = PartialShape{{1, 4}, {5, -1}}; set_shape_symbols(out_size_shape); const auto output_size = std::make_shared(element::u64, out_size_shape); @@ -197,7 +197,7 @@ TYPED_TEST_P(PriorBoxClusteredTest, preseve_partial_values_inf_bound) { EXPECT_EQ(op->get_output_size(), 1); EXPECT_EQ(op->get_output_element_type(0), element::f32); - EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {0, -1}})); + EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {60, -1}})); EXPECT_THAT(get_shape_symbols(op->get_output_partial_shape(0)), Each(nullptr)); } diff --git a/src/core/tests/type_prop/shape_of.cpp b/src/core/tests/type_prop/shape_of.cpp index 3556bf654d64fc..e383ddbaaaeecf 100644 --- a/src/core/tests/type_prop/shape_of.cpp +++ b/src/core/tests/type_prop/shape_of.cpp @@ -151,5 +151,5 @@ TEST(type_prop, shape_of_3_dynamic_value_propagation_out_i32) { auto bc_param = std::make_shared(element::f32, Shape{1}); auto bc = std::make_shared(bc_param, op); - EXPECT_EQ(bc->get_output_partial_shape(0), PartialShape({-1, -1, -1, -1, {1, 1021}})); + EXPECT_EQ(bc->get_output_partial_shape(0), PartialShape({{2, -1}, {3, -1}, -1, -1, {1, 1021}})); } diff --git a/src/core/tests/type_prop/split.cpp b/src/core/tests/type_prop/split.cpp index 7485b9487fdaa9..1f46200b5f3f5d 100644 --- a/src/core/tests/type_prop/split.cpp +++ b/src/core/tests/type_prop/split.cpp @@ -356,7 +356,7 @@ INSTANTIATE_TEST_SUITE_P( std::make_tuple(PartialShape{Dimension(2, 6), Dimension::dynamic(), Dimension(-1, 6), Dimension(7, -1)}, 2, std::vector{{Dimension(2, 6), Dimension::dynamic()}, - {Dimension(-1, 6), Dimension::dynamic()}})), + {Dimension(-1, 6), Dimension{7, -1}}})), PrintToStringParamName()); TEST_P(SplitBoundTest, propagate_symbol_and_dynamic_value) { diff --git a/src/core/tests/type_prop/squeeze.cpp b/src/core/tests/type_prop/squeeze.cpp index 3e60a654f4bccd..c7d81fd97c2786 100644 --- a/src/core/tests/type_prop/squeeze.cpp +++ b/src/core/tests/type_prop/squeeze.cpp @@ -391,7 +391,7 @@ INSTANTIATE_TEST_SUITE_P( std::make_tuple(PartialShape{Dimension(-1)}, PartialShape{Dimension(-1)}), std::make_tuple(PartialShape{Dimension::dynamic(), 8}, PartialShape{Dimension::dynamic()}), std::make_tuple(PartialShape{Dimension(4, 8), Dimension::dynamic()}, PartialShape{Dimension(4, 8)}), - std::make_tuple(PartialShape{Dimension(20, -1), Dimension::dynamic()}, PartialShape::dynamic(1)), + std::make_tuple(PartialShape{Dimension(20, -1), Dimension::dynamic()}, PartialShape{{20, -1}}), std::make_tuple(PartialShape{Dimension(-1, 5), Dimension::dynamic()}, PartialShape{Dimension(-1, 5)}), std::make_tuple(PartialShape{15}, PartialShape{15}), std::make_tuple(PartialShape{2, 6}, PartialShape{2})), diff --git a/src/core/tests/type_prop/tile.cpp b/src/core/tests/type_prop/tile.cpp index d3a9e5377ea9d4..09768df294fbea 100644 --- a/src/core/tests/type_prop/tile.cpp +++ b/src/core/tests/type_prop/tile.cpp @@ -136,7 +136,7 @@ TEST_F(TypePropTileTest, preserve_partial_values_and_symbols) { const auto op = make_op(data, shape_of_repeats); - EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {2, 4}, {-1, 6}, -1, -1})); + EXPECT_EQ(op->get_output_partial_shape(0), PartialShape({2, {2, 4}, {-1, 6}, {2, -1}, -1})); EXPECT_THAT(get_shape_symbols(op->get_output_partial_shape(0)), ElementsAre(nullptr, nullptr, nullptr, symbols[3], symbols[4])); } diff --git a/src/core/tests/type_prop/top_k.cpp b/src/core/tests/type_prop/top_k.cpp index d34c8f17fc1ba4..6c674efffd855d 100644 --- a/src/core/tests/type_prop/top_k.cpp +++ b/src/core/tests/type_prop/top_k.cpp @@ -309,12 +309,12 @@ TYPED_TEST_P(topk_type_prop, preserve_partial_values_and_symbols_k_is_interval) } TYPED_TEST_P(topk_type_prop, preserve_partial_values_and_symbols_k_is_interval_with_no_upper_bound) { - auto shape = PartialShape{{10, -1}}; + auto shape = PartialShape{{4, -1}}; auto k_symbols = set_shape_symbols(shape); const auto p_k = std::make_shared(element::i64, shape); const auto shape_of_k = std::make_shared(p_k); - // Squeeze make scalar but if interval value has no upper bound result will be {0,inf} + // Squeeze make scalar of interval value {4,inf} const auto k = std::make_shared(shape_of_k, Constant::create(element::i64, Shape{}, {0})); auto data_shape = PartialShape{5, {2, 8}, {2, 100}}; @@ -322,24 +322,24 @@ TYPED_TEST_P(topk_type_prop, preserve_partial_values_and_symbols_k_is_interval_w const auto data = std::make_shared(element::f32, data_shape); { - // dim{5} k{0,inf} -> {0,5} + // dim{5} k{4,inf} -> {4,5} const auto op = this->make_op(data, k, 0, "max", "value"); EXPECT_THAT(op->get_output_partial_shape(0), - AllOf(PartialShape({{0, 5}, {2, 8}, {2, 100}}), + AllOf(PartialShape({{4, 5}, {2, 8}, {2, 100}}), ResultOf(get_shape_symbols, ElementsAre(nullptr, symbols[1], symbols[2])))); } { - // dim{2,8} k{0,inf} -> {0,8} + // dim{2,8} k{4,inf} -> {2,8} const auto op = this->make_op(data, k, 1, "max", "value"); EXPECT_THAT(op->get_output_partial_shape(0), - AllOf(PartialShape({5, {0, 8}, {2, 100}}), + AllOf(PartialShape({5, {2, 8}, {2, 100}}), ResultOf(get_shape_symbols, ElementsAre(symbols[0], nullptr, symbols[2])))); } { - // dim{2,100} k{0,inf} -> {0,100} + // dim{2,100} k{4,inf} -> {2,100} const auto op = this->make_op(data, k, 2, "max", "value"); EXPECT_THAT(op->get_output_partial_shape(0), - AllOf(PartialShape({5, {2, 8}, {0, 100}}), + AllOf(PartialShape({5, {2, 8}, {2, 100}}), ResultOf(get_shape_symbols, ElementsAre(symbols[0], symbols[1], nullptr)))); } } diff --git a/src/core/tests/type_prop/unsqueeze.cpp b/src/core/tests/type_prop/unsqueeze.cpp index 4796dea9f22bd2..b3543632272686 100644 --- a/src/core/tests/type_prop/unsqueeze.cpp +++ b/src/core/tests/type_prop/unsqueeze.cpp @@ -264,7 +264,7 @@ INSTANTIATE_TEST_SUITE_P( std::make_tuple(PartialShape{Dimension(-1)}, PartialShape{Dimension(-1)}), std::make_tuple(PartialShape{Dimension::dynamic(), 8}, PartialShape{Dimension::dynamic()}), std::make_tuple(PartialShape{Dimension(2, 5), Dimension::dynamic()}, PartialShape{Dimension(2, 5)}), - std::make_tuple(PartialShape{Dimension(2, -1), Dimension::dynamic()}, PartialShape::dynamic(1)), + std::make_tuple(PartialShape{Dimension(2, -1), Dimension::dynamic()}, PartialShape{{2, -1}}), std::make_tuple(PartialShape{Dimension(-1, 3), Dimension::dynamic()}, PartialShape{Dimension(-1, 3)}), std::make_tuple(PartialShape{5}, PartialShape{5}), std::make_tuple(PartialShape{2, 6}, PartialShape{2})), From 60325deab04f877d161bb369cd2af6b44104a219 Mon Sep 17 00:00:00 2001 From: Piotr Kowalczyk Date: Thu, 19 Sep 2024 14:46:15 +0200 Subject: [PATCH 14/49] [GPU]: Fix for failing i16 elementwise functional test. (#26383) ### Details: - Fix for failing GPU functional i16 test. The problem is that i16 input is wrongly converted to f32 in constant and parameter op. - Had to disable i16 case for Deformable conv, which won't work with this fix. THe motivation is that Deformable conv on GPU supports only f16, f32 and int8 types - does not support i16 case, which was working only due to some implicit type transformation which this PR changes. --- .../src/plugin/transformations_pipeline.cpp | 17 +++++++++-------- .../deformable_convolution.cpp | 3 +-- .../single_layer_tests/eltwise.cpp | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/plugins/intel_gpu/src/plugin/transformations_pipeline.cpp b/src/plugins/intel_gpu/src/plugin/transformations_pipeline.cpp index 1812c3721d6793..40c7ab48c486cb 100644 --- a/src/plugins/intel_gpu/src/plugin/transformations_pipeline.cpp +++ b/src/plugins/intel_gpu/src/plugin/transformations_pipeline.cpp @@ -421,14 +421,15 @@ void TransformationsPipeline::apply(std::shared_ptr func) { manager.register_pass(); manager.register_pass(); - precisions_map int_convert_precision_map { - {ov::element::i64, ov::element::i32}, - {ov::element::u64, ov::element::i32}, - {ov::element::u16, ov::element::i32}, - {ov::element::u32, ov::element::i32}, - {ov::element::boolean, ov::element::u8}, - {ov::element::i4, ov::element::i8}, - {ov::element::u4, ov::element::u8}, + precisions_map int_convert_precision_map{ + {ov::element::i64, ov::element::i32}, + {ov::element::u64, ov::element::i32}, + {ov::element::i16, ov::element::i32}, + {ov::element::u16, ov::element::i32}, + {ov::element::u32, ov::element::i32}, + {ov::element::boolean, ov::element::u8}, + {ov::element::i4, ov::element::i8}, + {ov::element::u4, ov::element::u8}, }; manager.register_pass(); diff --git a/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/deformable_convolution.cpp b/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/deformable_convolution.cpp index 2936f6f50e2981..89f4666329f2eb 100644 --- a/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/deformable_convolution.cpp +++ b/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/deformable_convolution.cpp @@ -9,8 +9,7 @@ namespace { using ov::test::DeformableConvolutionLayerTest; const std::vector netPrecisions = { ov::element::f32, - ov::element::f16, - ov::element::i16 + ov::element::f16 }; /* ============= 2D DeformableConvolution ============= */ diff --git a/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp b/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp index 85ba33753a7407..964f8b5b21c47e 100644 --- a/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/src/plugins/intel_gpu/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -73,6 +73,7 @@ std::vector smoke_intOnly_eltwiseOpTypes = { std::vector intOnly_netPrecisions = { ov::element::i32, + ov::element::i16, ov::element::u16 }; From b368c3189f769e28074adc358f4fdf93911e683a Mon Sep 17 00:00:00 2001 From: Alicja Miloszewska Date: Thu, 19 Sep 2024 15:30:34 +0200 Subject: [PATCH 15/49] [OV JS] Prepare testing and codestyle guidelines (#26616) ### Details: - Add guidelines how to test new js api functionality - Add guide how to extend JS API functionality ### Tickets: - [CVS-151489](https://jira.devtools.intel.com/browse/CVS-151489) [CVS-151492](https://jira.devtools.intel.com/browse/CVS-151492) --------- Co-authored-by: Tatiana Savina --- src/bindings/js/docs/code_examples.md | 140 ++++++++++++++++++++++++++ src/bindings/js/docs/test_examples.md | 87 ++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 src/bindings/js/docs/code_examples.md create mode 100644 src/bindings/js/docs/test_examples.md diff --git a/src/bindings/js/docs/code_examples.md b/src/bindings/js/docs/code_examples.md new file mode 100644 index 00000000000000..13bfa14812d54b --- /dev/null +++ b/src/bindings/js/docs/code_examples.md @@ -0,0 +1,140 @@ +# How to extend the OpenVINO™ JavaScript API code + +## Build the OpenVINO™ JavaScript API +For detailed build instructions, refer to the [OpenVINO™ JavaScript API documentation](./README.md). + +## Project's naming conventions +When implementing the C++ sources for the JavaScript API, it is essential to adhere to the OpenVINO naming conventions described in the [OpenVINO Coding Style Guide](../../../../docs/dev/coding_style.md). In summary, the naming style employs `Snake Case` for methods, functions, and variables, while `Camel Case` is used for class names. Additionally, the naming of entities in the C++ sources should closely mirror their equivalents in the C++ API to maintain consistency. + +For methods that are exposed to JavaScript, the naming convention transitions to `Camel Case`, aligning with common JavaScript practices. As an example, a method in the C++ API named `get_element_type` would be represented in the JavaScript API as `getElementType()`. + +## node-addon-api module + +[node addon api](https://github.com/nodejs/node-addon-api) is used to create OpenVINO JavaScript API for Node.js. The quickest way to learn is to follow the official [examples](https://github.com/nodejs/node-addon-examples). It is recommended to check out the tutorial on [how to create a JavaScript object from a C++ object](https://github.com/nodejs/node-addon-examples/tree/main/src/2-js-to-native-conversion/object-wrap-demo/node-addon-api). + + + + + +## Adding a new class and method +To introduce a new `MyTensor` class that interacts with the `ov::Tensor` class, follow these steps: + - The class should facilitate construction from an ov::Tensor instance and allow initialization from a JavaScript element type and shape. + - It should also provide a getElementType method that retrieves the ov::Tensor element type. + +Begin by creating a header file for the `MyTensor` class in the OpenVINO repository at `/src/bindings/js/node/include/my_tensor.hpp`. This file should contain the necessary includes and class definitions: +```cpp +class MyTensor : public Napi::ObjectWrap { +public: + // Constructor for the wrapper class + MyTensor(const Napi::CallbackInfo& info); + + // It returns a JavaScript class definition + static Napi::Function get_class(Napi::Env env); + + // It returns the element type of ov::Tensor + Napi::Value get_element_type(const Napi::CallbackInfo& info); + +private: + ov::Tensor _tensor; +}; +``` +The implementation of the class methods should be placed in a source file at `/src/bindings/js/node/src/my_tensor.cpp` +```cpp +MyTensor::MyTensor(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { + std::vector allowed_signatures; + + try { + if (ov::js::validate(info, allowed_signatures)) { + const auto type = js_to_cpp(info, 0); + const auto& shape = js_to_cpp(info, 1); + this->_tensor = ov::Tensor(type, shape); + } else { + OPENVINO_THROW("'MyTensor' constructor", ov::js::get_parameters_error_msg(info, allowed_signatures)); + } + } catch (std::exception& err) { + reportError(info.Env(), err.what()); + } +} + +Napi::Function MyTensor::get_class(Napi::Env env) { + return DefineClass(env, + "MyTensor", + { + InstanceMethod("getElementType", &MyTensor::get_element_type), + }); +} + +Napi::Value MyTensor::get_element_type(const Napi::CallbackInfo& info) { + return Napi::String::New(info.Env(), _tensor.get_element_type().to_string()); +} +``` +Finally, update the `CMakeLists.txt` file at `/src/bindings/js/node/` to include the new source file in the build process: +```cmake +add_library(${PROJECT_NAME} SHARED + ${CMAKE_CURRENT_SOURCE_DIR}/src/my_tensor.cpp +) +``` + +### Argument validation and conversion + +When binding JavaScript arguments with C++ functions, it is crucial to validate and convert the arguments appropriately. The template `ov::js::validate` function is a utility that facilitates this process. It is particularly useful for handling different overloads of functions and ensuring standardized error messages when arguments do not match expected signatures. +Before implementing a new conversion function, such as `js_to_cpp`, review the existing [helper methods](../../node/include/helper.hpp) to see if one already meets your requirements. + +### New class initialization +When a new class is introduced to the `openvino-node` module, it must be initialized upon module loading. This is done in the [addon.cpp](../../src/addon.cpp) file. The initialization process registers the class with the Node.js environment so that it can be used within JavaScript code. +```cpp +Napi::Object init_module(Napi::Env env, Napi::Object exports) { + auto addon_data = new AddonData(); + env.SetInstanceData(addon_data); + init_class(env, exports, "MyTensor", &MyTensor::get_class, addon_data->my_tensor); + + return exports; +} +``` +To keep track of the JavaScript class definitions, they are kept in `/src/bindings/js/node/include/addon.hpp`. +```cpp +struct AddonData { + Napi::FunctionReference my_tensor; + // and other class references +}; +``` + +### Document the new functionality +The last step is to add the TypeScript type definitions and describe the new functionality. +```typescript +/** + * The {@link MyTensor} class and its documentation. + */ +interface MyTensor { + /** + * It gets the tensor element type. + */ + getElementType(): element; + +} +interface MyTensorConstructor { + /** + * It constructs a tensor using the element type and shape. The new tensor + * data will be allocated by default. + * @param type The element type of the new tensor. + * @param shape The shape of the new tensor. + */ + new(type: element | elementTypeString, shape: number[]): MyTensor; +} + +export interface NodeAddon { + MyTensor: MyTensorConstructor, +} +``` + + +## Testing the new code + +Now that coding is finished, remember to rebuild the project and test it out. + +To learn how to test your code, refer to the guide on [how to test OpenVINO™ JavaScript API.](./test_examples.md) + +## See also + * [OpenVINO™ README](../../../../README.md) + * [OpenVINO™ bindings README](../../README.md) + * [Developer documentation](../../../../docs/dev/index.md) \ No newline at end of file diff --git a/src/bindings/js/docs/test_examples.md b/src/bindings/js/docs/test_examples.md new file mode 100644 index 00000000000000..b8ff0c8ff7c9d0 --- /dev/null +++ b/src/bindings/js/docs/test_examples.md @@ -0,0 +1,87 @@ +# How to test the OpenVINO™ JavaScript API + +## Build the OpenVINO™ JavaScript API +For detailed build instructions, refer to the [OpenVINO™ JavaScript API documentation](./README.md). + + +## Run OpenVINO™ JavaScript API tests +*For simplicity, begin by navigating to the [main JavaScript API folder](./../node):* +```shell +cd /src/bindings/js/node +``` + +Use this command to run OpenVINO JavaScript API tests: +```shell +npm run test +``` + +To run specific test files, you can pass one or more glob patterns: +```shell +node --test "tests/unit/core.test.js" "tests/unit/*model.test.js" +``` + +Before executing individual test files, a one-time setup is required. If you have not previously executed `npm run test`, initiate the setup by running the following command: + +```shell +npm run test_setup +``` + +More information on running tests from the command line can be found in the [Node.js documentation]( https://nodejs.org/docs/latest/api/test.html#running-tests-from-the-command-line). + + +## Check the code style of the JavaScript API +*ESLint* is a tool to enforce a consistent coding style and to identify and fix potential issues in JavaScript code. + +To check the code style of the JavaScript API, run the following commands: +```shell +npm run lint +``` +*ESLint* can automatically fix many of the issues it detects. Use following command to run *ESLint* with the fix option on a single file: +```shell +npx eslint --fix "tests/unit/core.test.js" +``` + +It is recommended to run the code style check each time new tests are added. + + +## Writing OpenVINO™ JavaScript API tests +### Before start +Follow and complete [Examples of OpenVINO™ JavaScript API code](./code_examples.md). + + + +### Adding new test-case in the correct place +Each new test should verify the correct behavior of the new functionality (e.g. class, method). + +Unit test files are located in the `/src/bindings/js/node/tests/unit/` directory and their names correspond to the class/module to be tested. + +Always add tests to the correct locations and create new files only when necessary. *Remember to include the license on top of each new file*. + +### Test writing guidelines +Each test file starts with a `describe` block to group all tests related to a specific class or module. The name of the `describe` block should match the name of the class or module being tested, for example *ov.Core tests*. + +Within the `describe` block, individual tests are defined using `test` or `it` blocks, with the name of the test reflecting what is being tested. If multiple tests relate to the same method, they can be grouped within a nested `describe` block. + + ```js + const { describe, it, beforeEach } = require('node:test'); +describe('ov.Tensor tests', () => { + test('MyTensor.getElementType()', () => { + const tensor = new ov.MyTensor(ov.element.f32, [1, 3]); + assert.strictEqual(tensor.getElementType(), ov.element.f32); + }); + +}); + ``` +When writing tests, keep the following best practices in mind: + + * Focus on testing general usage and edge cases, but avoid excessive testing that leads to redundant test cases and can slow down validation pipelines. + * Avoid initializing shared variables outside of `test` or `beforeEach` blocks to prevent tests from affecting each other. + * Do not test built-in language features; instead, focus on the functionality provided by your code. + * Use hardcoded expected results to verify the correctness of your code. Alternatively, generate reference values at runtime using reliable libraries or methods. + * Extract and reuse common code snippets, such as helper functions or setup code, to improve test readability and maintainability. + + +## See also + * [OpenVINO™ README](../../../../README.md) + * [OpenVINO™ bindings README](../../README.md) + * [Developer documentation](../../../../docs/dev/index.md) From 76fab4c78d1f685c6b35ef5bab0094bcd69fd264 Mon Sep 17 00:00:00 2001 From: Tatiana Savina Date: Thu, 19 Sep 2024 15:35:07 +0200 Subject: [PATCH 16/49] [DOCS] Port benchmark 24.4 (#26690) ### Details: - *item1* - *...* ### Tickets: - *ticket-id* Co-authored-by: Karol Blaszczak --- .../about-openvino/performance-benchmarks.rst | 52 +- .../generative-ai-performance.rst | 18 +- .../model-accuracy-int8-fp32.rst | 145 +- .../performance-benchmarks-faq.rst | 24 +- .../OV-2024.3-Performance-Data.xlsx | Bin 305774 -> 0 bytes .../OV-2024.3-platform_list.pdf | Bin 239931 -> 0 bytes .../OV-2024.3-system-info-detailed.xlsx | Bin 78345 -> 0 bytes .../OV-2024.4-Performance-Data.xlsx | Bin 0 -> 329057 bytes .../OV-2024.4-platform_list.pdf | Bin 0 -> 240967 bytes .../OV-2024.4-system-info-detailed.xlsx | Bin 0 -> 83914 bytes .../benchmarks_files/data/graph-data-ov.json | 12042 ++++++++++------ 11 files changed, 7404 insertions(+), 4877 deletions(-) delete mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-Performance-Data.xlsx delete mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-platform_list.pdf delete mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-system-info-detailed.xlsx create mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-Performance-Data.xlsx create mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-platform_list.pdf create mode 100644 docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-system-info-detailed.xlsx diff --git a/docs/articles_en/about-openvino/performance-benchmarks.rst b/docs/articles_en/about-openvino/performance-benchmarks.rst index 7f838d62b18f1c..aa60c44a2ad5c8 100644 --- a/docs/articles_en/about-openvino/performance-benchmarks.rst +++ b/docs/articles_en/about-openvino/performance-benchmarks.rst @@ -11,9 +11,9 @@ Performance Benchmarks :hidden: Efficient LLMs for AI PC - performance-benchmarks/performance-benchmarks-faq + Performance Information F.A.Q. OpenVINO Accuracy - performance-benchmarks/getting-performance-numbers + Getting Performance Numbers This page presents benchmark results for @@ -22,7 +22,7 @@ and :doc:`OpenVINO Model Server <../ovms_what_is_openvino_model_server>`, for a selection of public neural networks and Intel® devices. The results may help you decide which hardware to use in your applications or plan AI workload for the hardware you have already implemented in your solutions. Click the buttons below to see the chosen benchmark data. -For more detailed view of performance numbers for generative AI models, check the +For a more detailed view of performance numbers for generative AI models, check the :doc:`Generative AI Benchmark Results <./performance-benchmarks/generative-ai-performance>` .. grid:: 1 1 2 2 @@ -49,7 +49,7 @@ For more detailed view of performance numbers for generative AI models, check th :material-regular:`bar_chart;1.4em` OVMS Benchmark Graphs -Please visit the tabs below for more information on key performance indicators and workload parameters. +Key performance indicators and workload parameters. .. tab-set:: @@ -57,32 +57,10 @@ Please visit the tabs below for more information on key performance indicators a :sync: throughput For Vision and NLP Models this measures the number of inferences delivered within a latency threshold - (for example, number of Frames Per Second - FPS). - For GenAI (or Large Language Models) this measures the token rate after the first token aka. 2nd token - throughput rate which is presented as tokens/sec. Please click on the "Workload Parameters" tab to - learn more about input/output token lengths, etc. - - .. tab-item:: Value - :sync: value - - While throughput is important, what is more critical in edge AI deployments is - the performance efficiency or performance-per-cost. Application performance in - throughput per dollar of system cost is the best measure of value. The value KPI is - calculated as “Throughput measured as inferences per second / price of inference engine”. - This means for a 2 socket system 2x the price of a CPU is used. Prices are as per - date of benchmarking and sources can be found as links in the Hardware Platforms (PDF) - description below. - - .. tab-item:: Efficiency - :sync: efficiency - - System power is a key consideration from the edge to the data center. When selecting - deep learning solutions, power efficiency (throughput/watt) is a critical factor to - consider. Intel designs provide excellent power efficiency for running deep learning - workloads. The efficiency KPI is calculated as “Throughput measured as inferences per - second / TDP of inference engine”. This means for a 2 socket system 2x the power - dissipation (TDP) of a CPU is used. TDP-values are as per date of benchmarking and sources - can be found as links in the Hardware Platforms (PDF) description below. + (for example, number of Frames Per Second - FPS). + For GenAI (or Large Language Models) this measures the token rate after the first token aka. 2nd token + throughput rate which is presented as tokens/sec. Please click on the "Workload Parameters" tab to + learn more about input/output token lengths, etc. .. tab-item:: Latency :sync: latency @@ -96,7 +74,7 @@ Please visit the tabs below for more information on key performance indicators a example an industrial robot's response to actions in its environment or obstacle avoidance for autonomous vehicles. For Transformer models like Stable-Diffusion this measures the time it takes to convert the prompt - or input text into a finished image. It is presented in seconds. + or input text into a finished image. It is presented in seconds. .. tab-item:: Workload Parameters :sync: workloadparameters @@ -130,21 +108,21 @@ For a listing of all platforms and configurations used for testing, refer to the .. grid-item:: - .. button-link:: ../_static/benchmarks_files/OV-2024.3-platform_list.pdf + .. button-link:: ../_static/benchmarks_files/OV-2024.4-platform_list.pdf :color: primary :outline: :expand: :material-regular:`download;1.5em` Click for Hardware Platforms [PDF] - .. button-link:: ../_static/benchmarks_files/OV-2024.3-system-info-detailed.xlsx + .. button-link:: ../_static/benchmarks_files/OV-2024.4-system-info-detailed.xlsx :color: primary :outline: :expand: :material-regular:`download;1.5em` Click for Configuration Details [XLSX] - .. button-link:: ../_static/benchmarks_files/OV-2024.3-Performance-Data.xlsx + .. button-link:: ../_static/benchmarks_files/OV-2024.4-Performance-Data.xlsx :color: primary :outline: :expand: @@ -159,9 +137,9 @@ processing) and then reports on the inferences per second (or Frames Per Second) OpenVINO™ Model Server (OVMS) employs the Intel® Distribution of OpenVINO™ toolkit runtime libraries and exposes a set of models via a convenient inference API over gRPC or HTTP/REST. Its benchmark results are measured with the configuration of multiple-clients-single-server, -using two hardware platforms connected by ethernet. Network bandwidth depends on both, platforms -and models under investigation. It is set not to be a bottleneck for workload intensity. The -connection is dedicated only to measuring performance. +using two hardware platforms connected by ethernet. Network bandwidth depends on both platforms +and models used. It is set not to be a bottleneck for workload intensity. The connection is +dedicated only to measuring performance. .. dropdown:: See more details about OVMS benchmark setup diff --git a/docs/articles_en/about-openvino/performance-benchmarks/generative-ai-performance.rst b/docs/articles_en/about-openvino/performance-benchmarks/generative-ai-performance.rst index ab6b96f62ffc2f..35e09f91f72b9c 100644 --- a/docs/articles_en/about-openvino/performance-benchmarks/generative-ai-performance.rst +++ b/docs/articles_en/about-openvino/performance-benchmarks/generative-ai-performance.rst @@ -25,20 +25,11 @@ running on an Intel® Core™ Ultra 7-165H based system, on built-in GPUs. :header-rows: 1 :file: ../../_static/download/llm_models.csv - .. tab-item:: OpenVINO Model Server - - .. csv-table:: - :class: modeldata stripe - :name: supportedModelsTableOvms - :header-rows: 1 - :file: ../../_static/download/llm_models_ovms.csv - - For complete information on the system config, see: -`Hardware Platforms [PDF] `__ +`Hardware Platforms [PDF] `__ -To view the data in an editable form, you can download the .csv files here: +To view the data in an editable form, you can download the .csv file here: .. grid:: 1 1 2 2 :gutter: 4 @@ -52,9 +43,4 @@ To view the data in an editable form, you can download the .csv files here: :material-regular:`download;1.5em` Click for OpenVINO LLM results [CSV] - .. button-link:: ../../_static/download/llm_models_ovms.csv - :color: primary - :outline: - :expand: - :material-regular:`download;1.5em` Click for OpenVINO Model Server results [CSV] diff --git a/docs/articles_en/about-openvino/performance-benchmarks/model-accuracy-int8-fp32.rst b/docs/articles_en/about-openvino/performance-benchmarks/model-accuracy-int8-fp32.rst index 9166409c7d5ee0..8b93e6a1aebe7b 100644 --- a/docs/articles_en/about-openvino/performance-benchmarks/model-accuracy-int8-fp32.rst +++ b/docs/articles_en/about-openvino/performance-benchmarks/model-accuracy-int8-fp32.rst @@ -29,78 +29,78 @@ the table for more information. - spearman@cosine - 3.33% - 3.22% - - 3.69% - - 3.28% + - 3.05% + - 2.88% * - bert-large-uncased-whole-word-masking-squad-0001 - SQUAD_v1_1_bert_msl384_mql64_ds128_lowercase - F1 - - 0.19% - - 0.06% + - 0.12% + - 0.03% - 0.03% - - 0.11% + - 0.28% * - efficientdet-d0 - COCO2017_detection_91cl - coco_precision - - -0.9% - - -0.63% - - -0.61% - - -0.62% + - 0.00% + - -0.52% + - -0.54% + - -0.60% * - mask_rcnn_resnet50_atrous_coco - COCO2017_detection_91cl_bkgr - coco_orig_precision - - -5.64% - - -0.30% - - -0.21% - - -0.28% + - 0.05% + - 0.03% + - 0.08% + - -0.09% * - mobilenet-v2 - ImageNet2012 - accuracy @ top1 + - - -0.87% - - -0.87% - - -0.89% - - -0.95% + - -0.88% + - -0.88% * - resnet-50 - ImageNet2012 - accuracy @ top1 - - -0.2% + - -0.17% - -0.18% - -0.18% - - -0.13% + - -0.16% * - ssd-resnet34-1200 - COCO2017_detection_80cl_bkgr - map - -0.03% - -0.02% - -0.03% - - -0.0% + - 0.02% * - ssd-mobilenet-v1-coco - COCO2017_detection_80cl_bkgr - coco-precision - - -2.75% - - -0.11% + - -2.74% - -0.11% - - -0.08% + - -0.13% + - -0.12% * - unet-camvid-onnx-0001 - CamVid_12cl - mean_iou @ mean - -6.28% - 6.45% - 6.46% - - 6.40% - * - yolo_v3_tiny + - 6.43% + * - yolo_v5m - COCO2017_detection_80cl - map - - -0.30% - - -0.43% - - -0.43% - - -0.87% + - -0.40% + - -0.32% + - -0.32% + - -0.31% * - yolo_v8n - COCO2017_detection_80cl - map - -0.01% - -0.04% - - 0.04% - - -0.08% + - -0.07% + - 0.05% .. list-table:: Model Accuracy for BF16, FP32 and FP16 (FP16: Flex-170 only. BF16: Xeon(R) 8480+ only) :header-rows: 1 @@ -119,32 +119,32 @@ the table for more information. - 0.00% - 0.00% - 0.00% - - -0.03% + - -0.01% - 0.01% * - bert-large-uncased-whole-word-masking-squad-0001 - SQUAD_v1_1_bert_msl384_mql64_ds128_lowercase - F1 - 0.04% - 0.04% - - 0.04% - 0.06% - - % + - 0.06% + - 0.04% * - efficientdet-d0 - COCO2017_detection_91cl - coco_precision + - 0.01% - -0.02% + - 0.01% + - 0.00% - -0.02% - - -0.02% - - -0.02% - - 0.04% * - mask_rcnn_resnet50_atrous_coco - COCO2017_detection_91cl_bkgr - coco_orig_precision + - -0.01% + - -0.01% + - -0.01% + - -0.05% - 0.00% - - 0.00% - - 0.00% - - 0.01% - - -0.02% * - mobilenet-v2 - ImageNet2012 - accuracy @ top1 @@ -164,19 +164,19 @@ the table for more information. * - ssd-resnet34-1200 - COCO2017_detection_80cl_bkgr - map - - 0.00% + - 0.02% - 0.00% - 0.00% - -0.02% - - 0.02% + - 0.04% * - ssd-mobilenet-v1-coco - COCO2017_detection_80cl_bkgr - coco-precision + - -0.08% - 0.01% - 0.01% + - 0.08% - 0.01% - - 0.04% - - -0.02% * - unet-camvid-onnx-0001 - CamVid_12cl - mean_iou @ mean @@ -185,68 +185,75 @@ the table for more information. - 0.00% - -0.03% - -0.03% - * - yolo_v3_tiny + * - yolo_v5m - COCO2017_detection_80cl - map - 0.00% - - 0.00% - - 0.00% - - 0.25% - - -0.01% + - 0.05% + - 0.05% + - 0.07% + - 0.07% * - yolo_v8n - COCO2017_detection_80cl - map - 0.00% - 0.00% + - 0.01% + - 0.05% - 0.00% - - 0.04% - - -0.02% -.. list-table:: Model Accuracy for VNNI-FP16, VNNI-INT8, VNNI-INT4 and MTL-INT4 (Core Ultra) +.. list-table:: Model Accuracy for VNNI-FP16, VNNI-INT4, AMX-FP16 and MTL-INT4 (Core Ultra iGPU) :header-rows: 1 * - OpenVINO™ Model name - dataset - Metric Name - A, VNNI-FP16 - - B, VNNI-INT8 - - C, VNNI-INT4 + - B, VNNI-INT4 + - C, FAMX-FP16 - D, MTL-INT4 * - chatGLM2-6b - Wikiset - ppl - - 5,24 - - 5.17 - - 6.86 - - 6.87 + - 5.24 + - 6.03 + - 5.24 + - 6.03 * - Falcon-7b-instruct - Wikitext - ppl - 1.65 + - 1.76 - 1.65 - - 1.82 - - 1.82 + - 1.76 * - Llama-2-7b-chat - Wikiset - ppl - - 1.54 - 1.58 - 1.59 + - 1.91 - 1.59 + * - Llama-3-8b + - Wikiset + - ppl + - 1.54 + - 1.56 + - 1.17 + - 1.57 * - Mistral-7b - Wikitext - ppl - 1.48 - - 1.48 - 1.49 + - 1.39 - 1.49 - * - Stable-Diffusion-V2-1 - - LIAON-5B - - CLIP - - - - - - - - + * - Phi3-mini-4k-instruct + - Wikitext + - ppl + - 1.52 + - 1.56 + - 1.52 + - 1.56 Notes: For all accuracy metrics a "-", (minus sign), indicates an accuracy drop. For perplexity (ppl) the values do not indicate a deviation from a reference but are the actual measured diff --git a/docs/articles_en/about-openvino/performance-benchmarks/performance-benchmarks-faq.rst b/docs/articles_en/about-openvino/performance-benchmarks/performance-benchmarks-faq.rst index e8e099c5ae4b1f..c55d3f44451f1c 100644 --- a/docs/articles_en/about-openvino/performance-benchmarks/performance-benchmarks-faq.rst +++ b/docs/articles_en/about-openvino/performance-benchmarks/performance-benchmarks-faq.rst @@ -2,8 +2,6 @@ Performance Information F.A.Q. ============================== - - .. meta:: :description: Check the F.A.Q. for performance benchmarks in Intel® Distribution of OpenVINO™ toolkit. @@ -64,11 +62,19 @@ Performance Information F.A.Q. - Meta AI - Auto regressive language - 4096 + * - `Llama-3-8b `__ + - Meta AI + - Auto regressive language + - 8192 * - `Mistral-7b `__ - Mistral AI - Auto regressive language - 4096 - * - `Stable-Diffusion-V2-1 `__ + * - `Phi3-4k-mini `__ + - Huggingface + - Auto regressive language + - 4096 + * - `Stable-Diffusion-V1-5 `__ - Hugginface - Latent Diffusion Model - 77 @@ -108,13 +114,13 @@ Performance Information F.A.Q. - U-Net - semantic segmentation - 368x480 - * - `yolo-v3-tiny `__ - - YOLO v3 Tiny + * - `yolo-v5m `__ + - YOLO V5 Medium - object detection - - 416x416 + - 640x640 * - `yolov8n `__ - Yolov8nano - - object detection + - object detection - 608x608 @@ -122,8 +128,8 @@ Performance Information F.A.Q. Intel partners with vendors all over the world. For a list of Hardware Manufacturers, see the `Intel® AI: In Production Partners & Solutions Catalog `__. - For more details, see the :doc:`Supported Devices <../compatibility-and-support/supported-devices>`. - documentation. + For more details, see the :doc:`Supported Devices <../compatibility-and-support/supported-devices>` article. + .. dropdown:: How can I optimize my models for better performance or accuracy? diff --git a/docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-Performance-Data.xlsx b/docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-Performance-Data.xlsx deleted file mode 100644 index 05de7365749228b3ec06d971cf0adca40da9f32b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305774 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 #=CGf&m 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 H3d;Wl#k!gO diff --git a/docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-platform_list.pdf b/docs/sphinx_setup/_static/benchmarks_files/OV-2024.3-platform_list.pdf deleted file mode 100644 index 2de5261f98d5c60cdb275e5ee25c117d20aa2fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239931 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�d90>?prSBTesd&Vg4p!s5O?B8yZxm7libIw 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 Rv*?VhnFz;cCqnsu(AWa^l52#%{H zSsNpKCiKzB-a}TwlY%#3E}EpQ5ZUJ5H5qs4Pd5I%GDwzW4Q0{kKm}7Sw60Gig%Exw zNy7AIp5zTg9)3R)47rVQ0^SKjFFI_~xxN>}9EVNbrC!rl%Y&NLj3;QI3u{6Ylw zg}eqr&1FhU;~R=ne_;v4-r@#$^Qe@Mnm1@brv^DhSVN}{7x?E!7T}1>#U4~USh&u& z7hS>G5pY5D-|YPS=?m&k85ym=y`HtDlw|#8=cI*+2$O`0YZB7hN&3T-<5#oM)z?fM zcD;8BCCHKF+~Fzo-{O?bIB=%>UqP#xrRMpOg!6NMixZJRHcUZDLRB;Ct$epSV#;Bd z68#3QDFNFSj?r2>R=`a%W`?hKL=yH?Z+p~xKT6FM;sZTWGTEkaE-3m{brt&=VJ1IW zCb97qU!LThhpsJX9JYVZ>@zQqBoktLk|H`q8b}^uPHWB_txE7hfwY>Il0{oXTWI#H z)s#J4F29rUk~m$v%QsW4U;0fr=MHb*XKjETqW5}ry{U%b7=BQ}@8NrOds-qj3+ihK zPIgR$El+d?b4HW5U~gJ}ha(S+v6~eOm#-1m^%k05^ML5|pbuC0WXa%K$|z5HQfv@_ zx`Sdkz$f!fci=05bjX_lJ`MqW2$_wtg!Jy*)ZU~coCv2%nyv}jy41wVFPdzAaswYj z_=D+#K7Y)l;Y!CX`W{Y0|D)w>o-O1p#a)xKGE(?ER)Y`Nqn5}uHQQ{vJ+2?O-hx7C z*hn{jC6p?VE=mr=U$uzzu-AO^wUYW4FW31+Lcb-S*-QXmquMwyHGInWBeLsga)5_P z3Y$d0O!&E>S>j}dKMwuq_kgJ!I}Vy(ikq5h%5Am+G&PZSWwgE8i1*3;n1Vd{Zdxri zvislJbSU-TeI>yqUz;616h#!=_<~`RAdW8e#q3Lh?mHuK?($Hm2`I_pLmMURV4^Rn z*Ok2X-;_2O5lbt1uXN)Y;KnqDik&iGG$o0!_k1TaV2~w=4-@Bpct^Jv8Z8o)etQnM zmJ+{s_Zp8JAu+ca>?GIpVO?ie7{(;)`$rV}*I`(UnU4DOXlzS)BCX+x%M`bzZ=6Ys zBGkT;hSKrl3M%eVm+7= zr($1vxJ9HT%X~w=`_VVeXCsparf$ysRI1~LfAX~-ZQ8P=4rObDkhL&F^u*(uC zRNr9_Pk;MFeig3VXt@3E4BI=Cq!a!%t-!`zNY8tB->n6vGi-BPkAAZ+)NK?Ds_m8g zUq64q@LL{eM1Q^DH$ygDB_18-$uy}-q9@mjgia+qDvI6Y_oaycxBcy`GMeT{#-C#>oQGRj7sxTNERKw8sdMInToSC33v9eq3 zI%_p;*0vul;byTflsE?*C>XeFgc4L3HNzYv7}>t)iV~!9fQMR5Y_Zt*NjX?ErP?sJ zAy6=D*8n95d0ZvHG5XV8l871^+10G=7c9@R^>47fwSj_7?Stmbn=>_BlBDgQYeV(I zA=5T+zQAUeL`O5xE0hvZ^fX%2(;l+N>g4#HRu1w1#PL*`eed6)gd&txig!)Q9iik> zq1;(z@v-|oi->NP5y@2)M~VjAdpBh&bgLB~1{@^WA3NwnwboxS)xK-~g8R;Y5GZh( zU9dBwJcn|4O(vbF(kpDU(I&`JrlWc&_)tMN(5cK|7foY1Lb#0R!#0P4)0NXfA`mtp zOo9Ch^L{^Er7>;O_bVq+N-pi>usVmHqmLK=6B3jGghW{Y%)QkR&HLC}46va;@bNyG z{f9OE8-%zsWa0$zx+f z_{YY>F-PyRd(cw)($n(wP8)C3qwC>V9q-c9gI?y+1c*}}r|omT5|SkkOqN*p6Gheu ziFM(p?o%TDGlLl6uL3o!7-4)RukG4G=KYD$Haw3H`#GL?wAt#|$((9%#gpCGOQ9&f zP@t1T&Rh`bUo{4~pCU4VLlR*1ql34kgx33(-|Kt60XEywwQV^9OAWgc{vTth?T(I5p?$h~pe-(R` zW#n>P2T^5qgkjmXtr0`1)Z1YtauD-N_YO@ZMitOsgnwA;eV=w(fPTRrwp%`Ya^`M& z{A+>7s&nk{3_)3mg2faJhh4?QP)3h!>)3QbtBPMpkLaA zR!b=utJf>!Ajcr8``p?+-^M1xvf~#m3B?lI`=}~`!T)9zJQUO;5tN0a2PK?m6&xm$ z-Ea4|u~(hARfh!=$22x|#gV}-B5dRRAxW}y%SaN7IW=)f5&zBlojt%_4zNg)UJwY9 z$*xf+t~x76aQ_5h-8OfN55Gf`BGH2Fj~L^CX4fBQ;>EV{P*p^N6>jVX*==4LL)qy< z#g_=olF0x!ewHr-Ll`{_%>NYfaS{5t?=R$w?^1seCQN8~q*a1ZRp5dJ4;Rnd(*zt| zVhhs7j01swEfd_X2N)zX>5JkIXgZC>ZRTUJFWw9@)BgF!kTs^c88d8j4QQoEZxs1U zk|FX^uRqlXM z)w*TWi9^SYj3Ss`!}g=q?q%T^tKN0hWCu6*F6;B#;qwzBjB|i}2PRNtNZW%kjd@*h z82T75sU-C`H-!JR3t@Uu+m9x{4ABYi(!zgBNed25HNXHl7?9F{=G6KiLM7sM(I2Fj zaru-8v;*V9tIWRh0@;0?e)L}_L-cSQZ4h;_*9ZEfj53NsDlJrvz;C|INx#Y**d1^M z5YNnGS|+!C8zFr3SoqZvPa8xp_@#0IJz$$hx5m?pz^()o=)qe?y9Wpwusj;-I&|o0 zovAbt3?h@jesvVn-Lq$7^2bD;CHKo6A{jxKzm=Ev+Ot<>^7nZDIEGrjdA=EJkjnJy z-VQ}dZ$NJ(lNc?0U2eYVw*L9|*sAyK5%JS`J?%7+==^`W4a(W z<@2aoF{o)Pg_2Fic8sa|{QJfsQhI7b^|hUHa()f3<21>*0Xz2{@zdEouQ!v+GI*@? zaog_kmyjo(C*3X&o|kzJvBc6&#E#A4V8MV56boblxaT*;8oE!FewhuFG_mXnsQwy) z*9PQ0b;X{%nzx2pw0W@UYmmsKD~jv+VbClm{mar0Hz2=Xv@O+63vs#G$Oc7kKMDur4Ips&T#iBJDPXumuNg!)C z5bGKUi^9>9b<1>vmR{<^jhv0G$;;GWSQnOSjQVZkO-x4s6gJMqFWZBtDm>21+*UB4 zJ;B|Dzt!aD%IHfq(V~z4xeQQ&!JScVHk>b|s)&(0co6X5{y$Su#i^m{pl@Op_8$NQ zJA~~?{H1?EdHn+*IO^K-g8oumkI5dER{N0pSWLPjSz;PPyW#|SBkM>KB!~s*UKCR# z47~@v{X3WQz=waz?SrYCU&jl;5k1WR^x+e#N|M)WD+T&^9)InB7q&m@=;x+~w_eKi z1KU=L3L#KmdQz~3w|F|i|5_fFSiR+>%{Fbfrk94#&k`;61$SovJrgEnh1XNXU2!Bp zeN%XDmv~vP6uqY1vtI)8-)q`wD+@4stviE>7uDm59@|NOzu^EFiSI!(FBQylJE;S$ zWf`b+1rIlqWA7g{g=&Wg|C=Gaw4Mm9E1<36JJcy zeT1f40sK6DG~wi|iUdbtM_P>r6IxxwuMn1%+$FY`{4wF5rB3``OWg%pi$f3moTblg0>i)7kPL07BzZuR&%W(cXic*X!&JBzLhrW%z#4dI(Ym3)3?{CJJ zvHG92J-rXqaCRHZl*R%WuyDTqXRWpP@^^s~q>q348vlp)Vt~<~rH*hCh(X8We`4Ti zy1YJ^nf_{confx&HXk}}?EFConrqA}DCo5JW_llIkTa0|TKO1LV-2)>&Z7_JsR?s^ zxQo*ou9fg!puH+oLOQB?HPZb(n;1p1l8R`lC+w;GkdeE2cy80k%lvKc5DzS8elT|H z7Vi#SFt+pRv(3>Y?Hny#Uzk?9dcbLwcdL6S%2A=WjB)77^*k-uhvxbk-zh1*g2$Sx ztL@0WwSs@waP&QqWqX;5K+CV4UpKC;9|W2$TlF^XlF4=tQeO+CUQ!^gwr0v}k9y=P zUd4sBT~%lYoJPoZ)IUuBa47k%V&j>sXcy;p>~=4n3cZ%D0lWH2srhH7{9e!RV&L4D zbIJQDPH%Ze$_p@pq~ZxU0?EuIW~&23(*c+;o|A9?=tO6Y1xl&Y!O2ETxh*=M&_|nJ{Y(<6 zLQ8t?EzcMIQ{rRMoCw0wf#+V9fTSCJYP@WN0(n_xjX&bwHGq4T}#w24g4=rsUSbS zvUV%M^ZVpGmA{?eSHw_2%I0b71+aWWv(FEt@eSrBXGvOl_O>~hme<3sW4>^GRhQNl>&F?oLAPf3sZ z6uDTg@+hVlrDLGDrQ-RMhh3-G16D~YNw4Kfu=sJ@oVSKUT9}GRw1oAYcq^Berx$+v zj08g}k7s%com!i3QG#@OyUZvyjSk=2?Eke0fHZD^vKKov9;% zdaYow)1bNnZl*U5pruvQrVIH(UNWC`FZTR$2wS#i;^A^bCS?EABK!q(OlEYBUWZ@F zYsTav_FQRLMRukIx3`$^1?GHwpDVZ2C8gqL{in;bo6B1iC>6R62aoh(q01X)0jZ5~ zo+mk`m3p1g2XCph8pr>2+nj*`xJU2*y>HIU^#9m5XZs(o#>!0{i==6^>b-_M12*N# z#7QsV>09VyqzKyma8G=x4|UPI?U2cAv0U$e8^oF4IkEDlrTo0uRVEDi{^jvQr6O~m z+aA`L81v=)wAiO!@-R_9Z zK(RJYvpkJ#&(@ zVdbLLOfqtUN<~vMc}Q90<;)%Fzeg7Tg@Gmxn<0&=G!zPl7R_c zDxGdUc2iW@q>rBYB)GCESKMFdV%4L;P9N^2LZrk|Cg!flEjyP~&M{uKn|-zISlW8L zNloE=!?y%6yGKSt;e02%6w%~Sa_JM$5_f0XBdT#ZG5$U7m!4oi6GzGPL=}pd#moUM z)ot)nJIg7?iLvP=2CHN8UGVi)h4qbA?1X3cOc@HXokfk5%g}_>v8MLiqDJVCdzUZl zvU8a68)QG{1eXni9u-iDPwlvJ?t+tDb8ds9jLC`Z?#VXDc;Ft;<|I+%oagk89QlV> zQYKgQ@@rW=x{oLsJ-Y$QvwOs_%A-49eL!>>P9QAmMiyj6Y=^H}ddv<|9pIkhC_ou? zEa?)T?SR&jwX07Z5Pi`c9rxg9B2oG_wgH<#x@JiGgqgn>2TgWAeMi%~IWGoS(~Tdow62|j1x zfejf?$~w)G zKTc$#IWN(h*>dAwm1{>cNq81FTI0Kx!lgBu;M;_t>*YX0Wq$7?%4*tOlWKRC9@T|+ z((JZ#UW`4OJ>r)PwRc(;W5WS4IJ+>;rGDoG%*ipJh7l{Lv5-dfqcP3j73SM%Lw#c@ zwr_35jIZq}lohNXah1(QMmHFn;+F4NnpONxl#^E^G?NM~5Hu)R;>QxrtKAFl15rlz zeU(eTG9#*2F0?McDaPm?hI_PhD&J}|u3n-Dt=H%MnCr#_EnH90u82y^_Jzh)zZtPe zg%!3$eeo*;KT|GBK?nvl6r+;Qf^i0Gpp#=3LqbW42(hU%rVTO&varE7>rWXBYZ;R1 z@1fH+LCg6*AHVjFXUzy25IJxSPZts;wJ@NO?nj`Qu;Fp~b^h-CQH@1r@4Gq@u>fL= z*nh<*dA1K~Y=(FJVxQ40N+^Bd=Gzxh<5AZf&)LrPLD{CoXX_}XCV_UO6b)T%A|I2W zz7YlAa%NP_2hwKiLKa4fZzg3NAB6U`l1nl1E4l>QHGILM2P5jcg2sB8Wlng5PSt!u z><>Rj%XCeb*7rkLx4{Aj`O*kPCTrHeEt-9b%Zh@sXV+9vwr!vcm>VqL;N;(em0B1- zU2H_GD+g8LVbRa(eSWo6qt?RkkeEPSQ!fQ>^Hpc|TPb)* z=u!r1nq@+b^GlKIUR$LW4Otn2Clt-Mjs}@_atZZ%ZDP&_kgALx;kvN6*3|xTiLyl@ zbcPfOSfso@$YXF?@Ur!+f(p@6O{=*6g{^);N<%m zX!b53O%tMi3+%ud;u&_cUl1!`Ee!CjS~*=^?w`IF+BKJ1JGN zakMXh(R*6JixFJvk`cUqww{s?hI%)pf&GD7xRs$KbS9rZMSuTy@3{4eHp)`q`cdbJ zWx&=HJcpzWwzk26xgs>*_9Vz_0k0VX$9Jzbv_8z6PA3(KqObGy;cuThbSkuTv!PTS z-SaJVr0o!4&dULFVPY{zKI)%(Py($po>frqiVbvO*ebs5fR@!Y+oUm(FO%{)8k#f- zOSUB-MJ!$Slc64Ft<~tA9EVxz-hmvE-zhsdT1qc4tMpyJKIY#@er4xak^Es}Uzbzv zLJ?lY6VlkWa-$vRl@qSfO@V=gTwbvsw{T(^D$Cnmm;yhofc1LzSXl?higLDVe&2`y zx`3mi6I1E$>qVkuoAGZ~$}6^tpRRor67ril@(SN-5ehf2%rKOwPRz*FaB31>mc|qt z{4^C-$roJYnCVc`p(b7$AVusx4V^;<~9+WI~YpQYpezAAjFOOao3KGhP~s&GG}e!<{CKAq;xQBg6Ir^N9-bdo+GYEk~>!iPHe-OTc%)if80 zvhP-80Dpg3o(U2z#p^vE?yEA*iwmYgH}CK76U-~$3yhOyyC+%4l-MC~A z>20hrBzn?UdMt>?dS6m~YKoZB1q@csqg-GPg@slMb>+4;WYCJ_F4b%K1l0=w0P z2hgyc31fFv2uE(F%ILjN8P8ZpcNE$kuaSIY;ep$IwXeyiyI8QwP*wHuxeK6wlxzZd zU0e)pPQ8kws|NwKUZ2o61pTp29B{ooCikTur0vb*aOlbmq=eF*L154?XLR_RA2mO-P~9!IVb^dCpz9wS5vD` z_ufxOHqSRZz>e9H%`>cfYasE%!R8X$^Amkk{aLy9SPxHuPqhad^3ZMD@*20H;Iv~W_jarA?kUzY(2sbOT46Vf zktI6e4iT|s!X6{JjFZgLO<1SQ@q=IHUQhnvG$TeOzdmJ-`}E#=`)QFyd8yZYN!7}| z@SUN^njFNDO1Da(8W?BKKUSI)(1H6uh&=hY1tr(z@4@AbimzEg-fv2GQs7xC}^68|^hCeRdIUN}8^xahh({V(yE2&EO(nTVOT_`1~6_nefeA|6LE zmtoOmph>gtIn7UGT01#YFJc{ESlRYIZ&=XAEja#eD8$eK75=fGRr$Wxd{vdu-HdZy z+}`#@D)U7@+zZr;|5DN%5jRQVso@SxBw8Qf^5xWf_pLKe%G(F=^0bR~ z+{>aLN!Q{(uMzuZRm(q(%$l?|Ik?4PgMw-syA~HYLmgL|E}k_7Xt>%g-?h!e*j5Cp zT|3XJSJo<}2L{zWCP!#E?JlMDY&S??p3DimYR~=e=_8n<01-=Lj2c&uLNpWu(JrC!X3W zWS7!`sgFNu#^4LQ$Y-3QH`DCuV}CleUOp>!Hr3vD5kEhi@5o&5*Is=*QZL4C6vAxn zEx)i3Rqw5xraO<(W`QgZ;)qJ60Z)B%_S*T$w#pgfUg*s9KqU7wwO?t}v%YcAIkFR* zH9x0%dr2MNE?RGO`+;}b`g6)mypb|REUok65M#hVP9mJEnlUBgiHYb$PGLOd?2*sh z`0|}dYNni2w)#NV^&Lykb0&+->9vYco78Xb?_!(FE^5XGjC;zqZPc*~Opf0lYc{Gn zxj)yp$(iiF_7JYEQrce%f9hLI(ceV-MQ?$T=bl%oBj`!W~ zD%I$ybZjwL4WA*b!D}<|9;+Rf4twfnjexH?71ta_`|Ybt7?TJv<~UR!56Snnl2d0W z_4aW}f5sG}QG47+mTqn!ieJ?qq)dhc2~! z>U%D)rN)E0vCY38DnYT;lMT?;i36f0&*VPmZvYc-CcHylOk~@nd?wd7rM;jUSQ^@` zCpqqDd>iQ|=vO3UTP7A*sq|V=BbzN2VYG0(*S1&YUgB?Dcn|3?1VNcPVr$wWU=%yF z(Nf!Kd^|;RUyy`+cxh#Td^Xz@AS0{C_9m1m;;){adtd|rJ-EyNO^=A}kM}+E{xskH zdBZ~g44T3p5k#dxrd+luV64Z>4Q=VNR|6a1ca+)oQBaETI@Dq@4HW8R<$<1mMIx(T z#%a`c_T#7GAc5N?L3qmlAs?`(F)KKN-%cGNTcB0Kn^K<p))yCT&-#dk82$dgUT+h6P8UeH)9@9rXyK=X33Vk5A66cy{HVPiAiBiw}>a z;8I#tbkt{$rugFpS6CWmP^a-Q#kfOt$d)Gj6EB@vk}@NXg={RdQ^mYBs9e!JW6-aK z%1ObVbH#73i*{O*h~0aL?dt|+gczu-Uu7i959N^+wa+&*L(h#8BL;GiaxbeSjmLfsd%3FZ-uNaD^7zqmX43t=;1dx#-`t7vDGV@<%HuA? zMBT!$0jVmeaYd6JAHY~go__Yq=guFP)4wEmAm!50#mNk}i|#-A9_AxdrIYqQ)s5!5 zW)P1Z5@X0)oV}OA>%xDb6+oHcHUlOeqy@m7TZ<{b5mE%6?N2^4FvL&-Wxki(E^8vz z>i2RWxv%D^QfZm&H$+d{D92DDXD4~r3DKwUz?@}H`yDdUyCYu&kYsE>?RxsdTKsMU zNm`UA5GORataN?;dO>G8y7g_WCzrN=DXwc7SVXZ^M-ZX82ci%BQ-Q4LMf*+VGoBnX z_8>%G)Z<)m5m28Lybi&_ic$e>BPq|%T1u>v&XIgqi5?3kXSvlz2Khb~7)tK;SqdD` z1ia6yq<=wfpRxXej6K%}7Zr|oSPuT78f9O91gWeHP%Y3w^?PCPU4=m~zIZcegP~L% zyU&QTb`u6c^Vb_N!uUUEe^@Ui?+oqgi_nbbhmh}$#mDt%hG5Tk_eanR>EqD@KO(rU z=`fT`&K{I0pb5Om`2LYShX^T1LexUG4TF+?VI@l4nmE0G(eNiGZ%`M?x%!{n!VdFM ztLCes!Fca5l)UAr_ptyF=06~>)_#Kzbp^6Fx7xPc->JSm1H%Ch^Daj6gak|KColHpx{gC_7>wpt6X`x_`;>+nCk}Mn?x?W z`3msa`>$J*$PZ^yV(L5rD0 z&8S= zM$i|&gBn!ulOIG0K}mpsjY z41=fZaA$t3ItGLdwm=NFuoh33 zdGe95N0<4h#jxAJ`sN%#xnG$dlpNz+Bl<2soKN{n)hNE7eUKp0j9TRIzbfD$ znHI%|#hw$bmpO{P#WAHHatYs?3%;a8pEW=%E1Wa9{3>%nf=zGX8SFQECJSHsn2D-h z+B5TD?$Xhejtcw?39IdN*jBDm*UH$scM0=|^X!ani3s}HO! zy4FvpIkhR}wd+aN%0jVfPTXi}F<~~#uqux-H|PIEK~r<|C}(kQGh(bXA(3v}yS^GJ zdSqQ{oPN2rs_t#DUQHXdFPO^G&H>Af*5$cqt?F%mTOUaE#;SCxXa>xz`SwD;sJ8gN ze(JsB;~`TuC7dU>I^oZ19(5{fgyiYE@oKF}4rCS+)&Ux8zPy(D+NV4X57gM@4Fw{r z#-5QB;3LSB!rBgBc`9;j_HuVFppIqNOX{L!P4KPNh(l{bkBaxjJ{D_$8z`*YEJkCQ zAji4><~0D2Cqi7|!sK`lGVdA3JZ7>IXl~LF_YN=aypT|i zsXt;!y3U$;?^wtsa?&vRWM<6o%`#vh`8<0E!cGk}MSs3>3!j-tm+JYpAEOtHQcR7% zCd;;5)qrEpM^PKp_>o{LYuI;ug8Ikd>W!tk3rc)%*8_pIMSOxN%@-#v_+G}D;p`S{ zq~DOqWyQS1(C9x|B3PVhaeIAHez5zg;WW)>jM$^ZT;~4^2K2NOdt7FAl3B`ir5Hmfi29j43 zbyGYSGY*BGamjPv75~yAkCansAC)(q-f3@8sOk^bT_J~n;e^@Xqp@w;kHXe zu=uLiiyPpu-WORbAW19DL3Dv>{m%qybb3n78EmqsAb&O$Exk?EB&x7r4`?=`=^dI$ z52X$c4uPEm2jXKhcu38`>S#@kgh|?Vph&?a8Qd*vtO>wp=*V>WveF8_Rz=vCICbu* z4?AD;RY*8Q|MFf~^E09N(Kw`}#^Tn(Di=8zO-h50rr?qy3 zkyla4H~5%s3%X9SYn;Id?V2O-#bgfEAY5=&RDm}$P^{;`#06Z|Mez^83^#W%#zybK zDMM9;F=(2BFT3oC*6pGHp+Pu{cTgBvOIWrql!M|}%&P+8c_&jZbIv`dYRlzHJI;sb ztD8ooW>4oqkBHuXAxYcDg|m`?^7D|1#}P8A_8C~F{g|633jCLC7im=;d2Fa>%v*46}sEZ zQQeoWmThD19@;jDQ)ja1Y^M5zx$aV(y3SpG2OuB@GciCshA6KiOmS_lhxXr7;PE7b zFCHAwf~ZP;7ZCb9Uhez1Ppf#~b!B-?>VN>-__$l{-l|_uu50kR<^F)PqLCB78h;qJ zvbX^a`-vCf9XrX7@(8wt(haFWRVwKHaS{pnaIjE69KxYId@{$?UjkfTmIsNGhMlYJ zO*`&QuBMCvhar+d-G!~<{(Wcb(m=;h%|i&P{x`;y=JI}ei&t{&42IKJ0Qn1YFLTE^z;Z!28K77K-v2FzV7MyIvje@YBjqROSdC}7j_&X z61r9>{_adDC=i!XRCMTd4~N0Hp571$EUp-cly@c zYEICXkMa;w`&~NV`%pRYapY;AYBTAsBDJNoaCeTB6F(T73eGXw;{dn7{RrdtG7}^x z6A*&}IaJE@(*tk?iOQ~wU^?{!kSSsGH1NxxXB{fK)8#9J!Z(xBp{G(Bzr`&dSSnk; z3+GZthH0dFP6r&D|3t&j8U;+OXSXh(Iq@4JRc^Tu_#X?-xU@Qt`aQ6_wk zprMLE0Hf3)^Q2$S(yV;C7trGB0E^Vaid|beH+a~2xR(wKb4ST@7ab7J3`XbLP>-s*C(K_oF_`!u3( zfA(I1T0y$Y1%-?xkM8ke85!|ClvPAp3s(a0BlUsd^@q7~l1F2EwO+9$lU7Il4+PNe zDE;y!9aM`SgxhrI?9k8E+J0@zP)a{0`GYOc)HJ1Paeo67N_(Q*bLD2|>mpk%5P*sI z3g3S#5s4Dg!d-qeZAsKYL1|`dI-nND%Vdylj6j1AyHxkGVr^fLs)0;tf-G<|g(Boe zQZ{K^Q6Ymy0^6n|w_f1j6pBSEwh+NFCN#m!#BEv^Q`6B)gDCki#h_dr|^^16B`x%=Q?1#(DvX6S!Z^KWMUtBt^Be9!NgxOxnD9tjB^> zmQ09#ToA$xUK-ctI0MDU1{ zTiK5#N^l0_S-_hMjOw&}j0}pPQ0-*3Kjk7HON+#Ut3ncBisc!^>rnW|t3 zJDEXSE{%2<046L;IO>zabRCrvm>qqsGga1pEp(YTUKtCLA@~O>aaM)tzKsqIrrFs2 zqC)8YRT{{!u`R7i=rbXYF$Xj0MDmY~vu*c!;rEQfgpTw#%dG}Z*2)-}3b}uZVgFYR zR$_<+V@~E@I>W~Pe_5CaI{9mAr9(D{&2pfcgK{LZwHu)8ICr|%`(O%dl-Qy-E~tLB{_r%2xev7OG?_Eay&F8`>UcT?P?uguVdrC~~{L z;0sPRgp_*vAQlR5+-^umkoNxMw^ER;?v}~o9R>eRp$a_mu!_LODP4b&m zm9Y4w96m+k(;@%;(;F!1M%Yp*<`5(x{6 zR=U17-XFLJao9=ji3$p*@~{#D50#_#c!cY$93G;9dEqr;91`^&5!M%UU5#6X*a?Ak zqw*Av_vE4bdA7}wh)wNuUar2v9K>KGze&-w2V>1p zas#^*IW`~p{$rGvEufsg>MygC&dbvm1W=K67v2=ifzf{cy5GFXTt|2%TdW=Kqdwx>;=0#)hkSa&eUwi9oeli8*lkXvXiuXmKv;Vlb$_gFhl?23#f3F0z{?=wL zLgCYXlG-xB*2M?LfB7EAU*Fr}fJ^mGvRm6f#xNK1wh@WiOjI=Zk5ScsjK&Kf9Yz2; zf%g%&)}wsD`5Lb=z1Y#(8{cOK1)KP9}E9y0|KDb&Vw^3;O+OfUY1$PDOt9fX~?s-E@zQQO`O2stoT{KS4 zP&PyYEh4^RKdq16d@=@`WDuD(x2*6y6xrx%Zfvt8b@2W3Cv9ivYlX@R;VBszif-dC zKyYaD@m_lK!xT9~+K>@nm;JdkD_%vh_)h+fDXc%dl<@jGQ@L#92*pNhyJK>=?9b&a zCADFS4nKzs-_;1m`8ddl7=5S_e&u2(O_&4bUO2#3j*#l6$b`d>_Shg-%m_6`TrM66 zN0eS(gu~rPz(}-yy?Yf1401v^POqpbeCUD2-&Nab^eC5ags>%OV12c9Sily`zpr$zXGCfjx+JkGGqISwvKQ^kG z!jnKps2?}-lqb_9zY#+e9iZkQFJ$@zmL&RHx|x-I*TKKHJiGBcul~q{*5+Fv@#NE8 zrwFC(RDFH5O8z3#@`sLNx!<=UH!9ZFNf^tIF0ZR`uGY6){Hdz_l8A?-1cfe3Y?QnG z$u#rPs`uiq+gr5sO)RM~i{wguGE2$X?6_rFKIecszlf8t-IPnZkAA8UKYn8cAsljx zs;j_6-3W?kQp;Gy;aVshQJurniGQVR0E&`n7PU(qO@m`iMuD}lbu@}N*|tbnWid)9 zNyfUIk?ZNF56BE5m1WbXu^2pE>3C_z*N{9^W!42Y#e{F!=#55?u6rM944&qSZfu{@ zV{^He#zCcW(1cWYY~?wfm4wnSb#`TrU*f(r&|}2;$uG3=-R_4t$%Ya4XbbeoLR5F> zM^}CBLdFg`H+{3alM`fn+1w7xFLs;y2}rraXR&nI7@T`CRubA*fJ#!Q_R%sm)tf?t zkG~;lrt;Rh>k5#p9KA}qQ>EY`JMzixWu2N~KW2ANBdpWE4fF4g4)?pwc-rfXQ02#< zy9uQbWwzxo%QF1nQGmYxN4k>rYtn(Qx0Y-d{fHdfDT`bA#$M*Qx_P(Iocaf;oU)e| zV%K*}x}*1G?SD1)I?ilC4D;}=lsmplzEC@+G$HkR-<`2e%ClomSjMV)Ekvopeugxl zCv{)zi;gD*GIH)+d8YmAN8tlefBncYgDY~gYKCp_UWOsNmDhKqKO&999nG)%j286Z z%1sTSz9?_su1B|Un4bvHDKN5ckit>^_LD=vO!nL50}sORKb?cQtP0SpASBo^Q5?D zCjNVod{Dqc<_C%9<0q^VDCU2av(YlQk;23}f?yc!vrmN)Ga7J*&jC*M4@(=~7M(SZy z`Dp=AlOsV{x?WE11l5D|HmLbGwc5y zB)w8gJC>w5+8ZwJE6;bjpz8++5UPCubrgDtsh>CfW4`rPBUpMm>yS16%ac_3q<(WE z#eyCu=z8i?im<{w0ZBx;1fp0Nfke`Df{!Gu!XWquYC8f;5ok?tuLNp?cv{nrH{;UdnXv7NM$W>Jmtdif| z#_AU(3Q{G^0lduq>L_%MjdQq-Y2Uo@WvtvrwKdo#TR~4o8m2_b^tI}4u`K7+Unb1T z_p6kcXa}j|qorm@?U&I&F?c#fR_KP0!#fhuO;Vvxt6h9mF3Cm!wJ+%M{BXnoif;dn<=Hp zqMai(ry~@;GE|YMy<6vYm5+ zO(s}Y(wvp2;1`v3h6?1&Y(=9Y$ryb7$4`vH%!V??!@5iQYtgfc01K-{Sr~a^e`wOdM}bNQ6Tj2;@^%A%^l z2^a-2O{-;5Ww0sZP-pY`fQUAc?hg}^GKu-uHmvecL68Jz6})q^H7 zr_+`93spfXFhUlR#n2_3_W6x49m~s5}c%tv8B$1?9t8k6Aa!j9Z z7t?Vpixy*Omb1u`huM<=ZWj&V`9K!u4F+?t4LJxqN0#D#htp)U|S2e+C_nk zTtRDMF&O(nC%c*NedqGb&_8@9vt8A-y1T{mV=C9ywHlZ2{q%XJR%Om)jTgl+Qz@&i3d1_5?^b1W-=pB^1$)4Oh`4&psMkv$@Gg>?LlR%r z`(j|0O}w1x9-uRp6xO7EQ9+QB*>A$$wG81Ib91CEJ#BS%dM7y|UxyEaN2TH4ev{`6 zgNzzb5pe1mHrNr6h7*}r*LrEGe_vPc8mzb3>$`TRYS6{-*)wih*evr3nf5wZbw}f- zQ|4{pOza$V<*Rp~Ri(7u{(zvo+I86!o%XRf@F~8vv8Yzw6d57pN*+#69#e*=XfNwj zdYL|zesqz+HC3T~kv!O#*Qw};TqwR$$|+H?0oXw6kxF)L_s49e%++w$Db;dS^el7O z2>#Qi8@iXCZrL{L-VUpK+7TK5U{K*|a->o1v?+7hIN6S`-h7t(r!2b~wdb+mM@^2{ zh}^P{p8KQ7R4O9eH0~pJT1zD7HI59g2=8U5LA6hp@0YEI`dhz=ZpiaEvUU5A!1OcP zTO-Y^1J9XDV@}f%|6B9si@|IQPoRgX)ngdfnR9S6E*s;Ui?MVr4O8bIEn)T4?9(-r zx~zvb4Sdgyk@dbaXze9N-5}b_m;8-%L`|oMdL30J9+zXxH}56WF)xHR&KVZK8Ja1f z=|AR^a9J@6wY2J&n_71Xl3+j-fTJ zVrpDxE-Wkmz-4vxzgj^ugjSdEtWV&XrW>@RYo~-If{N>Oai;d$8po0Ftp4<+uD{+; z^-qkPn=K}TFR_A(TSU}2!+~@0?@7R=xI;rdOeL)lQe+pOkgG{GUBDB0`eb)|$iTfJ z`t%@GucV&<=PJ*{s);mQK^IV9C&aK`0e}KUfj#}ak`AZoyB&ed-M6TlgVi^Wtnoqx zs|xM{*B1;b#_5}NS)AmwmQ%hPY1$TCl;`p3^+Q5Pn4I~b;PBeBSV*9@@L`?vgDPJSGl00aG zihFzI=N!47Rd&Z;_>Z&3z1{Njj?~U7JO3+zihn!h=hb|xiU2O_G`pxcBDh6jMGYVH zAK2wLu*a`uk5j`Ir-mg)1w)Jk{*So)i1u_C|Lg90=c@bNsh!8iDW59{|7xN|M%g|& z-(YVx?hxkOY$)FCNBFW8)UbUdQlyeP3fw6Lh-E5-@4+*;<~24rxLDUM?vBoni_arJz~-%2eCwOlB|GfB z8dmG}A1A8KzT7_UZ>DAt9bX0Gn|$1xmtA#yzCK_5bE!+KkL{tp>z!@hUv5uJYaejU zaA4Nn;$Kg1&9<9cIv-B9l&f%G4>}y{d|mEtu~&GwTkl()h-aCxuaTiwzTPF0Jegh# zw>OuzPg}ljZjT>wd?#C`TitGsUynP(rhFY9Z-=34^-ZDJ){lFkZ?3Ms?st3DcuwTD zxG1l_DA2DJx?3N&m8&M-AuzFlY>Hv2jf!FSkta-ITdQ5>Ui>l@z~I{jZ;!doC-3|h zesZ!8{{$zIuLBCmm&T`|3U4A&TA!aGZV@$5kl=rAfpza;n3v$EeD-fg_b~01knk`* zmWFgV2G(n|EW5UEuYml?)?VNdr!B$$tkz72#?j9$JLTLUi3`JQF&?g)nDD${+ zGR)J*c5%p+J$%_OrsYOEzuDVJGUOyvC-U)2Kfmb!DmBsXY?Sr3s{N4SBmz#Cm znbVJ4NcRpIHH;rUV3E4JtwO+f%WS(@@_fLi>G6o{W6-JW86!RFpp)q0 zj4DCr0&>^kJz!ZV&yM==Ad`^51a>OhQ$Ien{OZ4Fp=|%|$%T4vH3C(-9)T|32KJ@x zQ3slYv{Ru3rhEQo`h%USN8O(f?b#6^tO8Dgb-zC9OHRkaj`Wt}61;>*@J1qHA>`;$ z2C9OzQ}(Mcs6h#=M7J8$qvC%+-nhZeyFHE(Q1L4>h(pmU|E4&&O&N1*adhf;)Frsh z!LI~VFq#Z5P)6{~%&s4(jp;gS*9ZFc7bCF(l5ETXIY4qgza0c4yA1DznN`yZfpxy1 zR}JdPvRnbc{|EpiB-Z81UK;>OuNjog3ScD8F4%f`fMvP5*9RbNY3#2m{D{F7Bv6qUMix+M-7%0!TDj+);Xb-(<;6U7OOWy#CBY5bK{RQCsEWc?1 zMCkWDd0;&(->Uot94%Ssj{#&qO8`0Ew1?v#InWXIvIO)wG3Y-eaK4&Ebh}juI~hMq z!ah0nyC5bxKg;i0NWC_F>10{%0JNPEc8xU2y)zC#-zo?A?k!x*j9KlmrF>KOGY3n8THL6q$gCcm(MYMn}dB;u&J@Qlvwm z1hWL;#OncBM8_)OMB=~Va8e0oi2?~XKf-aCATSEaI0Biz4gt3s!Vx*qb>ac@T?*~L zhra}&EEAGWP7nALM6zC$WELY9!Y`seFX6N}a3(~3Ny2f7q`YbAkOA|@cQ!>cf_^~& zq(#>FQd`IvvzD93`?+b>f4YDH$f+9E{ zb|2?vZi*x5T!njrBse$q3eIn$pXbefLFkhc^M!8o`K|`BGwO)N2l~4&5zz_+&?dN> z^f&SW(C*)LFjOh`B#pK7F^R_mgTmvK3~CSqlU0lzh{kP#PNM0%csVYYk<@LS!!$texl9xk%+A@2Z=sqk}*qCHWKQ@6VA)Z;ogp(LOLgCC6V46 zabFIcY>JY|=Wr+_&;s!=n%;I@o<1DWM81z%GEEEui9(;W7-Wt9kv@Gkcq#VPZE+al zWMu6pIayF^5`DTtfMB@Ip<-W)ee_aNcM=^X;SEj8xS>h;(M?IZX2HR zY)AH?$gVL6#%u?7SE|4rY=$d+1idm6T{H|G>2!zmT9A7tbVh1=CcU#_fVJ7CKnGlg z>vTt;o9W>%kYEP_qg&GP&7hM^dS4_`y8vj|YcI+Jli zwYk*WtQ1;C`^Qo?EN&Y%_T7b9mlE`OqebUB*|74$30jYej zoexIn?XN-E*Tr1)>zBoG6d*F&?n?zOd<`N|4ta#t;1lW~l)VSD!KJg@>fV6AhqAm6 zN&tWJA5gZSPlC-5!G@R|CLowfX)s;z=!-bPrXzgi(*G<-*?PWv%6%^;?$$V}etkY; z^9i2NwYWi(c`r}v?%JtVdQSe`gNE{c0Mz}uuX_8D(V@$5J9gwluwH%p%wpO7dai2n zE?BF3`%ppQ1NFEf72o}}@ddmODID`Z4@@z#GW@rJssHx|eN6v%3Mai z-d~~MYutd%qLbo;cc()o-+(|;kjv1G{`hxSuaMY65ZAcyFmYKfx@1`)DL;&V&dcNo zPK`>UV746=IqHG2tBfXOp(t<4A^6;JTGFh=&E=ov%POs?>Hj&Wt6zEW(2I1Q!QLLM z<8uOPQxI!<4p&4fDQWr$#8jGUK@s`wHw)freBr4ATp!;g4Oy@I&_8Qe6?T>XgOmZ) zh}0JHc$FF~yNpPUfK6_ouhX3nO6jJCuNKz$Gt*p{3v{A&KP=~V62lo~gGd@&aCjyS zc>slh7IwHO3q)IMy`Gk0WcYTLEKO+LkML?S%8ij|$rLS2XCv9|^yejbQ!7fcTmfte z?Vql85uq5d5mha2j;*MA0yRIaRM{T1J2K02LjlU2_5l)-RL*-cfmbkGj{CirCZ4*k zgges{d3ReWGuN(uKUtqnA)#I~IY@U^gRIsY3oTGiK67gmj4L?U8}_c`fH4%yOc$f* zE4~i}(3AgHOEUidYDpFbdKQj<_g!Sb2MkOyF|zaW!a)9?rN8Ii5MD|mO;2TQPmd|G z4)t^!5?j9{h?wEU{es}d$%qBQ{-DxFgCGhfc|(=rTc8Wqh}e6L<}pFWjN#L+6ZbHW zL62`Aw+Lf9XR+Dj?K0jOrN7vv-oGtf$bK7s>3ZqfdLMe)TsnFzb1XkqS}0R2kzKG( z;ExJJjQits6h!gzqs(w=0kO7~+}ccIzUBUKRnC^I+$}n+d&y}6@?u12_!7T-OVUWg zYhktm4TUe^lBgUKVemwiPRn_r;_FO5+$<*e7;eQe6YJ>RdEs1cW{Ipv-%&nJE3Fpd z<4LsZX>h1cl7vs-YO6hu+orL1v>6Q`;KJTL! zq9e=QgqSxM=%gg|$Na8ehF@;iR!MH2ZF6qhL522FmC6Vsgn9)5-M4w}@-qj_%30O+ zE{#eBIT>Wcn6QK*qIpS57}9X|(p(z?1x9*Wu}WfVBi95$)C1mPcpP>@rB@v7!9*I! zSf&vzKd&s%5V$#KRZPrp7Q?ZN)2S&>1-BMU#42XEgR36{eLM816BXF-OvTKKN+i4; zV9uXl8SeQhqs-+@MlQ3M{tB=!2V`a(My`aqux+{x$(m-A*XT9K>@aCKG+1y}AhHPV ze=ZBJzC}i+kk9oU(Ql$2sJB5re|ydyy_$oav(pHA?>F-#FP}rbZyan$Y$|vsE439| z0nT&&!w2pIx(X9lP`^jL?9o7RaE;PvwWTT;DJg zN3;s=gEO>+KkA<>??GWzhx=e`wuJTKyj`Ck3c-wU461XhefL!jJqmU$`;Gf+<4QC2 zOI2^KE#!-8sJD&pj?I|sB+&Pjoy#1E9_skh^a&>reE=VnAxr@J^X&T?!seIv*>!Bd z?(4|&JdcO?o`HbcPazudn${{y_90)A0-T6n4yf;PC`f?4+7YW~Nx z!SxrDld})i7uNPz&lZpzkSauEDFJ&p>NfdaAtpQi^MyLqS{K zs`+@TRQ#t(2ev(bP((}~=ZZXoa@b`hN)N~531hOOnAWFCno-M?s58f^%(-|(aGK#^ zjenWlTB^|KR?MeZRIGP;6d!bwf9`%?bw5G8RfN%Cp8ek7mazKuYcS#xb?2%3fjK`` zo|*dH4((0!D>n7haQMbj&PUYA>XR$hhyHfWSGCV?{fb=bct;76^qq0%XJ1xOKSZ~r z+0ewi)8~{Ty>!}h^J;-Y0t%w94&fwjZd@rTNlDSKVpAg%W3DWYkgyWhoaQMK@3)uN zxt@1{Kq$yiXdD$K?hYg26LEQMfn?)353j z3h~TOIKcr<13L{(V#E9?$J-GrD`+vE~}G-!AMlvG(OwQ1yz=*s_J%w)%jJ3 z)YP{z(P(NMdB%hH7%sM}(^DN2ByVOLNFrgVP3?%r7 zt6x)!_y|v~;*9{a?!~~bmddy?SHJJg2w1%paGuwwcz|U1%&+%gK4k-A!LD2i{Z*1V znib~M167IvyAiReE&L3>T-~)Q6u%^cMY_}@d*nR){m6qurWXTZ*!ny~~d3`h(Wf8H~A zlnaXVyMAf%pyagnzQCwuoaf0VsKE1v3&7@w;w#0szoCr7(*CXstE>y?AR-R5{186=6GK~&6nrGQX*mWZv$ z@5)^A=Izww+aWxhQByo-AN>P|GyRnT|KyfZjtM?4hNQnX#4o`+e&rJRql;$0WaZCs zW#TEJd$bAH>PYSt)NzNvJoaUkL?)$$M!Tg)2AkXVNPF~j+%L@zo?KxTo?;7|@X6UP zwuOoK*9?lB42ik3hH^cj`6iY|v;)G2K^|v$Svd@CG7h(-J=l@bV8zK}1k`lScG{yI zL&hu***{kPs+c6w6^jcYQbguGhb~`%(Skcn1<3-FY?0+6T z)n(bZ(5tk7Kp-NZ*jOajZsnDZmW9q45!vaXa^zkuYI;5SZ~ApJg5N&TC?ZVg5S@fy zzVW*q`F$>cJN4={idDd}f?x^lEUw_nJb*mi=-%mqrK+$vamkW*e6fb=bW(iNoG>N< ze)SZVp=U3NF5-sXb8TPsnuPa=TyQja^e*ifV00j@!^)qsPQ9iC~3WV=tSS zVwFwTX_gx-YpiXm%4Xti%O{*(#Bz3iW5z}ir9dk#_-Vu(pN|PT*WegQaJ76yX2D`% zT-fu6Ef^icIOUR2RE7YTLXimAJ=*`h#gsXCUp%^7Q$sYJL}3v#zKfXBS|FOz;t>gr zjY%HEpVi3X?7fN5H{3VK7nyFaCXC!dY{chJjNUv$L^6XI)@zm(a;Tc+8hE#1?#$eN zsSy>ih`Oa51~Zxgnp4mXAyTe~52#|vl5-T{y=_rkDLg(QO;U>;9EQKd^9xEBCl}nJ zv_Dvcq-Jfui$EhO=IMCh)UDPLYW-Y^yGpD4@eGTwC3xcux+y;T{I#22@-K7ecqOIU zPuY9qX-!ktG0v>(@H=&`3{0Pe9b|?g(}uHlG0m765TtWlS=-minY_-)D&(>ohIv~o z(VRce?8QWZpr#-t{dgN5G3e~&V093aelx(#D;8#bQT=5Qt^pMTI#JFQakpVIMA%@i0B5RE|UcExQ=(o=h%#j^o4Qx}xU~~+aafxbxh9}WG8_N(VcRMiF z_62&`kt`l0uc_AbN9 zsPZ>f*m>VFN3<|7Fy@AXf8s~?QkY2@tYEic+?WnQjQi6OOd%nvJyPUQgPgpAN|2qDnG z#;fBUUtPJG<=QpyOnoB~L?c=~L?W2GOk=>xtC#ZPlp`M{$>7fF-eym$mmhSK)KN=c zji++}Us)SzQ8+AG^r1F0KhvofZ$b{?g!k?GsfoMEem6MYE+j{b=|vI@nk%o;#oIk= zUYENA?I2F-R^p=+xk0y`Vi+ZX_T<{6O^28Kp?Hs<_QCq;pyg4*yC~}sf!0_2)`_?T zg*XK+jyY)Ci)bN^7U=RjZo)vtBsB%v0p)C_UuBPWk5EslzZ-)vr3K42;x_BHy*$x@ z_@v83amrJC-83tdqIeSHF*7}MQl2TO=tLewk9yBUk2QZH0hwgVH{0*H-*Xr&-W5dO zw1cO43O`r_oyK+5^o+2GRxln!oAx63gJN=#^OFsU3`h`adxZ!GfvE@^i}zzTHv_CgiPO^tNJJg~pzu=H zK0X%(IAFou%_T|G`b6YL&0i zC+1(`PwIm`#lU@a?MfcsE%VaDxJ?bXS%Pizy!7s9r2|_GU8N4=`xjK=EyBqy!SY)+ zhDx@0(p$Ek&fYCQi|Qsc7`kOs`mT5Kz0pWUj2QC7EFJjW>IUBxG~9zh$^JrE@y_cI z4e|$zDJuwlJ@RzC(F* z*IVfK9Mf9UM=wklt+bS}LOl7=kmUh~g*rRkr^ngnkf~%hLN(b?=Dan~>_F^LEf{9I zp>EZW992e64t_b!@Wg8;a-iNxJ{AODUa4DLn6Rbc1DcG8*a_CFtaMMF&FhiB#XDTr zf5;MVX0rJsg}Xjz*b&~)c7SGycQ_sf0tBzr0D)}jk5J+Pyl3|--l_r!s5F(FKh?p> zRsT6i(sikDUlmZ>K3V|ZlWOO@-PN{ys#KS(VCrW^i?51{tK%BBMwOQ8mK2uRBO2bn z7e+K3)hluvaRIMwiBR2Lb&+$e=Zbgq*tjr+f>AJz zi*cwu;TMY$yqDOwQJaU!btNLj7W6agI4<%y>-7)pKW<0LU)zHMr47XUsqk2l=`+7N^ts0{G0c zE89(jDkeF4I3~2Tx6BQbRF2_u`Vx%6ItBGB-hKFmyf_7|#Tl!R zoy)37jG<&_B3+mp+&80btV5UJc}hoEH>V1kXa@T74VwgA1}kDwB$eG81ji(2ws0Wi zOdlC_<8}M;68#la-9+YLzq;&NFyE0m5lL!A{op9)}bxy;)5-{L=u?xQqb&+*YAt&Uq=2p z$miMjfcnl+k$el?%3ZM#mzW-BX?dcpyt3HdOpur_A4xEmkgrXC=Y?x@dkdX@ui~*8 z=g!-y{O7n38lePM-&qwl5dA5=_k99 z*B3dn>a*8xL*YF0kY~(_Ud07yt7+SI6PsTx@s`#y{>M+6n;|PQjz0#onYYcW<} ziPqEEI3M>;>jHPZfHp46ruX~{Ecjpi9OQ#5Ny-riT$5+Y$Fam(aNbs8%#tH^iRFI0 zsQk84mq=H>qa?~j{T89}8yPgVs4Jx#th8eGBRZLeD$L^EN73S*vE#ideS+K?UU62c zZESb9TyUp9zR#bW8X-7go``%@QY3u=6XkvFK^LRAaFEvQ0E{z@FSRl+#jogSao#~V zX!ST%@Xfv!(Nsk08tY%lJvAylM_UOyX@Bw(F5V9xy+cAF3a!_{*nJwbZT%ZAI}P6w?Z)beZI;OC4Zd zg-1nHdd(LM;}M-vVn|<*ceUv%_nlag&b;@ju#9|i#EU$#6>g6N*qQ1TjD}T_H#4?y zO=XggpvCEp1|YHnr=)es#2a$*?o8ugS4Cc)u=-np)1Y${C!&iIrxc7&qz&P-V$~T7 zo~n31#6FxtYwhNQ-jvp(0LD@Z=+*lFIA<{d|5v6cCt5+*On zm#1q@`X1=E(92@ObJ{c9Tf-z3@lCn06W%f%lbwowT>)S=Z73WgOu6iH`ltLSlh-ig zI+j_p``e#taC|TnWD9dzZLyE_`Bu=bR7`z){n<$|3{^taPYPTYgGdFs(^%tGSrB~K zyh7^pxkCoL?I$EIYNwpdO%>3nih9Le%-Aea$Eo+!o#Wi+s$Ss+s*uRtb)4^*#j|=D zkk-B-DR^~LFVSu`2|4i<{U}M_+TVYwW%>wR)mf!Xk=B@Z(CPN!#ib_U<`wpasm9(t~`IHF^McjurphITzSt7V>k57qj8 z3b|E8r)0fg-Q=~UqU!9VYRlOhmlk|WFmW5sGXI0;{+mftY|Jd)4R+yETHmhPciiaK z6(tv*9ITa#^AamC&!~$ba=QAb?)8N#Ne1$UPxD@^hnAvQ%NAauCm0NiZXf8Bz%_Qql*aQ26rBRH;jdx%zbe;FZ ze8-Q;&N&fntoA0SM%N42ZYgs$p)3KnP^#d^XtzVd&gPyymzj!j*fryNA1mZ`=#=!q z!+PU$PPJPT7d+2_=?@AQc$HURE|~1S*12hSe7sSrXAo{CcP8DC_6=<>Hs5StlJsJB z3VF%IR|&%+k1}-)g35#@@wWSd`=cfa@e_jpDj zcY&84BPJTg4FkyZ&j6}f@;l)>V#iMRdiUxV7AfG4JMfGAT;1m>@AH-hmGXqgX`GIq zlYN>qQrAc7%wm{RJ7r#AYkzF@+TCprIOo851GHsLjp(dCptpwj_K1pZeuv29zj)ad zu_=~!AQdU`3X&ZJrmaaGzi=jIZ~T$VJfEM8`XclD5XB^ZD?&SlIYDO{gPYB)i#D!F zd^epHcI&0vmzTt8EzX@*oMm(YzSvO~ZmOoq+#XJ?&kloX{O#vW5PT!(#nDkJ?vcAV z^ZoP63GvO1=p$?*zWNteXuA=OX9X1Tjgn zjmg8T_piD4*oK6dQC1HzkMFB^2XYd72TY?ztY}=@pl!h^!ArB0#j-xZ+A@flqVBi$ z!p$rS{^y{b5c0;L2CF*fmmguk2eWQTMtzR7fx6NnK`n4oDgzK0xXf^#?~uZ^sbn`a@FR3iGQUoC#7;J^7aG{T&|vtvm*I5+ab2gu8q!^A9<-O{6gsj$5j@`* zi!<<)%lm=d;=bbLb~I^qbk(?Gjc0RjxJf>})j0SCUf`I6NBc7Sx`!EtJ^F4b~nPb?k>S|Bh26HV(;>;jLzv-5KzrBRApY z;1)c;&I0GM3{4gG6>31TJ5_nh=$`#fV%?Xs72sBn^JYTkGHJ8tYY(s6M}$tfo4Y=t zRGV3kMCur}btXq3!b=c8L7l6YWXwQ8*5U*&Ya;RoLp+`Lp?=n}IJLr5YB-mwnDP3Q zO&k=?fvh$0Hf}pXZp&mLqSU722!IQQ-_BFk3X$!X-VmCs}7G#A+1?1WUah3jq()G?}1<(HPR;C5LY-!>MAK4 z>T!H#cK9Nal+p=B`N8IRC^%TR)ACI}>*~s@fVaFhon1}I4(Sz7x0f&-!wP+o9Q`o* zb)D`?|Qxr4{8W%<@TTY(mc9BBWw)7LU zM$`Ft&B4d&=-$+S{oEjWH}r0K{K5ahRS#- zSv!&xWNakqOR&TS2eom|$o|Q~FqhMx8p3LED5%*v1r*lbwN;-Ht*lovQ0htafVeJqVR283S0`LX_Gz&#{$qggU2*6R65CwSBOwDSAK;Wa-T$ zJCng%qiQVz>2J?wO(PraQ6BAqsJmHDt zsMg||{x_PlL~FO^DIQ81(#MOZFg+tZP37m-Vzc%d*=P0IgVV9z<|yXR;+eK2eb}GSZZ^)KnF*)0U_zYMkGuh#BW2 zW~!Y9Nrm~Hz{2yMESxu`C_MvaFqwPYwU5c%2cGO7xb4yu_CqQ4>h%L}T0L^fbtMzV z6<@QWV6FV*9mRe3R5sl+r2ifL5{7P^I$`7O^DO%n(~U{ik3U;_vQ#}$T1xq65k$`#As>gG%`EYdRM@sq zqRf0>VL?G*z6kw!N$#O;%)p)IPU5U<8QZ**ZSGojlHIjK&>dZi#aiv`dWWsUyNZqG z2u=3baBw~jGf(t;jl+o9SSi`KgbbOA%_S3Xms^6H$##sqJx&}@(Cq996`CQwixel- zxsxKiL%%&{6BGYRo{7ki-wCA(5yw-7;f59M?VNZ;!EkKv&SkfG$7eNO32n+*h|lMX z5Ya~(cF9`Gmr8s*8xKW1#Iu#95XzF5-YzV1qF()w^2eXV>Mn!hwv!*Lh(#2uHPoF} z&ik^^o;_%=9~0exIZ9My^qR@Vlu9EL*(H7gpV4;t!AKyj$6i2}*azK;N7dfni33x7 zw-^414~KV45sU33Df~`*>Tn(kzvI_ZhyO@oT-qk>lDKpYu~hNniwv?h>0{y_W4AuG z2RE{g)flT(J$q7(?7R)iKwte0k*JK*umks!?md{s3K@Is&aS#F<&&>caX3y5e?WH8xcS-{wxs!tVv`SC6sQrBejb%%E$KaMAC^F z8*`4_UoP(HEP67Do<2k@F_=^SthhLn=u#CWq}uHw6=gkLp6}Ctxoq0NH^yyDd@ez; zn&UEgRmx>)&FbWPmq#0{pc<}K=TnQ!pd zO|QqjnV8+9Qn?yFOLnqjd8ScD_^;SQaZ&yYyxqq$zdvbOMvK+&_6!+>NM==WM=7_V zQMaHq{BcC^=hLirx{~a6dx-gWPfJROi;FM_6JR=~CAE;a+}P2R_|MBYb&HZEDoPR2 zz0>H<+-GkS{)4I4`%WSiZ2dBWjhcehFQa;$kJkMY>vo&8EY*pS-OjbRUxtrUIxrcS z2rL%BfPp~3(H5VIGj{jF_;@+nIBaDla@YztSChplnx2f%Y@DqrsyH!|RGgw_)6@m8 zZoj5|MaBGAAAD`q5BEK`X3b-d-MD64J%5$SY~&NOI=aGdbaizdd2;K|+5KHVI(-JO z;qy<;y9GXe4ASk;aTl5&k@17=!yWj%(Ccc^9YmuLj znUzcmm#hl2bN0N=u&zz46EX2m!J+VR;{*fqXMd96u1>>U6AX8SwftGa8M{5s@V;!j z;>Yb%5q%|yz7(b@euXPpar;>*TThWtu`IG81|So;=a-3NLfk-c@xeiC0Is5(SxtUL zu`;_=*t!fC8RKFDi@QBZCX;z6!dD^xdUyG&wLf|3p$jn7O;F-?sZ8!9QuU{3k1stPVQRml|_HA4vG=8D=}X98++?P7+xA$|Zl z*)lRTmzspv1DCj2y(SdO@1%U;V7@YuK3yQTFz*@Ao}A2$0sYp*B;GyFaerKL3ZI&r zD#}FP?dVzrjJP;HHACDK3~PVaXku53@x*AxVE!>9lo6%_$|2JM^Rt%coaV9ifW0g3faw;PX&8mX+@Q_AT&HRA>8h&fIrqc4lX<+0AZtvzJ^JNJs)+R{0=W=^Rpg^yYqj;Rwc372)$dD7l~OBY^FQaz z%w{9{`|R%@vODiiW_M=JdEfVW-pg5w%9@Mevfeh^~%Bm#651^g=Jt3%vja z^fe2@mxp24hwUib!Vh{AU+^Zr;7$CR1i_93pb}aFqPsqM0KY%cI@H$R95UJ8dXd*s-~(ID;4H{DYP*uD@FsNReXJ3 zv=j_$7>}Q+XlWwTQF8b4^-n#tu6C+Rm)3M|y6n{t_7S0mHJla?SFPH}lmcU!+EC~5yOlT4;fwctA z5=2WdaV%Y*(dWpQ$oI*6jw2{g-@48>-d() z2)&NI2Go-vc}C-C!G0z5m7B1EbtYj0p|eagBhScCz7A zgCmt9DVNQ|k__@}s;VN`BSk0$(N{f%aN^ChRGXqpho)#I7;GRV9HfZon6yhyODVaf zF(s!HDY>*5ZHK0eA`keM8Yh(ubjgg!(F%%7Y7SuPLdlE;rODdb8UssFfC6eAweF~c zb^y4&ZzFu*uIHcc$c+FC9;Lg^ocCyM7xLV9_bo>b0khr+`xwGio-h)pr6al}IAwFT zbxUx{=9KD4IEW41aDoRZfJRlp!w8D)wvgLhtYeUsRE7x^D|SHfK14wXg(d=Vm>B-B z!^4J*Zlmuga&p+m)#(JLRq{N=e@$>}aJ%zy=YPp>%O3;;(dn~S`e~=ltvj7B+f|p{ z>9VT|@^fh?K6To@6Gh~9HSGrGWgJi$@CNpQ2n^E>d_j%{+U44M?RJgPzPAta5g+D5 zQH17$KFf#sTEqI&U<9RtyU~%O_S-wZ&6kx7_GN>-Sr$im$bXSB$RbaZ#hJ;?!muQZ z)QTzu%nq@dt(JNaPSV7$Vb9i_#f3qOXi-$L;WJfHyD~?Z${{T_nKRMRmpp=}){sf8quD6JMhd{m}rWAypc4crW*^_cC71JOGUbajW)>*MmRG z>%rIT?S`@TWIl8@5}k4>0hT~!fF01O8bg}^pC}_y6USq8)G_^vmQoI_9%ChN73dm$y4^Qq^772M zSr@}`PcQ4}`|0Z&|C~Gaz?M(jKJ2TXe%tx0A9?87wNEfJ?3YzftNy{?{0uv7V}A?DPS}qsfI+`dU_=Be*fCW@ zz=*Q4hNdB&mg$7m($KF8YsCMdrX#If0O_%4b2(U#V!I-{X}~yZ)Z8%bWbgUfDID|Q zYy)Pyh#?r%7TIH=_OYu&8TKrBo@%?UcrvvwAoeZ4| zRGAlGJ+ReJ8{q*Jp2?ociR1ET)vQb_> zb%^=%E0FaUF1^}Wl&yy;GgoRm%JOCPW>IZN{T^U9`w55>Z>kg7xOaQAe zhg5x4o9DWVW~^%*2}T}T*>wi+&)?pA?b?4l^vn0*E011r_5MBAt=k1=Xls8mb^W`m zWM5`E5Z?U=X!qs*JNHHIuetVLJxka9qU-4W+YtOA{XR%hU=x!d6?>!d7DllG$BU3_ zVCV+GF*ewMXg39Mj&PS?)*PBKmi20+(vTu9A<)S(f>i_=6!kY0{$)bE$UoqHW)$9IGc%RVNWCyAEDIRC)y|bCPXI1CQUv!Gt<7d!tRMz zfP`2XOjL~Uk4%k^XM9b;d67&-W^z+ziEl}KX~k9kwZYY~n|vGn+k&@5HYbYgTBDt! zXJGKQsb$qtqXZ@1a|r&38c$7uhdRcOrfnsd?2iWFxT9n2sLB{RUZkRMM_LSz03(X#%-&|!h^r9QWqYZr-rg*-v14eY#%7Np4Kk4*C#nMJKxJjsXtk_LwW~8`NRnst6k4D>p7BD- zXk34&9gFDpSfi4wr)tL5R+-$Jlyb3iB>87=eJyS1M*T>AL>-JpOBv{P=}c`nR$t3; zOtdr>!-d~^or=^jxROXHdRYRvOr1m8Wrxg`al0;P+I{K6U#yF2`)d5m#cRQHApI4%W%WhB?Rt0OESHk= zY?wLfy5=8kz9`*%S^D8A^DcS!h6lmeo%6E4=(}i}8Ynxb5h%Am4oZLZL2lXS|IF>! zv-kQ--(SD_le>TY!O0JS3c|0v)b>j5Pk(;7vaAS9-EzbdseEY{8JSTS zJ1yBnmSJSYE^s_ABU#{N9#9l+KT%2gKg`Q6^e0Huc%K{Zqr;5sLhlkoEGvXKn(KzE z(jq0upQRyyum?y8Q>C;nhp8nzePJW>8uJlDw=#g~1|Tgp%7^)nWV%%bGJdV8{A)a1 z&$sZ9ze|1l9mByCp$Gc)A=B{}X}!J3AR7G0lp1icvlo}_k|^ZeJj_S7Mng*~wOKoQ z)PD5nX4cpujy+|sG-Jx%&;@f1zdd(O2cyyg-_w5rx7rx|WOZ})TM{YxpTItW>!ydN z(BrfFFFdpPIAC;NV}>pk#~dnc6^*Rnld zPXbTpCcwF1`@x^ydJFQn+fnTC8Pa73iFW^F)H9KSr7LhXk6|W7Gts5dHR48*yVQRr zyGmRm-N@c3ab+Hn_LWtJJV6oh&QA;U{nN9{Y-wLc6rFmgva+IrDh`Iw1eJtB4odK$ z_vZ5N^%Wqo523A0-fPSF5}b@_KiA!VJRQd*gVQm=;5e)ZoPe*CBdW)_uv&66LRbjJIb&BvFBA8XGuRDm= z8Ukn3t!$)Ll}(PB@5|SrvJHJWO?N(dJ6qtrkNAZSE$uz=3uBDNz^koC30D2UV;Rfj}0g8o)d95Ir&!^G}a z)+}9i)9tfcp4*nY3!HPqsPm>w+OQ+{0a*Ft#Q3?RXWqRn*T(iV9bEF`$7;)-ZdtZ( z;c)swhiB=u$(L80-pR|OmQT9y8eD}~+W%MfD)tR32&zbb!6JBB5CS8-BV+SvdI6Tg zRE@HTT18zEY@s#=TdDilC+SC(gLH@Tg7P|bEcj*6Vb_C>V34ll${m%(;gWNejBB<# zQ*;TtJb0~si+&${ul>H_-QW?p+wqp&Nx3M$=FCGHGN6DnB-4Qq zBWeltJSu@Z?))WQYtp^eqCNGtYKr}@t3N4y%G@vB2WCGD#BEd{r zIJ`!4TNc-SlS!~TkhUSe#;BSmGl6cpreg()>YYf~ze1*sxiWgDNctXl32>r0(POm; zHTeXlU>H|131d2roRj;nPkM9j{NgDv{>UG}kTK8J9=U7Jf6rfeeAB~!fpGZWPd^8K z@`q2rtbHH9GIZyi59R)T$D!P3Tc5_9YX`!xxybHSG%p6{(!(WSykJt;2mT| zgDdTp6_wzD5kUzlDT%}+L>uWm@R2>ls0c#%OM;p;teVZt%W4KeMnhag4N74aa-~?7+1coc}`F)U+Y{&=L5QXu$JWdbI1!!*s=yvqv z6N)3iV{=5PB(4uvqMsWOZ`wy`-)?HAm3cj0kM4FsWMlD2jak|&LzcAz{QJqd*Ee0U z=KQsHyn0h^A4uKt=@Ral8y*`JCNnpou@R{^$k>#UvAG@5Xlr=T(A*z}VF^ON^#3^? zY02oIG2K`0tkJNIng5-mam>iS;W%#4NE{#|@r@zSzc~WC=?~9*0{8Yc;=3Q+*0&U0 z=}P2Z42al6`_Xk`7H(Xc-ek?eFPRC+YMEAlt6@tV8y7AQlzK z*dR-f6f=!q<@ zLPn2Umh(gmn?IEe9H7&&Sj0}!rkyJQu;UC;&4Cr1s5_l@FLCL1dQe@~LApq=Ump>7 z4D#$AFFy<-*N&S*anOVuhJ&68SKgj`edoKm2Rqt9;|C7{aA)GF$i-ck-*n`skx`og zyyN;4KY(L@3Hm->z2+eJ@w;z>H66>ke^$M!W!eQBr{DbG(cD)p7u5p?(ve4yw=c!M z157d)o`N*N<8;?CbV#)Aw7qVFHWorjKwfc>DhLItAXuuMwCSNk!oNxQdV}qei$p%B4NCRFfTSWi@AgWE<(5$AF6*Nr&M7ISN5`!E& zz_oD^3b$59(eoom;MYfv^l@xY-(zs@*OOp--!ybL&mzZk0~&K0G?IEHwC>m4HUN`GLjKUx#(a=NO}Q(BeI3NjQ0=46Ax%;3wROgJXtl8| zuQ0aJxUmg}jIGaaG*MM5T3wiJWuIb^y(7MIJGGPAOEFbcnrfszqE1k(9!5J`DVjBk z(|B%t=A8YnHD`ab=Im5jGlDoWXAd!NHx+>O`1y18x1dNZ+tj?ep)Vf-;i@&EPWkw! z9XUs6c0}UQfA$EDX3#jJ2!_27>o%N8{9lMJtxpN!=rY>~Zlvv8+iZFh{SM7vWqXf) z4?#TkPK272v)h=h>=VrA0&8Qy2kZ$dQ9w;yfF6fDPD88XE8e*#M4xaeoxr`bawgFK7)y1B!HgDAElK zM7lVbe0Nlnk+H@vPPEGoJhUg$ULz6;hl`T!yi%ThuZ=N;hVojlB2KW$AOo#!6(_vT`!&f>t_w{hU(S%Z3EnnBSP z%_4W1_hN2zSARgZ^d(_Z_fQn4qC3!N!)pnZlHqtD5(afpAUH6bv0zsm1on}|BZ0+z zjpbO9b^K>mm1&UzP!J_MC5X@_arpiu4d0W5?x_nOC216HhB5E_E9=hBbPVcK#`U|g zhYxG7zkV3EP9;qhp{%~;5}r62jy%)knIX?Cc^0s?N3jG6dqd;^(-iwa2FpgCc`Lys z-~lcny2L}?flmw5lpoq{_rQDU?fiCOH~l!z=}@)Xt67K~5fo%asb&Qv3i5^O zg&++e6a>*GA!ly4Yj~a(>Mc6dd*E&aE5rA*VWArg@03NGm0UD4h-oon3#aAv5|Db( zZQFr_j)mQ5qXKH2t)OT^5&j@!z^B6MDh+7eFmoWxE@WF+gd}ixy948O5nfJ^ZSeJB z1txhn^vYlG@>mw@Zv$CLX8rSPy(AyEc^yf|q0R7WDxY?n^J_{*04empO~L-RNxE&y zUK#zZywFi8{a@{~+wdRFuBbP=A}RZj2WSDn6zw&;pOQ_ho3qH9;F1f4 z=S#uX`9VCCNSXLQLTP=ZhPkmC5K9j0(H z9d$TSd-!r z8sWrJR}m6x3=!{*8tXu$Xo|PH(8GyepX_oXF=&WEB)YNq)xJDDfdZ>H6iKE93h>{A zB_oSh3o!Krj{9GrVb2R^a!6}#VAdmzX*u13zqJiTgdehRQg$i;3{Et~uL76mas|AB z0K;gEOY%wqW{H+njr|iiPt#B#NuosM;FJQ3n&zQfd*n8H{`dOnR~-*Y)gcxt`rG zg5WzJfWS4M-SNBJJMd+&5bYL{9!*pzkZ)$jkscsxRNI+%72<5IXhicRLE5Zvf$0el$g_D<%>vAhC}Xs zc9|qf>~@?e@qK%uq{bV9XkH=_2a@wiH&}7!v=w(Y{Vn%W?q+c9(>tfKN(W=e2!!Bygl za+T~*Z!$54ZSamxOl7BfCnvJ(tmvG?($5Iwg@2<~U}#=N8WmW=dv`K`c^>qK zD_bgIWyDgWh^0o6yx~R?2q2`qy-Gg(X%ewlsiq8zo_ zOWI3WGvQ9H#-QB1I*@j=6veB)L?RX{_jqC|Ow%+UBeujv`7t|LH8yO_8mx`1UKj%Z5Xct0*^mcHQTRuA#O4#q`tQC-)<(WuYs)!`0I8r6d zhGVN@EipP)>Vs!>wB_BM@B6wt?mM|j6bII4=YvfIDmvyfYZREsnqCjZ-snZDimXR6 zmLswG)u9DHl$k?G+k~{5Qnk?zeKe*JpqX%3J7OaKqLc%16&*e7>Ee`zLS(J91U>TP zqbaaoEW#8)^3Wd+?uNyK1`E{l&;>!K6l z6RYNiGtpV`71CwOa{E%(65ln_T4k-ePP;O;CccT@Ds54=s<&!4#cqt>sccubyF+H! zJT#Kf0|~#Fr~nCys_^Sf&F}=Z1i2n%=rw^Y0T_sTl%b)rIEb?zHeb?XLqo+-$U_tA zgwxwuBM*-^S+cgNs@M1zNDqz2?25!jii4qmz;g@@IS`MPqJ1123Jmq9u?^jhxJR#t z8cGTkB%shh7&L-~U=?Tu9Owpn)AG&KD%d924U0x64CH9QrEiwOqvf#ya zmp?J1asHUxiVH4XcKsJWd-&g**dDcQ&)!|BQQ*BfEo(QOe&B`Nm-m8qw4dBM`-f{L zOk5WAUX-kVc**6@Exz=(H`s5v?S^^NYipO6kLkSX%GcIh@fpr5RU=m0gL|fcmqf6f z<#KsT;H+#o|9@t~IV&5^{~y_Km@&d6<~-pl^)dESm6s{#zzcgh(KQG#T?Gc=vH-I^<4Qm)qKEm29%^Pa?_(pP zhuN?PgguQOxX`o8)8e5$-x(!zWfW4_v+@zPu({gJKu?=xJGMM}+88r~W}v4nkDj)y z8%Op7=xJo8r)elgD~uL;jV~`r;y8hGpt0>*!HE=$nKihfn5%L`ll!#c^B)qB-jwc$- z4zZRdTF}5C!Gs)PPz~+tyi5%Wi3@9MU*sXj8cb-<+kx2sc^>ryOYX?nT#E9H`MJlf zogilRRzORz`K@dbKFsVo1Tm`$g@l5{Zd%86XcAf4C{`3$0NJV!U)4T*)lpkZ8CeM2 zlpU*LK_yjA$8A+|wY*T?B5V;`<-_s`SqjUIGGw46K(kR@1hPc(&SS@tCOPzOn<$0_ z)+Gomg^UlfE(lo>o$9l&jS|Eq0$2hCQd}xeH430bXcf?F0MZIfm!}p$a65buLWuV` z!fYc8tJ#HYD|?td!Ln>Oyt!RkxZ6l2Hsh85_~Fxx@7nMe_4!Tsc)eWfWHc}fA}wBEv;(l z7MeR`fu@Ss3$#q_@5>)S4?4oqH+7&}l;QGqhyukk6xu>V+7i(DELLSlA7SaFTA-h5 z0RYSWZ=%yEW-F^Hr)x76RKiiACwwVtB*LnZzRA?Nj>-DDzB$xv#~gjOPrFCBM}-a_ zE~9DW*<>oU8t@k--F0l8Jb|4cPjSy=XUg;3i`m8Ua`zSN74o%im399=!oCDPiYnc= zPSvS>uU@LRq&rD>whjc64j~v#p|S|FYmXpNTu@n5f(SU`2;+j=DC0b@&I&G zgk?a-ycx!Mj{0E6Z~w!gY+|eg>`(tZqb4=tqu&kQw0H2eI^GTs zzKU#l*W-_UmSx@_NDO}dpAYsizdAJ$c0ZI^IO*%BJ&S%3T3I3HGLmV?lo2Rb=)T-n zG)rC9T6x`Ar3Zy_lQzqhmX7~ZwVX|aV*Z2TSt*9oSVRG497JWh!DOpvO-0|Mocm}oP!^AG%Oh$MXSig z&@@5ivA!a;aF=H{TA88<@GgD~ipN5_rmDa&RMQHDWOUhRRc4fsBm>T%L!uN4WhfE3 zXpx~+HKQ&v_a~Z7-=`yz2i#Hlk9dR zuFo-M8v6~#Ku>a{3>6PYep`h-Nq+hXy#BglAI6V$AL~W}S%Tfe*5G<}*mA?8(CACo z@e1n{_62X;6}E3KaStxOSy~e$bC+=qA>ILS)*efCSh$5X*%5MYAfAa#b_mtU4otqd zJ%#I1{Z2a75keV0gT7TQYIlaLsC}*=B8h=Wl5t&Pq=jD7>X4O+s&fHVQPn9+Sfa6{ zglzO!$VQK0iAK`!RT^Bjb3xCUiAi#oD&Wc??bRzVTmZ^`&R?}6-9D&%45T?Vqb~q; zZw?I5`Qw9+q^m|p1~<^B>E8_AcWc+oZ-ILTrk(zZmPfSBtQ-WGY2S;#6nX)Pzhu@6 zZxkd1k^nW31b87)Y3f1YO5P9*i^@vu6c7cX<3nD2b~+HBoeE@<~@T0mjjR!3PoJZ85T(|J^wU39ud=EVPP+MyXkYH-H~Jt2S=a}`9GN6YikB4q-Aj|` z*iKdR77Pi_aV~Vs7;tYs!nsfn51v z#%O_f{!GG>?L|w&t5sLc!elT>m@G1qAd6nC>}U$5sX(q&P;gSoA?rBM*)_1wvyA!Y zA-aA5Kv9B%B-K__73wAM6-u=-0HUx2O7(K80Pq28PcOQKSc^jVQS>WpCC|~aREcb& zv=?AzJcurBlHx}R4hpcRC|xp;6B?jcZWa|+abAl;k7*~6al_rKozqVAbQ(vD)1`*q zPP2oYUqWBkgRP!sc+tc1xn#PW^zMjsbyWw5Rbg}W{*HJDT}>`hp4dNhIVg#=QKA@` zV@Y1jd3kZZg>dhIG3_`x27Fbdf&OCV zMJRRtjAEz;um7eCa|Tjzc)@tW0_O7tCbv;|N)TUc2EA|^{$g;^cfU)~)Rdv4Fa^(} z>Zx|7n!HAnsEUnoHPP6hHa2#sVcB|cui`7Mq3r0Pl-rMk_=#LY>P$TvJ zSVJA*-NVx6_;d9;<9qA(#rN0$Ir3h;aA6cwV#vwFiLPap=cd}Q`<{WNw4ILSn;Hup zu%qcBIJv1P%*|gXEXuD`)+?_nU#VZ^&Gv!@pwXNy*ezAz*p&@8H_#2KX01zmMBAth zY3xRAi}r=aXnTFbwX3Kp9w+FhK1=8cCye>WG%_Qsad?JUtM#m^79%!uM^V#KjJ=zF zt~cf;yciR2lBDx5jXf4lrFg3Jw@?%6q?QyTH(X_0MU6Lxb$)yqu(hYXGNfFjIATC@ zRap!_cp&NLF8q*%*rsH0pD~{6&*G{DKA%YVD@JLML_ToV$7Hg*>B}9h&cU2bnc7jc zTWZ-3Tm`{sUG46ncU)nwpSAQBYe#pG?t{vj!l;h^4ti4u=&&(Q3Vv~0@Vi^=T&%j; zrv_^F6QO2zF*|0lIr}oVpQF=U7e{kp9}@_d*oEBJ8Cm2sQjQ=tlZ%l$1Ys=TNS&0^ zNKJw?Ky#zVmRnXaS)Gd;=JN(xVuWAtSP2awwbT5EA7TXLNWSYBx_iWBYAgM6kBiFs zY*Q4eAP^oFswcUNV)A)K(HeF$BXDUoRVOhmL}uieZKuL6!xUfYWbPuvM5H)Y8Uw|s zVmtZQR;Y8ySk9vf%ovSeD&Lw~hT}Eb9UewcVmhz=_2MlrPP%1s+meIVgVqW6-FaKZ z*4Rx4?!WK3nTBXrznHSG-goo-mKzt{@KkNZU6)RL{+{XUriV2(k7jHy!#3;9;Zbat?ywi@Gui9dgBAaTrwql2Xb>5&WC{g4QY59x zc+9O_wul81v>OoQ5Lj5d0nu)p67=C^MV=bP9~s2RAOacK1M$j9 z?ZZGmthmeFZh!LF5v2SB!xw~G0`4LMac(Hkvm7aOACL?!;*Pz`kV}%WcaC={#q%9L z*jj@$cuZ?cB^@!Sn(8_xYzH_TM*O^Q`L?UK^f-h6c4R^)cHosakT01zbd))U{6>Pl%8dZ*q2qo`Dft7wqA%#a zVE6*QL_rj;pxvnh9h=XY)H3AHpp}yOSPIHOi|_(I*E~7bJmFa24ScS7vg+S>>lIRv zG4^%0;BUg9ASxi8x*&9cJts8BUJzPf|Cs(U^CR^c$W_ZT(b0cZ@%+e9Pvy|ufir0h}r25luv2Taoi+>pUF#Lu6S^Ps{5u@pJK7q~X)C9Jv z{75>hj*O0@+tjJ_1a)HgqSUvfqI$jhA@_0g6gZ(7Ai`*}p(9Hv^CpE%CGt7rrD3MB zG$kKv1=QYhR88efeVA3%zfs+?MLlO22TWj?j=8{GYa+Xfmx^m$O$(bZlSDAs&YB!v zSSGQyCMkqqoiH`56Q$eCGJ>FZey^KL@5x1Oo~QHvTG@2UUw~JSF6=Q>Lyif!jkD8KDuVLVZnj&zR9?s|VQ&@}%0k5DuP5jHh%*~Y6)D1iX1&Xv z3ZG2C(bl;5=+t;?T4H=^mNh>W9-yxUUKsM*G5VB)<0QUI*n`*kZXgewjNl86R^=TYc9Ax7w zMsOLiuCcIH1!^LVCq{C$1$?^;hn;DVj_&mX;+@54Ysnv!M`Z=yPa9d@$u<^zeeu=I zGgD5!h@0O_DwHBB38do})$l-$$2!wF(9`KL zt$3s7WR@c7R8Yi4twr8|9pwrA)B%jwKqHEEOkHYF#wddhF@^*~o_Uj!#JowoKlXg( z72VBwv$eUqCt%{-&dM-fMap%cicqw1%oTf@{^Qr541NK^e|;Nh;Pg>x`#sk@G;olf zrHn1!zvdU9Xg}Qt(kMnzK>gtRgI^h$EqiVNkKKF04V!Vk9ztrkmVJ}5!4+zd)OvMmygv@(1YAp`3l)OOD0)f)5jr0ZL58EGjbRWT3b_|+ zS25(k^60p45NvP8Sw^V@q!{{9K-!*rM~^L#_UC*mUD!Z@xPwhl+)FM>T(6?GCwln=<1t~rKgP*zV2 z#j*UcZWo)uG{_yMJ3<*YOituE0cACYXeB9=(~}?%@{Q}(fjlxH%ac1ODH_6s>=AuS z8BWqk$B^Xh1k&2#_Pp1$wYC-7an}KIRM<~NFx}_&jT=LWyH;L2KRLE#_J#ZRGe3H$ zXGvk=x2&H^6Bk_l(CO>2oj8AR7V{~x6PWkP&F2@$G8=A^bK#5S31LpGh*vbpwc)0k z4tY#?iaaq~Gx(!X6n)oqQV;Z`eCdw15CNx}9bxFe_ z{+g<58WuFIZ8}(YwCX=PmHZ|kd1g?JL_7#V65iF4Kxg+{3^eTQSPsgy2F zs7@(TG}4-D#r)JkPU?RIXkdIIwQNz!#bO6+VAzhmz+P*^CUh0)OPh!nvWXY6OJ2w( zUI?=zl1D#vy%2sDW=r(EknPUKAOShdQvn-w%6m_xXs^&gj;c=k3Yqp5GVLj(T})?R z*7xg&^dTLl^)7t|it&82qI;fdWKkz(MNeS0)2j&;UkZOBm+w?3o=K1An^sg|=aipb zwk$nf$BPm4PsBkHi*ph)i5~Hot&X?_{2mk-p=by#(kMewp%hCZd345=YQlSr&N>$f z)f3wha#Yj=Gk9k^u*fJi@)5z z`gx}DPyH{y{<~LxhwaIFieiqE4vkmc`PwL2-w_+nxgB;$W}ky?%mikS3duteJ6^B_ zQ!&E~3n)Fs@?lw0hQ%{VK&uo#ws8POK)S!`ib_s&TE`TIM9?pSC<$hw4xwGBC&w^W z9udPRCLv%T$(@+M&l3r9OLlG`xQ~dtEJ(75DI3WBlRL>Q)O6BVVi(2~wnmRf>1EMP z(XG*;D2&o!Ux~uLqJ(|@3g_H$4g-C><9M5l3|cgYDM(ttJ>>Y5V-srz{VCqSP{%1Z zF{Ef>zG#w;PLE8Q84JePJ$ZkGw2>ynw@>qP0` zKOXIV<|hMJ(oe3xea^#o4D3Z#>pr9qop|n-;%Uj9{FTnEu$LK{kT5>(l?zS>0JE~p z24v{VeMMUK^K@U}e1S(o=|u+u*;QF)12PPB3qbGcGQPn10*{2iCoNZ5$}$^}VF~7I zFN$OEb)F$^5I2ci#eVUScwFQuF)c0=*NPjxhYpKFqLdaP`~#IjYZ}= zfZ|vVN*teKDYy}Cf?HufJPf&hcpTCc%)kTa9)vE=Kwk<=ss@RwK?#2ZNSr40ohJ0V zxFAL)B&>FDx^Sk#EhqbyVYSK!w=C;k9xQ$h|4QzH63byCIw{>SAbnxJ#PiFH<<53#r3#ezO&vny-`%t0dauG9glmI^Jv5;nLLcK6GobI`)*oXcIt&lT^0 zx3NDIU*Y}?-{FpMpYZ?1eI-OJNn#lW(s+1U6wn<}5OVIwGy`GI9ix_zdO+My1Xa*issz0m$o=@L5)odW>H zXkF9{w8D|vIHQRfBQva&JKjz-48v>4Y!Uo`A}|LPSJb~%O}Z}V88IcV;e}qfIke{_ zZVo+>KUOLyqjb&gz(p144_T8f+zg>p=w!&zD;KF#MUWQnW@s^{;?cG4p1CfqyCaEB z6&<2bQPGK~qqkS!A?dfaXUNUADv!LK%r5p&UeTEw>fc^P2Hdts@y+|&4KiAdZpb}_ z+-#Hm*+-0C;J32ggFpyJ(YuAio#cSK?zhMAFMqx*={_BF&vl{aaziT_bkilY+93r6 zWQrl@nqaqG$Dh6?rDGng9Pr#HgNwn-?+-qCC%fnLi(u>E%7JU?^tT7`&QW(EyW39q z7S^3@bxS4LZ?Lgv*wWHdzrk{zVIc#rdX_!hRb+|TBg_izV_k-YLYsR#YP5UnZnD_# znf+4GYDS7;CHYN4f#E-o)M&`!{J5{TR~iE@K_nhy|ZjyFD1Db&%11Q^$~&w zH#*{KQ5;{x+)Vmx9;HG7V`dDSSS!nBK&}X!;Z#6Q2INFQt_UzNrUG&@ASVK{5@^>{ z1F{y7^?)1-g!x85wgR#lkVApME*Rul0oe@5sy9?6_|sLmC%~B|tA!jq0*{D)vp>wR zZ?h*ev@K+6#8@&TGE7Znii_aLoCjP@B5p_ra$rMlQ;yErc0$W-Fo6jP-bH4*Oj2nh zcvqOv^pXvTu$q`OLA?}$dXXBN=@0Rhv9H~ryEo>873HxRuc)9FW4R4UkRo7tZ{%yixO#)exga<>~CtEfzUioz}&yy#-Is zG^D=9C6jOYIjntr%Yi>!uql^67vQ} zj}n`Lnf{%HSc;P$SiBThCUKL6A~#pKo?9dc1!J5wF4`8GU`(~9MkmDPv-8E-Mz_@+ zogKT8y-~c@xY4>XdTneKh=?4kUd~*?ULswtEM*q53#FxsWTzl+A`2NFhS`Jzm4k2z zvoVU{Y?9zJNuq9iX-hhu)Cathn_r40f;YVGZW7=PxD%n@(XzS1D3oCG2A|;>zSM?* zi%N%(r6j%X7!pRZ<|~=z>z3vftj41?Kq(qV1qlNxMXG;PiYOJqdOhPsj5kHL*`OTs z*4Qf2lwZ&)Z)2!i@I?u9{3GJ5jeC_L>Ru3!GNJT4`W2A?_X9Pw)QY7ycv zj~J?LvguY7WN5qF7V?1s`gV7t7J~8yA(;!Gx&QZn0nyt(d+^ZUv0rarfA99*d)9BK zL!j>Am4km9c;mD0f=Zyi{@Uw*`u%HvM1Ruy!9}nNX_ZA)g13nkTA>&tjB|~t2JFgg z&CuyggHlt`5^1S8zhYTtLq-^9k4sLmrzGbJmn-w_`N_q?5@nHbqrD{ApLsL`$IquqRDQ$XAhqeR@)R3=FH-mkRdz6GzUj z)w}cB9m7lYlxAvC0_$lqGC5poH#4H-#Rw3Cb;b8#(MXsu(bt(wKw;KDGw#tF?mMvf z)!G11o*w-A!HdTYe9b)b#=h6ye(jI{hO}n# z;3DQQ(i($Gf!`3VSt`?cx-oVRJ(a#q;kqJS@u~3*m76NrLa31Js=P3CVRBArPV$=2 zHOU2)Yb)R4-nKsCK2bi684Yx`l8FGI!@E?nxs&>ek&zE+2o1TwB9`l1uaST8}wI)RLJ0vYQh zkRo7h6kkEzo!RHyr<0*7eTC^O&6%5@I(E^_o>iMXqZ01a7x^qPe*_ff2`J1*-9+21 zGF4Qb2?u*>R$9v7zI4n$;J^_ZKP+Z-;ZiPuHB7fA?fWLU^oY@YVmYQB#pk%g z-wBQ~UR|#drljuWpgXw>2bCz6ly@^@0*yD%r^R8<_vg00#g~0Rs@8*xqooKq}&xmJfiD^DCBC&=si&58Xyg z0AuQA*_oqHBwF|Kq4D=La{;%{`D48)Qq`DY$oDl|LJ%J|7JXce=AN9x;QCM zLEup`i+GK}t4 zX*Efzx<*xm1}O>Z>qLpm!z7h9DsWcdvfh#dNk$v<>(;HK0=63?;N9g1fSa6B0944e zwG|`XZAwSV@kAn0LE^tixrr3-eS78}rFFG+Bk8unnD(O;zRUEB5hZ(p;z zE%$?0emGHsHUoc`VHZmN32(k!Z!sB z@xlag!UBF7zn0&?Lkgu2oA|AKKYxJd2$`10s&#^_10K(;lkPwlsqqAlXX_NvX`Gng zU=x=Hy!^yX!1z7%Vk!p4Y`g9Z@DBxa$Go!J5$vpw;nsibtj*R|9&7vVMmvz_b&N+z>uBXM!()k~Z1zPoqF zj!?e7^2v?Hc?+MSuXzaYO9#LA(7+F-H6^g0xeNK3!>|^8>|Jie--z8$^(f+fIM~AY^6|(9l#}#gnv{PoLoos3a*>Fq0I96&f4Yxnpf8ltapI61a+y zqa0C#F25Dm?JujVC1d$Eu?AzX%yg}J`--P$7;>L%-ZX30!{_w4Q_@S+E`FQzD)oEmAoaHNIrV|`HFZL2 zLVu1FqoPthRV%eiGbl$AS;vYNSfs`UeMrVaQ zO0%pY4?>F*q^`~H!P$K>j~r?R;8%l7e{&?4j^#i9_25mgcHr*oZ@y$DeILl15@Q=Qn}I4%MqQdRt=n6(+V+gQrXS$qXwsl{DD!2OPQbfTI{_ z3)0F1j(YhSR^S;z`5D+N_#bcBDsn%bKjF;506oR&VSugoJGxSOh85tw5X#Ts%g>Mk zbOO+qQKD2Gc*fB{1-vvrZD#!Bsv7-en)lTA1MLkZ*{3eHaNbOuqdS1ad6>&vWOI8+ zcwn$(W)$}a{e7C-RM77Elr_OJs1Ot8Q$kX%(6UsHZxr%cfokK&3Fl}RGLtxmpC(L| zFVH8MQ>@GN+13*NTH$)@HtyT}3gOq>9(||vPws26UN-BgdbLig*Xyk2@K~zdS|!{o zJi$D!{2V+>KPzumc2GOHJ=*_)?{M#mN8wTZW9tNWN=(UwZcQOagL6mC-0+y7yq;M} zN}3KW$`p7Z$Ll!_LsuHls6ff7yNBL!+OZo`k#%S!_>>C5Ax@IbS}AW{0%uF}&86lV z^8r&bC5UVVz8vm_Ig|aNIe((rrCc(O;D2uDjQ%H`Fhf`&cvh4oK~@yWFijLeOzmYU z3nc;Lsh9Xqrr@Yi}Qw=7aFN>*ng`BBNm>WY<1BDs?6g>VBLyjRM-eeUgM+qPDGEVCQ8tozIRd=LpeGDOY^Ay`uoGl zk#5>T1&HS#M?3%OL(PL=9rR`atAg<{P|cqiI8r8x965ckX#B}%`Mxtp0vCz7c;s{K z8~FCbzH{es%MTyo^(U^rMZH=L@n`;ZnoK4jjPzoYty`-0W! zu46ywv>Jwc(kbBkxZQ4}K1BXhg#RRJ!XXTRnVKHN2r5Ie%n8 zYj{I7yg>t;;aiP}wekkBPG=1oM#0#v8l6NT(Z_Wfry{O&ro`JC3Z`93vz$+}a&#qh zcM2xfc3fiz4W)aBJ?1ymX`W@7xGGL$$m!27-_pkQ@yTUUvF&Hwdz}qosu=GPHmT=%eYmwL%U12OTXQ)k9|_{8}5vD!0;#bkA}ah z65QVn*X$0R-lA5IKo^PE1Mq8g2oBi4oZ!d8P`@6oXa zvZGNF^Wjmj28Dvv)0f5-5_$t<=j=FSf5DFJ{kZIehEODK=*P3-iZWeXhZpEx&|zIa zOgyQ9Of<#D(nA8x;!b70vPQ|&Dz6EUC=-u|G=xI9tk33LPfQ6RVS=W+NdQ*^%o~B0ILJI7p`Z+bx!ItYf_)HRk^V(Nb!3!xq1Ql$! z_Q}a;jLnS3)I?33Fvhegc+z?rhthN%Dfu7eqX%tAtu&`aoLy$sXjoRDrr@I|#~6Ld zS>RCtI4I?>6PJKQn;Q({a!M-ATCZ5aFMs(`Ff$|gUw!k9eXj&S}g+fq%s z$e-B1deizfcpL^HofT8SFI6G$oP6gF0?gvdD@kYdwGk6|CNJ=?rzjOEDU<2BR@4g^Ak=U8Kz|5$Apd%))d1A@}Fk9u3+gb#N#Y+|tb*J!=!Ubju$>A`+&3EB;FSF0tbo zs2IhQeN*w`1G>GYy=ey=AL-sRy_fcpL-s<>>0Ipf1#$!V!GgoglZqp%lfhSme+aV8 zviyQjQ)pEPhlrzd+?!h%>c_XnGxBl_d3iaxIl=6JI4{2-%oOJr_#<>*777H4$T=sX zQKu_jM$fjpQ0DGToVgd}g+j$OPS7~pog18gAs*0P3pwGKOu^9=V#d*xcUEWs--`0U zbW#+L78SdSpC`Lcs3LN0$G09ArA;)@2Pmx*j&~)IL55~$CJY_kcS8*;#XUM{+u(*&-Y)K_;`-y+HNtoc$Xp0+*Lm^8% zP*fC+%Hl2;vdH8dN@cnpPQ59F1EE1WxHt;spF)3|htpbzvxGF)@FO&2v)kuQf*~gd zAju}a@>^(o<1D{_aFE~s+BsZ%x)?ive#o|Mi zvkSAPOh35tW`D)P2gUEc!aw-CSNMHr&%%;deg{imx$`mpoyQ;J-#>g9f{#58p~rss zn#sw%qpbdJna-NO;^4-Iy>|XEygqqMR?Lnt`cJ%5@;4z+KWH6&q0Wocnu1Z_3 z6DhPhjarICIxVLV8T2A-ko80BF*z1f=^^nfD;FV^np0D;(7?E3+NX5`Fb)~0=*Z;# zSbR+Ugp{7EMo(ZTlg}(<7{+S+;56hR!HFuloVa|2wEHVpt_&sTBnfYsae`0~Nie56 z69s_(xE3LeP9fuzNH0ecj2SwgR7gNx770bjCnOB`CUH_-+K66HGq5pkMhjo_-{S-P z6=;6#!r8&~zwiDC@5CoNI}=q*D6tyvy!sA)Ix!2MOjIG@W7p0yZqhm#RGmVJL8y$u z2I4RxrXTK%vlu9B3|K`MPQ%lrCe|c$jHRq(`cNzd9ZB7aktzP9Tw;ijTZ^Xu?1$qq ziSqB4skL~OEV_iu_T576TTHvn#PnrWPUtUuOqkb;oWi8?&xZ$o|JXSbnkd_qgh zXC*(}L&|4IzZA-6V?;^|UTvWn7_KrRRt#xY3nNuoth%%Tya?GLr0&+8J#cN_H#M zr)EjnPN-CAY#OD@F;*+o=kqYtGnBN%Ny&<)<}65k!T^}jASKR<)Md0v0%hQ|dCDhG zoM3!7efPG9?;V$W=w>%;#+PETx_2CbV18+664&0kX7;S=F&*QxI;l60&*5#P{z3Gt zP=Bpk#_8SMbdAO&246lo<2R(5Vp8(}p|djG>RXW3o`%cPAdS}FMCxx%2hAaU!0D3( zyq_X#Ak7B>WX%~S!cdY5iOT{RR#G|;YS0>8rE?CoLg%guKu%LG%bY5%{v)XhWi$f}LM@=^pCYipPjvBc37@Waz6?K(!lt#78G_$&7 z+?X=+?!cYvdbd(td{&7&e z==wE){?#>KTz?MY2cZ1=HL`!>8X5ZAfNaz?+`n-RhyF6aC9mO73u+L}6U`vjLW9i2 zbMc`NilQ=9fojkkv;f^koV~SZ19~mKc*(NbS+nNPUAKNr$sMcwISZSzrd29slj9;J zBY$>hR!L4)R!#{s*It-!;5dtYM%9{?D{pNnpLkbSarpK&o$01JEE!u`NB%NzX>g=9 zbhR}!v~@8pnXEcHFVCCVf^eO>^P4~4k5&vWNVOCww7>E`Hv;XDW>*W88V z`8S;Wlk*7$4DQUL!bsScTI*A5b80<&TzbR)jq4ka-?;C&;r_$VW8TXzEX?0a7k`Ts zL<+L#79S0h&#xl|1rdA`T_)1#4|vPSxrt};3&UaIWO$7p* z5&mK%Qt&C+frrUP9lcpMS-|t*P*I|iY(1EtUx=NllXxlF_=;ZkL1BJj9@(IpbkwJS zNDzM>wLyegNKkA1!hf0iD|9HZodfGQSBP>{_y<_sjJMy5U3KyzBr-K+6A}cnoioIu|hY z$bstP8D3+t5p$e5Ak`{$0kuj+RHzhzN(tnTAu;x%KApk9Xemw9h#^axKoja(4hb@; zr765ZpA3b`58*IJ)&=>E5EaOhRC_)>adD)>cEFwK^YU-^rgfHwB6CX1%kQm$Kkz#; zYwGVfcx%Ik_UW@=ysp&~m|QwDZiUXypBMGEub);P8AB-c4k>wvP|QTy^NhI0tPP0m zq`aUA*bz8LS>tM{SlTN+B*nzaN*U`JQeF)$^-;YBg+8WlEzlx2Y9nNelzJ!<8sa`4 ziV)_~$zXIoxH(x!r=G;hPY>YL`=yn#OlrR~+F{OWs3XYRfS zKP#R7hw{?N>sD7zhUKugG{P_MDW9-~(E3}#V?Cj@3=#W}kr)L;Bzz?$Jt{)9K!k~J z4!udui%+Mgt{`R}whZwbvFCE;dYAz2&RYI+em7$HKajcyN!^XeO*C0$+(=?O959&- zfvjv6h_XlH@j?{`N+nO^&YWr0wBc6<+JLme;p!b>`G z1G_uQiVMfD-1}0C*%m6WTP!wy$A)xQNol5owt$aGo&2Ou7UDEk5x1MLQWZ$I>H|aq zGX!?ZrSgOFXXO~=MEGq~2(^NpH>QN}$ISegR*Ud5X>^N*D?{2V;U?Jz!bl^j4FB;# zNqSb~;k?c@<<&E1+y%M(+4dQ6*tv1brp@4$rkTDc^vPS>fB{!?nJJK0MI}e%}}$_JOWLude|By(H78)A=}uWq{DkhtC`( zF*_w4kzrjdMp)fQh4_4udOG?eSrf%W+fn1l$K@iljFvJ*g)|?z)K|(xQiPVO8L5l; z`s#v=x&vM9o2M9Tv4+yW8vCVFRv%j2{AgR$KYL3<-Rdf@6dx<@?Cy$&D@#j#SrhWp zFY6n2F38WDwQg!NQ<~R7 zEPuyc8mQ4w@G?ddD$9esydWxZIh^SlE}w&RE}hc{9fd^5j_Vz)Iz_Hz^Uy|y=;#=s z8lhaH(DVt>$eQ}9R5LV=Cfo1_9L%s#`h;n1r8r4Ri8MNDdxWeKDgJZ3rNUFa^+fBU zUv^GYoJi|k7hhJJn_b-+Pm6mD6V^5qXO+z==-8p})77qiXwJO-?cjU>?*WOVvzI9rVmH*rtYn)O%dtAmnn_Ua;TaaJ0u;-?Z2XkplEa1CE z<3tf6-)dA5x2dEG5g_>+tJPc8xP=5h5>cBHDv1%35ph4JkdOfXOdp7pn9!z-SkS?; z2&rS}e3;nJ^Ml-AI4raQw>D`;U0OGY#=Y8?xC1}8_f>wInD_AAu=Q8Wy;nQ%?TI}C z&s#(?k%vTO_r$B$S?{r8KR1TMQ8jF5VF|mA#Zy_Rk~hfPmT!0};)n%?U{CK!;P^j(c9OqreBSiX?K_@&X2;XFJk^UYCi>yK`8@x@ z2mFP%&Z&29f9v4`$L=-Y|9OT``c|Uz0^*m57wty-;o^jV*s>-1Vl&L2sJz|WbUBJ z^RzmLgZTCqgF`L0IAp5f1|J!^5T+_K92S(Opx}QhtU}Fc?^Y6L$t57kxihgAM(I+p zbbr}*^&juN%U>kk4SM`bOJBj+?PsC<&i(thtbO_^eEDVm%3JU7ACWTdh91~;x{v#s z|CawC(ewJf_nvun_x-|nW*NVMxlH)ZqOy4Uy;4{vT`$Ge(s@$sCr$^k>q@3WB$J7d zlyZ_K%9f!rM|l?saY-dci%bla1Tk(MqK2Qje35@S?X(1JpC%&A3Fg4JiAsJa1o1h* zB%WbV9pQqFaKVH!Q673SzOpF~W|MDrb2eV;hXy|^&4Pw3SeyyX4p?f3HVbSu!YU(d z)5BUlbaOj7+@;!~!kz4P7WV+GA&wJL8#>a`a0ln@^e)Jf`G$n;@hw}Pe7bwX(?oJ-@lArYwxBH38*eOjmOF8k17Z%?o(@41 zq?tf&f>j1+F+jZ*=1~%DRztZO3e`}>LYoZck*{c}2-}q%sMi7(i^QuZ(wo^K(dn%Y z#4s5~hen;@kPn;p5s@9CPlWoH|AaD$Kw0^jKKbzr2qJeC|91 z_`h6z;uFi$fpbqB<=@=$=%McQzkU)zb#1`D{{fizSNKl8gI{-|U;Rf2fy{ko_x-QD z^}w#@(6wu5Hjy5!_(d$CXklc398sZj#4pmm)NAvFUrG=XNrf|v!hYSgFGVI{-z4mZ z$#K7Ufb5$s!*_Ive?>=ah2vC9WRp8ekkv@{tI7FDe3ra`C(5ITffoK7HpD=$Znplc6~db#Z7J3v&W+n;&NTp~3-^)1k@=0S-`( z(qfPCaz9Obbrj5$ly@;2Hv>bUawEh z4EthH;t&azj(82jrcP@xI2a&4gqm1Lnv;xJL-F!YG!~hE{<{6mozHKc9J~8J4xYZ4 z?U;FQ`+{A!j?=tosDI#{T|a++Q?XdCvt2`3ts8bvU3^!i-8=KHx%2+l)|r`&W4trU zeB+isvZ$fAy~b(_ag7fwiMp#--(+cjYUSAS`!4R`-&pccd(Fi0_+zEjYE@`r(;D() zw@mgFHt)G5l_|NMP|$&V=wN*LHZL@JKTFfnS3ltf|%iN>ZuMfkd}?$V|tfxa&sF-C^PL3ALrpm)*cBa3}6o|I)Q?CPDd z?zQ`CnW~=C9pO3mzi`{tPsIZlBXcHr;(PzvclD`MX=Klk(iEb$_~fkxu(kmFIb(A0 zY&Vp5AQ8sL zLt%~veLoiNe_np`NIl%wkBh2;b(`m`-q+wJRkGKw*jhP#`^x%snXkEX=k(kA@2+~0 z9G|;-U%mUER5N2rd+nrU)BMTmjy{2Ae@OX>ZyAM zR?_D$VVwUce?L4YPWbS@`dP<11JC^M%V(Yu-9qpCIFYu6G`||! z8n69924AvpioHnM4U1$_nUhWsW@WM~a*)b>^0o3F`6;Dg}3-$y#^imH^stPM27SaGCbT`-|yK@kP=I3$& z<+&DIAYRB{PUv2K8Gi~Wp~aUIO7TEq8tzL>BLrV~ZK1?WgF5$((LZ_u7!fZnpV}*nvTK!%a2FM4k@UfEF$J);y*H<67R%_0%%#hD(bKB<7j3@CLZIcbl@?TN(&}I^<4E5HJ&S5BEvSD(E|oU z@~t)qda^PUWr`Zb0)Ke2Yggw;2ZF-J(>hki6whDKswza3WcIE?b zc5k@QJLCS&t9AK{9$38KXYJ!lmOa$avcEYpjH>ay&<^It3zEVw%#LT}QjA#ELsPi` zi#-(d42vi}wiJU*E+LLF0ye4CUZQaSp+?gD1fixv&RGVD%v15EL0d|+BfxxriFfw( z!SfgS7`7$8AdP=DT;Y|pB-^k34`yk8ER-F$%4K>_Tnk9+)PAP@PAk&tkxXotD-}e> zhQgF?D-svNw98jWIT|&m$fb?Ic(Ebi*7;2q|0Mf@=8&`xa(!dmS}}7-CM&30TOktq ziDvM#M16#}S!fJe950JTE221BP*H%#h5mw-! zL@bjC5;}OEs?_s?B=}AS-bHj|H)3?dreiO?bnLgkWe)5F8UOuG`VKRH6Y~X$xPoX} zJa=0rv}w9DxLyM~9r6SM_FP34%Vv;3+-b-5Y==a_X4ws9R%I7!s9!?e@v^~D5zBB} z@C^64nUlR6BdtOk8D(RbFT%^8>8{(`UiO^+-3hH#eo^WEw$@#B;ot)8U zz4dVC6wghY8*NXzs=MnSoHuV$$D<8+b>iK*n`Q+H8hd7A>u~R3I*~yK@p3!j(`FZd zAQSaIXmCNR5t_7cn-W$lwkmLw0@g};Bv_Ky<=ElC^~4qHKuF!un*~`}g?SxL5{m>J z65`!vIP@e?LuIMZW2AeLs72a2Hrn|D+VNFf9J!&tF&brVl#UfUT6Q(Y^m+T67Cw4= z$%L+7FJFD?u8GAfkFK9TwX}75PR@+h@sn<^3Fg%<7Z2=iJFs?9IB(*_wTGKpj&7=| zzW3b5=9k~Rv~l4-UJBK9RoASV?g>o0qrCFYd4-e;Br-@RHpWT3pB3?`4H1Y%rbeji z(_)4;JuFc}w`!*fFH^xiBo0Ms9liOGpU)NF=7iZ!@H)XsNa5{pa=-;06fn=_Fp34C zx=w-!t$kxMKK&69T+vc-bhP$MbqPxKsk#q$bU{YXNyg{rSL&XR5wkC;>bs|LbQU!l}7YT{1%N` z&l-%3NG}>A*++z#YHgIF?E3}eI~6@yr;Z_$HKKSz)CSSDwsz=8)!4df1}i=`6^ zS?ps$&RU7{gc-ZcsApNdk%V6oDG9mz#G;g)7$h1c*-G} zjA#Y#s8RS88ad)Bs0Xz=puHC^H{)X55YaPvjE{JgQbx4m{GB|v>J@n9!i+oA22Lpv zi4`in`gSPi2Sh6ptB4UU3TCI-gSkas{v+B;vyaq2Na}AuE|iDn#q&`fmt_-Y`JFaE ze$J0=ew$yBZ_M)`g;RkQ$QZmM7kYCK<>K7jOjl6Z&txCZ3@X^+fU0o?9V2QaUY<_q z&21E*x9B9JRQIfl&f20|o{=6}H~A^G>0+Ye=Z|;9*BoBLhvBu?UpI%!6Mr5moIl0q zn^+&Y47%wpLBWJ?}Z^Cei7N6C~%} z7@u95nx@YppHrQ8;cND4Fn|E#3EB_pJ*u zb1j?Ar`g5cFT9_4PkK+>nb&of-LZ8+29`FaBpE1?Q#GY&5{aB;OXVm>jwpE;*bpO^ zBSnx@Lm>{rLUE>4ibR<-HX~Uk@|)3VpABJA=7DHo1%&-0dGrkbvB~H983$|w)}0@u z53`Ghy{`^??-Q^yF93Ea?AKrs!#_CA%4v}Xe|DP|)0r$Agfj6N`)`AM9#}w@hXYUi zWClS2M#;Qz{zf|f{KHx8vn4n@+}h9Rp0 zH7HP#tV%{3STvbM{Rkx{M#qPwgodg$R6G}78b2J*#z$*l=O7LVO~_QM$A_z6B4zFw zucE2!z=Mg?BSFBZov|iJ?K37WQk<&xn-acNSF?LR_kOYN!{Jur_K!EA+nOKLdw;Or z-jP?-b=$&y+q^sJ;BC7aZhw2ts&{s@cz>62XxidC7k1t4D7NnNNsw(N`qPz0$Td=$ z7AYi*MkL9kX;vo2*As}vK5Y7d2qHXQQ3v=-IW-Ax)!}(;>)!Kw_U)r<_tLWS--E3b zqnCN;$OzCGDy~$@fEoM|%zzqWemg^G7fKDG1Zia6VW0D5xO7sIp66A!iz_gPQrBjU9S+6 zkIRlIhAmmh0rtQ;(YP=nW=F6GL1JIn&aOS}?by9{FFo-u-e`LKZQf^d!Fl=us0CcvtMB*LnccYwdXAaN)D;2!)7^KWG4`-|iJWj-8+ z9VxkuLeUV;7vRVKMcKQ9yt}UR?q+wRAQYh-FQMfLF(~#la~(|H9p@|{wdhIhTw>=G z`h=k8Mxtj&X<-vg4l%xfG9Vm#W&YEkL*p;R=)p$#guJ{pxo%!;6A2cwc;G(&<4B&bk~%4w8OBT)(! z8y3sOGO@9+SxLl~>nfQ%LG?42>-=hQ$qhS1y#etqy>0oCEe#E~9bLZW*yj4itw*nJ z-Dt|E3(XrEo38ID&NpAru5Q|Xe9h|P+Zx-p|8d}kkG2`lu~VGG){c9elM9>=dFE|( zP8C)SHOM@Kilt_hrY()SHj2J7d_y=LltM*@L5vd_GCnv|Lxpf5bVz8XT&|GC`j?JT zZkliqsrC^LZXl9e=kW{3fq`9)Nx3~cJ>Jjv?K`(&Lt0gr{w%wABJ4M2ud$SPo9S8e zdx~deh7(EO$DRdAkB4~sROz;%JhV0!t6X*m^rHYVe1_xgoifo~Sq4fMvG&>ZPgrW=pH9>;p60lTFvn*F4OO#i)2f!GTbWBt;o5iVxa{!NG37c=Jz^5^S)pqqijo{}T*fY5 z0lSEST~BN2L}fJoo~;!8us#)@fnVFfTmB0V)zxUo3FLvX-jp^#i z>dHEqd8&J&BBnY^XvBS-p8wZ^t!Bge3nUdy@hI#=a7{R%hySFsHE${1y0~FUQH+<8 z1;)gZW^vN!_(*Xg&R|wAuyS-gMg~DvozG9VRNzEu(gI!sFguu&Bg}#klGvXc#W0H! zT$vXuh!h*g1_;VM)pQC%GcT#Du9GpB*3=xIeMCu+j1%0m12~Nvy+R=`3Q=H)2*ibj zA%qw0?9@vvV~DEw_VkdbM9_2Z-i`CckMb>ScFt1npY1z67O=-r%;A&vgYmBU(&IgD z($I!qg~X3K9X+Fpz?c@6nCLd!b=mQq+PZ40a(A|*ul1mf=`iKhS*kuiwqUQ}vQLbp zPrD{9UH_R*q4{OjAZ9E*U+g%eM3m67{64RtR==P@vkD!QfSnldpsPT8SMC5okPxHL-87B%w|ccAr;(19NL7K*p1z?kR0PQyZL zx?3>7lP(Rw9ihJprdbM(0i0c(_HW?O!dXL_!xYgY7phL!o>*Q0%6CFm7*8Rgky?OZ zmi2%|$A1q-pS7oAjCEW$Zl_cXt|nkh^=qzyEQSwyv~_?H9IIxI zq4rk~hR@Z2d#3;$W2hsF7la1;Twp}098C_d85sjZ2qPE@Z%i3Hikym&|D%yTL7O)g zZe#F@11SDAyl>a)%jXLRc&EjW35hzpV{SuScc}67P>B-4b;6io!%KZWt%ztXkmkbDExc;g;>IV6c9b4fh$t@FF@o~{)k75@ZWne zkavd-3m3S?sM83$9OA=8rcM|bEJ$6%Ft&m$B7L1LgJ!I6Ba4;t>IT} zFoPVSYEVNBMTSTzN201<#J2J<2P$@BfOrA&$PPHxS;15V%W=K}b|kcUyex4Gvkifb z4vy0I1st&f^KC&CWtu3}T^8v3vmAuW+?&=P-wEi2culVKm^Wou0v$md`glNdQ~qRf zCricqT@rtP44GA$i3{+*#Prl9iE=4qe7xEBXCn$A^U(8N^kAb2^!rZR>v0ZsfuH3r zkBJN>91jmt)W_9Z!9C4h zG|&c^NtX5WN7a<@YBN#MFkVp*JVc7PWHXe(Jf8*Sz-U?=fJ7Y-j|4#4N)iVu=EjOr z6-*CeKw>9^eWyy!#Z<+M*!|86L7gMsH@K&0Y{UTkN*Wp$HHgahCQxbd2nqy+=)Ob< zBql;a;@v_B*+JLF#gbfgqk4*bGU|m1ehp-|e7Xz(_T@}Ntv^KN8m`~(=usi>#zBeS z|87JzmNQolmU++>VV}NQZ!ax}>~orRe^(~xB%F<(4kU;SO{k#|?oo*L9T4e$;tGw` z7Yv=zAH=iyI!@}iI^Nm6Ws9H58 z7M|Lqe#)czg_8~4J2DvL`Wm_o9sER(oOQ_!VxZ&hP6T0{`k1Gu4b~b~QYxl>M|4fb zMy~XN@U*GR^aH7pkq9h8R#jwXa%Gzx$c9Wd{1lf{={DIQxWdJ{l9u{&PGwb|Chm;ksjbkX2vbJj1~5SRd5ov!HH8BP#UI&xwu1>(9P{5(Wd z(crjyZl6}XddQf(*O=PFg~Q0)1-CXQF7rqu&kDE6mh`%A^&HmKja0CTg*eris!6IH zEq&V+hb>SSu3miPl9E}g<7P#%59K=5;NRPGeU$q4lx``=Wb&!k`6zdFfe!Va?z-xk zni=T*v++gZ`PpCG#RF1VRAoAYb6BJm2kJ;?4(FhX8N1>(C4S7yiOnDvG6s8}dT{O5 zkz2~3t;GiY-o1*@w5E_35xBj|7wD5793@F&d@PYb3cp$b=&L0`2w>>q*UH^wU48e~ z4dHgo3=avsik47#Y!iT#fPohK3XfC0C4mas@jV@1xDt}DZI}-#o?nb;V}}e}+IlRn z0g&b{W!nPaac!f?>*#d1u=Q%#Id&yR-klIlvLqr$MIE?1IbEkk4o5N$_U~SrUIZ4k znTEk(>K|{n0E1bnEvcPo1HQdvF#j$s+>Op+=_KOO@DZ6xPm}7DV3XS|W#1FcFR~P5 z@1Mw7h?tnRFoX#s-wPozE6V)9+ap0kMe8?>Kj}~U&ILZUM&O>>sML~~h3S;7tM*H^ zT4|D6T?>*{J-z=*>kF(XJpFY7N#3JOl z+h>a9246hw^=PV-eUACA>>vVP%FvwVEu`>Ok7O>gpyrl7*~(FMqS=tssV`hAeNRvF)em@#v+{f zc8jR6bND963;Enhz1tVxxAB>^=jKvXiaw-6QsUmALsEW|V9$<(6C*JbH%z-XZLm+=*pnei zgjom1g9m-etrlr9epA*B&(-pk3OjEN%`3N9H>T;RX0(`IQ?ZIOQ1edE8$SeRg}^JA3Nv z0BWR5^s)Mbga=m`4TlwU_-xYOQbrgl&uw>$16&s1Ux2SU7O1Cv{ACf8VP3@IIVUMd zJSxCFix-w3IWa0S!twi(EZI&)en`SGc)I#D+VwCL%G0w${yH41y0@1%T-2rC3J-q} zoM?*xwEOh0gTa9y;A9}}A3+9#R1Zj3+>e+$?bTW%6jdvs3<3nMt{#P>$qi8syXU<` z0aj#<=C@arui91<#4#4Wzdt%%=!ks`8{RJrPLh_pLKBC9q_F&Y5QCs6HK1`ao90BZ z?Z}5Uh_Lnf1uz!XENjB-cfE1i`F*1M@}O-|mr=%vLa0h2*;7)qI5%qub+?FgZr)sw z?RdGJY($1pqx}LzO1j_hI(5C;?K6IEcZXi`64@dOo+Qv*YQ5*-}KcLy%bGAb(vjDK_$gthD7i3scrw2kEbTD5#7Tv`W9C`iT~E4Uy(=tz z8wbnsY6(4iIUO^7N!s}n@}}5A2C?{MKk%SW=<>-kFMKppz<}>Di3F$DFxfj!Y5iV0 zuRJX4Np>sYAZ)@Af0q0wk#vPz8ZSo^`MoQjXA=$39TT7(n%xxE4nO(xW z6DLci18q8YPQ!7yG~7 z`toXKfBIkzHb#GDFSRt9k0=-B#kBx-x+2lwzW-+ZBUrt$&AR)|jF_56&Y3HxkE&ex z&0FW&Gm>t|l7Ii2QR3no%j5o?nbz}50ajD@jrO-nmON{BVI)xDsP>O+Jg+j4sBgIb zM&%$V>Vwq%0HP$DLw$I4E^fY^XtxPlLYzm{wm1ddRj}_Fy*t{x9s4_c8&u3h_#2XJ zM0xyKOz!b%kI=emXJ0px^c-dQaukxXJlJa#A^gTCh`jgUw5L84U@j|cRg}TaEAmVP zOTbk>=hck-xKUb>lhd#T4#l(~sVs+61a(D-GW9Xe#n8{Jv8+)c`hg3Y6pe`Z?7z0f zF_TP$J~VxU22|xMz{J4$EeUuc!Cc^GReL;wCJ~}30#eB+c05V1{JA?cG5RjhV7pTX zm6jpz(zAM|lrbSi@r_yKnZCYK<)|Q3!-3%y;_qZhT-SSZnnK4P10xuWU~6G1O36sI zSHLdrCae557mzdEEG(fAm~%1?3jF1L8BL+uuHULXQ-jdTiKX>e^ARg=g}o?l+{yi#Bbus)#mqDfTf@gm}WesyrK;l2mci z_J1+UGhPr}7IVLPJqlW2B5LMT+^$y;m5dZtYf_;;oECp4lz_lH;(s)EbmF zXy?A;J=wLN1()yM>1lz>?=ziSoft*L3#)3En7l1;=u%ujPWjP-^_uJh?JzH-T}f9I zV|n`9fmJqShI!F+Z#cb@w`gRy27s%PzHW06(J)RIoyM%Wrn-PsMjEa}QCfaRck)GT z!PJ>$n{lpCz_c@@mW#{UWc>6L+i8mt=Udgtj^dS8P9k&ash5s+!jQg8sz+Mw5d}Z$zWqrgmgL1e1h=Mm2iK#MSgjhm9W$LppuH z__w-;OeNm<($&oLl}h3zape5Cck57J!NTGw9XT0o-qNvyAxn@(3(j;&;S>T8vU1fJ zs~W)B+!6(!9hEkSnQ_Jjp=QbK3OFNcOe|w}(`Kt3>t#)bjJBaGYNA+(_H%rAxLdOR zqZ2Z-HMG5){-#}J9&-Z0%cGv#lzPJfs2#DmR>Aq{WnzRU}Q~k-_ z+{{~6wy=NorRiRPNG5BPd-6-J>k|_$MgUqTa>~olkt2Zi%_KUpr{Sw%{m%#l5C*nM z@N{r_wlCt=@U`t5{%|8=?KArLyVKT~ZRcNGKm)V#64h7}i$;$79eOOV1bjnY^kvA9 z#2Z1-qU+I5W{pA1(GGlj&RH}>r6zjAp`~FL?Y~m}JbSqHE72@ZmRT(tvADpdRY>NI z63F3Fh5Q2cA@9h(U%109v2PR1@=U$AQQ%eZc0q(Q%s2LVkHP8OnFIH_CYylhQ? z%&)@7aBz)*j!YQV3E<%q zEXED@tOHNbFZo41ebWVsc1^W*!1M>P3v9n_O)OBYJFTf?t+^Mgn#%X1M=5wRfLvoE zv;b1(oDSJ;&IXs&Q3fQUg~7cMA_9s_H@WRq_yYj4`J}4S#X37?Wi^FO%^?J;W?OE_ z7OxiXX#V_-qR6}%O~_D1M~N7MC*pazpRLk{tf+)rRSyiD9W>%l$Nepq;fvm{FR7 zsl1$71qy7x9!Cat{BC(>%ggy)8e3LcMpxxKjETyh;w|b79u1vLRW^@pQK#M9A*!b# zAUX$vLVQFfzo4ihQ2Hec?>&hX>)3)3+t|52Qk25NPs%XQ$1FT2M{wjQGWZ)!OiDlJ zm*_qy;$z6~pK){vb>;4hnuE1$Iw%SCLDKG_K3n+C`9eUrjQcnBOWce9?A#{sh;^~} zPWfYC3T}_@*IHavyTIax`e0^nx0Rvy$ZMt>+IyzKJ!7lr8rYj+qnx4X*}smD*IJkN z4yV($w~d>&jD_{Zl$U=Wee0g5t6sOwt#X`(rWgM@J`7ARK)BSAHHba;qKBg9IW0mg zaqB}!Th-b8#`H~V6Hb+X(gv@SU3zlJ9=xfbyMwKb$@ltfzg2{Dg9qzFPDCrs2C*Eo z9bbRMTxLdP?KdpqW(e{wj~x_s>BX(jolH6y2hg=9mN{v7)M?ib?M${xpJ|>?vw1QN zJP=$Wc7gaPH9N!Zh1?H6I;G>93BUCA}^Q+)S%F7nZB9iE^C`C<%|B7J=R!`wShT5efNPL-aM9E&99ZDu)Desz zVi!{@9~q+@rX8eAhw0O%*oPF!I6%*lGc)zh)oFw#1&4;-ohTQ~L75#nRDo2$xAneR zYdUjffnSQI(c!bX$(=8=b;T?}|K*fssDhBm`?{<{zN6N0cO~yxc%OkSU8TorV?2i2 zV3~>+>E(W-()yx?*)eqdp?nGziQhKl@Vo=(vX^tS@%f*1zN?MR%lp8Sk8b_2qRVA1 zMAdVy$=8_~!i{I)E~$(5-;8E6>kebT)u@bEk<;*7#s)K?mfQ9(qob?Z8Oh#8fv)o| ztrx<}avz@2FF&5nLEB#@!dx!iWsc$i0KRu`k;mY$;32+_Vvd{Tt{sIJq%0+Cj+ypC zE~zO}z1QWUCuSypU2K|P32&tOuE+Qys4u1;m#f;PjaR_B{At;--#XEu@H#44+THV6 zsV!1mSEYd~>%7fRzd{OFK$UjaRf^F`3}!_9X?9qxs%6ngK#uNdFBSVt~`ay%lpy!sy&*g2LtJ+?j zb9?p~Ho7+U-uCeD-s^ z?-|R#(qE3)Tb;(5gow0?%BIHf*kIM*RUlo_Op(kAYmKQ48y^)$xiVUgiyWMHrZp!}Je=(<1jXB>-# z)cIkK>pZn;Tuo|oF+KifAeT#6UPsXOFpOZ_x%BRka!_Mx`*^i^mVUT8BcV6$@e*VY zK6lafqC1;LnLyobyq0wqX?CIF^|P$#rZ*uZyl~^g*YM{Jg4}p24O8X056ef@ea2mZ zlzWS!Sq4$i3&ihR3Eg^R6RMQsPZQ8sizZ0WqTzvPV)XMg2bY2g^ zVO}=x@gzNM`|aJS$RNvu@|9$ZRfl8gyd2unmYX1imTxU*YR=_e?`bh_3z-c;yQ@FD z5nH@I#zwL_FB)7QI)3sbJul!Qc%fUaWZgchk&f5^EYs}$d2T&#QpsP4n(&OfSZD6e z*Vm-b`UbpOPMgt)yI754h+N^ zub1_Df9)PSwUG~fZd}EgF$v{lc~YGsgGXI-@!$l|VVlU_IOwv>sU%Qiml$|y^Xy2D z4*zh$48&W4@nc1%Cz(jo`;I-dGevxv$Gt)=JV z`E)wqO$>NnuD8AGUDb3L$(cR+Ts)OgSHGwJ>e=()L1u)j_2RU0TbqVAqJ8!xw4e9O zH1pM^aO){Ks$WgHGn#L5c72<3{DqzVQRO*oA^NQO2IZ#d=@4(P>j1$< zJfWTz-N%`5_cko_^*A(R0;B5jBICl_DWlC|v!Xs>pgYt3=q9AIqtYYSY&|y#FU_tm z%4n`T?3ev8nCVtojT?2#!oupxn!c|42;&-d8nV~=1&R2skdAtcvid^acNkT1@TQKD z=N$EqFQjAN$Oj2LyRj>oB&&Yy#OBa^W6p=UoA8Q_@@rJUJ70Vlt6G12;<;IFg_mo0 zoNOs+CFt{$@mU#3C%L3WaE73`11@mb|h3Rnnujyj}W1T4GCtF+}bH-I|sU%TfAmlulVgdWMs} zzstyes8Sa9OMh)64maQ^=Rx({i_gz}U%cany(kgE29HCe(`|obr)q&Lf_<&l$Hrl` z5gXqsOKFM{0PvFRrZsi8G=xV>I``z-RdDVvdAVq?mTuW&otU3EucUdA>Zv>sbZ*#N zC&sE=Fz0;Ed0gb8leEOvWO5$&;0iC(rDVAa<1-8Oy7Oz4e#v^9Io1pEo~`w|(NZg# za5H)<2RvBU;(IdLt7?ayiyr=dAcZ6g;-py1>I*vwjZM2vkOsXLSC)l#{)eJQ7 z9`2q$a%|YaKKAlDF9mJVnvvK6go@;mPhV{S&uvfJ2 zEXF<*w%mMJ4xjh)^bemO;6<%^?gn4F+FoeKv|iZ;St4|9bh-?*B<(kpuYH_CgkiJW zWIgT~>UGAt++Kk<;9rEBOo38noU>aTXL1l)tUK%>_^{1;vJ;eQy-eFbrC`fW#NesY z08&=lSSaf^Q}|w8@^-c!<>ouIQWm^-ysB2?8|~}`k8B$>^(3A>gEeafSna2{f==#E z$b~~XtWzB<7l?M)ZB^EJ+j4JDiW5L*Ts&tP=qh-jquK`Rwv!7^pyB5_s_iCx zCYhrp zeNYv@%&_Y{Gq|l-ztQiPhozQjq0Yhjb;6I{XPs91FpVNC^1xPkg0eO<#~9C@tB^qruxyShJ3g( zB&y5W?V*%d%LTyW&h4!kVqu4{g5p0(RpxLd;T~-nju`9G5=ig3Vwwpv!Vox9~Vq;QR%vf z*1*q4!*kjQBm2ma;du-nN$@r|GaKFX*i#m*d>IwmbqTbD9qht~(&c3o=;}j?-(#si zD$(Sz$}6$!^$>4AuMWEm$KQ+$Yky`2Sxz+;HCYQ0fl%yvR{ zdFy@)waz%MpJ-(ziytNS7OO@MZm3@UI_%NuNCdSWLekaR(S!~So+o};#IM(*rVULG z-V#Re*2G8l&^EP))s7_LWCg9xU_+o~I$v=`i#k4Q3{vC`v ziQh_wkc}7!=QCW2DEwYMgs9yaMcumC3d(7PEtee_^EEBW9y_bo*3-_=$|z8teOf6d zE-nF0O)PJ&4`C2Q{dx(-vVbPr zV*cqD3m+sdsr*Tu&A|NV?@L%nX7G}Rqa!B*aSZGa%Hd= zyo-d1!Co-V^iVn3)Vy7p*X}W%4PKz%kXy(T_f;-fVN71of<-$yE{+ZoBZuW1)DQxi zDlreQcHybO`d#D6<*7R=Uy@{>yPpAp8xdm%y{#FR&h>Gz;avQ&wD2TW-L`b*!lll7 z7gHk!N{!Wwxa#4mBlG&=VdyKQXBm~}^pzE8u8%HAL7H|_lMY|; zmTF}>T7q^SaucbBnBt3_KYR@cV_Evvt5k|B{K3Id0cFQ0u7R~^UenyOeY<=rIsC7_ zhhBZ%#UF{#Z@4QP4)?CmSall#wmrBh7g2)>H4@7z@p^Yz!o~OZPN{|)gOZd+(54O1 zW4M}3r)??D*UwNuWMtCEotq%*r881xmIK$_XD)ai^Nv4I{iWTM%~unB5GKQ^Ow}iX_i$eae&b0oGyQ<3P}f6LP&~ZKg`do{ zzt{|FAKMQ#jJLWLwu&&BRWXPDvSGu&-DBOwj;mmFgOBY4`uL3rUsF}o1g68U@K*GO zUUtMMzGS)ybEM5x5#>8Fb@{@6(pTIn4iBu_wk8<_q9D4?2d)xY6O|XU?|Nq{PKyG! zizsQa46uD=qeJ!yFO;~Jf%tg95rI-hIjxW&j54OSY1+iRF(o(jgsW*#ASw}Q8FNF_ znC160YOwNx(emigWb>E;!Jph$t2I_VwVCT`12y9CRA>EFI3-B? zXdED}2b+0D<|`S@)k8Jfcl$gnL2s0K>AAUOMvMKP0neAfKW-tCW_6l>jLPnhkGh(I z(_5Lr5Zz~IwRn!Dg7oW{hb4l^#H+Sv=A*mG@Da~OpBJ6bX^L~^ljC&zY$c^BHQ zxMXgMLui$~%q^wV(Orymohy2fi_V|6D6_5yTz9}<&_~v}uno;c;3OKWE|)1 z!qk4n#a-XYhVz`Dg%3Oo_Ch9Gc*vGk&zh=$&4Z8QT(Ya}rUKtIPNt)?X#o2?H*tK( zXB+vb90=Ur&ozEu9Ogtzp)L(I*M)4w^m@bd@g@>DCU--(mYdIf7uOgod&<4qD{kNd?S<@Y`%8_Vmeoq4yezN;JS z;bmNT&gR7eDB#W{MlM9s*8c94p$D%(z+uK-!=Q%vBOKX?OnlI=J#KZngmU!2C23R1 zm94+sWI7b4)Y@9sI^z~0^O)yQbiw)vvqvu6C(ZiLjwbIK%rTzmRK74J&7$RF#H+)@ zVS5nW!1e5q!`XfpPp$HH8HAm&i^Y@H_qcSC- zlcBQ9N_$MC=1@{<-?tV)q{G-c>_!1|Bt)Rr!4HRS_6ZnLB!MRy3Y}t~fcNFnw_hG) zBd~!O5Pj_U9;o!fKP4dZf`_vPq(xdbe2jb>EEYucVpy)B%znt0K9Iro239y9-mZ#4 zNzH#>&*$D@%h(IwRHcUy(@WX&9Q24!CXYq^0bW0V^N@NYPt`bu&M9^AvktZliA#-y z-8*seyrO6oi7PvdNB|SWF8}40Q|zsN>s7~QO;?f#L?TkTa_zk z2R|(*_RnvdH+9E=YvwPp!iWPgz4|2fUnFQk2xaZ{yq!M; zAY5b|m&nSdNg_hSoiw3+YcLH{6VM*v{B)@HeSYA2ZrK0XHDyQ-I)FF&ID~Pb@Z=qZ zg<}+gn-W2oHJ0U*+CoV`{xAtxDR!9KqxXAWaD{0=e>rJh`k=mA99Wxc8u({v*8oW*@5IDLBX@u`5s@#4 zoRVwWz6GZ|GN8Exs2c3e8c31YfDw-}2dgvAqx72FJvOz3Q_CMP4FUSAjoyp4Z(Hwn zm2;ANC5vwVFdvo04rbbp_d6Bm*RO9dMvI3^aL~p!MvhJn#`@O(h_(h6aL`OlY|I1< z1pmld1PodP?5qqr1O&`l1WfE4p8`OOfQ^m)Q($D&B4B1_{#W4u5U_Hv{8jm<{`dQD zVP$3eKPvx%W@gnQU}Ruq{cGT#!p_7*@VER^XJjN`|AhQo|Cc%o+dr=SV}Rq+k$<#5 zHU8xu>!-*6rSE^>09aW5jnBr&_!$V>C(fs%eO^|8pozOiZ7e?0+>s zH9l(ue{KKwK>rf+Py7EQ;ZygoH-E4FNBK)3^Ct{D^Cz1+1pj3OSpL@t{I$*S@6TT* z82)e4{%>T4|6}SuyZm+IZ^-|R_Rp681Iqtx@-M>wBKaR${^Nf6Z-oEV`u|7vzis|6 zD*wMq|8+qAJIX(!`CrD8_0#r0PZKvcy{NgBld%K6sFl8xv9PhBt&uUkw6Tq;lNkXM zfPt464*GvSjX%?MVn=Lx2)>Ivc=plEh!`1iS)ijS#EA)G5Fp9G#K~Mw44(9AwwsqKB2?aE&lAHIAIx zTa7Z*v;?09gw?vjls8x$U-=o^%I3`MgOye3NUdg8y!9bQhNMG*KtpgI7SvX)g~o`i zv?wSqcx(JRsC?9>5kyQWGTF_yYse5@NJ0M1Swxu4JNX?p@>#93>3NHeUP4xjbn|m1 zLbSTQJ?wqi<p#fW zNCo}FVzF32_7L=-O=Q=o@9`W}b3~O!jH&(EsNF0<@D)%j?TjUQj zlUL|n6beg?Np_fNJ!+mJ87W1SVQxO^yImiVX`WJ6ssvv1IIiQ07)m=her&vLTr|>i zAGqyjq&$p{rlc@aw2*`j`iBFlt{tx>v*=drk$|@AL}AuL6Dct-HdDr+;-`_s(C(hs z@ezIt-0Jli;^{$}s46g2*bQ=JTp`802v2FHiL~_>RzGQf9qvOC-L%)kIii<)iQ!Au z?GopTAFMv3)@$6{j}f-K+2<}?l$Vv1^WNUz(i7ti&%|(Y5M3O$Aei^&;W@)3(q*-j z{bZcZLK@3b=qxV%?Rw$GBc9%zZe}*=KfDL`hBX~b&tB;k2s;IN3s;OXTDuVjqJ~5h5XkSU(^A@sr8%h!n>y zA3-~+$&^Kp4NCkKm5Mf;4TrHe)l?O%y|#;j9+M(Cs+J5vXvA*v2GFchfHa>nk(rTh zF?kMsuICfxQN^V7l}R^f{1r}dXKo{OS+ALzA>2ATgjBu6=p;+)UAt-*bMG9=(L zDZN+M7cZ7DFt#G4^=`(U7vwsL<_IS9A<~u=-8&=wp=m|@KDx62=Z^Ytc2hNQW>$DE zww=t~NniNRDDsiw@y#{wm-kdu=In>-ng^fB20qI#VC6zqF8IJ$Ss3)`*eZm*yezJhe zcd;P7BIx!_E|>f4f<@Ibk5TlQ={V0z^e*>!kV|ni*L_BLeWxy(@}v60qjcd}De5r> z=XX>?l$B^o{j8MM#PdgszV5HZn=BiVKVQ+ReQV6sfYo|qW!YZ1Gmn^M6I`^LyZM zGF{=)veNG4!!%Cz;%?#jbJ-?go$7-ESrc@!-%BL;IauNsM-VP~&~#X35YlfB=9LYx zEr&%@uH zp4ZM!eA@1}wAoZYHzf{C>bG>AG&_@#oU`e|aZ4(+M4#qA^LpIayBVhMzmc1rtIVOf z!iAfZG|N{N_o}x?DMHPbWxQMXUEInBS3^d0e?hyj%=<1p!TJLPX7NLdndfof{dDJN zp_iCWz1$%;Pw4R7l~d*x7y1!*e$kBEHrhR=cfJfv%z`j>1 znib#kgv?)F!D&9x)c>LQQ~YR@d5KSO zYe0a20os($>wR{=@;=%Q`u}k5KcW3+@x|G4<1Wia;BO3kM%Nz`Q+{}_Lu%U+`GK+X zl&~7DLnJl=Euq>*Y`g_zaV^BI7<&qYGX9-`l0!lX%0f40Ahfy0b^dHqxOE9GVIV_C zLvL{}*E0Gf|g2G%xg)?SU*--DHGv8~%_7!=E z=yLW%h4n&01LA7q#GFH$X4g-nDV95hS|_+ydwxJOE}wk_;v<4fTU1TsO~KqM#6LX+ zN9nz|dvhH0MDuD#S2^RSKc7pyPk^RuSve@2Sy{P7aU(-2OW>55> zs4OJBpYhBu;7*lkv^ahnk_|cc#Z0W7hgeBK3*keYkH^U2SWfz0?apAfV6T2=g$Haz z=Zt(@@CD?IObi|&zy_?t;GKo6YB~67^Lx*$W#T)SpnSQmb)ELD@gDR*dnPoLyEH^$ zh~0(WeHQT^Oi|trNmnTFR(`o5*>%5rBsA3|6&hzerT-S#rw8#}ViPMk-DlAc7SgSg zGdSiUb%0^tghzAk6|zK5-9)~i2e>kZy1D4Y7Rc4gYcIG1jtyX&AT)| zIBr3Ia0eKn-x6=)hz=qrE9OLq&o*jd{N}mm4o+XX{}vpDI~>)qJca)Dr3sS*+julN zY7Nt&pn!LbA*5w^p-OAH$;iGZHwflfE|agy#>QIaE`6!iWIS0{ci%oqmXeY#mD_wf z@M;HoAc}HuVq^^SY#7gZdJwTE#25}YE@i69*1f837BA|&p|=S`%E{=bx|z6L%u>Fk z|MU$mII4@SX3#?XJ_c7ql{6RCR`Ka(@#XRs6-P_Ng04PFExyilP+a{$ypz4e!d6_j z0lozBOX125uFD0p8@xvv1^qq0?Wkk?Qu_-m&(vfg3o#;4SQ6S|@do+i`czjzf8qg+ zrp$7vYEY)OxT() zZARL=dvIO1wX1o@hkmBun!$B@(k%k*>QBPy@ViV^qJ{SuaSiO}xY zRy|d`G0S)S{+f|Y9+I=TGiJx~a|Z{Y{RO_&^V?0~&j_k_i}faLdKKj-OE>208>80K zCt6guResD7h0`U8faMKKT&qSKT;YHc>4u)PnDCIe#EtEe%DZK%^10-!dY5R{z7wjR z%LD*7tMN4@fM$LDV#|fHA2(9-aD}lzMStmLbM||ySnaX#wRx95{hz*AW+Y5BZaQMh zEVFU(Rxx!6)E=Ez(tJ)TcqDg=bM=&hk4N}}k~G#tyFr>LxL3_b00#>@tv#CW`f?N=IEH%jm&s+>Iocr=cR;~K1^ z&q;!v!ztrZ5Y-Cd%G|W#nxuPa`tZD}KBVJ0z<7OVoGHXLY9^LwWr@9=HIPVAlG>q0 z6{dO(08NF<;f`LX+)&RxVQ%i+tci6^eH?74Q^x^ariG)#O`8cPxj)_h zS|Ai-7z=2Hq(@?6TGEt&ucjV7g|-iBA*vIH6Qa`L{ppfpRh(UcNTjH)g;?8b*9hF7 zmrrsoLM-Xk`;AFjQ1w)eK%3OZ3D*7Av~y0(W0&O7Ao_h9TP=PtHdrHBJp>T=AkopT zIo>&E>`aSl?C_8cHmc$YQ)L%HRJD&0ga#qM2ux=+7b!#f+!}b!8&xgURM*_)h z)qK>T%u$VK*!Odg>Sx6fQ+|6zd;9FK>j-B(4e0r4*zDCEIOpv>6It942SXC7O}w4Y zge&o91dU?zaI&=JR6Q-qAPV`D*kO=4?~oJlAtAr1OlEi=Nf|~lVIe%KB=)sTc=?-tIml=vkLiDT?Zg@Mq$D*3bpeNMhoLtJf z-pe2W=CRG2v@`{YqV@a+s7bCFuw`lMB|A|6ICNv)jAhd6B}Ca*ERz&l#~Ez}{l^)U$+1oHJE)b?>b92%`{8To<12b8=$ z!unMXwxc;3cg$%;r<8;Zk{j68XyNqWUK=Rm5i9tGIQ`W4@oYFhBr>CI{4m;OB=*NY zEYTm$O}L`;79s6Jc0Fi3PtZUIQW_5|ZtaQ#$R-xI|RMv6ZiAa`$bgPgzT2N4yKWm)ey8&udBam(Nm6eL>&UHtW1K2sE)L zR-#T0i6=V;ZUXByqz<**B&+D!SC$0~T+Ff5i$9u`ek&MKus97JfNRA$B7{R`>U0cX za^fP|OEsER7xUFULxGA+#h)_Cj@Z-wyvjPFAOVW_5+<;1|D2NF1oR+Fso>-DDP1LE z-2D$kxw*!qc($=r2Ib_GXk6`@2Q)^*xA!j&X3l4>q5-s7&CfzJA2vDnYlcbJdzqlGk7;QEAa*G0ybyP zmt~s^udmRL#+Oo?=w0-_SrB|*I`BR5A9WpmNqGGF23p|jt*!#f4nhxN!igCR7L?bK z&2dIJ3|i_}@Tbog)A&McT_%)buri~WmPH|=2b4z$IFrC312iF(RWYbQvW!=+=%pf6 zrK%AG?n$QS_A-&C#;cbK=OKkBn8_Q&BEcl6XA8F@kyA730o^2LDH+v(nxq!-#j3fI zK!Bt&l|oLh6{!g&qY@BPQd%un8^}b;Eh(*JP>N(jDw&X+D-1;HlSH9p)Bs9IN-G=q zBkd$$6ba`b875%l3Hu>EN$yg{mI+58n-Hou zy$h0_1-(grwZGcq?xMQl%$!;+fbx< zYTJyYcq-e7q=W5%$q~|Kzc%&|rHA+A>QWpyQMx>R5#ll`y zQcuY`sx6gmI?{9HZFtfKiW&{zO2T6qQX{4P=ZV6;7KxqGJ`ahV!oD3TExt(>XqnI? z3M@-#k_1vGGzkJn5}KreQVC7M!0?17abPEfeGU>jg?$Io0cDK>&@q8S42VWLuDVS_ z%0^M63v`w&HjI`Zz{`o^5ybTfR^y1J+zHXhz;o6?@>iyylaWz6VhiIa-@fi*rC!f4D0XN=Vy zKh*V&8E%^bH02w^-N6q`>9;0by+S84awYu2b?NqGcZWlkLglEXfT6D0451>1rRL1Y z5^N|MK7b*=9H zbbkX*yo;}VB8u`py83DI?0Fs#=a%FQ9XC_6UIQ(O=L{y_vQCK4-=j`cixty;9+LVW z%}Zvz#;FoBcTU|C9d(Y~Bk^sSc}1Sc7jv}?pJjPPpQsxiS>|c_WS0aQn0ZBHGqH98 z@A>DP_4c)k1d~`y0Fd3%W<)809^#;D2vaymm3KV@QN#Vu4s$t(yNWyvgq^%%Vg6Tf3>CE zG44|P|7wf7V>IH;J>f5omOFA9apqp=b>W=Tmcvh5eA}fHKJ&S87BXke-ifS%%${_~ zVA@2qdK@rj!zy{*4FfE)R_&Ztv~JQCCwDztO~X}pWu0IYo65<{$)@A++@n=@rIqzy z8$#;z_h31VK*~MHQL#;!XAC`@rX4zsS+#m0s&b@O{?6!A8&T_F&$PsH_o8gJftqu< zbm0kO+{5=wD|U1)xs6^YC`z(~Q-xKnW157dy&V|glY1N(IT0Aac89XaXR2nh0K>+e zVxPnga}J>1pVum8Ij6rKsDeCr+vNn@`Z$&ZI{7+IG~ZY;rR;E^V3MvNn1>~QxS~Ksa0WAnN?9z z*`1})`CKWZrJ3U^1iWJ8ca>a{FN|CoFU*f~0pLKvoj24jV!&0v72xCAAKoXZqbB|n z?iuYFY#I8?VB2~B1N>wPpctSCh%Go={UlO1e}j2Oc?R(y?s@`Vfn9;vlYL-4%WorY zyKXlQC)(CXAk}t)`SH|mKB|~xT!?Q&9v_iqHyr`Y0|bWsp}I=Qu$OZJ{m@=vkB7*P z)`%jr%)Qy`Cm*Hu_15}I-?;j{VLVVA8m|T)K)3z2yTS*Wyvb6QFC#1(F8*j)t-&^c z@@;qHFUNG)4zI!GB3nRq0QGn1Y}`X@8a7b7R+}h%qHUd@b=EF`h5>5;-2h!cX5ZVY z9oQDkI)Ha6h$|%5rXA^3=hzxh@wY~#k`DC@uD^|-YYZS8APa~Lhy--!ZH9!q3onze zz5GhFJqnplYI5}|zmO9ca|<1=&%U&C%WZ01@h$g`_P#jexV+{d^@(B61zx8oTAFAmFb4u)l{44iCrx_L;cjvp3zltgw`$9hSBXCqTkPf`0B5` zxrEIeY9BIg-+Mcx~9;@KPsq9SgsK69{`EGOM&gZ|fGC#7=>fQ||Q%k;# ze($j|5gbtj31xo7f;`OLW-IGZh$%J{dF-Lvk@98Qp{3YX3s2%NyU2KtlC(m(YYX}6 zEAqKnk{;XwkjdU#6Dc+6;3~9e)66=M&nB&@-gUB{);4fTReWlIb2Lc5IfLEgetDyi z@Y)!RPRe52%;X=~o8z*TnWVwLvQ1e%V0CGqzkT`|&H9IziI+{ZB#m)rFs{ks^$wn5 z&YK+ZP94!{EMOOuHXjX%WrS%40oeCTY6y?7kC1+6k>Crt;Ny;uY}S7 zr3?5DjYA@KqRgurWIv|#8#P6HAHUV!|0NNMo%U>rgmN|58Av;lBNoXqfP zu;U=b;0Hpu+n~jus-Rp-aB`qBfZusAX$W#)lwjz98z6Tc3J!b}C>+4&2l6na6JQ1a zKMW-SN(D+5fC_Xl!ij@KfD8pm2O1fnFr(mr+(WYh{DcgD5ITVQ0ye)>&{T0ygWPeNehM2p3SafJq@R6y$!;Y=G7es9KO2Aq*5)F_0Z092B@|S`5C(t_*Z_h9KY+f#PM`pg(THjq>Kx<}stJ4z zPzCrujt7_xBm`m^u{rQvYi@IHYiwg}n{88WOKd}Jdl{iS5IQh8AUbe3U^-AZKsxX^ z;5yJaz&fxvpk8Bdi)@2!`)uyHbv)#ph@KSp4KrVe49)lV}Sk%Hy&` z$_90Xw9VH&uGuewK7sX0{)~3B2=N3JKjxzj=S6KKw%Bq%#>$%@Sm<#^RmqlnB+GG= zeZwAl?&5Y)Za+}cRiY2UbtP-W-u}=aun`2LGR|Izn&_;75ZcZ^^FFVNx)ZiNq_I#J zJ7p-aSx~AgQM?+;yRsvbIkPUzf$3NjVv*W2RyRsbaDHx>HvWxG(h)-(?C#T(k#9gS zM4XQPOd8jCpWAbR`rMsMqD7g*95PQ~;nV7Ly_E@Ej;BJ?;?G@+BH1tcR zEv33IE8a5|=$!r6XZ1!jUXA_bHPJz zg6z}IkT#}2Dbnk#IZv64Qs-#WLTAJ>#8N$% zcm$qQ$R}xF+4XF;h;mc0XStsJvV_^|_b|{!ME2YA<#qOB3JYz9V#f2Lz2tsn9=9{_ zd5}#Wtw3+_v{3DB^S%8JGd)MgweS9#d`qc$>PHyEx&M^CLO!;49iR}uER|f48;W_A z6R}E8=mjA??nZgxcsb&5=|~#&?+d_+nuuongHZ+^DF)uj<*LN= zQ4XKgVj8HdbGXee`9wW&jY!1mlJwKUh)X_JHAgu^4*nw~ckE#VI;f#B=DaLud?O)$ zk2GjpXQ_X=i%gY4wYVhaJe8ml8v5igZrecAxh=M4>grR%LC(oX#K}fV%En2=$4TzG zhigI^x{F2fBgwk_>*Tk9MSs*e(d)r4k_;N^(kk8GsXxh7;7TOi>(hGqw11d*0U*erzncd}0Wzxc8>G`WJK zq&5tjFBWS00m=(l&`efy$U|4gs6a~a%X9+jvWS(&zAJ-&a4A{My6h2NfT>yZ z`*03O#thg>TC;$hw=>jUQe&HnW(?>t>MpO~p575oT7*PvO2*NBsgs-(TsDv4Jd7yU z4n6)27nYXXLx=w1uHc6ammru*IU0NBYHUsm(|Cteq3nhKw+ ztDW@(5`D^|7@k&-sQ}cRb@myL+4Tfv-(6b)`I4uGqSWfFF+P(No?AvCp&T(Z?D&)I+;v`>0McYfZeJ``G+B!9UxbP8dCg!^$qN zk~5y&oG|S+`QKkEgMQMbpepwi{xeDXL%e%&x@_6UV3mr5)uV;JhCd3`T3*@)9ar~E zmA9xd;@ifuYDk0VUMsuae-bYDZ;ZLbsSak1qw%r?lr5y9@#b z9#?tP3?A}H4sZ3H)so3v?t|GQ#fc0<10zJ1v*NhxxYB?`Y{i_mIxh>e1;{xnPAudY zBqaD*cP%vIf?cnthLp|w2acsLpQR`dZ(?h;lEUSd>TD5jv-@$wukBOyr)*wc1~LZf z;>>qqh<&}E#Lhe^HZH9!iHZMI`@b9>8Ln;B%)9Oq%*dnJ+3-5I?6p%&M-txS3=;^4 z?1$>^9He&nFM?CzgQ#@=5rbEA0@Po|R*~|~KzMcfP&V0xs<8n#&ODw>oA|yZ(Ex>Ui z6ovhMBjGBC1(u5L6#d79=Wj4bjPL-|-o4DbS%YLl>a5tZFgXl2cI%$&AVwx7ildV&1qJX!%i-l_N$=#Z1-mS!o?JP!vu! z(uU-Nh;lK++r98=cyV#+L`_SyiuZAa)7318QBe)NWWbi7wg*(v+VDyn>LEo$F=Xyw z&QlQNEXVg{WGYG`QQvWOYKo@)0$5%Mng9_I+7Wgx_ff}aX}_5!_$KmIr^mab&n%PS z-t&oKy#h=@_P)oe3!IuIBaa!^jNZDna^oj8BaW^?J;ck8^$IX+;Nw^e#|jV*_|Ay9 zs3t`@!O3I=qLqwODx}MQFQCs36Seu_`^&T8Ae=@XOB@)k;Tk;7#q2_0$CLL)7UB?% zBw$%B{@C&I{q!rY%=+O4>Jdvt;eoEsw=6(Y=Co?b&q;BhLB5l%AT_eUsyo>qA|rM* zQ4uNungBD&7yJ)|V|iV!ur!kJ;LnBej`%pd`%oY{{?0xpkfaWR zZJOHy0g|PZag#h~UL>$k@vC2%?IZk-P>#n&V4CR2ld99hOZ{xqXJSI-dr>3S&9CC2 z)MirIE4HlOa=iJ=LEw+8wm;*m9SyEzLu~MTy5YKYkFF)o+qp}IC+mK{6-~|QWE2AQ zp?iRJw>Od%qLl@so}N)Y^QyK>mSWA?GZbO!V2hywf8KMbhte^YXHry~ycz_Me{s>& zW}=)E+1lFT_2x7=USqc~PyBO0)=LOYy-q8!RMQ<3r{QZbh%<&EgSk_ured2;XQ#I? zQq@UfPW~GumM_4!Dw)G=70*(6K;?>VQpeXP;gng z#IQYa8S0XaNaf%#Xm^8~PJ|8<`<)g{@(^&hmc0`FNd3~_jEq%>Y*7jI${bAW z+ajd&1MB!!Ci21ak_1XV(-<|uNB%MtHV~1j$}86xuKd5Iq%JyK8Hg`(8Y<^@S4l+d zBFeOd2=C59f*_x+GXWLg|J^dztI>kYn&%S&{WnxIHvxEH=JAmfj7NX}BM^QAs=Qa7 z)L&=$>m!qRI^2&hYheLtT~DCFc**EoZEV?NLbI#I#@jvI$LNkM*M?y+n>qWDfKS!*Frbd3w~jNvjW%2YE&h{CoC z3m!AkFX(h1lN})aO0|}DaF(0t@y_*f?@ZCvi}4ZV9Gk3L1#(-z*7SAxI*l^e047F( z3#LQ2Ju9hW9^iuV;-{G!R|d0nzAY;z;mwQ{be|;qlvjA`zls(Hg#E{yn74R<<69uG z5VdRZ9RD!$wkVBi%^-AYV&zp!l^{_ZL|{v!r{i7eUk+)EeIvjR(piO!0cQir-jQ1$Yuk63`* zYXDnM!sR}Vb2h0Oah;p{`(*eK3SKN?gdj#%hZ5R|Fi#iqC} z)LwMq4#x&B_O#jf_OQl!y^SFzfQ= z19@xc`;O}UKZH8TafS^I6;d9{u5<{Y{+J-N$(om%5kgB1IJC)5DKqHQ*06F{g7jf* zk3tVm=}~&W*O3!d43Kg1{~jp7>VWGrE)dS%Cc->K;{?I*A^32{a!D>p=9lv`ID{M; zi%5l|9^D%n5j<5N)B<9&o|W#N4QQ%Y^6cM8awijg>n8>ly_Dxs{hldzgtt?%90080 zV^TLg2f0NCsm4bsh{pZN^P1#+kV_YVa>4 z)q<($eeAu-sn;&B5fhZ(hK%Oe1s`%ny4xt^UC(LA z_7xpIh~k0%D(?Viz(dxloq?a#!ygz5aU9~8%J=i~WBnsCLVerJJ|g-4SsOtz^e04F zhAvd^GB3dBnh?V}((7C}Q+X(^8BK9}O_xEb%}Rsqt~%5d_(R|9Ry#X@(oqGHefUEB zSv}_(pLwK4^(O^!BjQS#)FDk^ze`$bZB{UBiDf=wl;%CuIzDnu zHL56L&$ANaHMa9_%QJU{1K#p+hRH!peL>HvF1o!zwv`3hInd1us_q?k=(Z*|vGxpf zsA8`Xy!Ra==j5X22DTX;f^hf6)jwOc{cC??yU#{FZ>f`ePwNzgFcg++kJ)Dort4E= zrQJ8>Tfpa9>hjQ=P_cbn%Xssv&G2dj6|Mkf**CcN@M($vn5*sz*PNuC;7bEE(3%!d zu?uc{WC02zmY-%Xs}t&?wPmMzhaix#5-s{;^{7kMOS%$B+*MOu`W0Y+Z141L1pD zXf1N~-9JvK=8dq*>7;lB^V0YB-z(wjrJ?>TmYHvb8vlrDh$#k|x3$1-DV!PQV4oBB zbr(SmwS%lS@DpXY<3+p0(0nEw66PBno$PX1ZpKKs9fL*OA-(~SWNScPw_j|_BZ3bQ`|8qd8Z1W%n z??AyJ1i#VS=e~6(F?9U1bCEv-`r4Hc4?Pwq_|*PUdo`Qgg``+Q12|FIPS4Q|JIL~Gu7o443ZUMvPar+I;Y8pXTPI_WZ zrFH_Arm=vWZu&F>He);M4ulMhg8_eecAj)gbq4QG1^zlm%PU*vzi8bn+_H^tXCfW? zED;%t{XV8y9kcQH-s#)-B;fBbf>?nkuXAfKGs1RR+wOW4v}EgP;oUh9)WR!zgo@|tA62|JvH$yzx#wIaZJRLz%L&>O+ zgMs@qTOX{bq4+&hx6{>IZRfZ;)4& zOVAgt#*UJ~YCTZ9!?0(s1${9HZ-P<^4pdZ(PN5Ej9Q(fd+dJ`a`l?)r1{Q*nrc_qk zTH;q}I3fWO<+Y;(oKtZpoc=L>&HD@yQx`YUEhkHu+MIXOGR4%ZJjjwLfEC*K7Nrf< zXx~B_y7C&kUr`?HapI~NY1~4uA{bU_u9TKbAs_2bSB_?|ehgr4P)`>v4u4or2vsUT z*Ta*hqL#Tt$tnLQX^9a_1*PSTdE;9YyYf3Ut(K`9E{DktjxfHjTl_6>Y^Bk+N$!~VzlRr)ho->^L zimP|&PEXAW?@L@bwiS=kbwQ)FZ1{r0ye{wpQvcvZ#vWA)4hNHGlWXK<39eVo*9tJ*V1MZOU8lG5-y9S3(7t{HH8+Hx@j zjg<9sdDZhR7J1#}RB0!;`|FUy+71`y6$pRwV>38XD zO%$gC-%gC9{WM*jGAV#8vW86FgwDK-$PYBF|0?nO!~6^E*oO`!9mUtM=yxA+8rAX{ zT_OSneBmFkB1E6tYiP8#{cagLATX^uDs&`!r7Ab`-A5V~FfBrSe#=oq2ch8Bl$n^~ z|LP=bn4Rt6JP_|Xvip%tsyt_7wqoLcg(X}>dwI)=WHjnQ1iCi@(#}p|4ax8;r+jZu z1gnde&{CK(#d#p4Sx2X`75T^7{)^VF`IeMuEawxNlXKJ!)(!)#-pQEn51J*$9H?-{ z1SsmaCXI>#m7T4GSmwjpu@f%qkp(^Kh4>8vJVEBJ7jZYsv+fqJm>w^J&P@!&n*J5 z-6!=|qu%|dz**391>97HUJu%YXcI)c=VER%kVG}Z>HSrvw$#$yHNY-f&V2+;JW7DX z9N8(UCbm$J1}mzRbm2klk&OAhWCt_7Z zW3*X*2%fI|)GDI2x7D@9S9BkTL`me*joIctr{%hEGsPlWL?cDtLV8gq9~|GSamT>q z2?Rb9nElF*TUsBkdq*dyPV(g{2uBwDbp_$|SQtmaN}w`8fr^1(0Q}5pmgjG$fixiN zA0ws!UZk|Kv&}YN@ZB)e>h%{ z?@8-&?rod#e zYjS6z3DR$B9ll{o7HjMWIH$|I0<{4VH%h})I$|mT)5u-4f{HN}uK3qR#XvjI%?vgd zKx)e~F2VA6a_foTmdCnN&pZK^2;WadQ^m21sJ5n6{w&Th5aP3$2irev3AQW}O|$Lx z_JDB_AIXhC|571I#_T+DlwVn@%?qFf%8lI?N3vO-bxklxO;GrDg?L0 z@mZ9aV4hl9FglC5N4Zr{KW6ZEIB5LHSq8AdS5j0?7TjOrSA|+`DX5UF(qZ5AO-GPp zvVF-LDfcs4eEJL@(gOBYsaNR+&OgqurF`78ICoxTSXHO;*_ZM%=5V|n>JqbnC5$g% zd6c@aJFrr{bG*)+rV8f0AEsmx^K1ID_C%fhySAuXwYaMcW%lcy6aSO;6Fw;u)Xwy# z0tvbc^w4}BDy%FGd>KeE|1&A*G`_I`Gg!@Q5wu&I)TA%(VzzcuI&+n~j8Q&l-_ZFB zJBD}?a9ehZ06fB&P!ASL1XiPhYw)FY4A7(;l7cEOSN>&0|AM6yn#P2|SL1!}`K^7l z9TxG6r@3$rL-jc_NXnYoB-C$Y80Vp>KrM~NB5212uHt^6H(4~AUegEsw`c|?kN zJ$K5$zm?UPQ%eH5cx-TwA408LWf%6|A%yw0g$bxQl0{&9-ds_sR#KDwTv2^WcnqL` zm&RY~+S6y19*eJ)5LehjTn$oMAk9kKIgOX@g{yu|7nrb{ODSrz&<+uJ>PS&zIpuh> zWnBgWn&pXQnm$|yFd<1)47!}~2nHkkS5CYgp($^YUXRh_tM>1YF`_ALrmamAzOM9r zR@AF2tzNorcVAk#FN1<^@-ALAx|?dY2)lFch4d@8-g&9S$abbgQ#zwm3sejuzcVUNGjRV>%gRV*D9Z=+eNX+ww8 zo`EPA$&r=AK-g>rAm+~nSLZ3>IRt&!+6z})Jp_g)r=h)#xSwrj1WIhdCz_t_Wsn>T z_nS}GIE@VAnx>Zny)Nu!ZxO{j!sZf|4JEtidNQ*Dxn_XvS#dzyIJy8Qi^x>*GSeYp z0j7{cGPQzvr~9_=vCUo*Rj;hc z83n!n=t(%fM1OHcYx&Z-2hpGv3}_%z>S2r92}6!JVspGl0iHYZV8u5|m@bE07abvq zk^U)=U_k2j%!#94loCV5wk)>0d|3ys27!YjhD+KSpnrE0%{LP3jppU4o45#9+g6U? z%KXqi>1&P8BCSw=u_C9VUP%dHAzul+Uokzzo3Scid%TWWo(%=$*x(#nuenVfu4v*A zBCNU~^dQydf8n&3}==*o)fJ3nsC`Ad#Ft1b5U&1xXE>ZQ7Y!{KEd-m;L4A z98;|StsP*mrCpNm3MD}4EcDP|#pR||ou1wMc!fhr0_%kz_A6v{Adqn`1s6*2O+LQS zVOHz$NHR<^VqWZ5AWk+;_A>XQ+t=UCXeE&h{7}{=Tv1&nBV<=vmIjm16N$fMKZM%8 zZwKFieY2U6+@K(|$Uio){JB=lt37jqYmgZB7f#!ndh3sBl-2yYX6{nSr-YR&Qzf2x> zidm&)(A%6|!4nWN_x6+i(QUSRH#E6D5LR$b2Z|!R{K@IW=g^5BHDdDu^XiO2LO%c2 ziaCZ4@Bm!e6I#2p&2B8nlUWAM7)YaQW2Vt2L*+>);tdvN0w#UM8sQ_2c+Q808NKcp zS|-zj7MY>x)SUQ{{XrQrg9cfk)gePEOrx{ZFdS8s`=tj&C^5yevM3uMw>@0WoRq0d zOG6E(f1N=WC-Yk3s37)wKxhdiS!ZbS!P*ird#;?| zOdb~of^^H&-{XHX%Ty{|aNK3{Wl!-97&!oz|MI#;OoR9FrJTAl1W&7At^Kc@f(r zb8?5!Ke<^;<*;+bt0F|aVq9U<$^7Uq@OCF$Q|Ws<^Kl(zEOZ?hj2C?Q%{h^si~$@Z)$Pqleyv!_qr>?aI2s&!gZrkIN=#sNA+9%Fy@>5 z=bQBf5XS;mRzewuen#)UHkk9g8<>n60o!)uW;I*uW{SI9-kgvz&jDLhNyo$>nW{a) zYwfh!HuaxqthmgPlX(YBCOh|-4Cu8dNlC}Zy@S9MNNDvYcZy_E4DGN0zVWiUm$H&q z&oS}f#?MvWD&^MFJnJQ&#G+(|pxJ*9Zy3d>(3+agguaw7r95OY3FyG{S z_$%I~G6{3`GoH=<3?OE{zDt8VlER=9iQVxry6)r0u|+J3UBt!gFzgTcn=7e@@5)`e z1;=2@H+36I2tKo`sqS6J{z%b^#2u+Qg_&u{6ML^Nj@hP?9AikWCE(P5K z|AIoSOu@o-IMhY4bORL@)E-nQ9>LB4r*Ql)yh#dH8zb6O8PLctemS0w!!G_wVsH6&l8PLqs zFHvb}8PoSQb{ywE%ZkOGV^tk<0Q_RLzjnJF!lZM54xy=1Xk5R@bn|{ zfW21}YucL@RSgkKyvWE~;^wkqYbP!eg>Lh~qlCYLp9p^W!DH5GgQZ+ZVqnO^$ueM* zue0OFw&>Ve!Kf`={>dGDzAc2(JIAs{gndy0|nGrq6!k?*wx^E zl9vRDW;tt^GluU<{M|E1RH2Ol=(wD`YHPs1arr``|YFGjOsI)n~3;;oayC~*A8bkfizv_ zxtgD>LtP&gp@btb>juYJre- zP4!`-C&UHbo&9Lt%YS%6gI-dgCK;HAcTwMHR_dD`*}C20p0ve2Wd}DDDzLDlsii) zg!`A#aq#E}tmnZy>U+T?kZQ44jYe0f<_-{x>d?*q1|eJ9Si@QL>R?aR*p*+(@D+p{R7k+hEFbsG zDA_xY%O#RaTQ6h?i5k|op|ELUN@!M5i#hhGz}EI#afNi`2bE<1EMZwji7~0@2=I72 zU3{JJ<*1w)|CbdK#-WAPE{;&FH}gtsnAhe?K`E=+DBFntMs;p~OY4XJ3C9^x1)b(@ zeI6qCeJl$h(H7>s)f9CFn+`-r8<1%-gqg?OS z;O0Vq=VN02wcL97x4i||`%2(PgG9O#^AR074?lveQ>oFxIc@<#ERM62!VyQyIwO;% z3G(CSes=smbTkskNYrgXm+}wX`^xO}BZ}*W%Q|N?kDTnx`14M@=V6sq_U<1A=-4Lu zhUpUe?DnGcNvSVn2fFdw?GhPMjgcUZUCp$XC+XB4NKO)3E8jTr8g7M7f)m6B0&J=S z_`^rC$fw00@)ZC44I(a`%CZMZ%@`sb?GLO))JNOt-#8a7t0mLA-p$UajoqM3sD*7jv-6A*<=)sLfEL& zk?aJ>0<5bbEBqwtA7@>|AsR%$pua@?3_dK2#sy`p`WZu?2CS+!&>^3GX`3~t=v6iU z%16rEST;s%m5Y)o$X{#)@A&m|ktx|A!PAmNLbF;ZYPh>JK@1|y-!Y4_w?B19Q#^04 z2IQQ#_DmTe{e1hcKhBfKE})DGY{N&1|4n|8;bw7m#w5ad<4To#z~bipKP5S<484366#C*n!F$ph(C z1_5aT6l}WUNoiG=AZY6m*$LDpa zLcO5ZywAM$91T^=BP{R+KZz|3!8QjSi&hq}V+LoUq41*LNbS(JApzTv*OUX9Z8R#R zt~zMs3HdfJYUek;Cg>vx*--*}%Qw6c?!UFU(2uSskI4Qtbx8jlN}O1J*>$AMWO`{x zlw&>Pt^-z`+Qt2#@I2R6`CWjozOeDIS@F76@npcm2<*kn&Y$6rg{Q z(C1lA#xrKp&!?yHykaI!R6WA_n~@DVo*KJS5hrz&#?yC%-Wp`)2BQ8(G`bDz8}EL9 z0Kk$FU`uc_MuDyOCSc*1QMe-exCl%16PcbrQ5y^Le@gdGANOg~AcljL3&5$||3I3# zR`>lCTK^!-5u?L-KgO607w+9I_u;(HAp;G`T|%|mz@#_kq$t9KXq4sUYy>`o*Y zamp`y323Bo_{tbc#tv6y%lJlGIx%wWt8kb)otN5x{*pWP z1w>Yw>-Tna%4*yP*RIk!26L4T+z-ZoDk=Qx>)ej`K-dls>Dv=WNgJs8XDsQzQW_O> zK37Jb+n-?z6J_BgQqdYEuh00yVPR_c4gC_?(xO6LLp#J1nC%K-UvMu)+g4CB z6mTcA$R`Q?Imss~;K@ixRRSbk3O{1(WI#|K`yuz&NWdz3+eJ=&WgIHAeq+a-E4#^jHU{;6@eW=SRR zsXp0MJzSsrd)PmeXLt)qU!j#I4s&SA`n)l6E=nDfIftW%RjGT9g2 z8JHtQ65|3W1rJYHk%k}Jmt0YwT#P! zm&M(Qd6Eo-2etJ|4hzKZhz|R=`HjHFq#CsuY3#Ui&2cokF@?=FTWjS%`*P^+xV=r_ z!GY{5vL8M1(s8$Wy*V#2uK( zA3ZklA#8tb0;-{)6@ys|k@>72IE`BC*Y8-5l0Iif#2{r$Et~SkeA0Z{FwXRKVN zRTU}6y~X!&+r-$^e--_N$)$46`&6XokhWRJo|XN=<|J!;^$I_dJw&cCIk^??9XvZ` zMiaU~#FR1RxEu{ECQa48-T{=#-Yv5F-sn~#dmFQN=MVEf+`J~KXcLIm*zuQ254WbYPpeYdAAW5BG+(C*YIgrU|7$MVMZ_hU=s; z|Eg{ZdFn}X8ezy1krLdP(^5Lu)ym5%k}hvYY#6ljy2`GIXZVbU=kg$GFvSbjCeWw^ zjz7(uX9_ekG`xd)eBtL`x&jZ4N6BQ^3E7a~;Yi3|3Yu?X!kP*iD`oN{4Uc75`6M*< zjW66iQdA|GYt1GXn@zT@8Fk^K7F?MZ^dCZnR4U3>ET`*@fB$qre9C4MF`P9}SSR#( zXSN@O?fpfOQnE?_7*nY0WlDLR@quA(&=~TEv~)pt-3bpr2-62_FnX#}NHyH#2JI32 zg{)< zW)JcztCU9@1(_+NhJ=wR_C-er9gChW&B#+6N6_LZa!79GF+-_(v1Fkf@zXcQBY&CLr#N%#g)_F79Xs@mV+asPYJ>%qIGx%UPG4*J_E2#GI zmM<~&-yhNWwJTChYMT34U&Gso@gbuSKh>Lp)x6&x!1N`})IAZGd;YBfE$dF<_H=V3bvEOp=zx zV1rwSZo4}eOpcTW3b9jQq$p_?J^*v0hFyGY{OXiyW6AD=N-N_N;neGjF z&Gzhs<0H;+2>R&E>89aTlglJ|l}Ew%781z71(&G#6Yv9++xakAG$kC`<` zXH@YoD{xaXB*$}Qc#~7cxfNz)VcBLUjp5)FtrgrphA8M&)}OOMSb^sB+?aBdd*)DB_TH64ST>R z>qBVXzHnBp)>;?9gXevMS0k7gz{7c+R&dT*G{#xYA>tM+dEgaz4JP4_g7{cV)1N4ym+1pX5!II z18n;h3N6zxNhO*g^&K(m8@~@4Zz%5fh;$zpGVQ zyT7YKS+kuc6$jLofYTAMs0|uh#N&yI8jTqBcp^3pxUuAOM0{Ik(or-NlD}kqaRjEHfE4nUC*U7^QO9a2 z3MzjedtG6XVZ^Y@6|rfxwg}|wSn=mz9{UB<;at)P#aNvf`!@2IJK&z zW=Bx`--MR>9_)Rq)GAA1Noj=yeh`yM*oIYkd?i7b>g%N5?6TN=CX&V{Nj>kj*t{l^ z`n}$$CRKV~Pv53DYT(nGrN|J^Vm*GA{K;o%|7C)K?TcQHB*5>W_&MRdID&c}g`Co8 zejk>CPa#jC_PfA2Jb|}haO9LDPgKlh5|eV^AekYV%LNp#wqzlYdqYZgkuY(^ttR*b zo>A*H6!<9Y_Jl%inzJu1LS)+s+r5OVh(mBT{UYSkhl$PGk zk|QsjBT2ecyF!vmn0D0_!GhmSvsRNyG}2bB*=H4fW(_Fbzv5bTh`6sLO5lH%J{4_eyPT ztu=e87HLxNy?2Ry=RMoo;@g){vUoZ4mXqt`%PNUVEjy}qjeG}X327j|FJG1{vY{|> zjhr1kpH53DJ8+Dk)zs&qjKEGXs2-x#NF>!XcofCIKyK9uoXMgm@vq??hv+1}ic@+E zYZCO7ogXkeEk@NH_v(XzHD(+6Q^b$OMv6w*f~LT0G`wK2=xJJSx$@D{WHX;G{;WQitl~wFRXX<(HCpb4(ryh5b@pT&@~ds+LwkN+U@o zL9K+^lIKZAnbR#Qw`#S=3h_kC>@zzBKpAXis{^XP*6Oi*l?5sldX2t%_|V9Ic{IIw z?#8)I>BPh%lV(^>vp(dTazQR`OuL=n=|0x$lY5TsQ-lm z*(sG?{ZpD3M2p`oxOkN-;GUgo8qP*z>5=($9fvn&=>I`8a6Z-O)IT7Myp=UT4(FY$ z+U~a7lkMT=k%maTeq|L7Pb*L(HB*~_&O zaU>N=c3EQI=d4-f4cKUEKYs)R|??^7HvSo|IVVoKiO(tv*uo5uEbb$)It`#LRq^wU40Se`fNO(F}m z9~CRw)Wu0x*Mmm+=*TT2ED!>apcLS`wz}XLNvmmX zG{3nawWeCIrPj4nuj_6InL(y&W+XwKLJAfMk;MxnYcVq@%}2;Ppe(muHW{x$Ex?4BM^ z50twPpqK;)Ct^@cno`MK6+3)=R&_@<;V ztF)TGBUux#(-|!WWbreJHX7_UCE6$2vb%?p;48=xgoIM}3=`lCMxNy%u3#+!Rs4=M z(>;zi;zFp-<*E#N4aH|&$!LHpE|BXGme{sFNFOPQUzrOZyk8RG=h$A#0> zwyQHc3FivN3FNRXoGHNXKXqoORP${w9sR3|H)YWAu7#U2XDSA6UOPBH9H|&MvUc$B za0KTMy#A%}u}5FOv4D=pU;o_3$7l1+`;Twj_}CmgK8kEUi+{#xG6MC^W(jp#nFZW_ z7UOix0%$+$+yWJ%T<*#xDgPG2%(}c2eRHlLeT9r5OYmI=DJq(l7cw$IWs=2dt;K5< zycXuqywyOVln@|B>NwGa(u&zo)>T5qXo<}y7*g*RIUA>=zmHQmK-vXD6WgH>JqY`^ z6+0};j)3pIP#1*1Sat!w=N#kpW*rM4o7XgO0zoGx*z5vmJWWqx$a@wE1DA!8@V=7k z5usgJBOz5`3Z*(Us&u9RYl+DJ6)`-lww(1*3BZGIwJK2qU02HBq>@teJVoroXOr=bCB;G8jovYOZPHq4xFnY)RTX=QsTpuTdMdRIkZl(x^DM zXz|*3&2O5gM!J0Ae8TPxdui4w7z9?&R`|v6z)W}j_PsZCe_z8(`Fuu;MdB9NKjYXJ zC{`||pc^^uYG$jC^foj|#p_Flvcd<)+qHY@-!ukBx-SoHg;{t0mb*iKW^veS3+ za+X~^(sL$xz_=jQ?w6|T3+w%f#e&oT%H3pxtUIlEcqik_L;W>l=%fT!OY7^UE7$5z zi<=;BX*%@$OxOIz2Azr`kX?+aADiiF-_hx>TzkvFtvaKIq|`=cwta73*q$0mHEmy0 ztA!&2iIZwe)A|Fs@dw7MyscXra|hQZkB&ZkL$l!VFnWty;NgJn3wiym8|u=Va()$S zx9~QW4&*kcqkU;lAR3_H9B&jjgE<(mCf429-LiMAL5EYdV+Wzs`xmujEg8aMSOS}p zblZfFUBKycVUonE7I5mK5NCZ`5{~c!u%2fpwNvDzlt8Su7TMttJ0g!eBvlvXf-EX| zp`a9%@`p)fOS$cqmJCx%+^DF6$mvl40pKHRdDELH&64QjRaX`mlb(i}j|TjSGW)7L zff~2rO`}k}0WVg8pY-^H??Ba=g6Kx|4rDN^+2eGwM4JXFjcTLj<3|ES@Z+NF^NvaR z-&$o|>04L^{NwpZZKPJ`SipPEU^?#tz|J-{Qt1WIbf$7#SZ1oFTyV>Iz#38M^95ME z5|uw!s2rz+awb}lZ}n>L@g;wZ<@9MNQ-2UMz zfB(%JJjrkc?-V^Q+^sP%l$kF!`+6&8p4nS>e*afz8jKdv9QLs`RwFvC-p;*!xye>H zK|zp&vtF;7ck&gH;z^Q7Pd|Xh{iBPQA)fYPwOBW{M;bk&Eem+(Ii20Et6RXkE@HaG zVnYK}0blnFzqx$@SV}X%a;KD5@-+=mpkQH?)dV|N;5SpK{PL8ra@QGBNf5IF8>y68 zSLq>DDYWNjse@me8@qin7vlKj@GZ|B3=gy=IW?el8f_>$RJZlM4RONWKD4QN-|;Qs z7sZD0_TWHI&hE=^%ePIny1`f0|IN*Pku`;fp540k`M-U5PqW5g;#_uK(XYKfzecRX09%sVW8!&#cPatrvHvzV3Q z7C`e^`#3YDq(oaXVxFPw=(}?T>C5tL@T%o(;IbqrI~W}$C=Fe#p$%fd;R~^V2EV>? zQe)ImW)uFe1`9(I@0eV6yWuaF(6FIGu2^fdywem8(k3TDYC9lBe@yw{Jf6b3;hs;5NfwZTck~LOU#vcjk54x+W@q#kRTQ$`Wz2O4gN?nWl`epe=r- zVB1V}Tqz@LcGYyBQS_Gbq}L%O6^1pPMrp505#DLy$1R7R+qdJXxt8eQf$rwXysu{0 zmv?Xf!eqkNwza8ewm22$JJ%Kgrx8c+4rnj#TceG^Pb$4EQI?(ntU*(NtqOttuZC6u&Kr|NZ$Q zoKRF~NPzrbIiV6I{#Q+}=6`bakdRp!l)Y*_lvps=tiA2|+2}}T4X-6>omvxVU7MPI zWV{Nuw+(ElK5$|@Twi!@{+6$7kDT&%Oy}FSHal&NTiORc58hn+cTYXCyIBiWFqZ?N zMwVy$k3KhHbP4*#-H(iJc=Aa1_%k0IzVlQeSv|a~zG=E6DA{UzAt$}Q8WVO&n6OL2 zgjN|7TCa%-ttCuo{Y;pUc)h0Z&7*gHV`sGbz&DTH`HfxC7sZynqib$xbBWE;(T$r5 z3MM@88p4D>IJ)WanOx((M>i=)D6ua6$G~4q%nv<4t*3ghpkS0hRr|ORK?Do$nfOQS#p>o}#sS)s+dAj-hEdApye* z>}V2AqSr+KMs3hgoha4@<;*tOISu|>2}D{skz?qWOCa*&+clgWjYWsxn>`7s(ui#@ zA<6w0k^%UOr55m8&M`ughTWe%8=GKLWf)Qs=`sKb3&v2%^95LxPOX5Bib!7rH-@gt z@3jmYpQPYObtPr67*&MUr~~4f@fvn|N6U`>T0O;RD6NnipU-W+cXOq!^YHj(ydI*S z)sQhaJ@! zG!)7c1~{khgJ`jdYvP2ogckeORxWzIRNsW~snMcTyDu%H#kJnb#e&qp%8CAZXfget z1dGR84?n-ZZEjPeQB4yDy(YDGrn7x#r$4^-mciR#f2nB3pqZ1PV*O~UaeAOui+pnl zN@ZwVH{UV-z!nG<$D2B4Myl@F^u;|Hi`#89m|d0%hbQFmx2~^CZ(at9{`}@lv^VYX zL!fAM2%OcVGgMSKmVu(Gesn(?3%qa!{AUFzZe2!-Rs|`7e}_m>>)R4`B#`8j2>-#k zupnA1B>vfKIt>- zF04zj$fZEdsI;-3y}cc?qlxh7?HgJ)g(T3}g0wWVsptyyRnI&(lRb08(=&}Go2b`w zcFyGB)Hb)x(|*I6)@?bDZY5}>@YM7}kQesDdEvVdGuC6h*lThhtyz3IZ#CkBQ)@u{ z#vIt4106X~p92*+kXyhz@@AdWsk=1=_N7373N)rbJO$ur)p21K18BJmMV!kU%l-Ny zYzC{=0o}slpYvLHqHA2NuBJjV0PVaAfW{}^j>jh_-n878A0_N< zgBxo0esOc?1#23D(luQWl;*bP@>^S7;H&GOx@9FOHJTW`kvB-Nlrs$6`3(h@J~-95 zt-S)l(z{;RTU9-}3wGKLD3hn8jMghqsRg3aJ!dfsWkRS_ye29YO%f^goM*p2pfGfRIEN^X$KG@z&ziwg`kNEMZfsA9vn@eT}Id>buU zl(F&4XU)oyRgQ8Fke8*5lkF%%M2p&JuZE4bmma#k^w90fL$@R0;j}1DLYr!#svtz~ zS^?3OxTm+}K%27YcIm*DWv@Zf0D>}sBXNPdTe!zOvn1IplrLTs?Z*Hz2xiPny*bAF8#n+-S}8!<#Dc)QPFWqnpFE`<^{C zddEaQ%$@SLPvzPsnw&PM;)d3Aw179){Wlrko6SBm+WLky8P|O7zfO3noAx|1w&97J zx}jS2(9_)z-&ZGxch)y=?+7x2w6pOZD4XxDM)(;C;b$a-Z;(rhSj0)FO+22Jez#%%|ihM^<0{tWUD~ww-m#xwEglhK4;v#WOl& z^ldv=a4K1|BuKk8rd@pKHmhy>2b0aYsO|uIDLBA;`>)6i*NmfI)P5?M&{nsX=z)ZS|xME zwavZtc}+pCfsDPWGs^xxwMt%!tBt*xPd4@n@FCTD^_2(ELOG>1>3`h0sm^Sz>PXbB z%f&S)ybCAQTzY6awc(DjsJ-p*mal<#O#Tm-PKhy-KS2~`Rklh=g_uvZ`9Kiwb*<%T4$AbqoCzo z4uijYeS3CscY>klSl2Q*szawgqi#?HAV5vaTHUmlp8%(ihH08eO@N1ryeVu?pHw8g zg1~q;F_rMzDSb1->odT5QGiH2eX>+j)l#hs0ef|C$obK_i^OpK20i~>mBDR7`sPVKM8-1+0$2wYKQK`9@pB z?-tAkn+^O4Cx6s%n(|Jq+2+)*ynRCh7+Z3~$`mUa7*@1Nf?1~$O`<11Ke2W>MN<|x zc*Hna%z}YAZH8fZ3t0|aK=4i*~o4=3!+B%AfiS$&xWXTGZD28c|DacQ|L^7t2Zpt z;0LEpilSa1Z|6jorhcn;Sk2sLkFwbLO<<|5p+ErHa*&312=?Vx*p~=V4^=Y@q)8HM zc*zo`5@Vf_-1wP|@**WwI>ZDVcS%NmS;?c6pP3HGjSO^);z-PY#fP+fk*U_98hG9Mr8 zDmWaiee=P8bPOAVIkziYS7%MEC<~!{CT(*z<#G;BK4Ny%;r)yYAtmQRO6G{ZO1zcB zZn!FyjuL`Ebl?PaQKQk;@^P~3L?EC_j@wSEX3rWm>R%JAn{4^G6zDop!qru_lX4!! zvmiv}xz)cl2(c0Yb*?Vlz4aR#WAoa>I;9eM7SNhd^Kg3T;=v$k%6AO}mt8v=POrUv zZQqX3)}Z*1t9c}w8_rqRZ*sM@=E&xbFJFJz(gsctSccbYk++Ff)HbcXc8(Sfh2+BB zef`(1Z+5pX+4+^m^A0aDSAY806gtfLe^o&O2R;-A^Q(Hac(5W|&4j9V(M6Jv( zK$#!Q#c-CVd`0HBV40t6|Gm#gCpTI?{ydqVY^lh6U;FP%xCw3f_=08r*=)L4=*#-K zMB(Cl*0rwbi?L{%xdIA(U+ap_mQ`H=SJ!yII}`OIv2Q^kt2H=|X?dlsC$jqXHEFPD z?1mL7oxz~tM4N#(X;lU&&T$yq6ck-CJ&77wl~caY`CM=1{3T4Rh+|ZJ*UT9)4YrcEJ6Vr{T(ZIUO&+Nwd*fkT(9PMmeER_WaE{rmTg{tZND{^ zTD*HCIgoRNt?O@G7znlwBPqWcj*`xq*4(0O&25*hxeZ5bXO;4{ij=pVSIXB|b35V7 z(B)mU7K(XaSWtrRpZX95eiwD*x3nTNCFmbvQQl@O=o!hbuZVhzSOEKP81|o^$Pk@X zNgo5J2|W=&IfNWqw?hyAszllmMUvlHh<<~9@Z@ajCb%*<<<*Qe% zFeZl@$HqMN{8*u3ZpN~0$3@$K@%C?dyEb;G7tCq1TbeuP))hAN$3i_T8^&%(J6e0@ zf%iLxhl{TIRNNd|UpD%ivuT?-l`Z&&7L3TUs$J&yv5NMm9%Wb35p9Uub>Xh}d_GnF zMBTXMgsPU=-+jGV=5$}zd)S1VKT)b1S6NO}1^9&6M?CF-obSeBTbTx$CCuc8_H> zIzel78mv6z5^c-6YkLuhO)lEiH?SX%gB=Gl8=&M4w$6(r2I?LDs!t#7MX-<;ykB`UZ?;c!w#h^DjvTJC`6+>Qf|6Ly)Tr>92$$z^0=fhvqcuN!ns+|3v-6TA&7zv7v^q97vc0eB(6^^*rQI>* z(6?@|UMp*Uq=qFsI#+yk+My3@Tky5b1%u0@(;8eRzui6CpO07hic6c2Kc6q^MO%oq zW<9U>2JERtyXUlRUC_*ubaqk2pYKzJf;M3MH$IL3v{n4~_ai23p@oE&aos{@@i`&j zk&2a;EwZJW+Gj(7XJ&Xj)2mNm(7#+sHLO>kIx*$d_cCqpCSCrFTlcagA+Np_-~q5d z;x4~kO^^b-O2KKC+zz`)eyrANDvo`>@se+z8j`te8?A#l@baqeXL1S$W~X#Nbwy3G z{jUhrEwIdFt#d#@+=hct@UIvOE0nf&yH(V%i#1B5;NI=0PE=~M~|`S>xB?oD&f zYaA0?(e_g1hnlB84xv+LkfkE2@yWK?9&FH{U-#0eYXBYO~9E2`D`u5JKwNX{-e6$ zUy$q`gT{3tTxXdW-A&eo~_4}G-Ar$-Oock|{}Rxs+F zHltloVjrysRtgT}qjl3l?4$L)-|yP@!-|hq>$>j1w2u~~gha#viz#8973Muy4fCEr z@w0=-UYYe*=o#Xh7yng9V*ELnhDyzY?0)Bb!@2a{Paf9KI1A-$y%A11Me* znJ8))5A2X4K{3d>sX_UhnE4Dz;K+hJP7Q!fq|alkKEV)7qRw8yAi)|8f}-GI`y~o~ zC%jt;At+1->yFpNinmumO7QbQ3hXRJ4MtH=FQqR2;r=Th7>}n*KfLxTc>JNx9&a5^ zFW%N>a&>O%&o6F^STy9tyzkDF_;_&LJ(n+TvX0#Rqte%3xwa+Hz53D{ zh^oIC#41U^;a&&?Tp-{C0SEBgLBIwAR)7NEnL!lyjvmDVOyitCs6*0#K*T4aax~9X6#n~YAk4m%Y(JVA(77iXK67HiPzvZe^yeG_jVc+9-gy#bJaQzH!o=y%icVNVK*L@@JSCv;#R3w7 z0*de|JVS~^m{3$^QUw%X)%18p2Ia?7q*LdI(Q+i$xE!lKo)uB{HJtvnI`U`z`Nx87 z>NVsVX{hA?IQ8$GpoMEYMg@LFORhSXH{%lS5RK)3s(|fFyrJ@+tKo|QgdQ%7glzhh z9%ph!S*?HOC;#nKOT|0#1L~U)HMSF9w-vERcYwFG6R}31DUNE zDxLvQEW$M_q0@N?WWdK0S;fWhC>jX`B>P~~0>X28)cmpnXe{&<#tT%S016Xiyr@eB zL9qB2k4M$`Q4B4L)bgT8)_P*6S)7=9mFzd0tsNV1bQF0HTq+@tH@Iqw;pLKgYPob? zmFW3g-WsbOZ}A14bp{Rccw-}N3+pey<8A0>^65nf@4abDffe+6x6NeJ(Y&5V`&r!S z!uZXjXZX7{6xR0y6R5BH$w~6J^dCu;f`-WOJFvu0z5*_z{{Tyra>)?+D!CcgQOPBp zu+=hLqLxd7aZ%vYS<2qWo zqz9H9z$H3Vg4cIZ^0(w%?4dUmbMXj{x%fDWx%eW#$NwUI^%*f2Uo7!^X#a~Pc&oZ3 z3ZA(nnxVEOe;ZzS&Di3rMnaJV=r}+84O^b`iP~DCF6yXJr9mPu92_PMDTtQzY@5Zhu zZspzB($NyWHMJX?KA&gaWoo@01=3U9rPDLWny7l3Vj&_mShb1?m4=4MMWZ5jkElon zZGF`;^bVjP0i{sU@Ck=bH>Rn>k%M#v(@#wU+sIw#~;B3&BFd zqgH5?lu{on^hY|@w7a#*B?H^QJdVH3=~8eeQ7}m&`_1&cVxuM1YA_j;yjd{W^;VZy?Z@5A^i~@|4ax0sdOF5xT)x(PZn7 z9r~r~9T(|x(didD_n3YnGZYr0@#eGm+1UqOu|p-oCAdfv1)FuIUnq6%p-n%TVmMh| z*5t%g&J2=K3tt;+Jf^0ws}ez1a#?)-uD;aVCJ)k{GMv(r?T*e}Xvy@a`_&9m5HhOX z(WR|zfsTw9E*D9P=IRRlq4rg6&UwR;-kigjU)t*7L{Y`^X1&RwH;AoG&Xh+`>fj2- zz$v>5$wtX6S)5wER>PSMI!A6!ynmxWQqD{fj=P(TSN{30Ikoif&8^g^y#M0P-Ix3aqPWq;L+ z4!m0A37zl9Xn*uui7#1Rm}Ze#fkmYj-;dG0=tSdNrNozL%L}zE5l?@yy)ANvMRHMM zbXT9hvmwMO6ezzrt+GZtQsK^|#SouUAIjPEykr8qAjVbbwB>)5l9s+Ly}nFweYan& z6B!0Bf1&JF@p>KaYm9i(Zk<|h0>fs5T4&ZdJx594E-Xg!dj+JyJ#geCiDE^AemLAT z0e*Otu~?YY1UOVQ6AY0Pa^#25O`5OF^ z#n8LF(QFFVL(a&;F|ZbLhPx6o`YA#Hf2sJzfsY_YF;e=sY+qupnyo1=YABojtrEU< zKA$)ljgf09O06irL!mHp4i8U(Wcd~?M=2R4_)mz)Xi}jw>hcp(IO%KEAo(&zYxdV$=J>1?=Z0Eh%;BKoFZi@sP ze8Rx++yQXW#pcXlcFu;V7)|B9bwdp8Q!?aS8eIv(~WRCrO?_ z*qqCxa0UxVtpku+2&rzY?v#L>j(pz=@T6!8^F?=&JY59E$Iu4o=j--Zo>R?a^cwFs z$ya==vibS>Qr#Yv<++mT3_e%PQe({4s3)n~AkYUmcWz|IkgF-_g+QESIi)q44>m2x z*(f2DsCV|QYqbXlwxfYyyPY%y8v?-wKdqR)@NclCRiNH zYDBHt-?^l|Y3-b7e#2KdGdQEwnzj9>-UL;OBB z-74{YgjdwVV#n14~xcC+AZ z4El3kLGm~FBK2-9m@~Y0SvI-knvsF4m**N+Tse?m(&BXFNAo=^8jP;OC>)!a)1QLt z$vYt4%2)B$p(29;*JqA>^!^!WtH>a@^;rquIB(>eDXew9TC^J_yNI!t0zfhHj6$O| z3PvkWizsL{i2{iKZJvtK7(`gkD7FI<08&9Ctknux%?9b&NGz&it=FGGSSx|RmZB(V z1T!!nitN+6;e>jKx)#wki-}uf8b_$>PzhF|a)(N=&J^kjei77V(=z1^99&+LN|wDL zn009zlfH(q4I+D*qIKbhPCulqU5pMitpQG*w!vYAs7vCFdR}v-KbNethO>f%fP-i- z2nIc8&-O&U9o@r;5sbPLkaq<5t_z5-S5eoIqPBlH(BBg1?+>(4C}#H?MGwI>G(?3o zNI%@|j)LfeZk{)|-E{Xpw*eR)k=YBQf|T&VPWZ2CpPaSV0e(w&`r(p0`e3R04Yc8r zDhpP=VAh6G#d&myjWdZitwDq+Oo;T4xBEJBL0+lRs2#D^m_Os@_2KrqE)`P=Ufwxp zFxTwNMV(3ogld4InLuNAD8I1DF8S+Sk+!Jmsl;H;snLmo)n?c8qE4`SMY!(PqHH_7 z#473&{*)l`3Qp3oJf~(PQEQF21)bTbQ?0N?u*a_9^rvJSc?(8k8>i9Oja4+Zuc$YL z?d~K@i{ehZL49*bV%HUZPaQ_~Zgqj%22X0F@=C0IY2 zdaM+^hBiGsHD8@KT1{vMG&9XWW>R!$YcbZDbihe~Rw^~-P)ov{3z_-{lFeq3mkeML ztL3=ze@Q8!bycVD)!b-{Tcg!7W(x|}$?=@l9&=`MYTf{Bl4x-{?Kc5nP4^R6L;N9` zfFlaY^NN3VupU8g#$;k(XFmdIz@UM2epgKfYaGc#j+ow`0A7=E*qcR;Fw%k^=pVCO!y=Z4%svB)(H8wWd26HP z@+7IIPg1OeA}|P~0?_4`Sgn=?$23|MMUH9>qMj*pX!=JnKEY|5(`BJpBSc|A*k@VT zXUJ!ppiU=)AwC1J8lH zU;}IT2PNx1y7T^;9&Db~f#<|tD4E8LjR}op*3-4Ir)yo&V+`f}uCz~YFRbqFT#>i+ zxAuG7q*x4cd1cLEjZc7sM+uH2 z8W5M8y>19d?{_$8#Ox1-u%LKwHj~$4F-Ob&C0IR_ey|jRLgB&LJPytj2QxKxXJq8? zxcjeI>d3_$9Ev1r@uxhA&X`1chU?l!>&?E-wH@7S+8j3v?zqDibMmY;;&OF^)q@8% zwWwH5E9yK}hGigUhxG<$Lw_t;VgBZ(!IVMt#BKJdQ!64ZU7oyx+(bJ`mBIk0fG@+6 z47nd%Pg`M$Q7&mEzf9V29g|#=fUN{vVwOt`>~cvE*2&^J4!Oh+OFX#5iAo4?dg%23ptjQugt3ajq|?vi4c(Hw<6BZA z3x)uO)i@+JNX2oYznZ|T0fj#8^N8Wp8RNij5P zR!OOJ1{N-G#);*M6^eO;ir@(|TmglN6wyR<5Oaw6#1di+v6?dr7JCt z!AmcncX`*9d;9igw{36SZd<|J#wY83ZA@=n*Ao1&L!aq94!v=IQcsLZ=_Ovgh1o_R`QqR zz4Ra8^)YOlT2B6ye1iTnQ7>n_CM+S89Z=BD&#cM3ouTX*dnW3g)K8E%9*It>cgvd+ zQ7U(TdA%0PL@#pW9sN+Nxi$eC$Yw$u2j{oJWXa31~tA=xSCB5 z@4LeBdrjmM5X{9oM(XBWyP`g~>biNIyJLbz$7*b>ZBc7#q{Vy5CTCMB$O%Rb%TbFw zPEKVui}f47v1a{uO3gmM&S!vYaFyT*_HXOG=|+uKP%)gTLW@_)4>2vC#I(2-(yEjG z17Vl*yU<#cNs=>Y2m?K-)ryKq%LIADVG(C{kyUS#!YNDxPD@XgU>%EMvQ({Q>FAh| zF|Q^?O)a1!I~lS3;b}pu6;8XtAt<20MvF&!fdyaxh^W3}C;jj6`Z@XfU#Pd~_u=*P`1%&u{(XG?f_(oK zaxbRIPx18nujMpVMexp)@8dha;~8d-*-Ms)9>W zivcVK0|u)WrD0W<{|jhTaLQM}Hsz-gK9x4 zO_qo(Fj24xADk?qM#t3ka5lK~4D$pwUsgxM>^LWWVJd757Qh;Xr#fWYbC(^2Zj*UO$v_)W`iS zvSWZ|qtC+qv)&ymKkJA)`FC~BDC$*tRv`3Hj(1h?vjn~dncD`I9nn}PwTJ??N#&)o z)epWpa$43};rK`IskBX&l$XxbL)E??hIW1tzs-la@o#K;P-nO6j*j29Hgl`JWogff z6`e~8F2&~YZ*R)N$9~o#HEg_PWz&ZK$fPpW+qFh!LgKKvXq+6{E7b8 zXw+&Go;LVvG{`93x}tXNM*a@v98>$6N19qz7Jb3a6^*V|+d+n*AX5TX$?KHbK)%rC zLVN3*H-CL;Vt#u}P|}N7J*O}`%(21Eh3?J$0iABb=i?15j*wCQxoFXwcy;sEJ65c| z`=VCCWDNx6*&EJ;a8$hmaHdVrE*yJf+qP}n#%^rewr$(CZEl=AF*dew@_yg{pQ=+e zRnvpJrw4b{R8RNS#}ya#&radw$3Q&5`I;=R+9tu7P}N1vC{N^u!fPB zy$*R;rGW|*7k=Bmnm=ZL6nm=s{vxeBNpTZz;=`?IfGI=%%{71sk}TlZIf`)eW66{n zo1viV!~Q$tQ*>#L>2vetxt^8CS`>as6Fe7qitvj~Xy0Fo4j=i3Bkq78BxI}^C^mBP zw_qQw{Pol@iSX=#5rlYWrGH0CTa`x_Fh7`FpNnOhG-Fh^R9PU&p1~31z+6BHrc(JD z7y?CgdD5o^#B)m@aLiC~Mu{$x^YI3myh+S3$jKu@;~=EgNBl3dDvN*R30x|FGbc@t z>n1$3-N@lB< zvRb6yAX#Vr(UCtmw+>FvS`$gsypVGKXwso+)X$e7Y~ctra(>E2 z9tLC|hGnZ60A6esz&IYHeCx3$^bfIYk4~wYt$1Zi<7aAVHk0#F?o*YmR8z6;Y0L9G=#b(8RKzp&qiV6zLxg&8oM*Vr#BHP;#V zpfWs$43*8Dm^Jig!hC#1^t_NhQGKzoJ))VPU|7 z8=-S1StrcerWV)bfZv%Pn1s4zdX#5vH$i&wlZSXZ-CmHsyyh$izO6jb&de^nh_S9=Ls!S{zaup~xBA+eSA{E!l43RCUsTo@y2K z*!dUwDh&5=UPP4I$NekY`Oo@A<6Ox_C6v4-&fujS)v%Rd^Vc<(-dHptc`H?!uG`_v z)62`8sB&hp$tc_uKIb-JqK?9XLlgJ&Y{RZ9wQ`qHGV0%8kaGDQVCO1$EF!Z&h3UU? z96=;k!`=A_wlV!SNMcfV-cR%sPpdhoof}>La)QT(Lm#*FgniQ@=HgJ%DbJDY!zhP1 z#&15)uF@(q)v!^B57!nN%X&(XALsmiAVvLeFKY3%UH+q?Lv>K%$fugSso$D~VoWcSUr_2C|a*Yip~OL_vm z8T`2L3qRqPmD%)&*$4M)Cq{Zya$X`!ol=b&CHu}Z`3`Ww`K%r&u!fS-Nlp-`kj6q@ zy0yGcPLr%zYs-LJRqE^UfC6|M`y0U{?whK;%t3-gT=X_yeXZ+*`N>xoq_ma931SxZ zsb{IuaaeHX=ScJgueu!Sp9W%_s`GgATgco30qFpOF*!j0z89*jQK)B$O36~Cz&BZw zeo4pp$uVk{Kv4<_zBbUqbW+YWl2^#ULzOh0xDmTnGACS zn)KSQiKwC>t-CX-wmn6?ZY5$ssFAC&xrQTL#zyrRhnqTf>$PTEi)+r}utf^mj2_yo zNR615%R9G#upejKlg^#2Sjc&F9)NdaIdQdlDA_3RzC4sA!})ckyokN(EP$>ie8MmJQ>FwnM)4N6{Y|$Pci%HGU&OU z%j;X>jERYjOG&pjv^h;y7tM)4vXNEG%F`+aW9sN<>|*pZZS36SPQ1kguD$D{$+0%` z%+W8h4jk#mX)aSE+g7cStfpp_tGlO}5?&ITS|_4f^hKO>q6~y5f&gkC^3`&5MCXz` zI>xHy>ty%+5F9xzBU7k>4Nu0*_IXo1W3SJfcC^iO$G@Qu#V+aow%fm8D`75?Dzi8*FxvS{f^UQT7T>C?Fm~)80 z&9)0wGkfWlLF;YZjm|QrG`buMCp_!P2+T?C%FNM~3?dzC^BP8GIk{XswV5S^*uQwU zR~9rZj@<*vcDricGqogird7)gW?3yJJspf)J3FZcnoE)02@-W?p(Y2a>?Yh(rUO|+ zQD&c7!~{@BXt=)lmS+auY%D|4%adaAlrytxEX`Lc&lei`x9W$fSPevTlTqIYo+}>^EU&c!icLPCL zKGLPtx&?>=q%2PjVG18d!^41u{ih1~Rd=g_Q@}(7Wb5_CIeW5Ai_dW5$^2DsLId9r z90o5pTg$;ssH0t&jf9cX!02q`)5N1ILyw=zd8_A?roAN+?zbZuX92y zO-B|rOSKvQI;yJnzYS(ipvU8&morH{I51YNXlbpgCa_Se>}LW4;@+6oW*`@4#F%*Z z5dK;efv@ypzQ#AbS=t`@Qv*+}pEDgDbdcN|@T@2DSTg4|=jTz((IvlDD&L6Nk{0~D zt&JW52O^(Qr|rM{+IH@-KEWG*>=!)jBkxdy{@T*rta)ReQLh`jg~2=g)SiaUn0^b120t(J6;gX+YF1Q?P^MYXUe4yzR#Tf6n+6cX*64g0|r)xz!0 zn)=#8e-6sOx>9m74xjzUxIW8I$3+k7_X?}$PEPkO6ztA66>J)IZ0T?*p|mA~=JSWk zoYGNvd|sJ@nm;#7(JQ4irszGWB zq&svS?avLK%s`fmndtR1>>c$*Wj&}eS-doZW$Vk$ma*-Ezb56`IbO_nHo{6GXu5~M zfX+<15tJkz9Y}Z=05;jvSR1NYA0|9g}mBinA^*x=m|UW@hCv^`^^JHt(3)IC|InDRNcF9VKt| zcj1zJX)>i6dulN36cR^V8zuz{TRk^}&b&GE37}3<#2bO2vG~k z`cWSJ8~pqw=fhSiLbtu#11@gmQ{m#&5c_5RIKQ%(xlp7R>t&|v86s@Ro-+U`uh-JcO5TUIM7SGiCFDcKc z9U({Bx$M=vz^H`;t5)lB$KFGa*H&r}bW55kChYk>Q^2=s5b9F}(g}Td(k4%xE@)`g z`i+_R)uYO;Of(}ku0zKuYhB9x#_^p_Dcg?)Hw^`QVR!v`a$W2?_}EyPn`h?RttDpc zRb_pf>n%lPNl!5`ak18$ddCksI+q=(k27Q}vyDjF^)?&ERn|!CH6J=I=bgl6E_z0w zx9>|1eHwWaR+84543Y24IL3Y4=c~0dtIzB8iQnjd_*Al&`2EH_%Y>@-Q(#mYddhp- z$g`+0Yjzr|R#fL3?Q~8wdnSsIux(7TqFQEnEL|CoX1&a~S=`|l8}Mgo&}_P_;5X$FQ?Zox5-)(T%D$zcgj4@GMDBE%{E~*P z+wr9lF!*Yv>LcuOMTz##^@^|90|2|-p9)=`%Ax64Q(qa!>i5NYnIZS7d@v(z__6%S z%vePpeA*GFpOlv-z8<`r(3z}5E_6?I+6mPaAN2bYS4!=U(~TEhZVdIlH7&GN_M;-g zmQOy#zSACc*VUIOJkpRdjfA6^KydC#I^5bQWaz&mMH-qV^-xXTsU{oc8#RzjeBGPo z(2!YK;=owS4NiZ~cs5ZmQP7$$^gcmg;1WnBef}eLw_@}<`0MUqInf{~KCn{l?omf- zk1?SzH5e*Ptb<&N$uEdkcONuEkM8`bwyQNYxi=B#j0J?P0xC$Ih_awvuOM&)N;pTz^R^?JX_K zbjlQ1X5PAMp?hydx9xG-M5(E%@muy>XFAcn{>W;TvoWxlv-x%$tBozwU9Tn9=s2(A zuHwnNUUc~!v-Nrg-L`uIYfZBg=rOvFt>O7H94qq-0ett~-~04_bwNB`RBouXoiEn5 zLFD0m-0ji?)xm!q?8ZU(vA@jjP9ky?Du5pY;<)eL^FI0@;;`sQUF4oe<^s&5LE(peao%31g{I(p&a;|A$ z-EjL3dV+Ar0YO(my+J>i+MMnmyU_7rg8aaa*i&W*XeDHH7E&_Wi+A4@TP~;cZ7{|H zsd>=^*nVJB2)wp)eTW&Sx$PI*Fn5O9i;1bt#s77mB53g@`QOj}x2lgIV>^K z(j;zhot0m37-p2MOkE>SNlWjdk2FSdp7@>7h+wX@fKTt0-v|A-JvU zotJhB(JZB+?^35_K{ex|Pt}?<)Iy(XEarEVHsT^nMU%S3T{iTProB&|(4|XFNe0}h zG*lNt?td<;rW~yrYKdexN)J0ij2*Lvo6wnr@Y9MFQN%Ebdq~ov@FX!euu%PEKO!Rh zP(SiTxLlM)`~jA+HgH-3qc!a6+3gQ`$| zE+SC~(!i7O8rjJNqWKU7Hj$a3R!F+{gKi8D{4fR-`DPHyze*g;Z&GE8>^-Oui$eJW-SW48mu5J!RTBSar%%@U+p;h;4~72!0v`e5h)WUZFYy&L2CMwz9ayzvg~i#i-z z$_IQ4e}MlnfIjgVnREV;(tIx{0jXY?NBm$&(%S*o_C)}cBs>%>4yTSNy!UA!+FYIE zLBxqp&<0*w=^_kj7bmQd;2d?dRnXn%#zndrHG?gZDS-_XGXc^HyT3}bKF_mWgS-Iz z)&X6IG4SLuviIhX>@YggbR^XD8TxA^FFNvOiJIwee1TR4$-m4%bS&;_%w}LZ)CIuW zOu-HDYw^}H&d)|GgygbO(_-2)f(9Jb1S2g#Pc6e%hAfRRw?=})Xv3{|V|*ys6ePmx zSz`xKXC#Vk2WxUqrd+u;5OekZmy9&x7L7e*PvD~DBp<^Jf2JWKiu5n6hPM=Pe=Rsj zU!VkRgblA3`3Jh6ns3S2P9vcLvrx4cPagowZMplzwfEwgrBPkbI3JCAFMETYDJ5_r z-=F_Ujk$R|mW|tIqhLf?pqAL@mlQpY@ow(^?nzS>SLg+$x4?us zcED99!~X&XWvx`n;hE@GYNcglRV&8dc!A5B0wK1n#hRUh_;FA2{ve$=!LR6Y0kg45 zRq%Tf6{3!hXJOB+#m3P)ep?Um`GoQ*o5CbdH-@l*rgo)@ECLh?dO%nnR=E~#OaULo z{rcA~?|v_p@*tlZOqC=*RHOkkwQ}yrt?=Cv7+}oX(3a>vKi4<=({5HNaRju`47o`L zXY11m!Zi(Gy}eO&=-9c`&{@d(sl;DH6tC6{LjS8yO_7J>-Q zZPGBdBlm4omt^2}+r}QLI>0+kBo`-KLZ0*=t?-AO<}TVQF%}Qu+jb~Z*vPg7w?@3v zLh`9u#8|Kf(QUVgI@G>X8_q#;`hF>L*Tn` zUNB9O;<^6{yg5}EzR3Qg<3+``JHc6~FNu2`i4)x5Du4O)2v=Gl+}o)u2{<^(ti1xK}v7g92$LyhsU$U z^Dvnf+7OJ+L$5-kW2^wxSYtFK`i}D#?V}x%6dN!|f~25q=Hpl;)f@1569CODeCXM` zU|u7BGB$#e;0>-gMX-yQdpXbrM7mev6$z<}v7h?i$-nHNwQUoANjqc7X3{OYcHKUT zG6c?1`Pz)7o{zEZ$GGa^jP?p^*c38AGQ}=eU5&~*@9E1&yHn1_%TMbU_6*B6iu)y! z8}l7*8taj&!?uMZF-JN3h(0{TxC*Je8D{_ed zK$dyq51_!&1usAW&*-X9Bp2BIV*fLLi695NedSMa$^}xh8MFjk;N?mjxPq1YBnIYp z$D1@zKYxt#{LX9JM_3Ex6Ifr42t6Chrw?4ga{})bvfdxeK`UC;GdP?3r(pHu7J?Xn zPPG3B1ITc=9u9UBzDZL5Gl+8=>_Y^GP{*_v)9LdS&R4X3`5Y7GV~*6uh!TwThscc( zWGUDuX|UL9^uz%1*n7c(h?xif(JRCr5&a3gRFLKr`*F5^ydO-H5cejO#I=BeTGn%W zVZEM%IJgIB2qT1z7by!d!y)Jo-xXr=LVSjn-(QSCD$pht0OLcndy#u!I3f(>0G^~? z`t~)#EcDWEy#WpsN3X&_213z<1|b$q5JJ#;b$eyZXSuzI31OvcZ&Zl)Soh07s3u2^@qKr?i2=?C#ASpOgI;C|#Mv3RMTE37~4!KndQW%*?L?}*NE5Ww?FU=wuykf!6> z;e5FkZkVX|p_f5`3avgKTnhE3W@i@S;bSF6q&uM=A0wa0e?@!SH=H;ky|#V*&+<)D0UZtSgRRgC6Hwx&E=UN2hHioCXOi46iB2!Wsmv zjq$V@3}!$Efj|ih9prC63!wk`>mWEhhgf>eQA=?Q`pZfA11tPF2I^JQMQPS-hv9kC z(;r1`!eb@=RR4-eKnMDsmV4)2lFFPJDD3qg6M#KbFeiWmQla)vA*E039D-|GObte| z$NRvK2=&1imb3t#7O|*Bw+?_Is0LvQaFoInn-#UE-$m%8P_8*4F9k6L#`YRXM+%0R;g5j?TL??Bu&>*(lxccN+phlPDR;3D<=GuO z?ac|59&bUI`Vqfg-=T6(%4{NCIz5glI2*CM3%vCkgdrNlFvx`5de9iN5g!H#YM81& z+8VAEByP~2h!cLD-amSOG(&rT{jx|9rh_CQf9yp3!=E!K87;h1O8D`0fEmqv6t#IU zKE2YQZWvo`*IM$U-c%slOvwp(+nRVg{%O&q55Zk}McgT5LLHoDmrxkWhBED)e8G)@ zUD6yKNUYSMfAH@?6Qw&zxsow7VKu}q5`*-@Kzy9>->gb$5d2h9ArftD8YT|B><(~o zREVZMAj*Rg6j?B$Fhf0fFFvJ+-_ZD=uN2;#H<{2QL@{`elNSqM=oW zWfCl!38KAJh*xvKSff+pL<3~`?UlSwI#PfYyIs113%+Lewr7RX=2=ML;GW{1oZGpB z9ZwMdPT34zeTMnW32d^ft1l|68zOIif`jV}4GsPhDlj_{w2On? z@O<0wlHm4y>kMYcTwO)L@j?(KmgU}J$Oj*(@YEGCZ_KG3c(N_$-t_eJ3Vq%Pp3U9k zXEmdcJwt`a4jSUSBDoA>IBMMApFtlnqZA*ZE2a0*7^C_wLQOK20W8%(^Jow3TPQ{ez9(W!kx{NqestM zNnnaKye)d^>egkCQhgHacR9rO=>sM1<+pP~sA}WyXwS*->^2uaMa~K76&f$Z4f+1Z z(^wvJA&w%z!H1q1mboQ!SbjA5EB7=psB)vWj$_9uA*ZI)ice(YVr zmfw6o^aKdZdVvmm{d))fzp1Lp;|*Wvj1Odj``{ zTa;H+J>Z?XU4^HeGqNN#b5_=eKeTO|0wkc1X0MxOx?r#Y9ZwfuhDWDYin`2PGqkkLl zO()Pg(C#*ZI|cA{j{h@#zZb|2Kb-qF=&ldU4L^eWH_NUM_)Rac`#1E>7ud~L;wRQn zeHs?t?hIsiihmpaO)Dq>xZext1|Oo^$=?n7h9AhC0N6XOWIttyTRPdf&#qqpVIuFS^S@H zcYUyKdZFESK)SEz^NcayaEH>k3jWV0{%#>YS<8)m#<1%K4X#gkt~l>jt#Lh*SD@WV{v6qn8t)uZ?yx|0 zc>hVccrNAcJl-bAo*`Idk}8;LEQ7ey61oa zb-(});A@lqcl^&kqp~}5$%_;jG5)K-?vOy&c>ZqaH(yk{A>Jd|;N5n*kW$2h?o`0>~@$ zi9XrQ(>G9BaIkhrNL%7{`*%1&Gc`4(p(uu=9XnvfHB4ik+t=6)#?Ve2M5AHY@N=8$ zU0g$o;_Ljo5Kc3Hf_*l=#L5sA!N4j`pIUdrJ5#0a`ETjwZJ6RF9To%M?_)3Qx{rV% zGEKrLp1a-A(IX>GrF*|pP`^8Ke_3WQv3|Q@y8%`-96JB!#qaE@w&LHFzVf&QxLZh` zfqt&WxOoU~FgpAmmdD@74W+dCyJbyl{0+3o*CYyr5n(V+j3}Qyw7*gQ`J#vu;i$Yd zihS=aC^yJvff|wni!keCi@+;t!G%OEfXd1=@@gcMzIs%fnE)$fUK&g<5N8mZ_)SPK+iAw_Gm8r^71f?TVP6rE; zG@x`)s)u_FtrnG~mL@q{vu=^W2QX&q_Q@DPr+8M#ONoVK#RAh|BGM2d`MRN5270T52WY8 z`#&v{SkfW?{>3*XOS|HG8X(IMN|TkS-l?KXLWd`H;=Bu1)Zd@1OGJCxaD;I_2~WELFpo*vnHRRLSO6vRr#n=S&WA5WY1;8VdM4( z=|70lL%ZT_^4}6d4yVH$pI>CkAk2u`aEnPeE|~;X2U^dIa;1d{gyEGBv741qco&fB z1c4n5T}yImE8fW=YnU}Z!iS(qBL{7mDvb8XlyT$fC*$j$L4Qs|I60Pl{m?*V zn)#)kq;|Qf!!%=N?GjFChKxk@N-{^YaSOIX7Guh3)o|=X--Mkh(mSz0Sd9@YcUy_V zPzmB|ht$Z(tE(d`UWNoH$=RqTpeg7XhdC=v5k;n6eM;XL#2iLFIuhA5CCgVb&BsVh z?&7{;Wo2qY!N7Aj(9MP-PVJImQQ_>~(*1(Y87bQ1tHLMea904$@!@nYfB7!ULV4~W*u!ejEe5P27aX0+6 z^oV{I7D^*Z)co?^e3`0Uq>@@Z13qX7pN!AYuh7rNW2EE}hZ;2IY{cK07bp4N7=~7G ztxZPlRu`rZ8cWUG(C?7@0*hw&Di@RA?BC0*MX4{}z@UOLpn|oudVi^JIp=7-nNL4M1{Vhlj0%=k~NOWir zX&{C%kY+sSAx*6|{gugv#N1$Y2B%%aW5;F3rRGq%Z~Q!Ao9ueEcfE(fzMWUMxi z9P7yocU@kNI7jqS4#rd}-wRT`I3G>kn^A{mq8+<&}`pUR#iStJ}m(I+@NjiMVP{mQknJv*i`V%nJ1@ zlQg({K@eMSPaLZdPKvUiIGK|9^F%k<)2r|LHSgLh@Ao?Q+;qWuONlv=)v@GuUftyc+#l(MwU8aDY5LN!VIsl3FMl8l zBa8tSPJGVTI*CGw{U88I$TH*R-@L zxRdYb#l-AFs3|YF(E#;&1bEP$lOp)9u#i1YGqFAcPJK>WDezJd6|C!=iyYaCqQ4d` zR@RGA$l#*D?3a_$Fk%X-s&T><)y7>#U0Rs3a8b+kMza+q^m`9_$fOVIxCZvamo?$LeteZFt^kPUv|-VkMX|7}q#Pr;X6{vN<^^ z?9AqX`rn8eK6UwEvf#wxE)SZYX;}k4w#unZ6_UZ|xgv2M`WbU`4|1K-;Jc1Kfclw4 z0KBMg9z*%X;N;MZ4WIh#B!v9CzIsxqvOsWgg1Z>dIN7k+&=UCrwdt(mfdv`UWVnp@ z@Nf`eLjlM@{jk)=gG%zcVhGbvlN;H8~M5;LUbtz$k=w z1&Ot~0=S@O6tei7*oA+>$qDr~Sr6NyQ)1MMDD~g-fE0xZ39GKb41tpL2M>7AhAI6% z7jnrc`SV-Ra5Xjnv&E~IJ($p+#I!NRws%Y`p4-%yduLSi4}x_s1kbe%RE#06xBp$f zNMu0<=U=toj%P+y>vNMbAm<{}cN ze29C~3xhi+Bykdv9I%ppeh>LAh&x=FSvS@eMuc$x0wW>nP)Rs2`1HJZzfuMO2uo2r zIANT4p7giph4IkW7Vb0v2*gH#(H~jxErKx8JP?t7Z@D{LmOifCgqhpg;bFuK#R>ea z;9O4Z-{Fkub_U#)4G<_B2xB~6h9nqn0HR{pfZ`KFW0YrO)tu5Afyo6?<2{Ri5D_<` z$UX!o(|8PJG>~Bts1%SU2(TtFy_w^S`Zu9~r9ENZFMq&*5I-phA@HAe zuwY-0Gy2MsksLB9B z3w*F2gwmJesRTb|c*b4kC@k?}K3tpcgN5<)SyZ2B= zF$DBEo6W(b_Mr0J4TtZl9{gA;AD!aL#hk4qHR1M4Ra$GeSUr=McL5*$Y0vf5-ULw> z&-m)tr%i>$vK<$iX{^4y z`Ba6H)9csmEBSx3_F1KE2cZEHQTC;-rRr~WlW_o~uH)tiyRz=8zBP(#A7%5N%cY^9 z1BIx+`*++|IZiCG^nh%2nkB$rg)Pg1`8n>-jf@M{{`R$9x_kO@8qJo>J+|nxL$P7X ze|8slu!r*Z`W@#73m^+~I#~i%8t~^FSp0igmA|aH8T%yWY6@zg zC52Q?lnVVBc@>7wCcl@H}Z1Wld;Q`Ir&*T9)q_@@A+g=7rvQCjuG)NA?!i*^rq zV;|9I5bHq2^|991fvgbw># z&2lv$iL|G*>7SPQ2npawZqsslQ(E|Z(PKLyRBhiUWY=zeEvHnF4km3%*qX~z8oe2f zwOz*bE_4|kF_$R#V4zZ)Av|w!a@31_5p)t3&P;ED+}2 z&MLhinuzQB-VEyc{Bc6r_BGJcHQiVR3pn21?+@?m-D2Hxurt1iN@@Lyw|_Rxqq#$q zlJhQLxqF6*oVz@5e_db|Mg}FK+IG(K(_Lz zf!fq>>thonwNbMiavUo7!iqVVrAxdz&a0y=Zyw&>u;%oA$=t_310AWVT7CA_w9_XN zcBoEi|FN%InBubDx*laN6i@TAm48c(qA`D@)0llAlIbQeK&q}Nm(rbW;Yu|!Pd&kl zF<6Qec&_a^*R+*TKyK4Aw#v4E-TAe09{4P^nY>_|TWtkXTV_ngyYd(biyYWO5LvO* zN@mU37qgF-vH`+cDnqB)uOCmc4MY&?^tDb8CJ~?wrDOc%YY{fw%Z4bLZx2SF4(hd; z!88rE8>)R*NXUE(bluhx2NAzJhk#yt)U-4tQrEQA-OB#24A0fZY89m#PxJ zqxDy${I_jZ;ONhyV&vm4M0j6cT6+MQ^~u>Tb7JZrB96If+uQ=ybp`lDF1X<+6$^Sv zo1;!@o+bvfT;IkSf4R?Y1Dr}nN#H|d_4@@}OFgid7}G!6vx<%^Fl8qMe8YOTn{@S> zv~3&-$DAM=!Z5Tao+k~iI>t9q?3sHW+t6G`pwV5|u{N!0WwgTYUryRw)Q4F!!cddH zd})3H-XB`oTB+N9DB|Z$NL??|d_kwbpC7nIV)xdjCflyF1;ne>vU_UMTd0xndjABt zPmV6}FpO8Uv%P>{B@a7IZeOCCnR^&w6Zog+*llRn8KXrQ5Ae2^8iVfp@hMB%aFEME zawvOh(9J%$N)Z?%kmj%Wc-nXue;p&!`RFr+E!xF6{20XHSW9*-$cerDxEu8yGAG?2 zk6oVqyxr|;$(DP;>uHo%VxDTb;&0E!RV93-t{qa{K38aC0dF%mco4W=gw8&OQYG5SYQEORBlgFhuL zv+WL`HIfhd8e3uL1 zvnz$8U&R%*&z?~5v%_tjiD9(Vq;4~GlrZjEH-S$g16_%bA_BP`iQ52y<oPn%Y&db{a>aee%!h@UmFX;2OVDH&I^qMCE}Z#=3Jt)ySvxOFFIgl(iVW#wQc z%9<;C{vX8&;tipQVZ~Ug48L5r5l7AjO~yb1pN)xc@Z1UJ2LUj|cbDCT81Wt{#J3aT z^F!EL@;7j}A<^!*z-TGli#XhKAm?lUO)@YCutygJ?L6qCNA3e)MpyEMVPA3cN(8f} zEja37d%I~_-o5~)_$Q!`97V{a3i|l6qwN?X=3R30DIbdxFdI=AGBH+XV%|bu z0upkc8}eL@yK_T)^87DbOS06)Z^llz_#B;Zs|OBGIr8m9q>ue3W?v zJW!IGlN}QKb_&SbA*80*F1vLGPF_D(X}51O+4MXtWx=~Nk}s++@&s1N&iLlzeY;=C z7Wf}^Necol)^!Qy$Z_JDE(Dj$zc>-1Elj)qn)#{fpIf>7&Zn-ZJ@nkv65DC|#n85e z-Zka7c1*TG+U2&MYWNi-4?UNB1xJWPj79seDeN*c7~4b#pZs47>R;}~K>@88h{_fS zA3Z#A6~eww0ZsBurW!%AQ`yoQk1C;@v&tQ>mXm&&i(3GT4E+-k!HxsBcc=^D zM~uxEcu~proQth5>}6UYE|S*as6M9@W?wGFV$vABXlz=V|x2Ks`@}aZ@n*GbW?84`g z1KkV`X@WW+?`VhJdr#i^u@y7JMGXI>>oME)bbpwPN3`ASdyH1+Tc9@o1t?;in&9h~&`e{NQN)?lMBEgj9@=uL_aP_wmO0S;_3JFRZHlw1Jir z>d3-iN5iwc+q|ku5+z(r2wnlP=Mbo3s|dpIca(|A3(B|76A}{Y038o2qe~q} zA0CG+$mj8_-@p)?S*m{iwK1)Uct_t;v2Tu<4h5H4MsPel5`Y`W&T$VLnz4>D2gOGj!ax$RHt}tDAL(oY*e-AU$4Tw42b@=-OI;s3feVf#)PB=EAOyr zE>H9O$<30battD~W!l3s4)luIye3ARgQp!G;!m^I22s`6F!+grG?^WyK; z#G72dl;@)lB6CCCL=L?6_69!3Cv-3_t9{$I!hZDRox9jitF6a$6tp+y|J(zg72ehn zsSdl0w)*p!SY+a04`SnJ5g1r>g|-@t{V|Hd^Bht)`b40C&pTgKJJ{zKU2#Uq@L5ti z-)SVae)M4`QKze!rM5|F+FU^4D@=6ofedr=g042xxaqaJ79qM^@>~+do~C=oy1-+K zv*B9X;b~Oom*yms$W-|6MGgmEUg&Gq|G+*B<^R5Skr3A2R$j|I#ml`qw76Lg& z5+pVM-3y*e$ti`_EU$YHMrbt)4nTzZgAZmNz_s>DM&g7Pnd>Tu){M?3Ay_Bh+cW4- ztR+g0;UAJo#5IdFM|Ze)n<4NEOR8+h(D%C-{(#hs#a6c2+UHBv^rS%sLD4Ot&P(8d z*lqXdsnEMg#7Zx!PCf7A)D*Fjh6bOixk}37_war&W$J-i+IekyN-9&2L6{so$Z(da z!Trm>CXkYx z0mDH|q!c<;D&P7MUlveZFEhxXw!q;GzAeGud!K^@0Q`jy-JPf;1O2UDvOm1_B~KZ= zQpMixq`QmNs$TJi?ok4Q-<{z=!YQHzV5gu!pJ;-8LBzx_b30rFwT{y++abh*`TIfX z569~ww#3;CZRtJ}G*3Oi^Kst<_VLaW2SrRyxM-^zGq@v%}_ z5VZHrHcI{Ta-HU781PBf4H>vBZ&Y6+tZvVapBxulgG`M1(8{E3{azPY&qGHc6VP=! z-#9!tXEsAGTNcQ1vvEPi!B*Rey?c&u*Z9N1w{T*mieum_6R) zj{#ifb|x!K$uh#U0hpDN<@=i~OgJ^#eKmmB5X+s$xJeg#ojFE*fU_1~Na8Rmhz_q;t!R zibQ`X1e$S~Y8FlpAUvK0N{02Qf5Dj88ap{Vn*6c(AJWdy@)ryQo zRdw#`Y7_(sC?MAeDGHWy$(r{$5yC-ZD3W*q6%-Yc5HJ#QBR~|kaz{Y0)m@2-a=hWs zU5cc%n6`)ka?#4x)7EOLs06BRTX#)rtEr-#cdP^?>wV5?-5>V;BK_5@jJ)p{^FPNJ z^O<8_{>yhP`OP)uwux{h-u7(yTEuszdWe2eTLUU7VLLiy;~W_#>V(%dMNkB(zL24=e)S3b4{IBq0c z=9qdN-)v;t$3WBuk!ivSO>4H<2G?wk6UCKT=A&bpa2>Pd@zz{7F5k#>J<;wuj(jki z6nbX&d8V1rlg8WjMHt9OCydKC+w8>5$H0R?%V8wrv{)c7A+W4F>XlC?Bd+~G4k0IrwvJs zhm_A7H^dojjS6Dcko2x&%Vy6RGbJOlJxP8WH{_P`@{%!WX^R&x9=+HZU0gOd&5EKZ zEoP_L_9%%Mwcxg*@|=oMMGG!CQA0-lg1oYVlJbJ$qEu63PHyqS@^M3kq_)>va!S2L z3r5E`Y;<1n{51JPnl;)1wi-tKC{zMSLB$>PaHLi$&W3|YUA8?soI z5dV**d|;MCCl)gq1q(_Fb8eIKn`;Wn3-eRU%NFLFwTo2JzVeq<)K}s0wa@e^`E$~y z7TlgMtN*}Cn>HiWN_A6ZiJLa1xVT(?iKR|Sn^ZKXIMpoO{koGqPtvXuUhBc%S!g2M9rvb4-XIls)v&nupte`3w$+MavrnyX@q_vXUN@`Z2J zG`;`v|9Q*&8!rDp|MJBv%g^eQocrjC<#+YFYyEdt+_mnkVc+ey?5vN{-+yHB@kVjt zoBPQd(Sr9rjo$hFy!wp;KfnF>7xjBzi4`3>Aro}f7JY9a<}czx`S$_CjDvfs51(zS`SQ(fDLY@US-zxu z%1^(j**7COQAzLqqx$SQetN7BTP!jgl#lN$b3 z58wS%=a-i*I=sDa=a=ue?eLb@JH7n3YaagSmFMJ5-shhB<7aC-7d4(acwqIf^PYe4 z+t1&&b@>c`Q1!y6m%q7bK=u2NEnjj^|LRwYe}4Rhen-2v9>4gIwdm7^_XqB-UzEP`>DZv0+^kiTtS-YEW>@x{I_tWul}}se zZ>#H8ImpS$JhF17^mA`$}wN+jH+5ywgpO=%pedW)p2EA6-Y5L$9d3lAava7oI4RacM z&X_e~>9>BFGox_je^#BpsJ44!|BG{`eYhg2s`H|Tn;Uz5KCAe{wf|E3txp=PuwUn< zt5Q}RDDAhY_S|s5#HR9;wRxqdZ)%tnp8M3{*<033Ej=xLRgWWCTbA!C?elV76b^pB z>DC)pon6{xbbWqx?`en2Zd^U0bVT~y^GeR&QI}jjC}_$&wBpz6%lf9Tc(bH)QA0!X z)k{ww-0*Pgg?m>lDG3JECRGpq^ho;BPFw3QZSB2x+1i%dmiF0tU~|iN2JP$HGW6Iv zGY?E_NgliDnWNUyv#&hzP{rw2HvO`-``(R%4}V@U;GKcDlz;!uO>HxJlW@pR6wei*Nvn|yuwRkESb#-^e|6}>bp^Lp`r9f@lLHo|n~h2S zZME6LoZoJV%bOx~cv(k{*wxwbAM>+<-^y?E3(J2t?$OetpQZ#ijD2Es)8yX0_GVa5 zPwsTzzEx=j*~jnw#VS+VeY;krnZMQjVdNK+TYppkQ|oWp$9wMmsWm_AkN57I9c!B0 z+H>y{qt|6gUS`y5@2a$`vwA!CUAXeaSwpsD3@dtZmR;Fx*vd&a?ce;JVN2KLPTAZ% z^v7LhK2}*hR6@+(iq;i8W)btL=*s6T|K;q8@QzQq zZL7Pmvfq6(|d22RXTFb(5f@;ub(o#&r7qiw=a9Qs^@jJ-<{t7M>*GSU;ewQF0a+! zFum`eX8p_dwaHbd`SqEN-5<)CTDbh*TTUxn_v5PbcGvlhy)K@$eYNW1=F+9zw$@%$()Z7`A35&#gWF`>5+XpYN`}ba=15Ia>x^+S;@3jFJ7#AekML zAHDWI;h9mjGyYp!Ve7rGnZZ+IMpb)c)8re>pgheC%JxDtHvfkzyV-2nTUj#qGpu!O zQ|juhAyfC5SvRCtUGFrRtG(XHsQUH#;WE(w@_-rkv-it*U%xK5{l|K9a9MYxdGDLG zZ*JUi#=YB5O6{K|`kxqmb=DI->oP1etG@d2gUdyKMi`%CCugJCMZdVv{_4ln9d{3# zRJK0ID$4s#`{C=vfhd0XdOGLSqfYy=>hTXo%E52Vi}OG1)_>t;=CCGT%2r?W*tO3^ z{!gCUTffuWy($W3)SFTB6zH`BYml-qygJ@4-HuiL+V`k5p0 zyzT3~onv0x|6pUcKjogk{hq(={I*|H-+0zTxxGGIHfm>-zHC&Lw|oEY#!heMU7T|F z!#ginbYMs0nHT4!eYkGi&Wk@eu(z@ElB209cO~r{e?`Ni;TaQ;oRzZaK*`8W`+gmE zz39jpDfb*L8DM5zmy7Z)`APlgUE|XWy)l0uUGqSgH23JpEgKe;q`!RNht+5GJ<{{W zyI(39zN6;d>T{kZRNAYkZdAYDec&Hj{$^=f%J*}Q^*efB z>luIE|8RBZ#YcAu=$a;sUADG)xS`!<0bTc*H3#H~c-O?1v-Ylg=E#VOZZi)YZ5{JS zP0;)=hISXX`j6~i+~V$CyY6H2IXBWL)`+Q5qjKA}jqyBx%;l!++EdB|dyq{^f!13~OiL%EwO|-9KfG zICkIOd!T$tMs?N0kAH7ta!GdC=O<_2eYrgk-qm3S_K%HwZ(oNQc&PI14IO8oHFEtA zJI=r%*VX)@!wj6>d0yVx9cEzRrhkt;dTn0L@h5)#X;sqh`s*6|yg6%0;o7&VdM&CQ z-Pr$^InzE|JFcqpC-pZs_Wk_uRVmB9C_Sfp?YF~z4Z^-P7nGi{ss8G)e?!ysEz6Dy z`)d1#=RI|}e9M|1O)JB}bDOfZtlU*P=;gZn>T~)Y&b@Kf z+`8|nmUGfqPi+2b`aN^>rHbA&>!vmL+q45&9qamhU2*foJ#wCT?Xf|3*34_Y z_~d!!)j$7oWf1%B>*HI7eYx?@rg3{VKHD6hd~Yq!+PMY%-I@gtX7bTg~6vL*&QPH+;5vzxi8xNZI{n&b;8S z**|RQfiPHO#@_Yuf&Aj!_UUo@{mnzSw$F<$a~`W)HdK&h{#MyGXXZYg^V#NEZPTIm zg+DOE`c-qn7Ux)(nP#e(Gc_rcgm~ek*`|efVRKt$&B;lJ8t;wW?)~ceTPwdbffC{0 zaJiv;tXEw-`Ys%?FRQn~dpq;uu&;IFurnd8Jr8DB=AhMn2C%C=FaEcCU-`p{vx=t4 z>E>J^YCD1byX4iyPbYfr{e#nfaw`q>+Gz^S350WXR;RV66@6GfurBk|-@9k-&RO=* z+ykYLZ^~Y`E;i`CS-DwjCRt|=Yv@+lb!y%XSt~!V&cCjHWMzLRM@~1dH>aB^m3=>+ zRV1gI*5E$%m-KsX@XuvsH)MLx$#UAc^2w^+W@XoBM9yW~mt9-Z_lo)f)6e^n0C2<4 zb`E=O-y4l*{V8u;;a$l)BY$6gW4DKL=M}CSwe!5p18;S2pLRF3PrD^Ki$7drrd>mN z<{k7HIU(dZ}hn#fo7(65O{v`$b zC(fVIv}5_RSN5-%+j`5QkJ6*&w=eJ2@A#o5Nw17|n)m-Q>6x)!(V^p~ts61rFL-69 zqAY(-a@Ux-sA9{{_J4B2+xI-VMQ#4p{?FVPH~&(LPL^5b0gZ$*sYjK0zAlSAxn15d z*9*-J_k^;@l`BUb%X}*)*LV`j99wReCzge(UEg~h2~3QOteDakIi6ew>$rW94{@QFsKbg`R${K~Wj}Gh zSTP^sLUXyUL%Wt`t9@X3zL%)Y@**oyo8?<-3|YQy9-`>jhOhhFlI~S)$WTt~56cf@ zDh~SGl0H}M2A&|;UndL#RTjnM(XEc-z=>=} zm$`}`P85WR+vnP$8dt7ksktBzQORRt9ouys-#m6@{+;BOJffwJYi=Nq&n3i3jy$NP zI2hSb=0KSXW%86^B3C0H$^s}0p-i4|OsG$u&x10p!|+4rY8{r010APz2pJ$w>#$;4 zhb41HwIRnVT?RTV&>_bSoeMhTp+Fr6I^^6($AJ!cNKnPexrHtR9X9BYM+=#a+` zbsXrBxuD}fhn!2PI5|e>GSDGh&~czc&V6(o=#b-vjsqQXtkZFzLwKa(T+ks5)p4Lh zSfS%Uha5X~9O#hqQym975M3p&gb*@?$1ITq_O z&>@W1aiBxa4|E*pfHkZIJeS9&b$t=&h(JdKI)LYvoUf^E zmdC|)nbu(g&+VA*4|(ua)o05(Ik62Jcy7x%u#VIHVapmv$7vnr99YEx&uv*t>NwB= zJhv^~A2#sZwm=8)+^ntiwtx=cxov|E;JFPvw{6e?JU6dPsOz;hdTZUfI{^$hia4i|I)&t;(p^??o-bO6t7 z;JJAvM(qROxjdQ#ai9ZuZUfKd6(^_ZWsDPu9d1d;JFPvw}Iz2@Z1KT+rV=hcy0sFZQ!}NW|^qN0iHX+a|d|t0ME^J z8r_EO5A!;mj??|&!1~-=168@ebGax3ae983YoNM5&;dM`D{+tuI)LYL#ZKn}&mG{o zT-k$M&;dMmfah{y59$LQz;komTkSvKxdS|xD~gZ{I$(WnURu=cf)3!h1M71KcTS4y?}|;JLhutF-~o9ax{s%ey)kcy8{`sQm{#cYx;(@Z2$PEhns}9pJeG zJa>TSa$#B52RwIx=W?MHa$#Hn&*ddd$c6rZ^|=E)cVK<)0M8xZxdS|RfaebI+=2DE z13Y(t=MM1P0iMfMeZ8-M=WS#c0(A@Z15O zJHT@XcWT zE?jSSf#)u)&t2fT3p{sWeeMF!UEsNSoj-95xxjN5cy3_9abFWv&fezrg+<1mu&;dMmf#)vp+y$Pyz;hRP?gGzU z;JJ8ZXdS?F7kKUh&t2fTcyH)7fafmo+y$Pyz;hRP9=E$lI6rWK=PvNv1)jUGK9`3L zv^L>FKH#|rJeLPIAs6}scrFhQLN3g6;JF7p_kic- z8C<0e*5@AZ+ykC_z;h3HE*^BcUEsL~JokX-9`M{e53IDo`rHGad%$yf$QtSc9l&#W zSXbu)&*kAzhyxwKa}RiKo_AFH0C?^J&wb#z4?H)|Nhh}91J8Znxeq+|f#*K(+=unK z4?LHL-u3nY&wb#z4?OpQ=f)&Y?E~PsJfID6dR+Oyb02u_1J8Znxv}k2+Xp=Nf#*J4 zZ#U0|>iR$j@Z1NUi`%5G4|wha&wb#z4?OpQ=RWY<2cG-Db02u_1JBJf?ds!|4?OpQ=RWY<2cDaE6;!*xb02u_1J8Znxeq+|f#*K(+y|cf zz;k)wMe6{b`>;Ouf#*K(+=unKJmjz21)lrBb02u_1J8Znxeq+|f#*K(+y|b^iy~SF z@Z7u~pvDXE+y|cfz;hpX?gP(#;JFX$b02u_1J8Znxeq+|VSVlc&*jAqyem+c>p{&@4F<9jR1Ha0M7&9c>p{Qfad}5TwZ>F zZP6SIV0|6{&jaAOytt#=0Gp{Q;Cg!iJeL=}^fm*}1K@c8JP&~9 z<~=1f4uIzY@Z7vFq;p|h0nY>Ac>p|@mtb@o!1Dms=kj6}1_s{%S)aR2mJv&4}j+Z@H_yX2f*_Hcpd=H1K@c8JP&~90q{Hko(I75 z0C+Ah=;{3jJP&~9=KV4??t$k4@H_yX%Zr-2KHzx(JeL=HAy=PY1;FzFcpd=H&HHak zFYsJm_|tK~^8k1r0M7&9c>p{Qfad}5TwcJ0?bFAr5O^K}&qLt3yx^$XFz@vy?!ORt zE-yktoSx_M;x@#A4&ZqRJP(2AA@Do|o`=Bm5O^NK`aA@lhro05F1*@*!1EAzE-#Wo zF7yZRJOrMH!1EAz9sc?di=9s#-y7+1ja5O^K} z&qLt3dAC`$3p@{j=OL`mL*RJ`JeL=(b-Tdx5O^-%S^>GB19&c9a{;+9&tZKY0?$L> zc?diYf#)IcJOrMH!1EAz9sh~+BLbdB!1D-rZhQ?A_e%skkAUY9tj{Chc?9coJKSX<4VdvhvvC4J=1zM&m|6Y==Hh8fey`ci31&)=Mo1xG|$D# z2XttjOC0FX*V`oybZDMS9O%$ImpIU&c`k-?phNRq;y{Pyxx|4Ey*`&X(4l!QaiBx< zTr877hvvD&fey`ci31&)=Mo1x^!i-lK!@hJ71KPIGMML@=Mo3=T=QJwV4iE9OB~E| z&2zD#g5#Cuxx|4E&2xzZ9h&D72Rby*B@T3Go?9`^b18#yrFkxKFs?MuB@V`w=DEbd zxY9hAI2c!&=VAc{IyBEE4s>XqOC0FXJeN4op?NNGphNRqY|B80=DEay4$X6k109;@ z5(hdo&m~Ul5I8F4322~9&ks2OLY$r-GFc%`&kq?e5U1yd2+?uCbK_x}c>W?zq)-Mr zfamgki;xRCfak`aP;U$90G`V?3+r6qxtOd%9P|h9+yb6kz;g?DZUN6N;JF1nw}9ss z@Z18PTflP*cy0mDE#SF)F_hkaz;g?DZUN6N;JF1nw}9ss@Layo6Sfb=74X~wp3B#V z>iU4^7Vz8xo?F0karuQdKnL(#+<z5a z3wUk;&%qzg0)IFugX1pn+yb6kz;p12lQv+U1JA)9&H{fpDbwQ${NW@{&kyj2lQ`WU z;14HpS_k;U3G(!~0)IG(10AqF2Y)!p)$<(u;UrFvEAWStIDNbl186l)!5_}Df#={4 zCvngpz;p12lU&dNJhy@8;14IK8~V6w1JA)9PI5s9@Z9)BC(d&lcy9dVbsY2u@ErW% zEbxbuGCj|2;JFPv7Z-NDeZX@Y*5~5Zu5*Fs;16ekKb(|-4&b>BJQw$O*cKR9z;hdT zZUfK3A5KnBVV(oeZQwch!%2Oh19)x&&&8cy?*rgD_`}I5HRu4IgFl?)!tn}t4*qbG z3-beb4*qa*$`A7#cnk_+=3cy0sFZCIa+`Mcitz;hdT4*qbmbba?VO#;v!5>a8A3%Qq&%qx~a$$Y|&mG`7_`^wk zpaXag{%~^119Sk-!5>a?K?m?0{NW@Q#uf0~d`D2?c^LS^$z>YQ0X%nr=im<~^})CT zo`XM}a_I~B0X&y)ebIdhJO_U` zX#@HLcnk_-I-JO_U`xr7J(0XzqPILU?n0G@+Coa91(0MEf6&H{fpDbqT@A5P*l zKfoVO;&gw2Kb*vA9pDcqmq7JA2Y)z;10AqF2Y)!p)%^kfa1y6E2>x&qr^gle!^x#w zJwL!7PU7_ZaDnIG4=1_MAHZ|)hm%~;0XzqPIJqPZ{Q*38f#={4C-s32;5qoiNiOIB zo`XM}Tt){Sz;p12lUx{Az;p12lU$e|z;p12lgs=tu7Ky@4=1@W&w=OQ4=1@WKY-`p z4=1-FV4lPEcJPOjT$mrgbMqZ;iRTR94=4434p^UqKb+h;0UdC?-36Y5Kb+JD{Q*1& ze>lkn9l&$&hqGL`-VXk75(o1Gcnk_-I-JO_U`$%Xj=JO_U`3;f}v40Hg`!5>a? zK?m?0{NW@QbO6u6A5Lzy>3I(Ra1y8I2l&HDoYn#Ua1y7-l?OZre>k}nsOJax!%3X( z5AcVRI6XhWA5P*lKfoVO;&gw2Kb+;k`W*b>Bo1@{&%qx~a-lzf=im<~xu64h4*qa* z8y3bD@ErW%Bp3PvuD5%@bMS|g`alQp9Q@(r)-mV+o`XM}O*RWzZkMbMS|gT<8zrIrzg#F6aQBgFl=F{%}$TI$(Y70nfo7 zPU?gC0X+AB=N_!j!5>Z@>44)d@Z5v@=N|AJ{Nbbx&;dLLe>nLnSUu0dA5P-54)BMQ zIDNbVe>jQL;|l!YBu*c9!5>Z@i2)t(JRJDLNvbMS|gT<8y2pZmab`Eqh~`~!bD3;f}v48|3#&%qx~a-lzf=im<~ zxzHcLbMS|gN2s7bfagA}&%qx~>H{6HJ_mm|^M&tv-^2PG{NXI{hm$hs58yfY!$~ga z0G@+CoaBNI;5qoiS>O*RWuOCi4*qbG3p#-3;14IcpaXag{&4bm9gHhjpMyV~nM0c{pAH&%qx~a^ZLdJO_U`$psz2bMS|gM;l>W z0nfo7PI6&f!TQ_>o`XM})TecTKb$;zsmB%g!%3X(5AcVRIISZ9o`XM}YV)AHeef*5}|4 zC-s32Sf2;LbMS|gN1b7Q!1^5g;UpLO1J>u@4=1^x1J>sO@H_yXgFl=+vJJ;8;5qoi zNiNKD;5qoiNv`G~_`^vYj4N25gFl=+dJf|X*5?869Q@&=KIjkNIrzg#F6aQB2f%ai zhm%L>VO#;v!5>a?K?m?0{NW@QbO6r-cwY_t;pDM@&;jdn@Q0IJ&;dLLe>ln2I=~-J zUO~|F1N`A6PU`@FIEmBz0Dm}%)AIxT;Uo@p0MEf6&H{fpDFYqAbMS|gT-_hw4<~V& zgWwM*uXX6-ZV2mh@Q0IJ&;jf75O@y$a8e)i2k;#H;p9~m&;dLLe>lkn9l&$&hm&0B z58yfY!$~fTE8sc!!^vwl`nU`Ja1y8a5yJW${NW@Q`U7|l{&4cj5A+A{9Q@%V7y1Ku z9>V$@{NbcN&;dLLe>izf33LF@!5>a?K?m?0{NW@Q#ue}!{NW@Q#ue}!{Nbz+cn z5(nc7*5}|4C%MocaQ__q;VkfnlQQ53+&>3@ILQSaaJ?P;;UpJy!1Z?Uhm%*>U|a#u z!5>a?VO#;v!5>a?VO#;v!5>a?^|%6mIC&LM_XqgHNu1UJ{%{hfc@F+?5~uqE{NW@H zbO6sIxZV!_aPpcV=m4HaaJ?P;;iNv$0XzqPIC;HMk1OzplQ_)}@Q0H)JwGDgIrzg# zF6aQBgFl?Sk_kG1=im<~xzHcLbMS|gTs=R)A5P-*`4#xXS>O*RWiUU0=im<~xzHcL zbMS|gT<8zrIrziLtFO=>z;p12lU(Qz;5qoiNiOsU@ErW%Bp2p6@H_&ZgFl?S>I*u6 z=im<~xu64h4*qbG3p#-3;14ISBEvj~^*Q*%NiH0BVSNt%aFPr21J>u@4=1lm!~6iA zgFl?)!u$Z9gFl?)!u$Z9gFl=F{%}$TI^cRc_`^vq=z#0(;14IcpabrogFl?Sey--Z zlqnrjrpA?&sreygN{5uGaV2GHen^?pA!TY@Ntv1-^2$8u&^(to(4l!QaiBx2{Uh@YXdVMZ&phK_EB@T3Go=Y6)&^(to(4nuli!}l0&^(to(4l!QaiBxr zKbJVrq1WdU2RiinTXqOC0FXJeN4op|7`#r3vWJ zJeN4oq1WdU2Rby*B@T3Go=Y6)(Cc%tVbMCkA5P-54)BMQIIRQx;UrG$0Dm}%(>lN( zPOM`<2k;#H;Urg|msr4a@Q0IJ&;dLLe>ln2=OtpGllXj-Sm5aMD=~Y4IM4w+7lRPU z1s%Y1@Q0J_10BF~@Q1U(A5O|Z2k;#H;UpJy0MEf6PI5s9@LXOr)cX&34*qarQv~w^ zcnlB>^m<%JyB7SI7amzOSdF7O=u;lx@AbO6u6A5L;X2k;#H;l#cP<_GXx9`MxK zfal;3CvCv|0G`VOV$cTk2k=}T4AQy4bMS`~yDFF;z;p12lU$e|z;p12lUx{Az;n5| zsI>vl1Av<_M1K%CYgC*KgK`$J9&Ax`U%lNB8YJQrX>9OwX^gFl?uw1E!bIrzg# zF6aQBgFl>D!GR9oIrzg#F7yZR9Q@%V7y1L%=im<~n*!qs*5}|4C%G`Lfaf->&%qx~ z>H{6HKDUAAHt-z$;bb?%xPtXL_`^vqj4N25+rV@1hm-nXegMzGAI=7UI4Ohv0G@+C zoaDkh2cFx&bMS|gVXDTJTw+Wt3*>RGAl3XKmRgkDHU2@K$ddisp-fIhjZa5nSs-h~ zj%DJeCFfy@WxgC=I+n>31gbu{<1gnC330yhu}LVCuZB_e$>sY~wy(S_r=T#uEV=90 zv1wBaZqHAZ8EU6ZDK0KgmCV#BX_JcP6sJmK=3~Z;u^E?GnU*&}&QmXS!^_;vC?mYY zk1{97i~SSi%pE*_ccHOS3?*3irdq+hc4jvbP2tWn^0OSBy9-T687yuv?0RX@OAj9fPIy$(T zJGdHxy}p>c=(Bj*+mRK)!_pN1V4?E=|M+kG1ggOkO0evhJ=yo@*#>C3e~n^{e+PPl zvH!x@2-c(hYCS?lc09KeH$jy^)@xm9y?RlwEECn^t<@5jAoiv9HrK@6a${SZV!UAY zI}?h6mGvst`>PU(RzQgE;P^PF2+zc~YD#TWbWcTn3KoXi!{i00rUmI+b35;%kUuVg%G<>JPF)VE@tFF%T+o{hfMx;vde zlZ*oCh8SkDZI(Or1RwBbw>d*Udy(v}&+p=<#x}l6-(kJ_5}6x#YvRv7j`h;IVlEMm zJa_9!g!79>G&=<@Dfu7@59(FHTS(}2Usb)okM)!Is-YBb!;;8IYaH(rldtQYBk?H@ z_->Nm?_80+D=h~mRb##5tmI&i&s7Ahrs;r^2xt$9u%RlY^SJnT<`uU%3y*f!zxt|R+{9NYw>&V^0uLMj9c@J@! zPI9n+pzJzEOKdR}@vrZ+B$!}e2%L04xBv6cwO>N9$0Ovo+g#Pr*tmj}tsXVu>5oos zNDMU2X;MzrzX!0~7j71AGo|Ic=-j*G8LHYV3gt&PDW&EvJ~d!Yv1kI{;gphu;|pg7 z=?p1qZ#rL5 zI~pAQv0?-2z5c6`47Z^Ax4{7b-0uJY4Cs^bv}5&fbhb5dbhQ1)r&X)3IqdLY`ms(2 zU|uVou*gf~gqf|_2U4MtIL?X?HGlg2iAt6FXj!WMZKKePf7DyGeFex<*Wb_C&$$!L z+WBqP0GS|#8|N1=^P5yw%wDrs)}dj#3+`c7Li?!GAdq9`?$eR)ZxP z0LVTgPro+8_DLfN7>#8s3nz%M!=1*qryOp@-`7F+F44_=x$KCTyDWBt^3yX3ss=6> zCH)u=x3w9@57{v4X##5d!9WemgWiPCKj75g&mQBFt(v&H9NQilv$K7g3(WJQkkx z!}Fu|gxm65QqYeUga;o<{-6O^zo5G5ZKfZ#PG8L{?L8NyRm6U(ZmAS{i(*snmzcAi zn=MILX@xMtae+-hHBsu3#Nt`%9wwzF{ANj>yx(#+h&AmVh~)~fQy4xM5E2FmRg=vi z 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

  • %)bS5XeRrE+Rs73+_lr*c2J>I{8Zpflr+eC$Esw7oCPY-^lc6i?kZ%caQa*0y z=rkCE=8423I%G&33dMERRi;=275LFk@pZtXUM2V8fMr$&J1-Anhn+EWB%L6L8mn%f z<4hHDNK}1{HNo-uq|)7ymXn;~8ix_q%YN44*6B~(k?$kIj7^!Icm)B|$$w`k=@4&ZfmdrJOSt14su;hs=XoqACQbq2_)zD`(FJC|iPRc_m|r z+B^+=PKC5t?lFhL4*h2o=ELkg!CZS80B+Tvi2eOg48CDz+RVfZ^amx;(a;qT1j51a_Vvs^6ONw3s9B3$|7Y{&u;gpCyeJDJdsjFP`KZ zJFH?=kHk+9IPc&6y&$=R-6Xp2)GsVjO+r;=+j7!9d1Y;oi7`50RGpEU+_}3n>TuRl z6cC&v##sn`ft5UL6|Ux5AJupx)BGHXYlVwnK2Ske0 zVHS1k&WUPnm`CbQs=9C~OWO{TydfOPWZ|00Wbut+O+f7)!zNI)X`s<{OK9}razzP| zE8$?1=$o@|^r{-RPn9V4V_K{YOnbR7o{$-`&wySHGFf$69G8P(Pz;mdyCGoyLd?4( z{E*Me`EsOjQb4l24U27y~704G~n z#UK&abk#xh8jX^|w&-ZN+P^MylEl0|dXoaPv0^w)&=?Gt^p`hox8D_ zVH#bZ+cWpHdbC2v)fYzdJI@s0C6DDdB#-U1Py)W&*(nY$_t|GX-cvhR&i{NU9UTi` zNc?=u!1}NpbLuBe6GQQ2K5B)KY;$%5wpm>u-J~^J+91;}N*kX6a&$AsA~Yj}3`J=M z-&(4shFMd6tT2Q{FxW9|E?wj%xW#~m7XMal#w)S2c%G}V$T2vHR~^o4 zakhYE%a101{CBOyAGI7 zv7zH|mnGWv`VHPz;$DSiE@ zI)Ka*rQFn|pc}7WVNCeV-98@N+}}xks_kxSA1+!DeL8MyK><2EdMICdznro8(d&X^ ztv05X<8##iPgs`tdqmCbn7RlRA0*MZM9`yhv>G zVsPq^<{F|!maQitU7S|99h@;STh%~CWVkc6&^MS4mRwU`$jdF20Z0{270*D6+FoR1 z=GvWT5R~Cv+HE#;6q{qOEH@zVFEx7O+KC*(DT_mO?*2V>1N|Xct9q$^lL8W5ln>kX zF=0=5ck6u1#rEgxH+(TKFTu)|LYU8L7YNQjq0HqRzMUY!D_Y)rya6qqoX1h0MSZG zj{3-pV~KzU)nVX*;L^o)L0NKg!MTYq0G6V&9XHo#DnjR!3H}@$JU~OSzZDFi439&B z(K{TZZ)$t8Y;dxs5)(%(^o3$K9TR5bYx9S`BT6S@R>d{c_#Y?4D#W zD+RS~reuN4J_T)#+Lb`09Sp(9?@hj7IF~mIiT-u&DlXD z!?l>CMEJd);~qdYeMh4?x>uAtU{p1Xif}aX0-yz3e^5yXefAG4PsFG2bcVlJcJ2AW*lx!@+-U48LXC2!T!R8F7dj; zyL}VN4Pl?RtJ^cTO^XDYq*D{gNkz3(C5~i?26(c@j3{zBd;m}tQ7=VO8laODH$tPZ zzh$hPfW&_Tmnxp3lX2w!*g?N~AyJr-M|Z=d zsWveGDwG^3gp1BOc+zOhqzIV{9UnZ$h0I$igV8pR%uB7oImyQXtjNhIkK^ho4x!g2 zN0_NAouJQ1|M56Cw3|ZjXeWe``=$__#iZjpHf*LB5mZ1--fQ(eBp`&c=Qjb(efV6U zj@1jw;$p8AVRK}as`~F*r25?Jl7|q663Si9r^qq*x>$MW8?Qc5v){>@8E%k<6w+fm z*k=q%PQzSl^mjO#t$QRf1I$%ziKZ6hiE%$39mwc7_+r_KwFNo6l7-kzexJ|li6=Oa z_(=f;`LJq#ILH~%MK{E|Fn%5eGvla(gUR_bP{NLz*-Fn$0~nMul*i#GQgI0X=n7pi zTAMs675%apI6#Y+E=#Q5MymXJcTww^u|3m|%1{t0uFh+DLF?+gvrCUX!k_m*oAWrUh5FY+w|A>|ABbDX!G;n zE}y3&%c+^+#V>aHcQMe0Slr7HHyqq1Y>Zt;K$`hNn7gNP**d=Ijn>%oLLE1uGHjDM zwqQG!mLdZ{#;-=h7wSp-D!;u^S+48O{j1Ou*HFUCg&{WCI5YJdzNtVUNC}5ga$TK{ zr7*bXj-JTXP6#LDG~@1?Z#HOgs9)@suLr z(*U_8ThqbUrAyI&MzrEkKqqNj3nVpo9f{`8EQJ8DICjmUr!6CvEA#-#S~v&WkrHqm zo9dYtH$tR0K;S7++!{j*o#6&zpL7?y-;V05%kTjzxCDknLxJOa(_T7WD5~zhjHoUw zSJL?ieWbpZG%7D`GvM?)p~!+asR)l@b&^v$lzN`tE|2zSRxvj6ca}E{Mb#;m=QG{s z!Fosca2*>8N{h;Q0|5;lT*z?*yG6c5R+LW&EyHmFv%k?AizC%Yb5KlplDkXc0oJ9J zE2CaI7ulkM`zoffBR5x8X`--SB|xUxRBVOTL@K%YmJ#Uz=f+B$GWNa(uqyXoRl(Bk z-+wuT3VW3&ieQu{4%;c1q^a|e_Q%+;r5Fa5Db`mop2ikqDFlbH{w|RuMQ?cf0s*)r zE{sU0@-Ft=;CkaubOagO(Ql~l;xquhUZF8Z+Gk8Ml!{Jd2IAtGQdDA(lW!|q617Ej z@oBRyzF(p*9T(MTfd8j2ERoKAUn;)Qs#-0{jLAgQ5Zqa0gM*!=mxG9BSFitHXpy1BcX$lmzyAo zm~0zJzEHWOGA1}nW6uXDN(2Rq#5Wz`raOS)O~db>vQN&^m1cvE$WqQ}rSPK{ND}D! zMzb1S!$)!$fv?3RG7wi(w3?Aif%!N*Qr`Iw!S_S;YD%{ zpba^>1{5a ztK(-mvdX;vDU)cQCHAtI+B}E>X%JKKsXS^!@6P+Mr!^2&-*8)C>8sY05v|^+x9$Hm zAfAEJK<;&^6UCkCH#O>EHv<1K|K%>ixKT|8sio_b2o42v;18o|^Ft9mmqI=N%H9Bg zhT#?VMSQ{Rryj(roVE**y9=sAESE<@T(L1&Htx=_8wdjvTK!sO0_dwEC!UzsM(_hI zhy%6b!Imbl48V<*yhxWUy7WT1?8lT%hlGv;;wt~cD4yR8frE56)gqcjC&rWHIK?B${0_)WIF4(}*q9ZSnC5Hts9tLuDP>#E zI9m~>Es)QLUaU)P7fdn_Dbn9KL0U{iTt(3RF~i0|2R8J*hj}JOT)k;Z%jORjb|n%Z zbwR#8Fij3YMI%m%7J{#mC1Y7%B5V&KLa8ug0jpv`zwa<40P z=uMP(vg#*;)uGxE0K{l_ATklmK2UhyaX%bpWIwDnaP(~bjz(iu*wGpzX#VD#@AwQqHZWr1Y=*SG}Mt&-;mNCCZ#UcC`1*4z*C4SUW?O}a~ij=C0 zRqdl0IHA7wJpud7>pj@voq0}CDg^HbRekixS90#ONT;)tH?j&+6S|N@GD$Yw41~ySxYAWYE5A7Qso8TblpV=dBr;SbCVv0AN0VM zuxc`XC6dI7aOKIvxZ!j%EP+|S4dQA1f&8+Agbcp0w*NoEUt%r6nET$gUr`51T_Z>c zMIyVw90~4(X42w?&5S~kgLilnx@nNKTqKmkMv{3N?RB8IzgS10);xFv|IPhkIF|4G z`G~1KPn{_^iYUlt?0lqT+{LpEt=8bT08#o@4__1HsBD4hOj?-=!VWa|_}f9U2=X-GK&8wu$Xw9VuS%U_!L8DWsM z^6rX*AEQXQqAtilqeeNR?}StcXvDvQ=wb$Yf7I~S6FadD6KJV%B7~^5GKF|IKD?_E zD^Y3?k@Vn74Zz|`=GBfB=oCJZa@#!beWRou(R^%8z^fZp=ciWlu%JY#oIzWU-+@V? zH4uW^bWNHxaX4lXP75|#M@j$MTmYp&8VyV2xz}1Y7?sx#L-gm4I(kOL70*n~!r5J! zk^i|h{p5wJux~_M2G({NH8m6?Jc-XBier)Q!!x*px5qSt=PXXR5=)%UWxoW^5fuM0 z%KP2<4Rv-?Ngxe%^zyTzz+ct2&Axm;4T72b@cF9B%(j(q5v&o&s(u`uTutNxBtLxfQXHmB14zCcCEd z@KX*BpIN45m_*f0E9Fhokg%{-8mRRq{JZQ&=%#E$uHx$R*P6|DUI``~+Hn-JO_;$7 zhxHIu<0F-qV z%uJQGf6FNh3hWCBOGZlwm%}l^(2OuIpCOo=#S7B3;N(u)P7N5SQP_|{rdj2~8H}aa z$7+N9JuDa9|A3Ie%DfKC8x8I5vmHJ#R%I&LtE5j(Vq zh$yZ!5_5z$KUQP<8j7Sw9(8OB%B#`al#oqgWh3y!gQJaQ+CmIJPloS)M9HCy^j0S& z^xrN~!`(?~VF|y^B3o?$hw~aUKgDPiT|=4IV40}qj=jQvWHkoolzf^j{LkdtdD18iLqf-Xi=<#w z9D-L^?Uljj<3R2WC?3&iAFZQlzcSjx`G0x4c>Lk}yAt%w3gwygS3BFkS~SFKmnzg)i!EZMG*fD(8Qh0Uo4wxrcjZg|5`i4f~*WF77m*MC(!ZJ)SWZod-V)J zVHD5khm_Td1`OFQ8BB@XO7SdTOsAxXFSlP!;9-G;VqpmrIjrBa0ZGptMyz;NXbTEr=3%AI&$|PwtBbHXYa0()l-vFy>5qL2` z_0Bx9VWs5+gpy+TC1~t8*p^PlW zFtI33Z6%&queh3P$`|=Cy%fP z|85kG3PBra*mEK(!Dk%-wxW4#A}q0&mD=Pd7iJ1 zoae8xA}#0JPB1+mGq_bMARBxMO}K$S7efxXv{$zdI(9;=PmrhBx0nk46Cs<T$;k)z+TeGx2 zv6mH1IEA*K)eDQREa}#y&e#tK!-9EF>K5$3Tewm zs(r&bqqDiwW>qX>`Oh^`cLZ(FNsZn8@|67k^J2nTZT(dF6v#A`jug}0r*b;+;8G^sS?3SoYqjqoxzHGiXiDoaVE!Elxdw_!2SIT z2xx5?_LjRoR&Sk$r0Yer;dP1HNC^YAR&Owy?(QF9triH(9Yq`0ZGguL<>X?zM70_n zaqkSk^q3qAFr&9ty0P$40}p#OQ;B^w%Wx2piSPdlEn2WLyV6$AkAgfJoZSy^NqvXA zv~P@hOYH7m98Ls{jH}IsQNy<@p7jDNxspt#@Ty{dtQ#pm1W<(wk4!}AYPW;BTWfv# z6Js+C?YbaUgaGg7{c>IqiF`1MRsjyr9&{WpWnqlMHBf8uX+J9Q@wP^F6Y^Q+KPvz8 zMwKY_4LHU%lqGQ>wIJCY_RNOm2Saq4qxj2!NAw&A?ec5o*jtGeg1AabHAx`83%puyR zIZXAcq~0^dqCHq;#u#c@>&ss%+1dLQ&%|N&5)G6lLM7;NkZibs#UAZmdrpGmex!qvyKDJ5q?GvSK9kULS?v$UQ0b%D03vGZkYhy-9~#f4eJELV6$?>b z>y^ZVWj@ia$H;cKZ7PWuQPElm1bE4R4gauIXiO${9(+A8u@#Uwn-CC^6GYOJKghI= zDOFXq-9_h1DebKehYzo%hWvt%=~?xM+!%DKNeKX4&?+e&FB z{%AvQl%=}_z;KN<3oBBY+0PvTbKBd_twjfm(uae#mxo#8+yTh2%62e*VxlG>joE>^ zIaX*nS^{({o1ny*Vb*4PmOGsatemTIszI{>_}yvpHq5Kyh9;k55BGQTbji`v9i{
    bvG~9N5CB61o}nyB=?s-TA;N|{v{gAn=4!O`ge>U3UE!KYRG!o7f(;ZO`6asZrp)IW229oqphj z+?V%)ceJ0}I{SxfCQMuw^$e|X8|&n>?6w>Q{tx$TB|(`##&myhYZ>dM#FT=5ys zD^(*_+k<?*IRAfU!#OJ(&i^0TaOA&P7(&WMk^dA%?1pRF!$u3x z0WJ(+74B9Bpc9z&hfmWI@$-V|i?^yP@ zM!peYtXWpb{{%WHfg@kofPxC*Uu(vii=oIjH8^uYW@|3MDs63Fe~HI#7mDX_^~MFp z7~e~hQ0FjngqH-y({0vq>XyD1 zE24+_h#qQYHSc31qKDbA2ZTM19=Oo6%G2VZJ>MB6bY&D$*t7Bxwy?R{%|K6^WjnS! zdfFH>gJz(oEsvhItQ$x61L$dFrl)BrMk|aKdW|nHN#ZzxbD**9TEU4Fl#I|B2M3_m zVa97C5VbRUwjIpEBa3sV-~3(f>s3e2ZCm$t7u$1Y--o#~58noq&*%2@23W*DAYhUCc#~Ms%&)b36|9Kwu z1WWG7*j$S8jQP38t(_od_Etbku=%ZQ5kAc9Is`GR3WbD%#BN&0b!ZY<+9*~OSOD3o z4`0{-wVnHQUPRDIka<#lr-Xd%fTjj&@30VrujWT4QBtWxKT?Dd3 z^3G$&k|sIyZks5E1=b}9EQO2@vMvZ&5uNI@u#FPLB?4Fi1yWopPc;glMQ9b!YXH&; zOqZt?KyW*J5JHIeIKpfr3#-|MY%6=1J;AbUH@vxBTDaRtB{t)g|M=n4jPKg;7xns# z@7pkY_i*c;kt%czqyzU;DpJCK>=$)_H-Zc2x2?4VQ}&jlqeosamwZRWTa@AQb%+ARGZflFL)sG1 z`7BmtM;~G7q*|b#Y5@St{cobvC}u0GDW_{Q6;#4ep(lJPY9zv{k-o{)xsJ*DxxP8n zY{wjZwoki9xJQK!A16=8@^beT>=p90 zZk2WaKf=BQK8h;cw@%fmeXm}sx1>8sceV}$k`5slO`);~vTKhZQCv`2RDuXN;t1n{ z+bH8aug(fCmvPh?mV{+M$GjQFd5-#E#^qj_QJ4`G7q0x~GF(NH+;dJ@m<=e)}W&ukKuVC}19Aj{GmkF-xh=0{XDU01>(%fj2o z#ZX?|*~?O~48Bz?6W==XB7&HqSj^3a>@c8WtRPfIV&O<6W+|dr8L^OPnToDw3^QyP zrX?yuEW+xhfs8TwNGuaGbX^pY8lcY zNQ=jJg9o>{$wPM{K5ZZo8yHB$2V&DFEWGfeQpVte;5b?EIMw`C)M-ITeE1DgOH2c{ z4;?!9`BLzJ)LchuZUz>GCE;NccM0Us&l-dHIavuF=&qH2(5pDCgPBYKDc3CTrb=*U zz$ZGYVj)|AE*YRBg4fxKp>ubwgxs|fvd~Sa71RLS;R?Xd25?VpSfvMra+5a8m6neGQ?;B;gkt`K;#nz%(^y0SW*kIi zy1{A)jRoz@SYfO-?#wt&-yRo1G|z3>740qHTg zTi9j20$&yW4gS0EuJ(@gF+3_9)jqPCI6~8+m?%z<;-f6!BQls@_F}x~8hYFjUhDg=BQuXjNvE zkR$`nphKb*3S}q}xoDB0RW+k9VMSq(dtn%w4ymf5P(pJAM9@mhD2_rSJ9g!+jI=@O zml$a`*uCRQ&y(zSB(BdfW*Ykq#z0SUqzn}gM}Av{JxPB03B3NgV;{zkbsy_S0$GCH z!`9$>cGz;mqtNI}*YOJL6!ryg+!eNOE^!YozFArmBy*Q>4I$nEaMm76c38NDHQ5nz zZy=tDOm+y>$qr1uxIKmIQvFUk)e%A&K7+nhEoyg$tf+miAR>u@NRn|~Vx)y$)9R3w zimGz~RZ-O`OIV_@q=anrSja|?VTnf4@KqXIwsS$xnTbhqmnz`OA??*GFkAr2e$HRD zBHccyd<>*HHKQ*8b#D#~(D~zokEE+cM+P_0r|I7e-gj%)%x{5v2Bw|* zm}%dOzZ7}_iN9pl3vU!81d;$XkOX)kQEBQy;Y!{R42#N2>=Y0MqT@qee0DkzpPdS1 zlI2)U_Zu+$C-5T2i5w$J3huqlNOD+`WRBrP1_K3A{3w&50Sd4H zr^p;YDF={u({V?XB(!8uoTu%kV~(hZvmI%zM59Hq!%<~f$xzJf8T2D$aqMs~A6eK3 z!5o<+NQ##f{oPBG=-5tG^A-#V&T%eu%ouQQKEkp7e4 zK;|&qB`uXvf>732!c9R^v9i{h^f?2seGaN-PB{Mxkox<;F8W4h+Tg@BYi`*9ww&%A z_yNuh8c=q-73(ILYYnlI=xH!>d(S&BA0bNti4$k|2v-tn6qCrKv!!R8VkI z$sy}F(AhPx&$EpA=OMa&06eR2Awa@D)n6G615m1WNUCssQi-Yfmq_g;4ZIa?g2@VRdrzl-AkP{l9SZ)>-S8-m8LXT-Dka5G^ ztDVzM^mH0WjMJrt-cGZFoL@p;*MqH|W_Z!V^0{QXob>L9bahn+h*e>8_5O}{2VG4r zQl8j9bU7%Av{9lMnPW*_%z1fnzJ+k_fidkkIR<=Hq=Eio=H%1=7bZ@>I+uC2k9q#u zDZl*XY5scLy)yK-!9^%_{)}R%2Cx673v&iiad^Ra!UE>=1tzyqcuEjoYzDn>8vbH% z(RaT~(bSZoqc8=}qw1-4rkcD)lcSqjSEIS zpx)c?qv($lzfdFf{#ZjD;oZa1=J<2?u|2gtry>MX^RAR`<#EGtDmFK3~ zu=}2YrL>)n<(nD{9k8S6A~?CJD9p`YCoIaZRMso6DqpEz<<0hj2B6WLE!Ztp;n2r#?&Q2`7yC$22k{tZ{gTSgZA{ zsum+Qb4O9rQjEQuey%s>CcGFEZ<3_*FO5AGPNjIN^tVtG>ZFzwBR5=STt$sHhIM{? z8L+jdy)vX+q&Q+ga#dLjKX@SN=Pvw^h1jNKai1}s>(An<1wNlh_$x+fkVHOk*2iSB zyXngvt1#{tkLm2k5Xd zPYQl|Ct6*{23-_7kCIcQHF=u{rxPx1XcaTo*@kVILC+m)M2e*BM#lG*XTr zHj|5yIs{=X;7Fa6(@0H%G(dBs$Cg`GF@K^~AA+^)|haX}DM5MbR2|Gb3SXRB!$hPwRvH7vsA4<$*H)-=$ym;#3CtLcU@G65T885_+8rK7PhvW+{q^E4FHX8; za@&%F*Mrsx_uYA0#n#wO2kyV`xtWG&SHGCDuikg_{FWOR-SAXx#a)+9eEy#4>!yb_ zHIdCpH;p)VZcnV|!KuzwQ%0^n{`EcQjs@@4r;Pe(&65{gKI7a~xMp@QTF1C!#-J)_ zi>%|@0jua)wvC;@vR&z|X*!**PPL}aPc2JtNOR*tozc$3#nFos-9oo|ncf|}BC%Ll zs@|aA6ul|YpMF<4XdjIKJ@mQ#dHjQl!|9=PJi|8Y&EZjOm+r6^>oeKw*n<`Sgr^L} zh-eTQuw)7aJ5nU2$#~4IT(*b>66Dgzn^RqkWe>=}kR5q}yjF(pM2$?=tQ_-tsnbb1m&!Cl(`B)0dK#TAKKG!@s*F51^ z;0=7Pd9v!?cr@G4mt!8RMCRBB*g` zF};Xc%-*UjQ`f4Sl^xZjB%}S20cXd%ppoPnW$ERsMbZPh;O_jzG_E2<6TvZWcTwR&3ExMuaO=k z3BLeOyfW{Thw+NHeE8AH!oCvJ@2X*7xL~=rsV-p`8#@>MbomL~t+3o5RY9iH=stq} zlL`+~*tsRjQ9KuDArE1}7|~dihFHY(%6w@WDlivFn2EgEd%u)JsM0&PRebTQgMsU!V*eUb3QMft7SWj zR+jgx(zrVVYu-7!13|~o>FbNF!N_S}!jU>StpCB3;uPn?A*h!p! zlln)=G?E89NzD=2%g!TSX#{_l4JGbaO>SebkwhsFgG`D>NwRAxWnOnJWml`!LFy(| zZNr!za65dE{ATRJeRsZn>*BZWTJSH;y#tvSZe97W&)&ZJ$$NkH(AQ6I1k3}o#?#uV ziL~|lAOH6&2VdWZee+c0n=6s6j3AAR5{Z8U} ztF}Eeii=iEG^KAaHW{>Gz+_6|sXg>_c&++gtluG*+CVnvu@JIjcmVeJ|C?&Mw`e;m z3Q0*lOZ90SRUBmFD@Je`v97VORRwAyjVDHOwFP{;3x}O)kdE&41LB>DCkdqE z7uE1Uj>kIFIndMTF|Bx`=VX>5=~Pg}MXg2NfF0!t{nP=B*FYnRbxd7qP{t^O4l#xV zL!Nn)lEl18yg&AQnz8*qq zxR!mBvcVN@hhW(^9tyb^YgaMk!1Cz0ZxC#6##u(G1f&@HQ9#fw+TB zP~1_G3G$GZdV;c4W1~bhd05Loymq6o*KYJFiL1!)1YySBJ#>l?^-)j9;xB?dR26j+ zNR$uAl&(33W>8j748^hhv2GWe!8FJnraM9zHcU?BIRRxghG-=zlhczR5Au!c)`2`S zAgU~Plb3A=@=Pm6p3@z z5`{*oE`5h%u&ILvP)jbCSC}$Ba%lyb-fUN7G_KIypZkA#vlPX%u@jyb;^5BrD(6vL5`|U z`wE%%6*BE9q+LvBU)J~Qhx8#Gru8m;28!`~v!Z*RYGhF-W<^h6wbQE!6<-Q}BA4$} zC!R@<=bKhkVds>eUbZYfUdM|O^iRY=5sPyYGl?GYn5~Yu1^gZq7@=qgEz&4MQK1w| zB6)Pim1@F!jLte23DpzZ5puIqH>^iC3Rw`OayFj5CwXR_%VLH7mfhBBk{*}ZAamPw zTjZ7tR@`x4Oam*o{^j^hfBN2w-`>3NFPnbz=?^#GvF6!detY$^mnCN9TCSbfzV$)S z`Q8%%JoLoc(~G~{zxsKm@lX9Pzy7;deuwSJdWvF>k`9em-TB%mTHg^H&$%6TNM@gd zZOjB_j|#~{5j$S61yeD@3=1ed#qwcUQijDdNQ)O6BVVi(2~ zwnmRf>1EMP(XG*;D2&o!Ux~uLqJ(|@3g_H$4g-C><9M5l3|cgYDM(ttJ>>Y5V-srz z{VCqSP{%1ZF{Ef>zG#w;PLE8Q84JePJ$ZkGw2 z>ynw@>qP0`KOXIV<|hMJ(oe3xea^#o4D3Z#>pr9qop|n-;%Uj9{FTnEu$LK{kT5>( zl?zS>0JE~p24v{VeMMUK^K@U}e1S(o=|u+u*;QF)12PPB3qbGcGQPn10*{2iCoNZ5 z$}$^}VF~7IFN$OEb)F$^5I2ci#eVUScwFQuF)c0=*NPjxhYpKFqLda zP`~#IjYZ}=fZ|vVN*teKDYy}Cf?HufJPf&hcpTCc%)kTa9)vE=Kwk<=ss@RwK?#2Z zNSr40ohJ0VxFAL)B&>FDx^Sk#EhqbyVYSK!w=C;k9xQ$h|4QzH63byCIw{>SAbnxJ#PiFH<<53#r3#ezO&vny-`%t0dauG9glmI^Jv5;nLLc zK6GobI`)* zoXcIt&lT^0x3NDIU*Y}?-{FpM07XE$zn}2`#eF42EJ&#?`CK* zrsC1H?w+|Wt-B+MO%)xYP*Kr|r=z!5;34U^wr9xAwknUjoy;!wP+rlQ8|vR)MF!lq zNAb=3+YK^Wjc&+2h1_hD{nGZb;@y=0qA-mg7_!ickZFNf}*>AA1XV}uxQ@_D-o?#&auX>g}+*M?W*(1yf?PFbr zg+iNqJ8HCh>u$2x@8nRdptEUqBYTL2Gtl8U%cR+5>{@n+h3J$>G~+r~{7S^hMo?6} zkplhHalBh%+0%Ym_OulNPwOhDn==Sr!r*tX4h{J|t)3C2ro-Vz5L-c9YVcSY$i1^{ zUN0rN7tgzFcl8m11~)q5YEc|t!`w{zY#yaT0b^zin^-H$WG9V`cvJz<5R0FaWkoABZ3WWJaK(+$18IVJPz%Cf%SpnG$$f`F~CHT`-xF^7w zCaZ-UJOYo1f3rW#uy3;`Gqf#aYQ$JFBQi`)Wr~a7$eagUO(Jec2XbITZc~oV*>*z9 zZ7_ie3Eo9!x=d1OBY0Ps(DafGh_ITNG(o)-f_jk}o9Penm9ekgpu0EbgB9hm8Lz0I z7Gt>$NsuJ(lq|hdlDtzA69ky}osuNFXh~Xs0B~#`0Fr28vbpk-$^UquMzxpn__TqKpVC`emue|!QJzI7T)X_g(dgZvso*8(Y-oASE z%pZM!;9WoK`3SA+DENqE=OLEiLiDr7ZsP;y2H$A)4s zBZReZ)IwPg;G(LeYKk^2_0a+=Un`|PsiKyRkxVB>vL2b_J2J_4c?GCVxdp=nWjh8@r@~ubVkZ!22vjA+2el4Ix~fuZWB7_(wCbAogit@upi{z z`A9N((1}MROL|c!}YRT9ea~K$k2}?J%iT4-OuZj;Kmeq+ASZ5tU;79J{1W zUR^h!OY5Jy^}Pj8&NQUH#wC+)`8lk8e9MGo(^~ErxP`v=rW?mU`uf0&$Vpu|bQIPh zZBeN>7{dCpGZOO#M~@Plf|>rEg;t}JC1vJ0i9ie#rC zZz2mB9){V31C@ht39~VZ;cSxNGfARud}&KMp411tlAB+OC4x7+?rsv`4Y(7b-_f$U z!YGtr@&=#b8NSqpfQw3pkfkKO?idnAvgRw9=IfT`6|BaiH9#pEMg<82Dn+V)REj7S z!FoO8MT|E^w%MQ@^w!ua(v)A&DsN+`cqIyIbOOV|-tL7#O)`4&-6%Zm9hv^*{) zkOrSQ>>TlG_G%I0Fpn6jZL;ZB6l7?-+ZOVH0s3}#qZWel1|gXXpSl0{e*w|kKYQ@d z;IUtCUw`lR-h0+>r$eCb;gy4b8+hZh?}AF8zW&G3YRPM?fJ>Y!V+bX zaihH?*`Ikc{9f$6#G92z!bd6(XNEG-8kjfokv2HamY53YYh} zXiAeQEj~=4;sJ$z>pkifwWeF8KPDh#~XzC$nB|_|`+W&wFH~xq0R4=YPK9mTiNJ*q0udHS3|FC!QYs`oW9G4SdZ! z^Txi{-hSN`c=HtywD5dAc!n4n38=P2svCUGb^$4V9ZJ*+Qt0 z?5eylbYXH%XioB)&^5^gm1`^C;@-AC;yzJ6jTsGewUUo?&~3^^^h9MIy@-BS`Ah7B z=qK@ylBa1MKsB65$-KseQxK_&t+i6aw1pa0053zv6fRuqz|b9ifxcFUl>{=bB>JKg z$XG8y#yWwFbpjddB#Da9 z;bT0QcUX0@sqyhkUmE=4<~P6d`<|x;s$N)q%jPXBZ+&`j5iOiE9gGD0rop>5KYZ!} z=9h20@w-2~_0At~Tyqaa(XSxwFag&b>UJjfHh3FChhws zxb%q8ePTJL9>wRl!`}&xGG1M;5vHW><)Ayc3kQ`bmXvohV*;^cFphLfI6U(C_dIpp zqOQxYIPd)P&$%L832UG1nLO_2b(6XlEFX9apTn-9qs%sR4oAUCl8u+jVx?Rmj&ZJb zqW1NHB@o=2qjuOvRb@FFkZS^RbwI8P$eB_QxuyuK!`0)&DdL6MV)er6HR8kK-Pz5d z=bL`ZsG^;S*`ua5y<@XU`cj%UT7VRrFU%L`OY`OV%6xUPuvlCyEtVH6i`Bl`zB(Nb z)n*&UWamk9U z3t3;NcVRg1IasLig{&`B;68q_rBr5xw4yRL6lv(1_m}zf7ag^3doTxkh)l zJ|yh*FM4mWF+n~{Rb69YK}&xN-PN+Tg>J!R{wx)9vqQ3cGVWzSUKtDc6JlW({*W2Z zJVuL|tWF%IPW})*-n%`dzZ0V{czzt;l=yFLH`aIRMpV|Y;ig*Cu#AwwaMfxi zNs0A*60jrCp)!o_R%ta!s=7v1ga#=I>gz;_%flpHS_0f{MHM|T4jg+K{v8L zq-<~#L8vmr5FvTkFmGAr12PwoCCsf_i?Q*3CyRu&aXkFU4Kc4vC~9P6-KeIj zf%*;Mn@6lyjlwqt4DrGQal!(A8NZg_z(We951aU{d_RAH=LngW$EtOLtOFj;tds6Q z7pd_Ck7w%?(P^BR;9wJ%2E6>lO~Cj)^kOOo#%#Op4Db&HbjQ51+Y#)nkKxvT?5xe! zR^!zGDM@l06D7<#jEtF)TO4sIKoN(jNh0yx5=XX|YiVir5`moUHW%SG0kfU#1WG2e zX(MrQ=haJ_?!LQs$Bt0GzVgY9#(4{$qOW-f@Jk23_t3x(rZpw7pScV9nZvLaee7Ls zt0iOkHn9d{u*`I=dHaf|XBcvyY~D0$*2CxY z{iJX5jWgPAp&uRS{od$Fv*tW6P^9My zmx*z(oB5^gf3ap}U6IP3>r1fAueJ^uAf1mJx_*3c$@%z#X)Kk(+)GmIT^eXjx z=^*vC^f~o`^fh%tYC?aG6r-Y2Jyk2UOEV}(5?RNJ7FeXl1%D@d%n!ifU>B>qPDmOk z;_vXeAS_@6x<+S(JW8{yBIA*S_wwl6pzk;GZ{(@w5|Kc=#0x@Bl)|DYQ4CGz+yQG= zk|@cYmgaa#WGKKkD?q6h9LEvYinO>JBzHLMT9#&!jeMOMi1DmyYE>|MlQa zuy)|?>u!N<6W+3u&dre*PlTtdd4zH0L*g#tzl1HF{fO_!TC$RD-8W`pFC{ zHI+2j@CO{Z@_?flXbaNH1CDz68CKvKLirikEBGI8*eY^Ao0yAa_dB{$ zdWIF?y%5UJ;LFdD0(1hCE2Ggws77| zoTEE{#Ce#@TV!*4NO)kdWM&li2mO7T+f>l+G-Jth$bHFV0HvUO2yi;mR#hPz5-BF2 zp#)9IE33GE*uo)G&{0iaM+#Y?W^-u0=v0gUosd}|e ztJmwS=I~gm-C8BwD?GtGuKXN4OFt`bR(4Q3xjowdf$wndibvs5{bTC{cS=mjgl0pH!XZwQ z%~~mMUIJ%J^UbB^8uI~DG9`#?1-=~ag*lV`p*eq|*`-`Ej^KZ8=#2g+oiIaKA$V4l zBtcdb$uLb6K}_vsDGMb67dh8S|IOQ%$2V1_f1l^vtT)@uo-}EiG|kquO`Eh0fzpPp zEiKTZP-vk7(pFl)3T11HvI&(%sfY^b49uv5_&O?3pp%ocX--&-=QmsxG6iW?au~bd? z>`|!=DwSHM)o6mO%s?)uP!TCjhA>EVBAG_3RI7yI>4*ZYg#-oUOO;@w<)6buq_m<|SpFL*5mGf*LjQYGuXk2ImvQsRtGOzt(usd_?K2Wk zen#5=+kGfsy?v5|T;zeo(!704nol2d42{79$;Xd8apZFI=*zX&K0D4jMNUMIrzT3!o4$8a z7ehHZ0Za3!{`&jF$&qf_LIsHDA4fa?>O;+gU>)>k0jq-XF;LB)88}iViX1t8uxR|r zXZgM}M*bfT8)Ym~I zegqmc+CedDKp_!fxdcm8q$y~G09+Fa3avp%OJzHy(Sat@n#9hpwZ>{!u`tE6mO{C zi2H)o>8@ix=(HM(iW|m$pj#RN`+;S#R{4xAKMJDIz1W(^_zRPB193$5{T(u*KY1os7ZdFUrt4|&1HR5NKz<-Mm+ z4+6f!U~)-TQUUX!BqeHnYD;=dfMHOi$CR1o7(@Q){xMgK6Tq^JG01eq<9ku75Nh*Kk&-L1*od$8>!5>_?gVNMCQ`)?}Q#Z!nNUjbAUSDr))wSwdjh&J;s!nZ}q06{cwL`m0w@bg>u#bIG z@f+@pcEIo__K$|YsuJAa4cF`ro!+8Wk3bih^a{I8q?xR_Tf=CqBb7*Y%IZe2iJ}^f zk|WlI_`+6$UhmPd2C}1367%6vum**K)zg>86%u*_WasQSWPibq?ftmygoaQgZs^Ce z;)*g|T!$CvUeIA(KTJHSflM^T#?nIq&EigFzOqKi)GDtDkSG(6hctvjxUA3STu)31 zAz^~1z9iC5A@?oZ<NLr208E(ZQDMI`~Wy zf%Do|RKW`=J_HqPxc14(XpGH_#?(YjoG`|;DR|O)8i&$!9Vz)A<)a5}N3ArcMVwt` z)o55&pr+uXC&w6l$ywl00XQh-uM?MmM4KB7<8n$W&04Qm!7qRLQZO?k_+NeevI$xF z>+1^n+m3MlEZb5|y2zi{zk1X9HF)U{uRS}l{$|=r{6sUqM_P#*z7<*t{1k~luCCMd zqcf%@Kw|pmTm2H>*9WG;=Rpy0&EGUo3o{(JxDb*UMIAb9u#!F6tpxwF{;IVQR z%UIR}nD`$UXkt~oNE{?}XBUx1N@Fy+;7$eAEba$QAMr-Sk~4T7LP$yn7K9P)Ow}PZ zAaz{5P`y$8omwma24vAg>Q#un3*cDlN`AO-S|8x zyluiIXcuM)_eEJr;tSz@v{Wp{sRvW3JW^eXL?})Kz$>GD(MjsbC@sm}%cm$6DJhfb zxmMH*7$DSd_~e*I0GLRwzB*-#$z>+ncwUJE(lm`uUZ z6=KHGm3LNX0N;x8z;sd+j}{fXik~ODPN*VsZO6AB7o|-!&<7~36OMN!kwJ!La95@e z5%VZy2qNoL=1ZbFgajRz8ydcVJf-e&IiS@TTqpzVE-=f9XeZTpFT zwn>=a(rAkti$ftxJWx~=jmqLK7qZCY97<)n9!|X}gae^LI=DCr<)1=-n}^d{hqHt< z*YG1WWV74nO@bjO2O!BNzVcgWd*dv>e{hiB|Jpfd`|Uyg-KP#i&SQ^3&aaN}zvs_?pSdy`!xDZkf)SzvAG=hrM?GFuXo_OjgW}F#1otQ}Q<^}5E=9$Y>@Rs>oGYNQ|Te`EGriwm6}sivCzP{ zW7?;6127I5sOZS#{aAcV{DhRAt42>?CzH=CWEjS3{NOa?A;F0%xtzFsg|z!CSFQ{t z=OhVlnQ?+p5J@nnIuiwe|F{+*jZPuslt?c}5{wx-pHxUdUKR;O$R{KW_$F~uUD}9V zPcyJFZbl1V^WWnG{1s?^?ZVl?^}p}_2=BxvJ3A9qOenD$@4WgBemXG=pG;IC;A7X$ zGH%j38C0D@i9x80!3N?mBBmeijI$UhYz$aM7f!>|q$buRbd05}WcpAn1szG z%Tjy^J{G@;8Tkx>W7TuGUh8$KYlE(kxFGClNSMb1hbl*a~eW| zc$8cb<`h%Ck(7v3W_qHKPm_ma#O2aBi2(qlkQ9VaB#j$N4*E-rii@KWEmXI3mF^2I z!*W0;ze1y$%Q03f)aUas)iac|#7W7Drsgb2eZl~k(I6$x ziqvJaN&;ozw0X)WPn=+UIDPlFhwmMid+262Y{r*jvATC0fna`VXcE`nx@PvQ>M`C8CFs{5NgmGU8QplwL<5v3P9}U zGztaBiNyg@_fzRw33TOsb#t^F6!vGQZH2m>e^r;SvnDLrKt6m^0Sg zHfw2Zv`%kop4_;jogzmKfCrugsuL{FBaHuo0DprJ{_dz4LL43WAZ#Rh2cG10@GW?r zNnInh{ok(<+x~G-yy*Hhfd17rUtE6<;s>Do`ZcnD;~E+I+kkA;HQc{(4Tt_Rz$LHY zPz!1h%@fTa)cJ z<=^PZd+8SQP?-9x1rh#YBvSAx*@1`2MjgFbH(9{*;ZRYcl59PgpI?Zbsgrmq+4zcH z_CaBOVIJ9_nsn5sfJhL39<@P)SxQ258_GC|0!m51!2O0O5*As=QiMW79}huj=o2bp zM2Web+QMjY#K{QIP*Pz;KN5}>Lu6{rBm8-?fXJhU%tebb4ap^ZbF^t0Y$OYQvJ#lfQ!*;-(>GSe$_oj80 zhaz)I%ggVrfj{s&GHdGZICyKrhW6>RV7#u?6PR2&Gj4^>&Yu_cwy&R79vMR@_6{j| zh)~Q#+VhOK#;gs9?WDY*2-p!gNLk}*saV=8JtW1%%1RmQ8B$&iE%i~o28BMRZ!ORw zH)Mw=}{p?-Do9<~he8?ond=6aX_?#^2NbAC5s_&<=k2T9$H z$W1g^W!y+&I~*{X41ug{S-@^r2C|9FQZdQPb9!mTIpn0z;f5<78X}fGS>;dYQcGX` zWV}U%u4JW0xKmUZH6*#06mn+N-mc9cTQPP1uEPsvc6Hvg@Mvd&+wXTrLYZFsgJpqG zes+8hW_`*v%as#_N%8CoeuiX1mi`f<`uv;uPe#eG%S4nB6gSLQ=NuB(pP8Q-c zRuQ+Guu>IBx9S5#0y6}5%BAvy@@M531I_1R7L7-GB7v3hoTWNw(7{qAG$^4-2D8Z*H)AaB=p~Vm*_Gbm z)PTm|U{z@j)XyX*nnS2jz#t(7ZA^ZEB6k_o*quq|43%R2@QhER!GvS$j;|Y6)_J^R z?eVoGWu3=59@x|S@cn!47mcsJ@50?%-ny^4`o6ce+Z_%1pMCA^w_ZQ{wlHUr z6nDNTO0d|S?Ps!&f|B^wf)GIHLWGpX<dfuAq0UM2PvC)ZLGsh__7jK$mHU3GXmMrxBX9P^X3MYFMX+sWPY(L8i~| zPw&_vfpL;<2@Xhz_E9LZ&-vhh?1!%!kh$B{4fC9g$&OEJj$}NQL-(l6pG&BUuy0L)%f~$j9X(w2YQAMTImU zxztz6L{fy7su`(^`TFXDjJg9|?VG0GPy=bIRw(58g=6Wv?K!PY3; zT@2g9u)P2l=XB)Yx*Vv;f!0800ME^WHY0TCph*X_bx^K@?JC%=gcb&x&?+Ki&RB=n z<#gtGz2XjwMN^vBK`ejAT^gv-Q1CKF6DrGtyu2VPaXFmn8ZMuMbS|CK2OWh($d2nB ztU5)mWb@EQhUn-Rp&FrFqtNsT(a4(ms#G&Hjwaji2OP|>Q2K;vZKXI#Nr^N%YI}sN z5-I+3yrsfZz4b)vqF;7SQ=CZaT^C`h@)wqQOJ`z!z5-N!ilM!)0rjU>T z|4bi5`0?%7SGLeTwW%tCZ*IDneVm~*A!%;PCXJHAuj>S`1sFF9x+vH5S z6s9oH0ARC;J9IjQ!)mc8?8t0Zb|?^bSj-Bg(X3ROjf}=VfX|>bCi}R?AxrU5Z~+BA zhKZUZhE@nR1SSgB_Bzj!FQOoKW|nVwD&mL*hG0+cN#OWDe|D0;Y<%AI(Cs^(dS=Jd zw>;I0FDCloyZJo-!3X?>x6Y||Zh!0H1IO+);Qx7sQ2JJ)^8(_Rh!^cf`{K71x+lBu zb~9c#^kl-COz3gKR4Zf|L2NV{ajPDBI9S8MDh=#X!B|z53Qv*4ENPPzH!*NC17iTR zgakxK+6Xl~E@bYY$@8>2hlBX`7K1}Awm4*};RYWWx)7!+GaMF_rl8<|Dy%}yY427N zXUQcX$+oeL z@E?&f?uH)Nb-IuHn*WynAkp*sz4xAZcK7|lcxD;Dfw@fh&Z4q-`n^(ECS5PZ)zW!V z>?ckKvFl2vLnM=lkd$(gCCZkeGDmqA32{j!MvF`gl>{+v9ioPxxqOj-IqkFrY@a3~ z%n9bew~0!ACj{|1z$BhwP#xidjc~z)GEp9SGQP4Y4`!2Zc5^mf>W2nDEX{(3ELfZg z%??;SC;SW zP^)t~GGriAniNQ6b_4?Mbca^#c8Et611sYU=f9*q#nS6Qr3yZh};xsR-MZ9jMm= z7K_BIC(@hQA<^lr4#Y4SMu$e7;gAoT_YsjDp-+VRm;Zz^k|d&!018HNJH0;YH0!kD z(ezkY)W5us2Yl{41o*#Pec}_#(}8nO9Od8K^5~)N^}l`+LUnDxzW)K3_*eK&zJp(P zqF?<-2!YIfX7~NCy!F7Y=g_rlXf}}^t@uSOp=e=be;iSvbHp#wzSL{;gK7^WBNSc$3SVQshPc#;pfBw4t z&7IG0o*cXTKMtP0nC+N(Z~KB>w~o`iXsCbSon1eFe^aqouCrZ3S*;s(PhEUhrQJL8 zuDSF6*VdVtjbpqs%6#LNKeDKyx4p({3vrDPEQz|SSKnl5e`@8}^7}6C;on&DP!c|hthdvIGO)LB7lg*ppV zSiq}Yqur)ucBr6R39T|{lR^;#J_d?0>~_FiM1445z5}K@fVk;KFLH8D>~sb)Of(Ue zhRt9xiyTfuWSiTeVQdbud_*+}%9?0vK`{_Z)tJ>x@R1gP~)b z;G%Qo)mYr_T=D2DD}RxAwsFBT-|xTw%R{q&cwSo7ePqd@PyAOmF{|}|IMeitwNv4p zwWrp{+g=Cv>Bm9+Qd{fG{5MZmY<#t+{I{o|>YFR$)}5eQ`&S5w=M(DK(U`bvjeMIN zZ26y-VWE?26& zekB$0L7~LNFCY=d$3tO`27Nyk?tfl>^GH41*N=;;f_0nctlrn)CRMW6uh?2Sef!G# zbeXTYbLaHi`|qxLksP19dSAW!pHwqrN_*|3Wz+o0>W)5vW`8GAdXsp7@S!-Ku~QCR zawrmkM&+bVfWm>CHd-sWTBal-J;H^goe^pS+Tk`w^M)6>Q*BiXx8yC@O}XHI>7?Ab zuxmHrLT{~j;OeP+23FGNFJYYjD1SdZCrS>@q$EsYoKAVK z9Lq&=hg8Ng4w`Z)F-Wr(gc=i<2DwXv1^L9Aq6BmmkphgvyFULsvFgh&#RJd$@XKeO z5#2)X`#6!dg*3k!+8VF@K?Yy4aEiT1+6{|jQkj!Z5N2hvD{_#^ee$*P9{DM`ST5H= zCWL`u5ee2XI1y_gH$X}$c8cT@ER});GYFErCKQQrq)>@L;tTc!IrLHwO{xkjA{NpB zBXl>|BfE1Dgy!dR0p+%MF#18_hx#l?%K~{8RJx%v1KKhmmH|5*(B^<8 zHkfOHDJC!*D~z~B1FgiEieMW8hsm67PWRf7#csC;T^6s|toI@p=W@Cjm#ZL1bFFKn z8B#3uI+RSh-C?s55w(~QCORe(`DBnwgu|Z<3So3Ajt(ca`JFw3gJ2or=$ekf{mYL> z$POu}o-88xBH}el!42Uk6ER=c_EfWrRy_FpFZe|N;w1xsA89%D$enXTt8N4HpAz47 zHGlu7{Szwjv~4HamYwdIHudiQXzj|^K>g?maK5&*pmE!g*H`xOmzww&A-4e1pR4|G z=k81UW>oF_$OR2dd-{GzX>UKu1 z2MR9IYN+#(v~ZEIIZ_mXk&rG~b>`D2MFo47G(WL+!i3dNG(X=Y>f(qXx z{Z1>=>XA%rmn#)S#)iU_ZYvTO!nDg*NI4ocr^uy^z<9AC;MVy~7XKvsg65F44|08D z+*&bnNG2<&TU#L#`iW-nvqXJ_w^?WmS{yHnMk}H?T2N7d$K+P#;(A4^0=Hn8jlpI& zc(Ssyby-UczzC(H-!dTp6nHvFc$#=~M8A97qxfl} z3{7guk&=6EnlrFA6|0XgAws#v|d>`!`0%il(kl82WKpcPgqjr&#P%` zzo+JbcQz5jHgjg}_8*pbqi(I_kW7+Ks{CJ(=7$!~d!)TAy7bYOriYrtl-_DWhB9$3 z(X5$qPQl7NVi8v0phPT_2ogGYo~qRIgCzJ)2Hr(#rizhw^W1R4MR zPWlcre-rZsiMWDjT0D1KCbVg~G`L;^Ivw%^0`^=*7RzRkK-_7^_H2hl!DiVFW>#ev zYp7pB-SM))Q4z~LPn;UIUx~jYDADlODQpckWcy;34xtnGM3L1N6W9xA5 zVLFjP2k~+{;?rgqfFKj~K4@@3s}Y*CaGMfVE4C_dlLFRCdL&qq*X7vZ!1crx>p)1| z(VGQXS%rBWP7;d*91`N)W;paDP(x*@&|{=~k*G!5IX2q)0^0FaTpYQfzcCtRZj_D{ zJ6d)%#`Jmnn-)HLd&z{ZUoT&M>aK~!E03<9Kee=VdQQ%a*71{WuL(gR}Ha#p+L$_+D3NKT^JtPiAX&t@!ke|;L-{yqbPVhRxNl4-C zaB{!}9TYIn?9TZ)7mR5*ApuIzwDyRpwI-tE5E;r+1+z`<-d5n*El~P8u;{2UF zx9Sym<-&|R)CNu|5s4Klz4~@2=LbY9603+2E(&I+*@L-7Uj8H6OS6yEKS=6tKrWPr z=Ed_-9+zbkXZf8rKz`1TZGM|yk#EfNAca$b704L8BNuve59Q+A+)P(c+0SGj&kQQq z;ee`f1sx-5Bwn6Q=*?{upttBGqg3~-i_Y4jTb_{~S~vMAwdrD_$`gMcDx5#X=bKm`xeU7LE#s}WiOXkRLwF%Krm8M)&YiVh(Tbj4cjd%bo;s`a z|FHKZ;7wI&!}r{K(`-%Gw526&Z`!5{4Q<-em93#IZJ-?Bl}hzeuTECs5Ppf)j@ zB}PpQYJs&qB`S(a*_1Mz@<3MMXk?2{HZkJVWdHmvC}gjWYrW=v>$*eNRW{xB#xl!xSM9hbDnFXL zeje;dSJ$n+mqX6h8>|IQJKkTn;q6;$bgj!~tB;lR-eLAUV4rl|akLcu#sy+?m&Pm))^-K?asKrX(3CkyACLX%dN? zWlQBKM~*0Y7}yXamm@`xR6`*S!a{MTREk8IG&UnyCi0unX`c;YQRabYVFiT!BYE@; z|FOyE`WXjo1J<1%qz|);hrO>3d+!slGcN#kDeTu^5yL+?&dO<#27h*&7Sow58-z0P z8T)U8d>&XpmWKmR{A30}0Y=HZaQ;R*{`|>(OeS;K`|_|?0&sb2+6&gC25T}5#Uf2C zS~m`*Mh->N*M=dh0yQX5k*rEa8(1`%Mg0gRCPv4Hq=bg5HB>woUm8Cg&&EefJT_L~yERadinKlgsI?!)0$ zELa<8g74k&8l~Hw0M7)a%kG(I~R7{?I^bH z^GT3xCHm8qM#wc%nieS}j7B8Mq-jw#XfBMfe0czUQq}5OF1h!`UNg&<_yw~xph)3cV) zb7g6X7^h!fEw1`)a+^*P_^ z2f~X-lup8Q{9UgQlaI@eD26Rr$N~1iI?=c=A!bLg2SH+A*v_s!?d{mTcP~BhFWzW+ z{B7Q4;9Os$CwUVD`@{24L}iqQ^VmgVRxo#l5Fyw(W)y) zMA-l*in_aW-c}_VRH9ZTGANNUB0|G5N|uRW*U7iY=_PX1DM!t6Q~{zK63l*_qCQ3uoF+pMt{_Hv}Wt8{}XC}a^ge1bMly`u?z94ZY{@@<` z3-fPe=KG7|{AE5Ih8-!njY827&KKav{zcilgS@-0^X_JMqaYNa9512e2{9=4G;XbOb#)=fHEK?!OtLq#wB8<1U6)HO_&r(r3%`o z-HkNrp_kD#Eyh>HrNOHu$RhE8r{m2ucm90x;$sV@)VeT!LG_VONYBIfXl&y%=bvC7 z`5irr-NVd1w-dCnlbK6m;jh_aFzX|!G-^@l^r2KV#Gwr;v_2Y@M9hkyX9uH_U^GL5 z3M8mdjLK=0Pa{zZ6&n`I#WJz6uvtmOm+LB-JVEs{m+Sm$amfukM7;s=F1>B}ku41k zw;f%+=Gf-?#;r%MZry0grwh#+8k?@~D9$%u&#rFTetga9I-go>qRl%_3>x;BcwGJHcg9h5>vhCz%I88SXNR6~Vu zA#_M+rd+O&#rl_yQEr-W5UKVN4sIZlT<7r%$bo@fj!C&aJ3Zdd_w75kVMAI~m;Nlf zcp~gKX0Nf7c$?{2^LvVCWrh<;-^ZQ>Nsotk`&8++p**xU7p>1i>(fzwTtysR7+V=j zPmY=$MbB2EVkIhPP$7e65`n8Jj>Biask&gf+!~5nK;$e0<)V~M*od^^17h+Eg-mK{ zfi5L62E`1epaE!7sWYn*S`+95PNj;FX9fpf8;We9gQ4{NP&7Lfm4u=U05w5^k;1@fWY8jYRvA zxrO+a1%H0#679FtbUIi)iLEdPCa50 z@mZm3BZ`t7Z(PPMUIDv^fn85)=|p8T{+_KA{IEV1o`OI4#HkpSN|rQEqT!uwlu|h^ zQ!JKpnR2o~NXY_0Rx&;;@|j64_Ikw;LIj(|BonV82p}pt2C4b$BsKfWC&x5Xr_ai{ zXCJMy4EIg>^+U^g&M!cd*Kb<3-unnDEU3&3_lB{HIm1Bfs=K4voNcJK*-}S7DKraa zYb@B%Wa{Zs&yr%)UxcpA-jGcXPFO#IUaCRsQ_yM-Svl0mp`k=H7>Aa|qK+`s6o#&& zkwOxYk~TSoqU>69g%)Y4w6L^IX-ryL&eZr6l}eIA<#0K4&Sd-v6WBv27)3#nii!`5 zr{m+bN!l1jRe;08Bvp(rJmmGxKa|Wr*Wka@Ddz3wboiw=k|@<5CB_6k-GDD1_~0xp zi}8n)%yjAc6-5hYrm1FLxp2X7KkRRJT2?&2x}4p^7R_BUqqJ*Q`uMsV-5od2%be18 zm)Y{b(wQuiXtqaXOxCD#(^Ddqy4wEMSy#2?7Flm-4xT=LT0)$zEF-N%mk|>+rOrIH z+zorj))hwKS9h7u$j&LgR4PUqSYz4DAiR##cpb;Pz(eO>C*c%+MnTPd=3TbeyPSE3 zIeadgIXsME+yq*x1sI9c+|q)!I9nXu64e<+UnfJbmEzCZ*NITS2(4w&5*8(D1R1Nt z1do&uh8NUvDlw6B-etWhQiiY~HkLmnVTDr?wpOa1*1f~IY-dkVEc28oQZs$tjLyMn z;ZLIv^W9GKY;CU5=IqX-Z$96b**IID9hWor>S}ruP%VMEu?VORh4^oB3qsAXGmtBS zScVRwSq=Uu1I;kBB9uZ31g;Y)DO8Uq4qAV{0*l4uYyf{Jdmikl_?4DjJM|TmFA0`OM6^U1iptr=f4dPDua}~d)M{mN zc`8$aC7wW0L6d=Y4Js&oEG-O$g(!lv3n@T`^6-Bym344NyPuRB7FgrRc|cx_F4W^IrDLz zJWe>AX`BpkGm{mel@_kzmjztW0n_d8Xi78@D!a^Z_h;G2mpL~rKfe&t3-TIW=`d|d zGyB_t+4k{(=OlM#a3@K|`CJlzc?_CWoQd)Cy~J|YCW&w?06yOA`?3=Gk-6!3F1oSO z`1^dJ?R7hcy&%YRmBT`X5DE$mmTA8+`(@vVP$dwp8>x#2)OzaM$__lW>-mDThqaIw zD4U@T5b<*Ily^bFx&LidRs{uOrQO%>$?(R$G6$IX@A1-;P@&E zp&t22?*ZZNC$8XV-S5FOx`SAj5H8a@uh2JD=7=w!_%uMsE0DJQ9A$l}^%EM8>rPkA zzl4pBBMEPKt%;tK)_2<|YdAUDt6}c+PC=V%yiliGvuV?D48W1OQFp^_-7OZ03R-pnykOj|{2`1LBOgJg-`yww zha+oD;2olHx@=JVinW=fBcvmB^Q1EP04h- ziO`V~OUe`14iV&{po;{?+;e-i;Mc)K<-SJM94;J&=PbCi+H;wP8@QLdOg5+0cB^Hx ztZt-0lrO}nL{&~w?P%y)uh?#ZJ970BpcWU;S{yeih<+&5ssvVV&-GF2+EBVAqms#` zT<4+P)%x4kxw~qsWvHiP^v}i>isfZ}auxGSVOEju2+U@dQW&TuojII?EdqAMY>NM! zmld5sEdU03p1N`E){>h`e_e|XsNTH_Q@5m$6Bf9=$`k058XP4_1U?pv146G>ICNDL zp#?Ct32J0-GOxaPY6o%KWrPO#Uqy<`Keh_Mh{MB)en!Imy(Nwg-u@+xK&S$SuXUIY zHjZDEXk&*AQp$2Hx1J-_RnoedgU6|rCbzxA)y&$Xe&^VU71 zlm^A-j7%*1EN#_TmEVe!)M^?qv}&n7yaHTeIBG;2{m;u}kL8dwD9gd5)d<$0T^*mO zdIhf?RKzNTHGvCb?4%{+<5qbQ0pu@IX4A6RVZ_s#eMQV?1mqU@lGiP5!!+k~N&Qj+%#Rr*t$%s*>Im zwGQ+{>fT^&KCQ5hM170I^9KD0_>58&a`c2nWsJQtypt`Y|VAw0|hptIx zT`p&fQ9pgWS&&)KaktkL^9_Mm>g&-|2iqLeUFks>fuz1E&0A2xs}9Lrcz)F_eUgQp z%0!bs&7TT$LjSZH_FuriS2kk9kR$TFmTm|C?EaWPGUsKHGErN&l+P`iT5`VhN=(^K zHDYaBa`(8&PQaq|GC{9fpG%l7upF^YT~?V=nVFwu?HF60Uzz7)b3K2v>uBzF>?2lf z<*PJVU%0^#X!d%4f#0WBYul^|Sc8|P57AQUC~}yxnX#C;SUGa^XeoV@-T!q1Ax1s+ zpaGz1OW2twIU&c}!~0mnnmIat)nBNz#7^z2f60u}enpnCUVb-tncqKCv5&mSnADop znp>M*n_Amw+uxwP!*rA48P6zntN2HOzo}=YP=rurXJ%hAsXu~e+3XJCrisRd#bI7I zO@46=iZU*;ea8Ma0dH5z9g-CD1Rs+0nS^+@`!+EW zHF3kZd((>W#EmlSO*o zn#Z3O!5QX-&7QLp1H>ZyTr+tQ_)!xg!o%#oEXk1Vl;;J-A48_8O@F-}hDCdNw#{2d zWKr|<@I;Kb^jYEI4?q-Y7Jze|jy)J02mnp`({_Gm&`WWHal-qEy3<^(F+fwX5KJdT z=IZK^KbqVSVgL2Kmmt7``lIRX745U8#RPGbnRoR^ha(-amwx^Gh2BZxa#wJ|Fo+a^ zUk7>+{GxunGmCE-xS6>^Jk85ZhgEjAmY+$i5tSYs6)QVS*sKqHxxf zBrWdE8glI|3Z0857fc&|P6sQIe#B_M0Fk0L6n=-cN1IK0tQtlFZ^4knVNH~$hwpox zK?WC02Jd$kzIht{DmX(_pEXhT!vJmk=|IssR8IHjRy8(!T?lK+3Q050S8kKHJ(QJ3 zB~Fh#3m>2ng*hZw*G=?5>D^9K61cWLxR8tyqa7W24VaH2PO_pSqnkU^o8Hn6&@o0b z=p8H9;_iCV1^Zoo32Gc7)1x`~?B#UK_$6_tGw4mBnGAaI)4u;fpWx+_dv54xhJYU5 zV^w%+1-KTh0U#&WN-Dh7n$^^X%Hx86Ax{B_* zHn-pAR}mdrGu&15NzDti)aXUZUJm9NGnLm;pnZ4B9U_Pu&h!@Wc)Zql6!F#V}>HPkCW1D3c z%7mDjM%IBVyN{|&>CICM>KULNwB*~rW{|M>#{9T{XQJ`^l8@ckeWM9g!JKR9Dg*!* zifH@D!uKczi-5xOH7El^QyZl2=O9Y7I@Co{~~G zw|#$yZ-a`7h+sp4l_-}#lhHLU^$|{6_3ZOTqK=(3U$%T=rW;$80<_Qg1d-<+qUO|x zJp5(3wXzbVX?d>E_hLwuKljx@e!K{c@X2X}eA^=0pcLlADZ<)96zRGsha$LVmS~oU zAYK0jb&3WQ0=C#~F|0%*!4GxsfB_Y`atKjKese;ea0o}lS(P5QfJx*?3cnOGiXC^- zD_`z*b!$VF_aem5un@$LAh0moLYk67jRD6IYZlsJ*bZ5Cyb#x8|E zMv5SJ#8>5KLt~OkZrc7&Cb@{fB${YYE4ItZ&Dr;AKwQeRV9 z0F;u3DpHh`ozb0qQe7~1VBQAK6$lu21l4eHSsIO>p5oYV0db)!M|KphG_n(zQcgXz zG~dRkP9Hk>Cqs?79w$*12 z_|c3zU0g7Q41%dxHN^hS!P(Rtfs_@II*65i#tN-!&g8^#M%Iu}%I2cUS~J$mk^~cJ zMOWBJu@LEF_waDHWZ9_|G_y6dy`1)@S!o(|0?o^#meZJW!_HANVs@=om)5s`4o+## z5!=&!*JLqi7D%V!%+}PzTUxrXfAy*HUVunCbCi4XQ;yRUBOa#T*ACR=m!Ts&4%#=P z$b_Ey&-!)FVaQ+%tdo#wkaDb_#4M3&+BSRXXYlTvLqCa z9QWJym|+We2fgS@lL5pUz`jP-VVukwf|q?g@a{Qh{vjec(HjaUg|KMznacU>;nt^E zy(~$3wQ$7j0*6*Ui8n$Zn@a`e6U3AK(y}GLUBY)C#L^zq1}+dROwPRR85!H;vHj!N zQlbAXU1VV;3D?T;AolOO#pklGsgxr}$D{rE7Kcr846g`s^gwtvG6cV-SE;sD1TLc6 zqJEwTJ)jep4>=9?37{0uhydl`uqjNK!;F<0?M{uuO7E?cEw~ddms5)@Dol99q4B4Y z?_E-hRE5kY)(EBnBzC}7S`D629yolTP%CI+{N0m|L4d4b1(peVC8*Ez`~osO=~3Le z#?N3H*ekzki|EV6ks?4*tyaaidG~9{bJcrnCZH62RGK;or(k`-qQNKqx)Df&aUll= zo-C9kNV{-SyU2Oj5)YGCNq}kV6b%cXweoVc>#!ryCE?v;@pIJ@5*hK!?+Qpttpp{{ zZg2_DX_y!?Aq0C4H?KfZZp3FTB*K1)PikqKj<= znH{sRn8KlE7X(+eE;DD1Q;oATeTJeaG;R7SsIRQ0NDR#r_PpHBT46<2SZTRqgkv^R zrzvdSR+W?OQ_5r;nDT5U2sw*oHd2y0j93@Hih!xA0Ua6%W<>PKvTTRpJ6K$H4j6c8 zF++l~fIMH1oTZ7yj4cylcpc`x)Tfezw|M_SSKggRG&OJyvtc;$C*DT zgrtNl_tSL3IcN$qp*03lc{s2LWFIW?G0c}gd2|VOn|aT9Lqj`` z`!@EA--|hSY!kXgJDPo={5dd%xW^Z}7E{?Ku(+W%n9pDH=i2CkD`y0gn1yeVV2LadF+^?Gf; zm4|Xe2I|60L@Le(FdwrXUw=ehW<+G}*DvCwf9G8uJ1FeZiCLdJnY1drXuKzNDL1?FX@sd9Zdi`T4td{21fpIwqofF>q|T&cjuuZ$Ni zCsQPYLZZd26i|jBNsN-OflD%i@SR3oS&Z0mv5e`c7L29D4WLp~L`gD-Vthj4+Z%er zoMz8~0cOzTt89+c;XL5LG>+F`?Qzu|R@%|{v2vm^!ix5;`f$J$VZFq{&?w6dxo2Y8p$Qb1??I2|ue4i%8K8$es0Y6cW#kOr*JUm89o6=` zD>?Uq`*a+sN*xv}!!f*i^A!AW57!&zmKRm5_MzhsrBm2&g4QA1=N&}Hz3iKfKhLc5 zoUE)~-Upt%wCjcy94~92E1z?WKF`d2+jti0lDufE2Aa&Q+m2PMQW>zIrV=!d4Q9YD zx9(p?Mpm`~$=*gmPVI@953Fbk777D_})E*9|J=Ihxpoy z*l(7*cI00GnTnR|Gi?Q2l2fEQugir`OpLzTI5e^GZ=||T#{|OYFUB92tC}SZSD@Ow zX_>KVt;k>`E#*wj?)l7=W=XEA691KT-lnJ6pnPU<#ocw~A`B9}8DU?V9TtniM z0|tq~&&`jY%UU^CH9b1!_H1lLQkRlZ%N4gPa>RtKw5@DBZT9ngyTt=y?LnA&j9fAp zZQq}cngT{LWOCH`Z0301)0bn@UXIvW?8h1fi8KmJr^fJE5mb?sVVu4iCGwOm1hI~s zo{pWLRBbI=Yz+^lBP#j4`QG_%(e(y$$*Z!;BLeI2H|~_0ts3VQSUzH>uUd^!S^eY|gi`TEfs3YP*TJa}U&{r)y2iVq_w4XV!DHRfL?6FU~l;f}#8 z7lz%qlPMR~#=L3|^h6u3mvwq$caQB`$%p4!BeBh$)$7{R3#n=r*^$?CbJvAZ+2f$R#na^cIp_5ehrWKE z$NnRx)Rp=kkGB1(>ILxrta?%+s~55A-0mKF_l-JaU3d(VR#nE{^0 zi~Y)NO)CC~=Gl|rer~LB#;aq&)>BeMzp7G4B;Vxh`ZnjvQ(R!Gz25uy3mg5T@^i>S zt)@m&3Q++mPVb^j5RY^1Aqe?hMzX zo1l*N3b!1S^_)cf)L(rO26NpZu{OgH##^OTF4WBn3#%(@y4tQIz%`syRFCxw60u!D zEwv~mwT0X-@G4@EjqM}P*=ir3NXMYa2MOJ~aVi)kDr0w|vuU81^5E|#Jfb6f8szcM z7aztd*B_sFZkAh+WZN8O(5(rUSRGLSP$NH}{^n_pclw#b z;kakCHk|4}ZG8(*9y(R7S)6(-D4ctkmMNsnw-RM(ld`sCc!#+3)jX(p<9z7&`u14j zt;cjN&tH=cKj-JGDK>5coj*^AB0CtCzk=T{R{gt7IYXPP#79lJUug%a3C&@K&^Zfq zYZ_k6M`^baTBY@A>Grz5jwAcQikaLm{WT4^+#E;Q4=U##d_J!GV(m9ZaXeVo5V$kisAvYCWjAbiy{Gg9wg+WC-py1<*o{VV zZ8RGnOsXOW##^)TRSneh9_}Rzsz#)~KZRZ$>yNxkkjuKue;n6b%|YjOJe@`C9mE*n zu(IdKoNKo4hV&r%v6Z*&EJi;RG~axf51;q*^bemO;76>w?*?8vSzl;IwOm;Tm?L*= zbT|$)C+^pmt$mzAhv2YTWj^ld>vTjr-d;i06I_HEO@ULUpR<`AXRv=WTesaq_F|oP zXCo}pc$v0&O2(0yh{9K);YeO>Wu~m#Oy+xa%-z{~l$~$aNM7*V@u*ylYxrgJ{m8mr zT}S-cJy5+yfW>BtE8yhrgj^`7-7>}2e1T|(&02Y#w>9VXq$nPI#?gJ2fv$qL-Q?!p zKcaQ8b~`Em1P*Dg{r9g4FWGVn=j~j@iy>)6@>Y+Ud%3Mu(|jh|b4i5QQ|t9Bi{V#} zTf8+tQN4)vm)CN(;6&4}i62x&FEea9&kQarmT&a?Wg#i08t8KfJ{?G-_nD^^UW}v2 zi#!OG?hq|_T~YZ`GQT$OAtcmok=lolET3)GYvbxxRkU0>FE`UZujT3Pg#=5|PoJxl2lp^7kI5c|?%xVie`$ep zuQ(4aHXPHjR98D1{UH~s1cUClc6%r(+I+#`cIWce1ii7kmr`S-^Q&uqY@uJ;#c^(I zW7Xl}qt-4%UY^U?5}Ho(g~vZuQrBZU*b&CSe4Ha_;0Mk-xK1b1D6 z%n=5=2w=5&fdXB9fVe&8x}#!s9*f-KU%hT(ZRfv3E<*`6!$az!Gua~F8Aoe%(3Hh+ zgTsw}s*UsI#|0JZ`PFGj+z-KPaMaLf3t2^{V^5k1M)Bv;JwWBI2RNm^6qY|7smZYQ zFm-Qd!XoqN16D0J@(o!}$S!YPZ(-Mg&x=pma!2!9@0H^o7)=B-zu%Y6MLE&h|VvjOubKaz7MUn)}9 zlwj9}?xcU`$hYs(MtoNhb|pWQH}2J^QW)ouYdq2_UFg}sQMn{(A^Tvm=7KWw8aE(*j2}%RlOK zYN8EJX0NsTFMSIGe>t{k#i*E=_^+y>xpRHUgJ5dcOStwe9QvXdZZ^cSts_|eQ~N;% zuq0$I{C+avyKnod*HGs9G+AczPqEB==(M%%=y{%AA>h0d2*bl~Yvk`CEnveUmcJUp z!dA(gtop%d_z`-qfpQ_wjKjLuEa+<2Z}K1 zoF!Sa(PlA}R@=Xg+uX#wsFLG(xim$k5pBM0@GFyctZxzY7tdO3i zSDe#Vlz(-4bOZ#b|B{@v{fxgFt@kaOxo^Evxv1P15)z%G z^!UWdzvipQH1}-ZE}wEX|Eu?*M_+f*M*`d%-pYpUy%QXE?S`Lq4_@*`#GrhY__A`G z&RwQZ(fz%BivGr+1f>C-aed?%o;u@cYqG=jGb{)dmGp7vCctv(j8uvFz-jlH3yH_H zy~WPmKt9g}8tTMzal?I0n{=A;^tvTuk8 zlm=$4t9@<`k78cVunh4ytgJfVcD4V#MJ(^R6wxSFKjA3UbWr3K4zF^MCNpdP2oOmSn+T7Saz}D$s61d z;CO*QLNOAktB4rExBC>_irmo4jCjQrPd8$Xv^puEeLB3*$2ujO zL9oBQIRjHT2j_NjY*&bPq4kPO`lcv|R>{NETv83g(Lmdwya%=L{Ar6a^LoH(2l54D zWSt8~-&7b;-0X4>T4YPwZvIz@YHUo*^_@&8&&k)&frr6fm?SednUdeL#>x=$kmIe1+7JOde7*oH3RN4 znn?3WTg_rfn^f2_edy|{LQXoV!e#iv9fA>boT_2nRZHu3V&pPkAzBhr&!lyD6Gho# zVi_cT-lt@ud7U&f?$*_IwWHlU3@grAJ(xN2xig4S3jms$U+mL$kmL#3P1vd!R8fA0 zq8gBi4eGbWtWFnGjvhEBZYnyl_O}^L2g8?GTFO|a-y&xm^BjsSSRP^Z$cB2QT6XTJ z^RB@klU+CCh%1<*ZwYON`C!ma|w(+RfQ=Tuy=P;Rs(yH&8GjiT0$ zy2$jZ@jfiBxQfK8b^nO;s}%%p>tnc10xsWf;$!-|-Qn-BT&*9_5Aqy@4hl+0cuaLw z=g+>;hxC$O*z?yXx=NTjtvrtpD3EXv+!$`bF>=i@EFi3Elk%3b966nKtJFDsqgG7~ zv`@sMrnwWfzWzNTo=}%0FD}JMhB?@po`<^c8jV5NBdBq$QlGnate0qvqQcdO5>xu1n!f`Mqib;*1WW-aAdQ2cw%u$K z@T35NCmIT^A}_!9<&w8pH?k1~e@y5;HUc+vdLd_VnB2hO%mFFk<_#|c?|QQZVVx-E zYgm(?G9?dW2)+L04u`j^qOg+lU)J-ucUaT+LN`_Dp+$9)_uL2F;*!Xt(SJhL4d6bc z+{jTiOkr?JUO3kxlmfU^N!UCSCeOmEAw&XLV88NSZaGEY>b73Btk$$8h`_XP zSIou3bkNZ}73rv4cr;bGvUdnlv!gq!t=`nE^GU+?e)WK-eH9Sua100|p|fQA6fJ}@ z5Y?+oV)IFyCg_`tjgF_ohXAyrwA~U}=`=}LaHzdHoOczLeoFk;M?@bjs(r7YciX#odF1|Ns;juh^^qX>vVLBuIxz=bQpK^V<)QsO&Vpx_M}C9xdd3`qx61)2R04V z#vEW)WbLM#H&dy)F)U+xKc$?Wec0!_UGKe{Bj&T?5)Xx*l9rTL zx@I2S!gS|vNg5&A(jD}our_WCO7yyTwM;~R?$hm7FX?nu=WH$~O-mlsR*U>=a*X{u zmv;34!nr3#RzGqESQ1e9vdJmArfr&W%fkJdia{!Yo-FpuyYWyurvRK{8Rt?{kO2Nu>NnAf1_q%(I5me09pPz_@}TjG7|nR|I~p%LbgAY zf9wASXJ-8;lz$ws{|V$D^dH1u^nW1#b>zRZa4<9fi=7n+{F4UjAC^C1{-^*VCnf}nQG5yg} zi}1hb&;FnK|MkuAug~9X82)dH{x4>R|83#_9P&4ezbXG8ivBOBe>whB=6{6w_wn-I zB>#*0|0nmqeEz4H|EJb}?UMh_@=t&Mm)_*~r?b(8}1}gpiRP$jgfe_aA4YbDCDPw0SS#m%xkn5DqJ3Nxc|LdI2@ZmMB3!lV!yv z!JJqnlQ2xX!Hx@)dvK~E?$H;{9&_8Gi1;b|7$>%2Y##e%il7;GF3_Z2CE^ZlT*CYJ zt2jaZAK&*~lev-Nk3>`wqTJ65glY)_3 zoD!rD_ppTWCt0qK&uP9NN#J(sJJ3U^9(2bOiGU+t5wj0JijJqG1=|B9{4|;Ec%6kd0mFp=>AMff8)Fz|~vtMdy9*YYOZ3o@cenArcvHH-akKm4y% zW?^PxVf=T=frLP224+Tv|0?^b2ehWr!1F!V0nP8*{E)K7P-?ZWeSvzQGUh(GLF`T_ z1tC8PiheqvJSsrZ%9V|WEydsmi(bi)G=0H?w$*TWL4$dY`$U?P=oF^n`Nzjz%Z9a% z^Z3mu7t=*@G82=rioDpDXh;lH(5{qE!YHk6g%+S~RlKioIEyPNrFKd^?@|`?&h&LGJE*b;^ zv%$|><4<=Z=CW#h2lhD{4XAC^1r-I=&zlnsZT`->!ECKa5tl2jr-Im5MNVru`-Y0z z)ZEZVvcX@+OLP>Jo6g1zC!*EZ!c2rVbA}BO!EqFVhzZU}Uvg6RhesAHwIx!>W(w&m zG?h>>Y-Hd;TKd6IENnEUX6LojP`3lbBW%p`%&U(xzAwS^?_n!%sk>?rMwu&&XFI)3 z(faMV=SDG(55}b#F|YHH3w+lz@8IQKZexw)kg*~bMHph3^+DfRKWe=`_BY!^^62J0 zN^jK`rXUTn4fApf0;Wxg+?>5<|-+psv&oFwns|tUtiPU1dL|<+A$c$W>lWId6 z0LH(!Cq0XzJ!P&k6_KZ38lN0*=-vMzOFmS86IZt%ZN+ZB4}L5cE%2(t3$QOY#hd#e zTCeW8>s#L$`0hDdxo3KT-(vNX@Z9aa>PD(T;q2<%srCq&AR_mI%M7*gN&TAT?+^-+!NV2Hoo^md{^Xw zI4`GT34Zdifq0YBo6*sX?s=2C@!DUY_3gVSOQr9z340>mOqER!ZP(QoO~LqQ59SAFLn(}D%`qup<0pBli!JKZ~xWgMr%;>9AiAENy!^y0(z`MKb=QzSq4C%}jeP{_=o*1iskb zGYRLwWqPake@8cOm_X=Th)ZgKZ^cYGwEsU z58WSe_ZvPuV>5w>?@4_0B@@Yk?|7L^$WK=;ik|aInM`k)z_F6tDju zZ2t~e`OuodrohGo%llN!FPlX_iTC?+mBNSULs5QJC+^P_WN;rMLJUmg#ynofvvH00 zShtt|i05A}UjJVmzuuqByDaFeeg2z)*Wm6)W-fT!6PpgGFbW`|Uiig;M~v*7*L+@* zCK~^g+}1376SxV6oOLx7LGHZ%fJx}sC|JJ4*Pn%0 z9^!$-@nC5^q^~GN^l025!AFUF7wLG{pYd9_=;PG(-Z4&neoxNIN!Y#EAU>-~?NeR( zCgLzg(p2&1mFN|ZC|Yr&L)5M|%xjQ7A~r*YJGP*cA2h@64O@m`a~kxfK&RMY+olcg zARZ~sAlR<;|zoa!kU%_ zzZm!)IxZJp2a#9 zq?K2|?g_IM2gfp6r8fQ2(~8QCHt5}7OiPK{xeDAs?r$V-$|8U=W*UvuKZaoHmfx__ z9lT$(!?J~1!NKHoB;tBD6V<;Q1w&_^x$pEf?i0GBtXaT7+;I|vuD28y)mG8z zcG2bH)-Ydn*nqY!S`ERE>42Cz(Rh0s@rCS|Zao4)eW<*p8(hbUnI0%KgT+pt;?C%58*}Y|+obHT+AszLF1l8zJ=d;skPr0aSzDYWgV4 zf|}Da)0UO-^WT%LaK>tNxy`mJ#iEr$`K&yZ<(9eR!$(I4gLk(YSGu2@HFw1AcK2P< zkRVc(+z+9;QKR&17FXJdnb)hVFQPLfGRYbGuJObvTbxajqAHoQEls{XC#KP?*s27D z?tj}drKQ@dP2c~~wkzS3;8F{hT%)nq+hizHI?SQe)*VelpsXEm;byAkTj-GC!H+Gn z@hH>9c72A=Q>Uk`oW47p!YXP-7pWm$JP;4RRdRdBQt2VbIjpLZg$lpRfEMpMjfa?_ zCd!K8-9wkz<$IJbg090NYY`DdRpMU9edN+qt##j8AEIfM6}Cq~wI(dcwP8tM)L?}p z(NiQ<--DXz7Zj7SprWpIQl+d`3gk0C%bz!hEJf&1-KQw0jFlbIy}EV7Xpm$*H<|su z5kXZBHfDb*D{{w0owGC3a#0;<52W>CoA9C$TToBlcma zyegw8?GPvEKvKrM3*}$@Mdu#z0 z8G3vow(JUC@sl?o&JxZq>~S6&I(*L0w&o zrX`{ax#=_ou3u z_sA)nV}R)vcA!#o>*Z=db(e2_0O*&lrRb<$&)PTj6+f+cEs;DuogtODxb}HL-dfGC zCjgj-oro6XhfXc+X4Qy}9KU47G?n;`R~gqp4Z=)WQ#YE_hn9iv*5<`E?*i>P{oQApKVgiHr{)K2t+h_fEf?GBQCBsHduz}Bd+`a3B zOE(N*T=o7DwK?E(IBNI7Z zzu?Hw=1a7rciMJi-Hc_B>%>QZ&X$!5ySg{)K}f9vwP>)o_VzTH25t_?Gy!B7*ltUe zUjbThLkqPitz(Sp`Tq2M$Tee3AA<&K*#_+pNPd*yPY6C0gKb~!472AHBa@3m2FdlT zYcz0kaj*51@ag4!g6vIx{Cw7*9}=EXH>6Jw8jA3KLbrUfybe}ZKEh$$Naqes7xnLL z{*uHEL(;NiN?WTMw?zGm8C^JkXh@|@o1Y3KF+s>IMVHgg7fvPqNxLF4Nnwdm&Iz1kTI8QoAyfcgT(gb+yV=j z4mVSp`t}CQ<{9ATO;A?)G{9er&-+7?e^&I&nyC1tN0PIgvvNwj@*8rZf2Ai*ohA2k zCDoHiHBMynbO;($Hh;nJmtc6P!a?6w2m|x494p4q`MCF(89ukR5keJ#SM)At?^=`E>3L87XV~oKPmAlSHZ0>%p-iCIh zHp^KzlLU1A=TgsB+*_NOx`A3zidc)~Twc#m#=3=}@-`?>$k&oc9jFcnPn6fsk1m&X zn=f4tJ{OQ1f>w;C){_ib5R=HoW}8r(!i3&3-$?|ri|8p-+@frK%(Ac=zrgS>y+k>I z6TwxR7g{6Bd_le9msQkD2NY6GmGr8U&QnyWgOnx8l=K1sBk^hly_6C($~nRyBhr*O z_8%Z9(gcbsHIT5xEVWGx06tzVODG+16JMm9BLXrbEs0Ai6v_vnON=V(MF48zlk$6| zNQdJo6myh7sPReJ{u&?vX#ur-nNTz!Ktf7UuLPhNmsHkELP|y@pVbRN+D{!_DU< z^9KA`t2+L$QizZAnQBTDq(rI^cUbN(2-21yq1ILHE)bF>jfp$V_E!c8kv3CDX9=;9 zZpQ~J5~+YNNps?Z6}oeT@&G6j{?sT1LPdaY5)jn7Dnw!+e$vlz43yc_*_7Yn2s6K= zOW-PPdjt5WuVMi&@sAAvKB_A}zy|eII$(q9Djc9geH9PTp}GnHWKvhjg4!h93wk@^ z9+g0{agS=C$hgNs00GsN58#6ODg$sqbrk`yroKu5SW{gE0xGGmQUH}yS0Mm;>Z=$4 zJ=K*jV1oK84KP7<6$WsNb5;ix#yKm1$m5(fK?8BlN+8iVXEjhz++z>`nd-_L&=TLM z1A2*TR0X-kHEMub;uiCTf&g6cjfx;V2@6%dRDd?=a{MKQO%R}g+9nmC5xKw}b`xxI4|n)$u)5}Mh)dlH%jz4;QFIlX-nnt8ne z5}H}P8*%J9pqn^$RghiWVqWi(L|VR3D!`b^CJ=xVznInQN;+F5TBIK-H-MiV!Sfx@ z&7bog#^Ds@c#-&j(O{zVJ>AQn^8?1=9p(6yc=k!O=q6I`fFOIE@Be1Qe@0YGJZmai zG!r3Lh?gzH^*!CupYsgHVHxGPme{sld@4Kr{ETBhkg2A@7}o@^Q0DF)7t(BRR=t2_ zJwrEZE=|3!HpUck#@2e8eUi~y0qGE}AYY0$ZDF*StU$yu<5YSWiiLqzSAA6YD{zh} zefKOHT79tAyEwv>SFyZ7l&&aHaZXBE>L!UQnJQ_Yacs-AhJz*4luVIB5lfMB1|-Fl zv?@g^HIp2Y9Fhc=TmY0dOzCD$HU-QGRn~n{>SXRRPlv&th`Xqh`Ml>+9xKo!#UZtn z#ujnXlvLfgu2z7W)c+07a@NnUQ^wp&%RA5N76QfdDQ|x+&oTPG?;I zuEFudY-BOLA^}qRa9lUgjfo@4)#lKEjBB9=cxND?cid%QC~-?B1LcZ&!=;~;lbpjo(Tz4V4pZ=}fMFco5Kb3vpPNbXi(*!T+c%2Nl{Odyz3HW58wrMJ zft=W*EO{Z^&DjYlKH%9wtC!ueXaPY|yYcgQs@&)2`BVnHTg1Y4qvwz#$?+Fo#Z0C% z{pAstKR@O}(=!=8x^ICqqMEyzY0puL1iy|w3LcWy_gbBj){PD{q^ud+x^6i!T*4JA z8QZqc9ElDMtsAhi5|gwI4&bFGn0N+mX)s&@O_8}Wja);H#0$t92X~|*t8U~AM3eB1 zT!W7YG_M6@csgrSk37d)B9F8k*L&>QX0)VQk~kZ8Wn|WdYW+;PW>~G=zYd;+XTq8p zUo)(A*>lZUN@*n5Gprql4|vkPkIP%>HYeX$=`}|mK^2@NSLin_<;GUXA*rLzG zr#V5+>`5g8wT98@wr2aJFo0TvE*QV!I)LdDE(gH$5qqQ=vVxkX-5+UY`kb*x2nFF% zIITAES$FG=E?G0lGB^EmzVpEJ<8V7a^){Quus(I`)nAj?1#_An=nEP{wcR+Xi0b2W ziNN&k+PLC?;^bnGAe-%7Y%+GMjdB(#t_3hrvsY=t9x(I008+E^&uDBYODJ7nP_`SQ zDsYjCmqM4aOWyxgXlyrP1RUFyNwhm;Y?uEt9#>bf+=$o&*;$+4)`5gh`R{8v_t@R>XIj93f zeeC0K32?-%7{508YJI;}d0Wc@CdA!i@JA$5DH){s%whuQlabjV%6Q5?98%F@wpc&? z`|YG5+|hA)3n`u^ZGa*&8MPvjqEn?ID@B)iGWhX+-6&)qQy;L8v5!I6E`Xxqr>-%H zB7`ElB4#4OUd*>s1S3W!NFb!`&?h=my~6Q4AS{`!gUEP|IBwYgVC|cND*@JZW82Qe zwrx#p+qTV#ZQI7g&cwE}VkaxkglEpKeXH)veY;hEb#?bszw}?#{i(K@FtYadC&DLs zBk?PjpU}_?I8Xpc2xR!!12H7Kr7P`+=mQaieje<{ens&97JX9%paV<+C6RxB2TCq) z2to*g>_YE`-s%JS2DS!trTbw6z`Y2)5WP4)$hYYBL+zPD4dEKvdvWq@d_ld4-a4Hs zuC)QUM#%RC5w}%9iQiO31wjD>Z%x4P-%`Wa>qM{(Edm6Bd(S8rU*LB{5JVt)dEL&v z#2v^TTvujW0>*K_yN9#wJi|G*JU|Ht6kcy3JbpOx-Txjuh1>*1c9J@C*}5*Gvuh8p zZ?;F&x8FkR8ug$9dIGQj763}X=sf6e{DC#_wW8TJz)TU7EgHZCKnf5AfB_sUJp~W)uvu3;9LCwVct{@Xb3`3l^9Ws9?0fS~`1I#m^C(&E zFSqM%RNGs-*19yi*X*>fk@Oiv|Gk0~b$VT%(pMa7JtUwbYF!$f8n&B_=#D>Za)@eU2T%Kq5fMA=(AEcDx>>gtF)#NaHGvfDJZuIoNF{xj9;ww5i)!Gp)w z#TSSxU&tTz#OJWVAR)}_Zs*YPJqgvv#~)_+OVypxf&ZJ{nW(y?d5Tr)blQ#^rdyW>ZS^)IFWml-(#NaYjOhNIhYQ6bC>n^hCdeksqwM#WuBp# zLDjcV*$i_dw3hL*dzGnwK%DPr&GC9?!HVGV?%wh ziy{D*$R%Tr-X8lPm-TQAoxkb+R5teUO+JU3#y6SD+NVl$uZM@G+b+36-6msdK2K$; z0EFIk*4oC}CA~|bu+p=nFLv?prk&q(fs{a zW$9J2TCR1xRMqF$Q{WWfKn zDIg+{1BeNv073$J8j;uG{h&VJUol=GUU6PwUa5d2Kv19{kO;^KL;`XGv4E67C?GEo z4@e7y1F{0qfTTb$AU}`*NDoA4g!aPog7ZT20`ns9Lh!=yg7Cuef_a4o{s4kB;&=RS z2g2@v?!fPWUx#!9;S1&qCLHiE!Uz1P?La&6IpH^Au7hpEeGqm)cHnlvcA$2Eb`W(S zbzrR{=z;4Y>Otzk>VfJZ=|Sni>4E7X=t1bg=z)A7auahSb7ONuuS4V_=0diDT7p@E z;0GfP_*4_E(KdcTuJ#YSVQYPZT^bsF!q)}{KQaBkH?1HVp<%8-!F+=Th<^P4o&KML zyo1>q8ePNJ`Ukf$H9kYG_6=-eYyI2&ZrJ_xJymzr;4l!_sjRA+5t`K+*6Av(GruAZ z%~V*gAq`&@rE}L7%((#RCe$nPaK>IaWyQ859!P~OAe^v7_b6lqodHc>%zQCUkY)>J|`?dixNH?WTj|0U@axsm!J4OSJ1a5jsb2iOq9z5;%u1y!z)<{0(uU>!vSP`Hzb(!UD$jd+IqR1iex8KoAy0wW=~wlxoA?F4U!G#% zuwO?aV{y#6%5)6f*c#1DSZvI4L_-k zo=qH!-2hIlD6-<^q6tyIDpK4k-lP6=-OSpOIk4eU#k9(izP<_|YJTJHs- z`4IxvXv=v%XPU7@6Dhffk^M8nYn4y-w#X@0^}srHy@`yGYmNWMnP9F6d-EZNDJ6-E zUJ@mPpQVXOx~ZikfKs5kPz+%`AF~zq^r05qk$62N0C4TUK(_P}_1M1a`z|o0>02yW zj_iN?=LHJ6xyuB7*mJeSCc@OxKZ2;E${=Af`AL89Nt=w0)+>8hPh5MzH?}Zz6 zl*h^`EAnSND++!QB;+3`ULV9|*0)k5VqUj#Ee2Dq>JrT`i`NK5VipZz-qMQlG1@sT z`SS3ukGbQwR`B3WJgL>#B2WQzGSgvj@Kz$&1@O^Qt@1fJTsCGJX=J!%@M#f$DYKVs zwSu+Fr^3q8j@MGF79L(2K}H(dvjKci)c1a*$XA*%weO{HAHbQmcJGs{*mO1xb7P66 z=*w403cQ8*sFqw2OM0c3tCE|V*50-@H0Q`uB8$(+ALm+dRp#9I+0Swg(5B@Wm2-KX zo9;@_Q>v|DdXwgoVJa0q-u`VOIMix!m@qo!YK)kk2>dnX!;1?#6*CW=%FM;Br0jcp zEh{b2268Fsj!3R>?qTQtL)>3CFs@+|RG3oT;M=KbX_x{oW%D&q4g zD@P(Gd1Y~jcR8CV$7*RTUALoQ87!xO7SyTyHNx#fUM3FL0?Z!jemS?kEx<9>q1i=6 z&PQ>KV?Gx#9yECz919%|l?O##^-AGlAF91P8K0Mj)-d68q+o@ezRW)=m3tG3ucKQ? zH$qjlOPBVB9it#Yz~+aW2nGp2DN4j=Ws`)9m48x%ICixKtSQ{Xu&5o;w4Ja zwFpIO8`G2)3z@{*)k`c1@qKYhxE|6TAe<2cUNC4+Kzs4^@dOvJC!#B)`WYsl{a>z_meOFDaTJQU9nkA+H2m6zud%qeUVXiE( z8C0?IJbwGp@(Wa4_0yT$MKyMMR%&vkJ!_fB_{i(EF&&p-O-=px2f~(vtIs-AmZ*g$ z0h5sT(wB)X;6QcSOFdymc0L}?it3jks0(93OecXnXV-G(gpBqCspRY&4v&zj35yEL z0#11*M6B}kj!S?FX@XU;qd2<%!~M6@GX>CI?X<5&hAmk#8#nIRKf_!*oqi&wN5+Fd zclTgjn;@CHCNI%#ksJa~S~LjaEOg3#zxgqI@w%;y!M;d_;2?c>$e(F`Fp6=lE`R*S@8G5)p2+JUg5d6~oypHt4r=~&ZH{2W<6t&8M)dUh8!GX>cZxV^YH+e- z-MHhXq_q+tuBJgjTZ5LS9yM7#f-A~hOamh!g42*a=MVYA)!Dz>pF;IA?_TJe0$~|k35!*8K z;ee+&%~(mv+^Z$^a|QZSQRFaF)y8v&`MsBhmO)o zYfIpIYpQN~7#U$oGM)K9j0}DSBacc`eg+HzHI+}?64a)VN2atghbE$IBi;R%X5dBC z+!6Ne`>fjg*XW|PNFn9MhF}yUkYOOBsf?TWHYh&dU2hArz}o^cCvOOg6i5oHGy^0SZ&WWh z4@;ioKxnO~fd&avO;Dn`@Hp*}If<#>Y9f-00yIxWXzr58?0I47MWKA72_)M;K^8bb)O_+jB5Z}<}}48X;VC@BU`PgB`-%I zP=$%7ff&OGF@+m!A_mnj@BP@85$0kLiiiY{WUUy8FG(@_^MIvefYw*tgA%vl*rur% z=rHM&jw6W_qRo4x{e{9dwZumEf7NgW6Eh;0MgHKS)Qa@X!9)hF$0s*ed4v#Q%5t*- z!<>pn4JMJW1e-MI-032XZLOT^hxr*CVs>sZ)Y&4{)KV{yBMy*EQxgv^zZu^f!VcG8 zP7ZUn5$}bs?_u}B-WZvNn^Ao!t7M)@^!a~a#`tYKtM(Ovb^bzw_vZ~HX)K0 zlcpBuvJAV*}{XHlHW z{GA`8;$hYMV-zLsM^;0j3oCe@%y0-2XPH!1IV%lWlGVHki(z;n(PDO#+I|XeB^Tf0 zOuQAd6{G&`r3)&=V5C9LjIG%Pf$2@<8Uvv2rra$Qk;(}evva`4>Q9M6biRE~eP?mA z`ul(k9Q#{`B}Q=>qIEU%WpS=Khf9uJs*g|f1H$VYL+O?MF+L~(s2XI4jWygC(i4`b zQ&g=3+VbBjs>Vy6rtKh+*+H3b$X_`Wb2vNhHr{8X3@f5ht=aeiY)HtF+Ms%;#>SI(`Vuaa%TUEq3+Z%4gLNCZ^?d=^twK>)!;X^gn?67)J>f$I$}C?|blpz~zB*yLTbVIA4Z zU{C!*aY^w+v~O9wSWN7qU5DqWN)TSNPyWxiQdC|50GS{A|TWvh^0}2Pd{84G+EjT@2 zxoQB~n+iNO`l`v`)y4cX2WOBX+Jy+bwgr4Wohw+tZtOhJ{tAMRGoBbRn;VnS{pqUM;))+U47;lz9(+wqG4o$bST-$!&)bI^J5qu zHmRVabSW%<>8p2Tn6XlfsMYqPUU{c)B zn<1KN^)XN-mfV{mc(oj?R&}Ufn9_8}jrW0-Fjzx2jXR0aRCcS>_zQC=ULvM(uLIut z;(TJQpqRw4-L@sCh0t8)JqGT*2cV+RgzZ%J6?X_b=XlYt%LctXd+Qz% zWqZ(ldifX&D3DcYYEj=YN{3kRvGPcG;dNGBNX}=wVLgqYxUk%Yunuw?NLGZ|muCQR zQs?%}8!Rj_f$CWjd8g{SQ@F4^!P9tlrxe4blimg@_IU-tFa`qPA_iCeFP7hapiRmhFMCKYAB7fw zEX$y8_FP`v-NRn`40m@ZT(3~P{t@q*aOL8gpS zy@|^mzWS0E|1MZkl$@(Nb%OQt$plwdqLCyB%os5DdFPQ4s)ACftOq;x!wy7Bd3ZpO zmc^&mspxxT)B`szb!Ug{TPj0*)zE=vD=74b_)f>my#-w^KYp6;S+Z(%l{?R1zeR!M zQ_Sd-dGKg$o+3uI9GnbUS7~KU1JSf_J9krzLvGaR$_W$2 zm;a_A2yd;lm7p6Lk%T6)_goIRV~n(r}VrCeh7|e#@2zeIS}b zZ9iq5B|}SS1Z2_xx2^6j0{qy%%3O4{Nd#dutVTs$ z5aNT=tpC!qVh!kafIMDj4}KYWGvaZBGiOX9jQ3X`r{i_|;c^=g@7t<-qM}~O6s9kW ziz_{X-O+aRBTh}eV3U|ze_{m1?Nhh45o`^6pH)zMJ!gvB=fPjDXhvN`X?oWmafH(@ zZ@~7}{UHhRxz9M}(eDYx%4LOAQxy)-ZM>#tQ@2zQw`Y4j4xubmv_X#&)`0Ja)hcvm zHC{-%883bJF);R^pp?TGDMTDV^kV!`&@;f$(?ej%6x)oMuzy%=7o*J~5hGZ$V_6!t zD5N}y*D_T}A}a;6dDgPkE6Hn;(&HY0Vlqa}KePGCvWDer6_4)Av^&vUs#8LVtk+ZF z@>~H*jL^Vj9#!CNL&$4b82h&+h|GQ+WvFKlhFHs0xeE6K8&crJCVO#3r>LB?o%UUS z#fs^yI#BbuX)+f~QX)P`-bK=7&_-n4cxE}pb((w*iomxAwa=~Gf;>8uIs;1&D+j;+ zIS9ZGD@W4@#vKnx*gR|A+z#pD13bLJ?f^=}f`bQx2g(Z68q)Ud{Ak$U+M2R4=`>aW z#Kj$9!MJQ-TP}aWtD&t#QDaObI&Lgk&=;VBEa;mWBUq>D3O~8+JRkbME8IBV_I-}MJMcOeI!y~XJyff=BS86w z0y-SW6}^x?=b+Oc{hm)fiT%#MC z0-$Yts|tx_GK0$X5jM(222`pv?e}La1aajdkzN77Y|bAW@L?Tbl%LcQk?Z5g?Jhi>y8NgTogpUlIEXXy-8S%9%n!Q_xa$7^bw(|8L+Ms6m*q0%N1c#thT`(` zz+(d;S;1!SoPD^FsD8yN>1;VSt{b|8!0VQdYo{gWZ0V;W{YTi75T;bLv)<*R$KY?=;VP5{u)nBZUD(ouT#O zZ=s9L?0Vf^M6LL@ZL~p0x0%M^A)I+4)gw-ZxYxX20M7>E$lN6>V%F{~ zc8@r%w?*11Rg zpaZ6UwUJs6QiD_+V#OZ>yYt-SE*mtILMVJ5duPHH<^q3N!+x@6z$zK?q0Ud>{&cjC z4d@=WHTmh7MksrLaK!PqyYc&=2yP9T6%5Fb2ZlITFv(L9c5hDM2KEK=f_D0-*r)S7oh2plpmx5F%q#eLEPqM7wE+jPb$ykf?C|nu zY_A`iixkY+qFa0|;R-O;m9@Co--^^XKlDCtic=K;Maifm_0WjrkN*p5ZV2v*Y!pfj zHe3tB8z_j{_|~ey=0p##leZ#Zu1xb4j+%*tVLfHc8Qr9)5zt-)U#*G)kB-c|BkY&G zs6)0ZTo+gN(@;%SZ~PQ7TR1kCGKgV06U?FAP;r5%vvzPGc}_RiNA20^&h|*Bj%aj6 z0Y20B;W%NLJ=2%Z1Ag+}I#~zHRiGkEVbvzScOf5T!(O~r1}V?3VX4~L~B$K(o{ zRgJ@^KZHRT-wKDLk#mRG*7rhDLP@a;w;qtO?A}P<;1iLFv{0gTO5v7K35-=*4xr(! z*abf_&L4rb2CjGAE;+2+bwN7vK}*PBHs*~vW~mX8Sku8PC|V*pzbzM$fY@vU8F=ej zsSc>jtJqPEQB^Q>J{2R;EwMimWq9pCKw!XyiAjW_rMh%AcZxRiGU>vi7G2Yr)sLDv zH7mnXJe^8ePM##`byl``ceYYzG2FatV@p9B=stthacx6xg0yRV(o7Xqbx>cUP!;Ov zK8u!&mujT{kp|jz>dJ-@riae#IX~P#u&KGgwSKi-8M=Jq*AxE~KCXy{0Juh) zT0shHXP;TrBL~3da4bt42nB;c=m$57lnoOzs=FZtB;q8w%JRz7g!fOMEo1!IU>JC= z@8y?0nJ6IJdgmgC7W@~jnRi9$j%S;0ez#A*T{bx+=b3)${aS{`m&tuvy&u2)m)GF2>ElS$!I<$r=}ZTb^5#cwcHhWf43` zmvySI@M~@UdBAEfe?j~-Zg1CPV6l;Wt*NO$*jx)yg0EZCVZz~qX^L#`^)!FN;nrQY z+rwjBOQX(WW99Fz(`|Zvkv{nT?$x3sRin)hyVENNsdRioZ#PYQ1k)OaTq zG-$l>7YgoiSnf!uco#Xa;UAh{$Mf|D)TQZ!&`&)W*$GMu&(DME6LAT093Iz#F8Y40 z6$|Cc=#m21_J#{xFPwqK#RBcD#FqO32Z88UA-hB#`0(!udv0qj@0(sy0~RRuqm^rh zheCgkUia1Sl=#OZ9kQw~_Np949flN2^u|}8O1Ad-ZdGPVGHs!R0{QXu9etpL5?BT< z7cmJg4_o-&@9X|$IN4M(i?<@RAw3<>l~Tp{8%050Ul>nIKt&*kc}R1)fNa=S_EHZO-!Gj1pu6-G!diHtwPkejy{D4>gK99?#wVKIfEW!X!={!z0P!;-qg5 zxqep&XFkYl`GjL(Rn71p()tGhPDer#`-pc`H@67lAWbkAe}<+? zLApTKq#nJlJc1#?A%?*L?jI~P_!ZCaV%PJCR}w0c6Hn5y?=DcJPRIDE`WNA;A7*Gv zE%x}AD%2o}cyE59=7}@P-TL%aT&=*Bs8z>MTI+1#m>EK4zWVhD z(xiIn()zAF899VVlQ+bwT^`dJD`6HY(6fQ284oVb+%dq;ELK_`i!!QdqG{sk@D_=H zy8aiz;x=<`(+nPOG>E`*)CjOxyBs?_9t7mv2B#1sTkj?dlm+)23}!|F76uNcU&O*wCxy<_BI?1$ zGTLNRm=d{a7|tq9i82zXRF*LIpxi{gU3$whxHkKAbavnattw-P!__1>2_W#1F7gl6 zuthWAl#04HR-pnF6k9={&w1%emN?BIZ0$cD)a-YHnCBoNFgb#_x8wvR;Th3uyKeZJ zEgt+2InL#gYl(UE3gr!Qb}X0q`_5MLKdLRddAggY_LR@!Hvgpw&0G;0@c6x+mE#w5 zwm9CAifY!2b+meIc)gc{hv$o_5{_<4AO>}z2X#pWt)Y%Julq)JwM~@!EzMG@JPuZi z6VoeWe7ZMEmmsNVGEzu>K{ryLDn5?%qf!|yT*7KSW|v`zNz*(d`L7j~Tm>m5?gj+z zC^}Z$R79Rqf0)BnP;1_|jR#%#B1YHbINany!QjlZn>i*1}s_Y-9x5?516BETrQ z3#AE$jz*FjrjUX|ZTX^E01zRh@bt1@$TRHjl-zNyxRfVu4OK%1UaZg$AmxdoHkk+? z9&hj%nc)uC=ysf54Dl5chbS_ih-M zBYKn=9BJk4P#*(m;fTyYDai2aRGvkcG$`?p+Zo)t|C)1bMM+@NvHV zOVr20r15zLsyrE`d3hSMqQGXjU6Zr~=pBuf2zXv61Xr4DJKR@>?yK01o}%y%Q{Sf5 zwNIO=fox5GvdK{~1IA)M$e$4Tv6coQjFFgU?c{)8APV`RTxRFLCL4O&NdvwTtpq39PRH8)&?(J>NQfwUT;TEU;{Ww})E zRfH!SRafn9o!T#U`qE17C?{2Rv^YHJV|?#~@f}pRGAakd#hwl8Ru7KeeycSt|7X>N z+g)cfRl-|GAP4!9u_JZ&b9|9j0rn|mky>`P^b~M5 zM!ibOj~otmwPiv(oy%g7-2i+KH1JS>6DhZuuOUT?{HmcSC3xu>#^#qOmV)658)&zJ zY*g@%D+D`jCuwtELlqjiBzGJfV}-aGMFEc4Ek@GXxV2U5nZ+9Dsh>uSaQ#OpN?Hx>`I7M&hXLK0)USmm!?z|=1b9a=h5cMe6#U-XTRDv90Q~YW&a}nr zTJP`Eaf`H}`ieQ7`{rwB$O>7;K(UFI8gvXsG16CgT8*JVn+Fj$92Givk-<9(D>=1H zG*z050*~9|L|NT4L;?YJl?%^iOC)|xN~xwZ0o?}0pE2_ONt}Iy#H6N`mkM6wM`p=R zltirKCI6R~hFzhfcEhbK)wa}@hm75HeWA#aZpOf{gzDr>+y~RWWIEkYvcWu&#bWVn ztZ;?1?#Os)SZ$0rb7dG??}+udPUeR;I62Jb98j8qRiFJ7dSIEsl1Cr$0x)f(!vr3K zk3QpRYhQwj{4cF=7xqC_jeSoj ze=L4a%7^pHEMb6yPK{h+k86e8(FLEU=62UbJV-4$tWiwbEd+|qs3hIW2%j>?-Ac`` zspVmd`B#cT}=4`eH42#Fo}Y} zIncWkkwi{z6wv_RHDOD~;xZu?HPoLx?6v$1$*Qy;VS1f6c$3sVp9v3VKQNZ8t(^+t z<17+SkS*yFsBT65a{&gj$umFWWoEhm2{os{7+A}@^53?JaMm_z1Co9(GgQy*XeBvz zAX+*(*b&+(j)6_RYUqzV*5$6HPNDKGMxi7dhTWqe?Z`lowTKK+qb&Sb=1| zdx1L<-YoS-zTQlZ0rAL)(1DRe35{N1gJkRmF+V5yqqnY=xet^-L=z6MeK2Od3sE1) z+d5VuF1h9B8CXQ-mLLkCSVf+50>rJ1Ii6*Z@OL2rmcJb151~TXxSiEFYVBYZsC#Is zB#%t^9;J4vM=B^BKpZg8#>iKIRJ+vVdsaISpZFdD4@>f$0()EF@iU6NeC-J!DaW2C z?Fks|FR#FMq0ixN=x$_%J&<^CfLG!7e7T;-XVHGJ7{2R<`!5U`%D(VsUr#dKmKxLq zC%EWSA`9h_3{}9CNY%gSYYh;9X(DqbxU^_TVHC1BcT2+_e;5tQXiCMTqQZ|F7xs9@ z<)5yan;344m0+EC2&iAnBkeG45yrJQi5vMgc8H8&x*atfr>pN`4(X)ME-8P=tl05J z)r6M)&Y?9!E}T>qQ^|1aG)#luze_SKqYOc_9}oG5&~pf;k>e3|IbW9xt7S<k?nVH>0kB`DST)tqwLPrOvR)^GRbcK;S zf*Men4f6e?Dc0ZCa@ua;Wy2AN7=!JwvLR*PZ@Y4<*Mp8@W7&lTC_D$|?qNLcszU%~ z&6AXvLo-hevLVm@u;^ZcREbdDBUF6FV}9Sxca=p!{9V*Ur8|GYC-33Zb3 z4F7$@(zL~|{&}F&week?wK6`BUJzyH{2fTIW*3)bolI_Br-N>Fp}2}=a*{o?9&H{@ z?Vv>unyPhOo~Y>tY+X8KhsqgBvWw$Fxz*d)?P%(c=g9U>Zvi$!O_{Vu4yMv=Y8}Ea z|7IF9bEx*H^f37j`BdNi<2YzIT;A9gbfUk`_%U;?B)1)iJ$=;b;^82*rj{}8Y_f*I z;Rnsx(|?xNTh(rU{k%K)GL{~1kF&)gxtg$&5NBx+Ye$SDw8ZC!&1K893odG#3Jb|< zm^Z#}td%SVNmrqWd+armnc~XpIB@OZElbwj@0H@Ik?hFM3B%1cn(%iN#B#p(x1~Yq zz>d$@oHQW7!$G4Nn**4B+-e;lB1y$K-qpt&=d;p-*pz5^l5p&(9&(FkO}c^vHu85j zyR^))8L%;jYh3pr=c&RCJ%q@Pq{jC5kR(~_txCan+p4L2mB>KQ!^r!Z zuhC_5ymw2jHB6sUXQr}>BSd2UoI8$}zrzyNxN`QA{c#iyoU!1P_RQ+j%dX8qk3hM` z{*Uy_?1J|M`E^*boalQ_Af<=W-k464Z{k<1u_$xVSy)&x9a?m~H1$6^svNY~+)sdx?O=65TCGGEXmF5*FaTgUIaec8 zck*}4Ic|Lr*r(Oo=GhDoq<*+sZLWD@lv@V1;d;>)V?-}mtgPg?0ddS!ywsdbi0f%i zl+0if!%GU(pooG&`fjt&hCw%sU{Vx5H3V8+b^<}($80D%&q}|N2tA2FY zVjm}gF6S5ii^JvMlH!NC7b_wcwDEc*E#ebkarCuzS;LAxLY{gpyk4r4aZFZNyzuL% zrjYgFw-oFw>%zFBFa7a|JB_wPwCz$H|GAsqhv=Wx%u{L;xA$<{WW^%*C)UOpd|I*EhJ0?*I?CJ4H$cKh)YYHLURNj`w z8DaHrR43%r4YWz}^ogM8?j=N}u<$i;e~^IU#=+s9w><k%DWRgY z2J9B9R~r057$iS?db4c;ADc?BNM$r6+_*4@*;rz2Ru{+JxL_O@yk2)65pg_)0egIY z^ca4Qin@kc?1boJ>hA`X6dxO!HD^|J%p+h#a>v4tzWZl6v?AIXYc#vzloV3SPB$uH zY-X^Eqy(0zE^;NV2(MUN#J{+$r3JqSw!Vo*G&nS?O{2%I8kuv_e4Tk{Zs0K}Sf%w^ z6GQ*qWVElkl1%2+K*Hl{M~>B5S7_fp1h-~}$#yy*vZ@KcI(AlOqhO%RS_2j2=Ld80 zDk7dYYLSW%h_xnBM2sCCpobxNk13&Slq$7P6!2xeLH11BwO4Z%;KcvS&uX1J-XOM! zd&S_7>Z53w)rfeYT1E3qD6;}b##x3eEhg2CoBHc1y;Ukw1j^*YT-ghqdOCdbJ3MV* zcJ}H0N5X<+`^E*<@^AveupL6}j|jg;%9yIz&zNr}YeTS|QRniF73_GZ`5mjmg$||z zN>Ct(G!P7C_kbk1i$;aiT?dUky4dco+SMJ+)`obq8Q-B90iOZYvx42F#Q{OUgP+-I zI@g3N|3+*cc0!7s!F{U?WtMxc7C^%toLqW>$TuT({Y+Aw_~|=vAp{g2wIzl(?caESGlXe&P9K0kFR5(#b$_c{a=&OuiD8-(pY?IV(g z?R8W_q;w2Qg0&5R-2EF)e8S$-Id>ThgMaf$SrI(kj9o`lC_v7{#M_Ug@fh*m8(UX^ zOaIG!+&CIt!Yq zBwEJY4oComK@a)ZW5vn2Ab2wTX8or44Qk;78S8dd*Cgy?;e z6)1)#5zA#1rCaA$Dc3*cOZ)wj&NLm_A}&$Foe096=oy(#Xp;ESr(hY~wCAtT~ zAq>u-e>|iIR2KD{{G=i9mKBuQ$3ib!O$sNF7ZHs3saf_yPe`*i%}V#?fU^O8>@C6U zDO_OYRS-G35Gj=#sp&Bru5#vg=AeS*EnKT*$b$-etWW?1 zZg~tPra>T?zOLm1klVi|f-HJZ(^Z`@W3IFaF4h-w`ATSc07i<-I zOA&LZWpnfw+&#}v+4QpU+%h|yy)nsS`cB$35gxDEoBK_$l$jN9YfrDj`A&`7dSoaa zTRofJh56=^I$KuLZcF-YH1<_>P0JeKi#xAm0fP9*g&q5@KH1x~@~>U1lTW0hzg=li2% zPa2_L3B}UgJpt1#%|tz9^XIl{fei^>^u0w*2DUaY%TD%QZj(3fZwuS8A=*_7)(!5r zJ}1YH>cN={J@>)tFYYhdJR*imH*y>FnwQq+>AHBx&>sp_GGNbXYR>ZfH`Zs5nop%Y zO&E)B2Cvi5g{#nw+#WRq>X=juHNY!=N95U1L>_nxYy~`o>{n-Gos%?DD*l#i)x~|6 z-iB+5oByZ|szvJWT|Ph5x-zbA?zz-pxuZ5}i+)#*H}Vdi zG~&78U5r%aZ|qxjSjuMK;x>li>seuP!wC*}it0Q3foht8lbw2LQl1YFXCcEGHqqkJ za&6*-3Iu=Vd|brD%lGf~#8j4w@Urf0p%OLEQ-ZHzeAM)c#dr#& z7wE&;1enDMfWob-?-24YZGU1z@+=`!;pIU2Gl+n)Gl>jQi0tJJP=)1YWkSpQ>rO~_ zMc%Nj68^iU-e9@xe37V6wE>qIujl$w^@g%UgZPmjgV@gL_1zNc&BMK;S_~;+k5b3~ z8vlY2_5m{DuY+refXUiF_gE7TfBv+NH6}#2KiQx3e;YKEBW3RTcykOY+MFa|E1X>$ zC$MkqoT3L)skZkQsqDV6VltyB-Y%}$DFpKEj`B!Un}c07FkiX~9nF!W0+8vvkNkxG z!8OzjsqZyQ#$?Hb;HCqk1Tj3XjeneYIWM;yvr0}TWy7;3)ljuaEx7fy=v57fr|A(wS!LLJg&>sdRM@k1J@827heNc5TxL>Fg z0P>;wacb33?Jp0d17!c=9jNM`unpyr@Rb0vy*lCei8Gu){dU#3Dg4kAGMwBMk@ffu z4{59L1t%DPEnkW~r2ew2)nxTTjA6@`al3A3O4G}P`|@@mbGs;Th*nqbOz_o-fOc*=O@YDaFfzzD<)R$OsyPI&Q=d=ZX1^g6U zt(N^81cO#*Lbi&wHQE%s{D|XzDC`+1zDoWq^UNkhOP=~lncrUtj;6QI^e%?B&r5P& ze^L?-gCv0&9pZ>#uH(Q~VZyIeSsv?;sPPLi{~F}ychS%_L&H_KyB`SBq9&*2aFJ?Hm^#JfE5p0mNAbij5HB379&mc(tbuW-LTy z-kj&-`Pu}IZlvtf^i|WZ*Jd=0YGi9eMtc8m8VzF%P?|?bfE0?Al1&811O3(D$WLqO zg+fDSF9}Qn+`wsBC`<{}SPT!W{-&M{-yP$aY_%n*RFT9nL(q(URkNmd4Bhddwo`$X ze49LXqS`4Q7X8OpCYx`in6+|6EjBeH4c`xnuV4JLF;tbqY2I=vQ|MVP!JB7yA;|z@ z=>qC;ckgRwZ%_yu9K|TApJ1v(O-F9!6SfVWr6dFNx5-l|ICe=>>KpPjin7~vC9ppw zZ1VQq3d;pHcMIaYSWDdN-xA}B09+Uh8Wh{^O!%-ykChJ%T6CrbEcT0K(lrRkhdBDW56Qipw&NS~oJjUndpKdaOO>V2Y&RG)SnJ6EMPX)vshJI%pKh$C@#{Qkb4x zr^=K5l=1L&B16wD=`0+ZSF9qjA(Y@3%W_|Vc8u`@qBcX=WmLHbqtHsqC!!dBQ1cKj z+NWld%DkR(PVA>fe|P_mr@$?#U1|VC4ssYw7O%Zx4xERPr3Am&MvjY2iOj*rII+fD%IO{Z}09hI2!kLnI() zKHCrJ*Iq4!K`AxjDRUGOnSAa*)VmXhWrbWMYy1i}qD>wgBvsX5|D{(R-Xwy+jD`q^ zV&yVBXaO05@-S~!x1+*2zCVC~(pY_dX<>xoHAWkU&}X7`oE+zxzXPTzY-~;(=?!<% zJCP}lwoI)+la|N{^>89fFzuL*5-dndVV0hynw=f4$ml$Yfg;)@4UV`7z={Qt3YhAH%LXy@wBeSZ`pVVe z(AMa;n-}RLy2{7wei9i`yB_%8L7I2J<~#iNYjx_{rbA6ndyA#WvQGxVdGa*e2-t1c zL$k$35GUChq@7fKsO=?atQTgOC_=b6(PUc)FnQ#L#p!LFn}Y~^q#zL(bB+KUM=~Eo zxhHwaM<$@*Ej|%ymu(f!NgU_WdS#~3YlnabS_U;}NkC#j=>Gs$K&ZbF7v%^l2Ge2T za>oDcIa)*L`mpTJFDW48oQBB3eJN}E`K2Y#TM1YKqvZgl;`8LCQan=eG&(ow0RzgX7vrv0@K}FWg?OYLMimd#X1~MkH>(XAYuN3M zNE(e4al6A-4Yb3}YwXVg(NG?Kq%yfHh&*kfLAjg?`nHK=7TFI)!ClUwCGY*Oq* z#CKpG%#3F)FkBSg?;Z@^EcbF5L0muwb9R)kX+y^=ZaPFXeB4c+Qb8RS?HmnwTBvf^ zeS%7(5v!bzphcsx1Rc&QQ3FyaTAqM^@C6;Gr6}n9edKY5B!-bfPG{Jv)mp<)ucO7E zgE{OM(1&x%JrrYcVBA|MUiK`LgP$etE!(Biw6dy1#?dG&-pU*t$@ycHUa$(hMGMHg z8L7%&M`ASDv; zYL?Q4O5{?iZ;*PE(`@w`NgAId^@7W6^%zO&k9t;3s`P@MzD3V!;B`!L4u^Z80Y6Lr zC@MgFzR~+ZGle2JM39y@acX zLvY;tBGjk{h+X*KQ`cAOygk^<^+KJ$R441aJtyxYoxfDKOy|q!bHx$SjNeIf7Nb#O zX^Yn6wMbr*1{CjIb}Shr?kOuh_#fp@#oFb^IJrN`;;&O$nVW4rR#5T<`_h@@*zo$A z;Y=4M8EI^6w0D#?4#yjb_WH2SIf`XpuB)rFWG>YqpXc3oFL7_bYkf<4>k=Y5SCV9T zrB1G*l2oc?L)EUqOi)1`12uE$usnAf3=!90*ARqsS|-=PF@jc8pNHBE8^NHupH?H| zQPbcdl&J!>RVVUBv!2Aij=SxWgZLUw>CK!`)KfNL(Bv?)s@v|?2mGr{R`RDvAB)Wt zjZgqhfmdmGz+l$XwBCH>!^OkjE4HiQ5BR5IzI+VFL@RQOi{Ahn{eG*6bZx@|Lp(

    dQvK!ZrTWF#AWjB;no^Z|R41n` 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 QE$_nhgwv1Ic3t>?0_#7|WdHyG literal 0 HcmV?d00001 diff --git a/docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-system-info-detailed.xlsx b/docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-system-info-detailed.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7c4d9cd0e40919b9c3370f81334d46bd21539d0a GIT binary patch literal 83914 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

    ijfZutL0b^5WHa^rGZ?+h`&>`Xs=yR&1Az(8V_ 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 ZSC9t(jNre#^6)@Lp8=}y<*)SP{{Sw*CMN&@ literal 0 HcmV?d00001 diff --git a/docs/sphinx_setup/_static/benchmarks_files/data/graph-data-ov.json b/docs/sphinx_setup/_static/benchmarks_files/data/graph-data-ov.json index 68f155fdc1dc6c..0bb38199b997ca 100644 --- a/docs/sphinx_setup/_static/benchmarks_files/data/graph-data-ov.json +++ b/docs/sphinx_setup/_static/benchmarks_files/data/graph-data-ov.json @@ -1,17 +1,17 @@ [ { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Platform": "Intel® Celeron® 6305E CPU-only", "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 314.12, - "fp16": 337.18, - "fp32": "", + "int8": 11.75, + "fp16": "", + "fp32": 4.32, "bf16": "" } ], @@ -22,7 +22,7 @@ "Precisions": [ { "int4": "", - "int8": 4.77, + "int8": 87.69, "fp16": "", "fp32": "", "bf16": "" @@ -34,18 +34,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 102.57, - "fp16": 95.51, - "fp32": "", + "int8": 21.17, + "fp16": "", + "fp32": 15.03, "bf16": "" } ], @@ -56,7 +56,7 @@ "Precisions": [ { "int4": "", - "int8": 12.27, + "int8": 49.24, "fp16": "", "fp32": "", "bf16": "" @@ -68,18 +68,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 32.5, "fp16": "", - "fp32": "", + "fp32": 21.9, "bf16": "" } ], @@ -89,9 +89,9 @@ "latency": { "Precisions": [ { - "int4": 21.73, - "int8": 26.75, - "fp16": 45.14, + "int4": "", + "int8": 35.99, + "fp16": "", "fp32": "", "bf16": "" } @@ -102,18 +102,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 326.6, - "fp16": 313.96, - "fp32": "", + "int8": 33.02, + "fp16": "", + "fp32": 12.59, "bf16": "" } ], @@ -124,7 +124,7 @@ "Precisions": [ { "int4": "", - "int8": 5.37, + "int8": 45.4, "fp16": "", "fp32": "", "bf16": "" @@ -136,18 +136,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 39.93, "fp16": "", - "fp32": "", + "fp32": 15.99, "bf16": "" } ], @@ -157,9 +157,9 @@ "latency": { "Precisions": [ { - "int4": 28.74, - "int8": 38.83, - "fp16": 56.81, + "int4": "", + "int8": 40.15, + "fp16": "", "fp32": "", "bf16": "" } @@ -170,18 +170,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 119.95, "fp16": "", - "fp32": "", + "fp32": 47.19, "bf16": "" } ], @@ -191,9 +191,9 @@ "latency": { "Precisions": [ { - "int4": 25.97, - "int8": 35.32, - "fp16": 52.34, + "int4": "", + "int8": 13.31, + "fp16": "", "fp32": "", "bf16": "" } @@ -204,18 +204,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "llama-3-8b", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 33.13, "fp16": "", - "fp32": "", + "fp32": 22.73, "bf16": "" } ], @@ -225,8 +225,8 @@ "latency": { "Precisions": [ { - "int4": 28.16, - "int8": 38.34, + "int4": "", + "int8": 31.1, "fp16": "", "fp32": "", "bf16": "" @@ -238,18 +238,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 35.25, - "fp16": 19.43, - "fp32": "", + "int8": 50.91, + "fp16": "", + "fp32": 18.37, "bf16": "" } ], @@ -260,7 +260,7 @@ "Precisions": [ { "int4": "", - "int8": 47.87, + "int8": 22.52, "fp16": "", "fp32": "", "bf16": "" @@ -272,18 +272,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 38.31, "fp16": "", - "fp32": "", + "fp32": 13.71, "bf16": "" } ], @@ -293,9 +293,9 @@ "latency": { "Precisions": [ { - "int4": 26.02, - "int8": 36.92, - "fp16": 55.23, + "int4": "", + "int8": 28.51, + "fp16": "", "fp32": "", "bf16": "" } @@ -306,18 +306,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2312.44, - "fp16": 2058.66, - "fp32": "", + "int8": 86.13, + "fp16": "", + "fp32": 33.75, "bf16": "" } ], @@ -328,7 +328,7 @@ "Precisions": [ { "int4": "", - "int8": 1.12, + "int8": 16.59, "fp16": "", "fp32": "", "bf16": "" @@ -340,18 +340,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 44.68, "fp16": "", - "fp32": "", + "fp32": 17.96, "bf16": "" } ], @@ -361,9 +361,9 @@ "latency": { "Precisions": [ { - "int4": 23.67, - "int8": 27.58, - "fp16": 38.55, + "int4": "", + "int8": 37.63, + "fp16": "", "fp32": "", "bf16": "" } @@ -374,18 +374,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1398.81, - "fp16": 1041.08, - "fp32": "", + "int8": 60.67, + "fp16": "", + "fp32": 23.99, "bf16": "" } ], @@ -396,7 +396,7 @@ "Precisions": [ { "int4": "", - "int8": 1.42, + "int8": 24.02, "fp16": "", "fp32": "", "bf16": "" @@ -408,18 +408,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 112.15, - "fp16": 72.82, - "fp32": "", + "int8": 27.34, + "fp16": "", + "fp32": 18.04, "bf16": "" } ], @@ -430,7 +430,7 @@ "Precisions": [ { "int4": "", - "int8": 14.59, + "int8": 30.86, "fp16": "", "fp32": "", "bf16": "" @@ -442,18 +442,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1315.9, - "fp16": 1197.39, - "fp32": "", + "int8": 32.78, + "fp16": "", + "fp32": 21.32, "bf16": "" } ], @@ -464,7 +464,7 @@ "Precisions": [ { "int4": "", - "int8": 1.45, + "int8": 38.38, "fp16": "", "fp32": "", "bf16": "" @@ -476,18 +476,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 168.92, "fp16": "", - "fp32": "", + "fp32": 67.23, "bf16": "" } ], @@ -498,8 +498,8 @@ "Precisions": [ { "int4": "", - "int8": 2.29, - "fp16": 2.23, + "int8": 10.73, + "fp16": "", "fp32": "", "bf16": "" } @@ -510,18 +510,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 52.48, "fp16": "", - "fp32": "", + "fp32": 35.73, "bf16": "" } ], @@ -532,8 +532,8 @@ "Precisions": [ { "int4": "", - "int8": 2.31, - "fp16": 2.24, + "int8": 26.63, + "fp16": "", "fp32": "", "bf16": "" } @@ -544,18 +544,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 233.96, - "fp16": 178.57, - "fp32": "", + "int8": 20.68, + "fp16": "", + "fp32": 14.76, "bf16": "" } ], @@ -566,7 +566,7 @@ "Precisions": [ { "int4": "", - "int8": 6.57, + "int8": 49.95, "fp16": "", "fp32": "", "bf16": "" @@ -578,18 +578,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1401.38, - "fp16": 1368.88, - "fp32": "", + "int8": 218.51, + "fp16": "", + "fp32": 80.07, "bf16": "" } ], @@ -600,7 +600,7 @@ "Precisions": [ { "int4": "", - "int8": 1.26, + "int8": 14.63, "fp16": "", "fp32": "", "bf16": "" @@ -612,18 +612,18 @@ } }, { - "Platform": "Intel® Arc™ A-Series Graphics dGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 519.61, - "fp16": 560.01, - "fp32": "", + "int8": 590.15, + "fp16": "", + "fp32": 224.94, "bf16": "" } ], @@ -634,7 +634,7 @@ "Precisions": [ { "int4": "", - "int8": 3.28, + "int8": 9.22, "fp16": "", "fp32": "", "bf16": "" @@ -646,18 +646,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 23.13, + "int8": 881.6, "fp16": "", - "fp32": 24.02, + "fp32": 338.79, "bf16": "" } ], @@ -668,7 +668,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 5.08, "fp16": "", "fp32": "", "bf16": "" @@ -680,19 +680,19 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 229.14, + "int8": 3032.01, "fp16": "", - "fp32": 219.47, - "bf16": "" + "fp32": 488.41, + "bf16": 1975.07 } ], "Unit": "FPS", @@ -702,10 +702,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.74, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 4.78 } ], "Unit": "ms", @@ -714,19 +714,19 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 59.42, + "int8": 4693.95, "fp16": "", - "fp32": 54.49, - "bf16": "" + "fp32": 562.05, + "bf16": 3202.49 } ], "Unit": "FPS", @@ -736,10 +736,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.77, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 4.61 } ], "Unit": "ms", @@ -748,18 +748,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.16, + "int8": 427.23, "fp16": "", - "fp32": 1.15, + "fp32": 164.01, "bf16": "" } ], @@ -770,7 +770,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 11.12, "fp16": "", "fp32": "", "bf16": "" @@ -782,18 +782,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 112.0, + "int8": 429.84, "fp16": "", - "fp32": 98.56, + "fp32": 167.86, "bf16": "" } ], @@ -804,7 +804,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 8.0, "fp16": "", "fp32": "", "bf16": "" @@ -816,18 +816,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 77.37, + "int8": 76.06, "fp16": "", - "fp32": 68.49, + "fp32": 30.37, "bf16": "" } ], @@ -838,7 +838,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 25.96, "fp16": "", "fp32": "", "bf16": "" @@ -850,18 +850,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 36.35, + "int8": 52.79, "fp16": "", - "fp32": 34.1, + "fp32": 21.03, "bf16": "" } ], @@ -872,7 +872,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 32.08, "fp16": "", "fp32": "", "bf16": "" @@ -884,18 +884,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.26, + "int8": 73.09, "fp16": "", - "fp32": 4.88, + "fp32": 26.35, "bf16": "" } ], @@ -906,7 +906,7 @@ "Precisions": [ { "int4": "", - "int8": 140.26, + "int8": 19.84, "fp16": "", "fp32": "", "bf16": "" @@ -918,18 +918,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", - "Parameters": { - "throughput": { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { "Precisions": [ { "int4": "", - "int8": 133.5, - "fp16": "", - "fp32": 80.49, + "int8": 404.72, + "fp16": 444.29, + "fp32": "", "bf16": "" } ], @@ -940,7 +940,7 @@ "Precisions": [ { "int4": "", - "int8": 7.82, + "int8": 3.24, "fp16": "", "fp32": "", "bf16": "" @@ -952,18 +952,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 19.86, + "int8": "", "fp16": "", - "fp32": 8.14, + "fp32": "", "bf16": "" } ], @@ -974,7 +974,7 @@ "Precisions": [ { "int4": "", - "int8": 51.42, + "int8": 4.76, "fp16": "", "fp32": "", "bf16": "" @@ -986,18 +986,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 45.7, - "fp16": "", - "fp32": 21.58, + "int8": 187.77, + "fp16": 149.65, + "fp32": "", "bf16": "" } ], @@ -1008,7 +1008,7 @@ "Precisions": [ { "int4": "", - "int8": 22.77, + "int8": 5.71, "fp16": "", "fp32": "", "bf16": "" @@ -1020,18 +1020,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 22.81, - "fp16": "", - "fp32": 10.3, + "int8": 89.12, + "fp16": 74.2, + "fp32": "", "bf16": "" } ], @@ -1042,7 +1042,7 @@ "Precisions": [ { "int4": "", - "int8": 45.22, + "int8": 12.51, "fp16": "", "fp32": "", "bf16": "" @@ -1054,18 +1054,18 @@ } }, { - "Platform": "Intel® Atom® X6425E CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.28, - "fp16": "", - "fp32": 5.11, + "int8": 89.38, + "fp16": 74.26, + "fp32": "", "bf16": "" } ], @@ -1076,7 +1076,7 @@ "Precisions": [ { "int4": "", - "int8": 100.18, + "int8": 12.3, "fp16": "", "fp32": "", "bf16": "" @@ -1088,17 +1088,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.4, - "fp16": "", + "int8": 177.17, + "fp16": 139.65, "fp32": "", "bf16": "" } @@ -1110,7 +1110,7 @@ "Precisions": [ { "int4": "", - "int8": 720.0, + "int8": 6.02, "fp16": "", "fp32": "", "bf16": "" @@ -1122,17 +1122,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 21.7, - "fp16": 25.08, + "int8": 42.88, + "fp16": 33.61, "fp32": "", "bf16": "" } @@ -1144,7 +1144,7 @@ "Precisions": [ { "int4": "", - "int8": 60.84, + "int8": 26.85, "fp16": "", "fp32": "", "bf16": "" @@ -1156,17 +1156,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 188.13, - "fp16": 222.45, + "int8": 47.07, + "fp16": 39.06, "fp32": "", "bf16": "" } @@ -1178,7 +1178,7 @@ "Precisions": [ { "int4": "", - "int8": 7.58, + "int8": 19.89, "fp16": "", "fp32": "", "bf16": "" @@ -1190,17 +1190,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 48.1, - "fp16": 51.66, + "int8": 47.0, + "fp16": 39.61, "fp32": "", "bf16": "" } @@ -1212,7 +1212,7 @@ "Precisions": [ { "int4": "", - "int8": 22.9, + "int8": 18.15, "fp16": "", "fp32": "", "bf16": "" @@ -1224,17 +1224,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.16, - "fp16": 1.16, + "int8": 67.79, + "fp16": 52.83, "fp32": "", "bf16": "" } @@ -1246,7 +1246,7 @@ "Precisions": [ { "int4": "", - "int8": 871.11, + "int8": 17.21, "fp16": "", "fp32": "", "bf16": "" @@ -1258,17 +1258,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 92.86, - "fp16": 95.65, + "int8": 47.29, + "fp16": 40.73, "fp32": "", "bf16": "" } @@ -1280,7 +1280,7 @@ "Precisions": [ { "int4": "", - "int8": 13.47, + "int8": 21.63, "fp16": "", "fp32": "", "bf16": "" @@ -1292,17 +1292,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.98, - "fp16": "", + "int8": 88.92, + "fp16": 69.92, "fp32": "", "bf16": "" } @@ -1314,7 +1314,7 @@ "Precisions": [ { "int4": "", - "int8": 505.58, + "int8": 12.82, "fp16": "", "fp32": "", "bf16": "" @@ -1326,17 +1326,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 66.16, - "fp16": 66.59, + "int8": 66.18, + "fp16": 52.8, "fp32": "", "bf16": "" } @@ -1348,7 +1348,7 @@ "Precisions": [ { "int4": "", - "int8": 16.65, + "int8": 14.46, "fp16": "", "fp32": "", "bf16": "" @@ -1360,17 +1360,17 @@ } }, { - "Platform": "Intel® Atom® X6425E iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 31.72, - "fp16": 33.08, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -1382,7 +1382,7 @@ "Precisions": [ { "int4": "", - "int8": 35.73, + "int8": 12.42, "fp16": "", "fp32": "", "bf16": "" @@ -1394,18 +1394,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 39.13, - "fp16": "", - "fp32": 30.4, + "int8": 159.37, + "fp16": 100.87, + "fp32": "", "bf16": "" } ], @@ -1416,7 +1416,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 6.11, "fp16": "", "fp32": "", "bf16": "" @@ -1428,18 +1428,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 476.24, - "fp16": "", - "fp32": 304.46, + "int8": 152.5, + "fp16": 108.49, + "fp32": "", "bf16": "" } ], @@ -1450,7 +1450,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 7.14, "fp16": "", "fp32": "", "bf16": "" @@ -1462,18 +1462,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 131.17, - "fp16": "", - "fp32": 55.39, + "int8": 316.53, + "fp16": 268.1, + "fp32": "", "bf16": "" } ], @@ -1484,7 +1484,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.61, "fp16": "", "fp32": "", "bf16": "" @@ -1496,18 +1496,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.18, + "int8": 44.78, "fp16": "", - "fp32": 0.87, + "fp32": 33.39, "bf16": "" } ], @@ -1530,18 +1530,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 235.68, + "int8": "", "fp16": "", - "fp32": 115.73, + "fp32": 16.3, "bf16": "" } ], @@ -1564,18 +1564,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 148.86, + "int8": 49.58, "fp16": "", - "fp32": 62.44, + "fp32": 26.72, "bf16": "" } ], @@ -1598,18 +1598,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 68.86, + "int8": 85.59, "fp16": "", - "fp32": 37.06, + "fp32": 51.66, "bf16": "" } ], @@ -1632,18 +1632,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 14.29, + "int8": 48.88, "fp16": "", - "fp32": 11.19, + "fp32": 25.61, "bf16": "" } ], @@ -1654,7 +1654,7 @@ "Precisions": [ { "int4": "", - "int8": 71.91, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1666,18 +1666,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 273.72, + "int8": "", "fp16": "", - "fp32": 169.78, + "fp32": "", "bf16": "" } ], @@ -1688,7 +1688,7 @@ "Precisions": [ { "int4": "", - "int8": 4.08, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1700,18 +1700,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 45.28, + "int8": 61.03, "fp16": "", - "fp32": 18.86, + "fp32": 32.25, "bf16": "" } ], @@ -1722,7 +1722,7 @@ "Precisions": [ { "int4": "", - "int8": 23.78, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1734,10 +1734,10 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -1745,7 +1745,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 0.31, + "fp32": 46.74, "bf16": "" } ], @@ -1768,18 +1768,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 98.26, + "int8": 240.55, "fp16": "", - "fp32": 45.78, + "fp32": 157.84, "bf16": "" } ], @@ -1790,7 +1790,7 @@ "Precisions": [ { "int4": "", - "int8": 10.54, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1802,18 +1802,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "bert-base-cased", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 52.87, + "int8": "", "fp16": "", - "fp32": 23.25, + "fp32": 73.76, "bf16": "" } ], @@ -1824,7 +1824,7 @@ "Precisions": [ { "int4": "", - "int8": 20.15, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1836,18 +1836,18 @@ } }, { - "Platform": "Intel® Atom® x7425E CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 21.72, + "int8": 1.18, "fp16": "", - "fp32": 11.81, + "fp32": 0.38, "bf16": "" } ], @@ -1858,7 +1858,7 @@ "Precisions": [ { "int4": "", - "int8": 47.51, + "int8": 853.85, "fp16": "", "fp32": "", "bf16": "" @@ -1870,18 +1870,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", + "Platform": "Intel® Core™ i3-8100 CPU-only", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.65, + "int8": 2.0, "fp16": "", - "fp32": "", + "fp32": 1.27, "bf16": "" } ], @@ -1892,7 +1892,7 @@ "Precisions": [ { "int4": "", - "int8": 367.08, + "int8": 510.0, "fp16": "", "fp32": "", "bf16": "" @@ -1904,18 +1904,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 40.31, - "fp16": 36.41, - "fp32": "", + "int8": 3.05, + "fp16": "", + "fp32": 1.87, "bf16": "" } ], @@ -1926,7 +1926,7 @@ "Precisions": [ { "int4": "", - "int8": 34.3, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -1938,17 +1938,17 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 424.02, - "fp16": 324.62, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -1960,7 +1960,7 @@ "Precisions": [ { "int4": "", - "int8": 3.54, + "int8": 424.59, "fp16": "", "fp32": "", "bf16": "" @@ -1972,17 +1972,17 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 109.29, - "fp16": 64.53, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -1994,7 +1994,7 @@ "Precisions": [ { "int4": "", - "int8": 10.4, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -2006,18 +2006,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.19, - "fp16": 1.34, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 3.91, "bf16": "" } ], @@ -2028,7 +2028,7 @@ "Precisions": [ { "int4": "", - "int8": 464.61, + "int8": 128.89, "fp16": "", "fp32": "", "bf16": "" @@ -2040,18 +2040,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 215.69, - "fp16": 135.07, - "fp32": "", + "int8": 3.01, + "fp16": "", + "fp32": 1.89, "bf16": "" } ], @@ -2062,7 +2062,7 @@ "Precisions": [ { "int4": "", - "int8": 6.29, + "int8": 324.87, "fp16": "", "fp32": "", "bf16": "" @@ -2074,18 +2074,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.43, + "int8": 5.03, "fp16": "", - "fp32": "", + "fp32": 1.64, "bf16": "" } ], @@ -2096,7 +2096,7 @@ "Precisions": [ { "int4": "", - "int8": 291.91, + "int8": 198.73, "fp16": "", "fp32": "", "bf16": "" @@ -2108,18 +2108,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 126.79, - "fp16": 81.83, - "fp32": "", + "int8": 3.69, + "fp16": "", + "fp32": 1.2, "bf16": "" } ], @@ -2130,7 +2130,7 @@ "Precisions": [ { "int4": "", - "int8": 8.64, + "int8": 268.0, "fp16": "", "fp32": "", "bf16": "" @@ -2142,18 +2142,18 @@ } }, { - "Platform": "Intel® Atom® x7425E iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 61.98, - "fp16": 44.91, - "fp32": "", + "int8": 7.52, + "fp16": "", + "fp32": 2.85, "bf16": "" } ], @@ -2164,7 +2164,7 @@ "Precisions": [ { "int4": "", - "int8": 18.29, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -2176,18 +2176,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 44.92, + "int8": "", "fp16": "", - "fp32": 33.4, + "fp32": "", "bf16": "" } ], @@ -2198,7 +2198,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 360.08, "fp16": "", "fp32": "", "bf16": "" @@ -2210,18 +2210,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Platform": "Intel® Core™ i7-1360P CPU-only", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.86, + "int8": 5.26, "fp16": "", - "fp32": 3.72, + "fp32": 2.05, "bf16": "" } ], @@ -2244,18 +2244,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 57.82, + "int8": "", "fp16": "", - "fp32": 48.68, + "fp32": "", "bf16": "" } ], @@ -2266,7 +2266,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 329.86, "fp16": "", "fp32": "", "bf16": "" @@ -2278,18 +2278,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.55, + "int8": 3.14, "fp16": "", - "fp32": 0.51, + "fp32": 1.9, "bf16": "" } ], @@ -2312,18 +2312,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 533.91, + "int8": 16.05, "fp16": "", - "fp32": 397.76, + "fp32": 5.99, "bf16": "" } ], @@ -2334,7 +2334,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 94.97, "fp16": "", "fp32": "", "bf16": "" @@ -2346,18 +2346,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 198.76, + "int8": 5.17, "fp16": "", - "fp32": 116.53, + "fp32": 3.33, "bf16": "" } ], @@ -2380,18 +2380,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.06, + "int8": "", "fp16": "", - "fp32": 2.71, + "fp32": 1.27, "bf16": "" } ], @@ -2402,7 +2402,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 513.28, "fp16": "", "fp32": "", "bf16": "" @@ -2414,18 +2414,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 317.11, + "int8": 21.82, "fp16": "", - "fp32": 194.62, + "fp32": 6.98, "bf16": "" } ], @@ -2436,7 +2436,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 102.33, "fp16": "", "fp32": "", "bf16": "" @@ -2448,18 +2448,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.86, + "int8": 51.17, "fp16": "", - "fp32": 4.55, + "fp32": 18.46, "bf16": "" } ], @@ -2470,7 +2470,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 48.78, "fp16": "", "fp32": "", "bf16": "" @@ -2482,18 +2482,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 261.36, + "int8": 78.31, "fp16": "", - "fp32": 151.54, + "fp32": 29.72, "bf16": "" } ], @@ -2504,7 +2504,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 38.13, "fp16": "", "fp32": "", "bf16": "" @@ -2516,19 +2516,19 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 115.82, + "int8": 244.06, "fp16": "", - "fp32": 78.39, - "bf16": "" + "fp32": 41.97, + "bf16": 211.62 } ], "Unit": "FPS", @@ -2538,10 +2538,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 25.21, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 27.63 } ], "Unit": "ms", @@ -2550,19 +2550,19 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 11.77, + "int8": 305.38, "fp16": "", - "fp32": 4.32, - "bf16": "" + "fp32": 55.37, + "bf16": 289.16 } ], "Unit": "FPS", @@ -2572,10 +2572,10 @@ "Precisions": [ { "int4": "", - "int8": 87.85, + "int8": 19.29, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 25.79 } ], "Unit": "ms", @@ -2584,18 +2584,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.18, + "int8": 38.28, "fp16": "", - "fp32": 0.38, + "fp32": 13.45, "bf16": "" } ], @@ -2606,7 +2606,7 @@ "Precisions": [ { "int4": "", - "int8": 853.42, + "int8": 69.24, "fp16": "", "fp32": "", "bf16": "" @@ -2618,18 +2618,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 19.01, + "int8": 38.81, "fp16": "", - "fp32": 11.49, + "fp32": 15.09, "bf16": "" } ], @@ -2640,7 +2640,7 @@ "Precisions": [ { "int4": "", - "int8": 55.53, + "int8": 62.64, "fp16": "", "fp32": "", "bf16": "" @@ -2652,18 +2652,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.17, + "int8": 7.34, "fp16": "", - "fp32": 0.04, + "fp32": 2.49, "bf16": "" } ], @@ -2674,7 +2674,7 @@ "Precisions": [ { "int4": "", - "int8": 5757.41, + "int8": 194.83, "fp16": "", "fp32": "", "bf16": "" @@ -2686,18 +2686,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 301.12, + "int8": 5.5, "fp16": "", - "fp32": 134.01, + "fp32": 1.72, "bf16": "" } ], @@ -2708,7 +2708,7 @@ "Precisions": [ { "int4": "", - "int8": 3.63, + "int8": 246.14, "fp16": "", "fp32": "", "bf16": "" @@ -2720,18 +2720,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 51.67, + "int8": 7.21, "fp16": "", - "fp32": 14.46, + "fp32": 2.31, "bf16": "" } ], @@ -2742,7 +2742,7 @@ "Precisions": [ { "int4": "", - "int8": 19.81, + "int8": 195.21, "fp16": "", "fp32": "", "bf16": "" @@ -2754,18 +2754,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 0.23, + "int8": 121.51, + "fp16": 110.4, + "fp32": "", "bf16": "" } ], @@ -2776,7 +2776,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 9.1, "fp16": "", "fp32": "", "bf16": "" @@ -2788,18 +2788,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 115.07, + "int8": "", "fp16": "", - "fp32": 37.09, + "fp32": "", "bf16": "" } ], @@ -2810,7 +2810,7 @@ "Precisions": [ { "int4": "", - "int8": 9.07, + "int8": 12.35, "fp16": "", "fp32": "", "bf16": "" @@ -2822,18 +2822,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.49, - "fp16": "", - "fp32": 0.37, + "int8": 30.58, + "fp16": 21.73, + "fp32": "", "bf16": "" } ], @@ -2844,7 +2844,7 @@ "Precisions": [ { "int4": "", - "int8": 671.73, + "int8": 32.8, "fp16": "", "fp32": "", "bf16": "" @@ -2856,18 +2856,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 55.57, - "fp16": "", - "fp32": 18.29, + "int8": 10.38, + "fp16": 6.72, + "fp32": "", "bf16": "" } ], @@ -2878,7 +2878,7 @@ "Precisions": [ { "int4": "", - "int8": 18.3, + "int8": 97.03, "fp16": "", "fp32": "", "bf16": "" @@ -2890,18 +2890,18 @@ } }, { - "Platform": "Intel® Celeron® 6305E CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 26.0, - "fp16": "", - "fp32": 9.66, + "int8": 10.38, + "fp16": 6.74, + "fp32": "", "bf16": "" } ], @@ -2912,7 +2912,7 @@ "Precisions": [ { "int4": "", - "int8": 40.11, + "int8": 97.28, "fp16": "", "fp32": "", "bf16": "" @@ -2924,17 +2924,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 42.84, - "fp16": 33.56, + "int8": 32.32, + "fp16": "", "fp32": "", "bf16": "" } @@ -2946,7 +2946,7 @@ "Precisions": [ { "int4": "", - "int8": 26.86, + "int8": 43.5, "fp16": "", "fp32": "", "bf16": "" @@ -2958,17 +2958,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", + "Platform": "Intel® Atom® x7425E iGPU-only", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.49, - "fp16": 3.64, + "int8": 2.91, + "fp16": "", "fp32": "", "bf16": "" } @@ -2980,7 +2980,7 @@ "Precisions": [ { "int4": "", - "int8": 192.72, + "int8": 329.17, "fp16": "", "fp32": "", "bf16": "" @@ -2992,17 +2992,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 73.41, - "fp16": 58.57, + "int8": 1.4, + "fp16": "", "fp32": "", "bf16": "" } @@ -3014,7 +3014,7 @@ "Precisions": [ { "int4": "", - "int8": 25.01, + "int8": 720.67, "fp16": "", "fp32": "", "bf16": "" @@ -3027,16 +3027,16 @@ }, { "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.48, - "fp16": 0.53, + "int8": 5.47, + "fp16": 3.64, "fp32": "", "bf16": "" } @@ -3048,7 +3048,7 @@ "Precisions": [ { "int4": "", - "int8": 2110.05, + "int8": 192.94, "fp16": "", "fp32": "", "bf16": "" @@ -3060,17 +3060,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 673.95, - "fp16": 504.33, + "int8": 5.41, + "fp16": 4.03, "fp32": "", "bf16": "" } @@ -3082,7 +3082,7 @@ "Precisions": [ { "int4": "", - "int8": 2.72, + "int8": 173.57, "fp16": "", "fp32": "", "bf16": "" @@ -3094,17 +3094,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 203.39, - "fp16": 118.57, + "int8": 6.17, + "fp16": 4.28, "fp32": "", "bf16": "" } @@ -3116,7 +3116,7 @@ "Precisions": [ { "int4": "", - "int8": 6.32, + "int8": 137.83, "fp16": "", "fp32": "", "bf16": "" @@ -3128,17 +3128,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.09, - "fp16": 2.78, + "int8": 8.85, + "fp16": 6.59, "fp32": "", "bf16": "" } @@ -3150,7 +3150,7 @@ "Precisions": [ { "int4": "", - "int8": 210.2, + "int8": 106.93, "fp16": "", "fp32": "", "bf16": "" @@ -3162,17 +3162,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 396.51, - "fp16": 222.39, + "int8": 5.41, + "fp16": 4.47, "fp32": "", "bf16": "" } @@ -3184,7 +3184,7 @@ "Precisions": [ { "int4": "", - "int8": 4.29, + "int8": 179.75, "fp16": "", "fp32": "", "bf16": "" @@ -3196,17 +3196,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.29, - "fp16": 4.48, + "int8": 11.76, + "fp16": 8.39, "fp32": "", "bf16": "" } @@ -3218,7 +3218,7 @@ "Precisions": [ { "int4": "", - "int8": 121.5, + "int8": 87.43, "fp16": "", "fp32": "", "bf16": "" @@ -3230,17 +3230,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 284.94, - "fp16": 157.32, + "int8": 8.08, + "fp16": 5.89, "fp32": "", "bf16": "" } @@ -3252,7 +3252,7 @@ "Precisions": [ { "int4": "", - "int8": 4.83, + "int8": 110.63, "fp16": "", "fp32": "", "bf16": "" @@ -3264,17 +3264,17 @@ } }, { - "Platform": "Intel® Celeron® 6305E iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 121.72, - "fp16": 81.7, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -3286,7 +3286,7 @@ "Precisions": [ { "int4": "", - "int8": 10.3, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -3298,18 +3298,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 123.16, + "int8": 2.39, "fp16": "", - "fp32": 72.51, + "fp32": "", "bf16": "" } ], @@ -3320,7 +3320,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 408.09, "fp16": "", "fp32": "", "bf16": "" @@ -3332,18 +3332,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 12.24, - "fp16": "", - "fp32": 6.12, + "int8": 23.39, + "fp16": 14.13, + "fp32": "", "bf16": "" } ], @@ -3354,7 +3354,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 39.66, "fp16": "", "fp32": "", "bf16": "" @@ -3366,18 +3366,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 117.76, + "int8": "", "fp16": "", - "fp32": 93.31, + "fp32": "", "bf16": "" } ], @@ -3400,18 +3400,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.46, - "fp16": "", - "fp32": 0.58, + "int8": 54.9, + "fp16": 49.62, + "fp32": "", "bf16": "" } ], @@ -3422,7 +3422,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 20.12, "fp16": "", "fp32": "", "bf16": "" @@ -3434,18 +3434,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3065.32, + "int8": 5.85, "fp16": "", - "fp32": 1695.14, + "fp32": 3.73, "bf16": "" } ], @@ -3468,18 +3468,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 607.16, + "int8": "", "fp16": "", - "fp32": 256.25, + "fp32": 1.5, "bf16": "" } ], @@ -3502,18 +3502,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 17.78, + "int8": 5.12, "fp16": "", - "fp32": 5.04, + "fp32": 2.56, "bf16": "" } ], @@ -3536,18 +3536,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 704.49, + "int8": 9.46, "fp16": "", - "fp32": 374.02, + "fp32": 5.5, "bf16": "" } ], @@ -3570,18 +3570,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 17.53, + "int8": 5.05, "fp16": "", - "fp32": 8.01, + "fp32": 2.57, "bf16": "" } ], @@ -3604,18 +3604,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 667.92, + "int8": "", "fp16": "", - "fp32": 247.4, + "fp32": 5.4, "bf16": "" } ], @@ -3638,18 +3638,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 236.25, + "int8": 6.41, "fp16": "", - "fp32": 151.99, + "fp32": 3.19, "bf16": "" } ], @@ -3672,18 +3672,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 52.93, + "int8": 8.01, "fp16": "", - "fp32": 20.85, + "fp32": 4.49, "bf16": "" } ], @@ -3694,7 +3694,7 @@ "Precisions": [ { "int4": "", - "int8": 32.01, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -3706,18 +3706,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.5, + "int8": 22.64, "fp16": "", - "fp32": 1.7, + "fp32": 12.18, "bf16": "" } ], @@ -3728,7 +3728,7 @@ "Precisions": [ { "int4": "", - "int8": 245.77, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -3740,18 +3740,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "chatglm2-6b", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "bert-large-uncased-whole-word-masking-squad-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 12.39, "fp16": "", - "fp32": "", + "fp32": 6.33, "bf16": "" } ], @@ -3761,9 +3761,9 @@ "latency": { "Precisions": [ { - "int4": 105.48, - "int8": 157.96, - "fp16": 208.79, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -3774,18 +3774,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Platform": "Intel® Atom® x7425E CPU-only", "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 72.54, + "int8": 14.28, "fp16": "", - "fp32": 46.64, + "fp32": 11.21, "bf16": "" } ], @@ -3796,7 +3796,7 @@ "Precisions": [ { "int4": "", - "int8": 23.79, + "int8": 71.92, "fp16": "", "fp32": "", "bf16": "" @@ -3808,18 +3808,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 7.25, "fp16": "", - "fp32": "", + "fp32": 4.96, "bf16": "" } ], @@ -3829,9 +3829,9 @@ "latency": { "Precisions": [ { - "int4": 96.87, - "int8": 188.32, - "fp16": 244.7, + "int4": "", + "int8": 139.91, + "fp16": "", "fp32": "", "bf16": "" } @@ -3842,18 +3842,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 18.99, "fp16": "", - "fp32": "", + "fp32": 11.5, "bf16": "" } ], @@ -3863,9 +3863,9 @@ "latency": { "Precisions": [ { - "int4": 115.05, - "int8": 190.79, - "fp16": 246.24, + "int4": "", + "int8": 55.68, + "fp16": "", "fp32": "", "bf16": "" } @@ -3876,18 +3876,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "llama-3-8b", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 37.48, "fp16": "", - "fp32": "", + "fp32": 27.9, "bf16": "" } ], @@ -3897,9 +3897,9 @@ "latency": { "Precisions": [ { - "int4": 207.44, - "int8": 143.95, - "fp16": 271.61, + "int4": "", + "int8": 27.49, + "fp16": "", "fp32": "", "bf16": "" } @@ -3910,18 +3910,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.9, + "int8": 59.12, "fp16": "", - "fp32": 0.2, + "fp32": 32.99, "bf16": "" } ], @@ -3932,7 +3932,7 @@ "Precisions": [ { "int4": "", - "int8": 1323.81, + "int8": 20.56, "fp16": "", "fp32": "", "bf16": "" @@ -3944,18 +3944,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 44.97, "fp16": "", - "fp32": "", + "fp32": 24.31, "bf16": "" } ], @@ -3965,9 +3965,9 @@ "latency": { "Precisions": [ { - "int4": 109.4, - "int8": 199.33, - "fp16": 262.37, + "int4": "", + "int8": 32.17, + "fp16": "", "fp32": "", "bf16": "" } @@ -3978,18 +3978,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1501.29, + "int8": 56.87, "fp16": "", - "fp32": 586.49, + "fp32": 36.06, "bf16": "" } ], @@ -4000,7 +4000,7 @@ "Precisions": [ { "int4": "", - "int8": 1.57, + "int8": 28.54, "fp16": "", "fp32": "", "bf16": "" @@ -4012,18 +4012,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 152.17, "fp16": "", - "fp32": "", + "fp32": 93.19, "bf16": "" } ], @@ -4033,9 +4033,9 @@ "latency": { "Precisions": [ { - "int4": 83.15, - "int8": 114.9, - "fp16": 148.56, + "int4": "", + "int8": 9.14, + "fp16": "", "fp32": "", "bf16": "" } @@ -4046,18 +4046,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 290.91, + "int8": 59.7, "fp16": "", - "fp32": 71.84, + "fp32": 42.45, "bf16": "" } ], @@ -4068,7 +4068,7 @@ "Precisions": [ { "int4": "", - "int8": 7.67, + "int8": 17.62, "fp16": "", "fp32": "", "bf16": "" @@ -4080,18 +4080,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 75.02, "fp16": "", - "fp32": 1.25, + "fp32": 41.47, "bf16": "" } ], @@ -4102,7 +4102,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 14.65, "fp16": "", "fp32": "", "bf16": "" @@ -4114,18 +4114,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 529.13, + "int8": 52.75, "fp16": "", - "fp32": 180.71, + "fp32": 21.83, "bf16": "" } ], @@ -4136,7 +4136,7 @@ "Precisions": [ { "int4": "", - "int8": 3.31, + "int8": 20.19, "fp16": "", "fp32": "", "bf16": "" @@ -4148,18 +4148,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.79, + "int8": 112.1, "fp16": "", - "fp32": 1.59, + "fp32": 61.82, "bf16": "" } ], @@ -4170,7 +4170,7 @@ "Precisions": [ { "int4": "", - "int8": 180.81, + "int8": 11.47, "fp16": "", "fp32": "", "bf16": "" @@ -4182,18 +4182,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 326.51, + "int8": 62.08, "fp16": "", - "fp32": 92.23, + "fp32": 39.8, "bf16": "" } ], @@ -4204,7 +4204,7 @@ "Precisions": [ { "int4": "", - "int8": 5.21, + "int8": 26.84, "fp16": "", "fp32": "", "bf16": "" @@ -4216,18 +4216,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 127.76, + "int8": 83.44, "fp16": "", - "fp32": 47.25, + "fp32": 43.76, "bf16": "" } ], @@ -4238,7 +4238,7 @@ "Precisions": [ { "int4": "", - "int8": 14.6, + "int8": 16.75, "fp16": "", "fp32": "", "bf16": "" @@ -4250,18 +4250,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 89.37, - "fp16": 74.27, - "fp32": "", + "int8": 52.39, + "fp16": "", + "fp32": 38.12, "bf16": "" } ], @@ -4272,7 +4272,7 @@ "Precisions": [ { "int4": "", - "int8": 12.29, + "int8": 17.79, "fp16": "", "fp32": "", "bf16": "" @@ -4284,18 +4284,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.39, - "fp16": 6.74, - "fp32": "", + "int8": 65.23, + "fp16": "", + "fp32": 41.09, "bf16": "" } ], @@ -4306,7 +4306,7 @@ "Precisions": [ { "int4": "", - "int8": 97.33, + "int8": 18.79, "fp16": "", "fp32": "", "bf16": "" @@ -4318,18 +4318,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Platform": "Intel® Core™ i9-13900K CPU-only", "Model": "efficientdet-d0", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 37.99, - "fp16": 34.96, - "fp32": "", + "int8": 220.01, + "fp16": "", + "fp32": 126.72, "bf16": "" } ], @@ -4340,7 +4340,7 @@ "Precisions": [ { "int4": "", - "int8": 27.48, + "int8": 7.33, "fp16": "", "fp32": "", "bf16": "" @@ -4352,18 +4352,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1982.75, - "fp16": 1361.8, - "fp32": "", + "int8": 15.45, + "fp16": "", + "fp32": 12.76, "bf16": "" } ], @@ -4374,7 +4374,7 @@ "Precisions": [ { "int4": "", - "int8": 0.69, + "int8": 66.3, "fp16": "", "fp32": "", "bf16": "" @@ -4386,18 +4386,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 772.85, - "fp16": 383.69, - "fp32": "", + "int8": 97.27, + "fp16": "", + "fp32": 48.02, "bf16": "" } ], @@ -4408,7 +4408,7 @@ "Precisions": [ { "int4": "", - "int8": 1.54, + "int8": 13.26, "fp16": "", "fp32": "", "bf16": "" @@ -4420,18 +4420,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 705.19, - "fp16": 458.52, - "fp32": "", + "int8": 35.92, + "fp16": "", + "fp32": 30.28, "bf16": "" } ], @@ -4442,7 +4442,7 @@ "Precisions": [ { "int4": "", - "int8": 1.65, + "int8": 28.54, "fp16": "", "fp32": "", "bf16": "" @@ -4454,18 +4454,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": 9.91, - "fp32": "", + "int8": 271.61, + "fp16": "", + "fp32": 166.53, "bf16": "" } ], @@ -4476,7 +4476,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 11.3, "fp16": "", "fp32": "", "bf16": "" @@ -4488,18 +4488,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 394.51, - "fp16": 300.62, - "fp32": "", + "int8": 576.89, + "fp16": "", + "fp32": 325.0, "bf16": "" } ], @@ -4510,7 +4510,7 @@ "Precisions": [ { "int4": "", - "int8": 2.83, + "int8": 7.03, "fp16": "", "fp32": "", "bf16": "" @@ -4522,18 +4522,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 127.59, - "fp16": 131.22, - "fp32": "", + "int8": 1014.6, + "fp16": "", + "fp32": 582.63, "bf16": "" } ], @@ -4544,7 +4544,7 @@ "Precisions": [ { "int4": "", - "int8": 9.0, + "int8": 4.2, "fp16": "", "fp32": "", "bf16": "" @@ -4556,19 +4556,19 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 158.5, - "fp16": 108.29, - "fp32": "", - "bf16": "" + "int8": 1454.4, + "fp16": "", + "fp32": 872.52, + "bf16": 1037.91 } ], "Unit": "FPS", @@ -4578,10 +4578,10 @@ "Precisions": [ { "int4": "", - "int8": 6.87, + "int8": 4.6, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 4.96 } ], "Unit": "ms", @@ -4590,19 +4590,19 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 19.78, - "fp16": 13.08, - "fp32": "", - "bf16": "" + "int8": 1736.65, + "fp16": "", + "fp32": 1132.21, + "bf16": 1408.76 } ], "Unit": "FPS", @@ -4612,10 +4612,10 @@ "Precisions": [ { "int4": "", - "int8": 50.82, + "int8": 4.6, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 4.68 } ], "Unit": "ms", @@ -4624,18 +4624,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 413.78, "fp16": "", - "fp32": "", + "fp32": 257.07, "bf16": "" } ], @@ -4645,9 +4645,9 @@ "latency": { "Precisions": [ { - "int4": 64.67, - "int8": 87.62, - "fp16": 162.47, + "int4": "", + "int8": 8.54, + "fp16": "", "fp32": "", "bf16": "" } @@ -4658,18 +4658,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 172.52, - "fp16": 142.15, - "fp32": "", + "int8": 497.16, + "fp16": "", + "fp32": 303.25, "bf16": "" } ], @@ -4680,7 +4680,7 @@ "Precisions": [ { "int4": "", - "int8": 7.96, + "int8": 5.86, "fp16": "", "fp32": "", "bf16": "" @@ -4692,18 +4692,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 97.68, "fp16": "", - "fp32": "", + "fp32": 67.18, "bf16": "" } ], @@ -4713,9 +4713,9 @@ "latency": { "Precisions": [ { - "int4": 69.8, - "int8": 101.51, - "fp16": 188.13, + "int4": "", + "int8": 21.46, + "fp16": "", "fp32": "", "bf16": "" } @@ -4726,18 +4726,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 70.93, "fp16": "", - "fp32": "", + "fp32": 46.39, "bf16": "" } ], @@ -4747,9 +4747,9 @@ "latency": { "Precisions": [ { - "int4": 73.91, - "int8": 102.29, - "fp16": 184.95, + "int4": "", + "int8": 25.46, + "fp16": "", "fp32": "", "bf16": "" } @@ -4760,18 +4760,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "llama-3-8b", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 92.57, "fp16": "", - "fp32": "", + "fp32": 61.6, "bf16": "" } ], @@ -4781,9 +4781,9 @@ "latency": { "Precisions": [ { - "int4": 71.5, - "int8": 111.72, - "fp16": 207.38, + "int4": "", + "int8": 13.58, + "fp16": "", "fp32": "", "bf16": "" } @@ -4794,17 +4794,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.82, - "fp16": 1.41, + "int8": 456.95, + "fp16": 402.8, "fp32": "", "bf16": "" } @@ -4816,7 +4816,7 @@ "Precisions": [ { "int4": "", - "int8": 528.53, + "int8": 2.93, "fp16": "", "fp32": "", "bf16": "" @@ -4828,10 +4828,10 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ @@ -4849,9 +4849,9 @@ "latency": { "Precisions": [ { - "int4": 70.17, - "int8": 107.23, - "fp16": 196.47, + "int4": "", + "int8": 4.8, + "fp16": "", "fp32": "", "bf16": "" } @@ -4862,17 +4862,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1399.46, - "fp16": 1370.74, + "int8": 147.83, + "fp16": 120.48, "fp32": "", "bf16": "" } @@ -4884,7 +4884,7 @@ "Precisions": [ { "int4": "", - "int8": 1.27, + "int8": 9.67, "fp16": "", "fp32": "", "bf16": "" @@ -4896,17 +4896,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 37.71, + "fp16": 34.85, "fp32": "", "bf16": "" } @@ -4917,9 +4917,9 @@ "latency": { "Precisions": [ { - "int4": 42.38, - "int8": 63.04, - "fp16": 107.68, + "int4": "", + "int8": 27.94, + "fp16": "", "fp32": "", "bf16": "" } @@ -4930,17 +4930,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 577.04, - "fp16": 377.92, + "int8": 37.99, + "fp16": 34.96, "fp32": "", "bf16": "" } @@ -4952,7 +4952,7 @@ "Precisions": [ { "int4": "", - "int8": 2.23, + "int8": 27.51, "fp16": "", "fp32": "", "bf16": "" @@ -4964,17 +4964,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 17.85, - "fp16": 9.97, + "int8": 13.38, + "fp16": 13.66, "fp32": "", "bf16": "" } @@ -4986,7 +4986,7 @@ "Precisions": [ { "int4": "", - "int8": 59.54, + "int8": 124.82, "fp16": "", "fp32": "", "bf16": "" @@ -4998,17 +4998,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 957.47, - "fp16": 682.95, + "int8": 40.02, + "fp16": 34.39, "fp32": "", "bf16": "" } @@ -5020,7 +5020,7 @@ "Precisions": [ { "int4": "", - "int8": 1.34, + "int8": 34.08, "fp16": "", "fp32": "", "bf16": "" @@ -5032,17 +5032,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 30.78, - "fp16": 18.37, + "int8": 21.7, + "fp16": 25.09, "fp32": "", "bf16": "" } @@ -5054,7 +5054,7 @@ "Precisions": [ { "int4": "", - "int8": 32.75, + "int8": 63.02, "fp16": "", "fp32": "", "bf16": "" @@ -5066,17 +5066,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 871.13, - "fp16": 499.08, + "int8": 73.6, + "fp16": 58.55, "fp32": "", "bf16": "" } @@ -5088,7 +5088,7 @@ "Precisions": [ { "int4": "", - "int8": 1.41, + "int8": 24.96, "fp16": "", "fp32": "", "bf16": "" @@ -5100,17 +5100,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 379.7, - "fp16": 272.5, + "int8": 68.83, + "fp16": 51.74, "fp32": "", "bf16": "" } @@ -5122,7 +5122,7 @@ "Precisions": [ { "int4": "", - "int8": 3.1, + "int8": 19.37, "fp16": "", "fp32": "", "bf16": "" @@ -5134,18 +5134,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 177.0, - "fp16": 139.71, - "fp32": 139.72, + "int8": 80.63, + "fp16": 60.04, + "fp32": "", "bf16": "" } ], @@ -5156,7 +5156,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 14.48, "fp16": "", "fp32": "", "bf16": "" @@ -5168,16 +5168,16 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 32.11, + "int8": 91.41, "fp16": "", "fp32": "", "bf16": "" @@ -5202,17 +5202,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", "Model": "efficientdet-d0", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 13.29, - "fp16": 13.68, + "int8": 56.47, + "fp16": 42.15, "fp32": "", "bf16": "" } @@ -5224,7 +5224,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 24.14, "fp16": "", "fp32": "", "bf16": "" @@ -5236,17 +5236,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3567.26, - "fp16": 2704.39, + "int8": 128.8, + "fp16": 97.86, "fp32": "", "bf16": "" } @@ -5258,7 +5258,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 12.63, "fp16": "", "fp32": "", "bf16": "" @@ -5270,17 +5270,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1903.03, - "fp16": 939.22, + "int8": 100.05, + "fp16": 74.24, "fp32": "", "bf16": "" } @@ -5292,7 +5292,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 13.33, "fp16": "", "fp32": "", "bf16": "" @@ -5304,17 +5304,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 227.81, - "fp16": 199.46, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -5326,7 +5326,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 14.0, "fp16": "", "fp32": "", "bf16": "" @@ -5338,17 +5338,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": 45.86, + "int8": 33.67, + "fp16": 30.88, "fp32": "", "bf16": "" } @@ -5360,7 +5360,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 38.07, "fp16": "", "fp32": "", "bf16": "" @@ -5372,17 +5372,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1080.78, - "fp16": 849.54, + "int8": 201.37, + "fp16": 162.08, "fp32": "", "bf16": "" } @@ -5394,7 +5394,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 6.86, "fp16": "", "fp32": "", "bf16": "" @@ -5406,17 +5406,17 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 390.32, - "fp16": 504.91, + "int8": 169.74, + "fp16": 143.49, "fp32": "", "bf16": "" } @@ -5428,7 +5428,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 7.91, "fp16": "", "fp32": "", "bf16": "" @@ -5441,16 +5441,16 @@ }, { "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 283.6, - "fp16": 271.24, + "int8": 163.17, + "fp16": 185.29, "fp32": "", "bf16": "" } @@ -5462,7 +5462,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 8.23, "fp16": "", "fp32": "", "bf16": "" @@ -5474,18 +5474,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 54.76, - "fp16": 51.63, - "fp32": "", + "int8": 39.25, + "fp16": "", + "fp32": 29.57, "bf16": "" } ], @@ -5508,18 +5508,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 22.93, "fp16": "", - "fp32": "", + "fp32": 23.89, "bf16": "" } ], @@ -5529,7 +5529,7 @@ "latency": { "Precisions": [ { - "int4": 53.45, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5542,18 +5542,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 166.55, - "fp16": 183.44, - "fp32": "", + "int8": 57.64, + "fp16": "", + "fp32": 48.78, "bf16": "" } ], @@ -5576,9 +5576,9 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -5587,7 +5587,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", + "fp32": 30.78, "bf16": "" } ], @@ -5597,7 +5597,7 @@ "latency": { "Precisions": [ { - "int4": 56.67, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5610,18 +5610,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 74.05, "fp16": "", - "fp32": "", + "fp32": 48.82, "bf16": "" } ], @@ -5631,7 +5631,7 @@ "latency": { "Precisions": [ { - "int4": 62.44, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5644,18 +5644,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "llama-3-8b", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 100.6, "fp16": "", - "fp32": "", + "fp32": 65.57, "bf16": "" } ], @@ -5665,7 +5665,7 @@ "latency": { "Precisions": [ { - "int4": 57.25, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5678,18 +5678,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 12.11, - "fp16": 7.1, - "fp32": "", + "int8": 57.55, + "fp16": "", + "fp32": 28.28, "bf16": "" } ], @@ -5712,9 +5712,9 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -5723,7 +5723,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", + "fp32": 75.36, "bf16": "" } ], @@ -5733,7 +5733,7 @@ "latency": { "Precisions": [ { - "int4": 57.64, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5746,18 +5746,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 922.77, - "fp16": 1450.01, - "fp32": "", + "int8": 88.7, + "fp16": "", + "fp32": 59.09, "bf16": "" } ], @@ -5780,9 +5780,9 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -5791,7 +5791,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", + "fp32": 59.29, "bf16": "" } ], @@ -5801,7 +5801,7 @@ "latency": { "Precisions": [ { - "int4": 36.89, + "int4": "", "int8": "", "fp16": "", "fp32": "", @@ -5814,18 +5814,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1030.48, - "fp16": 585.54, - "fp32": "", + "int8": 37.02, + "fp16": "", + "fp32": 28.15, "bf16": "" } ], @@ -5848,18 +5848,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 63.15, - "fp16": 38.3, - "fp32": "", + "int8": 191.27, + "fp16": "", + "fp32": 150.88, "bf16": "" } ], @@ -5882,18 +5882,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "efficientdet-d0", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 762.53, - "fp16": 830.99, - "fp32": "", + "int8": 123.24, + "fp16": "", + "fp32": 97.13, "bf16": "" } ], @@ -5916,18 +5916,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 101.99, - "fp16": 72.98, - "fp32": "", + "int8": 0.17, + "fp16": "", + "fp32": 0.04, "bf16": "" } ], @@ -5938,7 +5938,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 5769.81, "fp16": "", "fp32": "", "bf16": "" @@ -5950,18 +5950,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 711.01, - "fp16": 766.89, - "fp32": "", + "int8": 0.3, + "fp16": "", + "fp32": 0.14, "bf16": "" } ], @@ -5972,7 +5972,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3268.87, "fp16": "", "fp32": "", "bf16": "" @@ -5984,18 +5984,18 @@ } }, { - "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 414.47, - "fp16": 388.51, - "fp32": "", + "int8": 0.44, + "fp16": "", + "fp32": 0.18, "bf16": "" } ], @@ -6006,7 +6006,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 2406.55, "fp16": "", "fp32": "", "bf16": "" @@ -6018,18 +6018,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 20.99, + "int8": 0.47, "fp16": "", - "fp32": 14.94, + "fp32": 0.12, "bf16": "" } ], @@ -6040,7 +6040,7 @@ "Precisions": [ { "int4": "", - "int8": 49.18, + "int8": 2337.51, "fp16": "", "fp32": "", "bf16": "" @@ -6052,18 +6052,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.99, + "int8": 0.58, "fp16": "", - "fp32": 1.26, + "fp32": 0.16, "bf16": "" } ], @@ -6074,7 +6074,7 @@ "Precisions": [ { "int4": "", - "int8": 511.15, + "int8": 2064.41, "fp16": "", "fp32": "", "bf16": "" @@ -6086,18 +6086,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 37.42, + "int8": 1.71, "fp16": "", - "fp32": 27.64, + "fp32": 0.5, "bf16": "" } ], @@ -6108,7 +6108,7 @@ "Precisions": [ { "int4": "", - "int8": 27.54, + "int8": 708.93, "fp16": "", "fp32": "", "bf16": "" @@ -6120,18 +6120,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", + "Platform": "Intel® Core™ i5-8500 CPU-only", "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.3, + "int8": 0.48, "fp16": "", - "fp32": 0.14, + "fp32": "", "bf16": "" } ], @@ -6142,7 +6142,7 @@ "Precisions": [ { "int4": "", - "int8": 3274.62, + "int8": 2022.46, "fp16": "", "fp32": "", "bf16": "" @@ -6154,18 +6154,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 532.22, + "int8": 0.72, "fp16": "", - "fp32": 411.7, + "fp32": 0.19, "bf16": "" } ], @@ -6176,7 +6176,7 @@ "Precisions": [ { "int4": "", - "int8": 2.03, + "int8": 1351.31, "fp16": "", "fp32": "", "bf16": "" @@ -6188,18 +6188,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 96.34, + "int8": 0.52, "fp16": "", - "fp32": 49.9, + "fp32": 0.14, "bf16": "" } ], @@ -6210,7 +6210,7 @@ "Precisions": [ { "int4": "", - "int8": 10.77, + "int8": 1804.22, "fp16": "", "fp32": "", "bf16": "" @@ -6222,18 +6222,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.24, "fp16": "", - "fp32": 0.88, + "fp32": 0.35, "bf16": "" } ], @@ -6244,7 +6244,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 936.49, "fp16": "", "fp32": "", "bf16": "" @@ -6256,18 +6256,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 212.27, + "int8": 0.64, "fp16": "", - "fp32": 120.47, + "fp32": 0.18, "bf16": "" } ], @@ -6278,7 +6278,7 @@ "Precisions": [ { "int4": "", - "int8": 4.94, + "int8": 1922.82, "fp16": "", "fp32": "", "bf16": "" @@ -6290,18 +6290,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.52, + "int8": 0.91, "fp16": "", - "fp32": 1.37, + "fp32": "", "bf16": "" } ], @@ -6312,7 +6312,7 @@ "Precisions": [ { "int4": "", - "int8": 402.53, + "int8": 1366.6, "fp16": "", "fp32": "", "bf16": "" @@ -6324,18 +6324,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 110.51, + "int8": 0.37, "fp16": "", - "fp32": 60.19, + "fp32": 0.15, "bf16": "" } ], @@ -6346,7 +6346,7 @@ "Precisions": [ { "int4": "", - "int8": 9.08, + "int8": 2090.62, "fp16": "", "fp32": "", "bf16": "" @@ -6358,18 +6358,18 @@ } }, { - "Platform": "Intel® Core™ i3-8100 CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 53.67, + "int8": 0.47, "fp16": "", - "fp32": 32.01, + "fp32": 0.17, "bf16": "" } ], @@ -6380,7 +6380,7 @@ "Precisions": [ { "int4": "", - "int8": 19.05, + "int8": 2235.88, "fp16": "", "fp32": "", "bf16": "" @@ -6392,18 +6392,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 32.52, + "int8": 2.48, "fp16": "", - "fp32": 22.07, + "fp32": 0.71, "bf16": "" } ], @@ -6414,7 +6414,7 @@ "Precisions": [ { "int4": "", - "int8": 36.06, + "int8": 558.42, "fp16": "", "fp32": "", "bf16": "" @@ -6426,18 +6426,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.06, + "int8": 0.75, "fp16": "", - "fp32": 1.9, + "fp32": 0.29, "bf16": "" } ], @@ -6448,7 +6448,7 @@ "Precisions": [ { "int4": "", - "int8": 373.95, + "int8": 1441.19, "fp16": "", "fp32": "", "bf16": "" @@ -6460,18 +6460,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 59.08, + "int8": 0.29, "fp16": "", - "fp32": 32.53, + "fp32": 0.15, "bf16": "" } ], @@ -6482,7 +6482,7 @@ "Precisions": [ { "int4": "", - "int8": 20.57, + "int8": 3400.61, "fp16": "", "fp32": "", "bf16": "" @@ -6494,18 +6494,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.44, + "int8": 3.25, "fp16": "", - "fp32": 0.18, + "fp32": 0.89, "bf16": "" } ], @@ -6516,7 +6516,7 @@ "Precisions": [ { "int4": "", - "int8": 2415.07, + "int8": 650.12, "fp16": "", "fp32": "", "bf16": "" @@ -6528,18 +6528,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 892.27, + "int8": 8.7, "fp16": "", - "fp32": 460.33, + "fp32": 2.25, "bf16": "" } ], @@ -6550,7 +6550,7 @@ "Precisions": [ { "int4": "", - "int8": 1.62, + "int8": 251.14, "fp16": "", "fp32": "", "bf16": "" @@ -6562,18 +6562,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 144.52, + "int8": 14.54, "fp16": "", - "fp32": 72.76, + "fp32": 3.46, "bf16": "" } ], @@ -6584,7 +6584,7 @@ "Precisions": [ { "int4": "", - "int8": 8.22, + "int8": 160.14, "fp16": "", "fp32": "", "bf16": "" @@ -6596,19 +6596,19 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 63.19, "fp16": "", - "fp32": 1.29, - "bf16": "" + "fp32": 5.23, + "bf16": 37.95 } ], "Unit": "FPS", @@ -6618,10 +6618,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 60.21, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 83.04 } ], "Unit": "ms", @@ -6630,19 +6630,19 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 329.06, + "int8": 75.35, "fp16": "", - "fp32": 166.54, - "bf16": "" + "fp32": 6.47, + "bf16": 48.43 } ], "Unit": "FPS", @@ -6652,10 +6652,10 @@ "Precisions": [ { "int4": "", - "int8": 3.62, + "int8": 55.97, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 73.23 } ], "Unit": "ms", @@ -6664,18 +6664,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.62, + "int8": 6.51, "fp16": "", - "fp32": 2.0, + "fp32": 1.65, "bf16": "" } ], @@ -6686,7 +6686,7 @@ "Precisions": [ { "int4": "", - "int8": 306.06, + "int8": 322.06, "fp16": "", "fp32": "", "bf16": "" @@ -6698,18 +6698,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 166.67, + "int8": 7.4, "fp16": "", - "fp32": 82.29, + "fp32": 1.76, "bf16": "" } ], @@ -6720,7 +6720,7 @@ "Precisions": [ { "int4": "", - "int8": 6.42, + "int8": 286.63, "fp16": "", "fp32": "", "bf16": "" @@ -6732,18 +6732,18 @@ } }, { - "Platform": "Intel® Core™ i5-10500TE CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 81.96, + "int8": 1.18, "fp16": "", - "fp32": 45.08, + "fp32": 0.32, "bf16": "" } ], @@ -6754,7 +6754,7 @@ "Precisions": [ { "int4": "", - "int8": 13.69, + "int8": 999.99, "fp16": "", "fp32": "", "bf16": "" @@ -6766,18 +6766,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 40.22, + "int8": 0.9, "fp16": "", - "fp32": 18.63, + "fp32": 0.21, "bf16": "" } ], @@ -6788,7 +6788,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1330.81, "fp16": "", "fp32": "", "bf16": "" @@ -6800,18 +6800,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.6, + "int8": 1.12, "fp16": "", - "fp32": 1.72, + "fp32": 0.27, "bf16": "" } ], @@ -6822,7 +6822,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1255.21, "fp16": "", "fp32": "", "bf16": "" @@ -6834,18 +6834,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 54.04, - "fp16": "", - "fp32": 31.23, + "int8": 39.0, + "fp16": 21.24, + "fp32": "", "bf16": "" } ], @@ -6856,7 +6856,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 52.08, "fp16": "", "fp32": "", "bf16": "" @@ -6868,18 +6868,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.54, + "int8": "", "fp16": "", - "fp32": 0.19, + "fp32": "", "bf16": "" } ], @@ -6890,7 +6890,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 48.01, "fp16": "", "fp32": "", "bf16": "" @@ -6902,18 +6902,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 876.52, + "int8": 6.33, "fp16": "", - "fp32": 363.86, + "fp32": "", "bf16": "" } ], @@ -6924,7 +6924,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 179.63, "fp16": "", "fp32": "", "bf16": "" @@ -6936,18 +6936,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 195.29, - "fp16": "", - "fp32": 65.09, + "int8": 0.48, + "fp16": 0.52, + "fp32": "", "bf16": "" } ], @@ -6958,7 +6958,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 2109.61, "fp16": "", "fp32": "", "bf16": "" @@ -6970,18 +6970,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.79, - "fp16": "", - "fp32": 1.29, + "int8": 0.53, + "fp16": 0.52, + "fp32": "", "bf16": "" } ], @@ -6992,7 +6992,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1494.17, "fp16": "", "fp32": "", "bf16": "" @@ -7004,18 +7004,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 384.96, - "fp16": "", - "fp32": 132.61, + "int8": 0.54, + "fp16": 0.58, + "fp32": "", "bf16": "" } ], @@ -7026,7 +7026,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1486.87, "fp16": "", "fp32": "", "bf16": "" @@ -7038,18 +7038,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.64, - "fp16": "", - "fp32": 2.0, + "int8": 0.83, + "fp16": 0.89, + "fp32": "", "bf16": "" } ], @@ -7060,7 +7060,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1111.35, "fp16": "", "fp32": "", "bf16": "" @@ -7072,18 +7072,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 238.44, - "fp16": "", - "fp32": 83.92, + "int8": 0.57, + "fp16": 0.55, + "fp32": "", "bf16": "" } ], @@ -7094,7 +7094,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1643.33, "fp16": "", "fp32": "", "bf16": "" @@ -7106,18 +7106,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 94.98, - "fp16": "", - "fp32": 42.09, + "int8": 1.03, + "fp16": 1.14, + "fp32": "", "bf16": "" } ], @@ -7128,7 +7128,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 973.29, "fp16": "", "fp32": "", "bf16": "" @@ -7140,18 +7140,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 32.98, - "fp16": "", - "fp32": 12.72, + "int8": 0.73, + "fp16": 0.77, + "fp32": "", "bf16": "" } ], @@ -7162,7 +7162,7 @@ "Precisions": [ { "int4": "", - "int8": 44.89, + "int8": 1184.14, "fp16": "", "fp32": "", "bf16": "" @@ -7174,18 +7174,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.53, + "int8": "", "fp16": "", - "fp32": 0.99, + "fp32": "", "bf16": "" } ], @@ -7196,7 +7196,7 @@ "Precisions": [ { "int4": "", - "int8": 420.54, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7208,18 +7208,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 46.89, - "fp16": "", - "fp32": 24.24, + "int8": 1.97, + "fp16": 1.64, + "fp32": "", "bf16": "" } ], @@ -7230,7 +7230,7 @@ "Precisions": [ { "int4": "", - "int8": 31.81, + "int8": 481.56, "fp16": "", "fp32": "", "bf16": "" @@ -7242,18 +7242,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.48, + "int8": "", "fp16": "", - "fp32": 0.12, + "fp32": "", "bf16": "" } ], @@ -7264,7 +7264,7 @@ "Precisions": [ { "int4": "", - "int8": 2320.88, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7276,18 +7276,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 900.76, - "fp16": "", - "fp32": 334.56, + "int8": 12.69, + "fp16": 7.44, + "fp32": "", "bf16": "" } ], @@ -7298,7 +7298,7 @@ "Precisions": [ { "int4": "", - "int8": 1.88, + "int8": 91.66, "fp16": "", "fp32": "", "bf16": "" @@ -7310,18 +7310,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 160.94, + "int8": 0.56, "fp16": "", - "fp32": 41.17, + "fp32": 0.51, "bf16": "" } ], @@ -7332,7 +7332,7 @@ "Precisions": [ { "int4": "", - "int8": 10.95, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7344,9 +7344,9 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -7355,7 +7355,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 0.8, + "fp32": 0.19, "bf16": "" } ], @@ -7378,18 +7378,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 351.97, + "int8": 0.7, "fp16": "", - "fp32": 100.3, + "fp32": 0.31, "bf16": "" } ], @@ -7400,7 +7400,7 @@ "Precisions": [ { "int4": "", - "int8": 4.63, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7412,18 +7412,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.89, + "int8": 1.17, "fp16": "", - "fp32": 0.85, + "fp32": 0.65, "bf16": "" } ], @@ -7434,7 +7434,7 @@ "Precisions": [ { "int4": "", - "int8": 319.65, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7446,18 +7446,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 182.6, + "int8": 0.67, "fp16": "", - "fp32": 55.57, + "fp32": 0.33, "bf16": "" } ], @@ -7468,7 +7468,7 @@ "Precisions": [ { "int4": "", - "int8": 8.44, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7480,18 +7480,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 77.2, + "int8": "", "fp16": "", - "fp32": 28.09, + "fp32": 0.71, "bf16": "" } ], @@ -7502,7 +7502,7 @@ "Precisions": [ { "int4": "", - "int8": 19.78, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7514,18 +7514,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 48.26, - "fp16": 40.03, - "fp32": "", + "int8": 0.81, + "fp16": "", + "fp32": 0.43, "bf16": "" } ], @@ -7536,7 +7536,7 @@ "Precisions": [ { "int4": "", - "int8": 19.77, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7548,18 +7548,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.38, - "fp16": 4.11, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 0.46, "bf16": "" } ], @@ -7570,7 +7570,7 @@ "Precisions": [ { "int4": "", - "int8": 173.71, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7582,18 +7582,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "mask_rcnn_resnet50_atrous_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 69.88, - "fp16": 52.51, - "fp32": "", + "int8": 2.37, + "fp16": "", + "fp32": 1.2, "bf16": "" } ], @@ -7604,7 +7604,7 @@ "Precisions": [ { "int4": "", - "int8": 19.27, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7616,18 +7616,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.54, - "fp16": 0.53, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 0.58, "bf16": "" } ], @@ -7638,7 +7638,7 @@ "Precisions": [ { "int4": "", - "int8": 1492.51, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -7650,18 +7650,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Platform": "Intel® Atom® x7425E CPU-only", "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 791.77, - "fp16": 502.34, - "fp32": "", + "int8": 274.01, + "fp16": "", + "fp32": 168.87, "bf16": "" } ], @@ -7672,7 +7672,7 @@ "Precisions": [ { "int4": "", - "int8": 1.59, + "int8": 4.07, "fp16": "", "fp32": "", "bf16": "" @@ -7684,18 +7684,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 217.18, - "fp16": 121.8, - "fp32": "", + "int8": 133.76, + "fp16": "", + "fp32": 80.44, "bf16": "" } ], @@ -7706,7 +7706,7 @@ "Precisions": [ { "int4": "", - "int8": 4.86, + "int8": 7.82, "fp16": "", "fp32": "", "bf16": "" @@ -7718,18 +7718,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.82, - "fp16": 2.84, - "fp32": "", + "int8": 300.95, + "fp16": "", + "fp32": 133.55, "bf16": "" } ], @@ -7740,7 +7740,7 @@ "Precisions": [ { "int4": "", - "int8": 163.86, + "int8": 3.62, "fp16": "", "fp32": "", "bf16": "" @@ -7752,18 +7752,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 401.08, - "fp16": 235.24, - "fp32": "", + "int8": 534.91, + "fp16": "", + "fp32": 406.53, "bf16": "" } ], @@ -7774,7 +7774,7 @@ "Precisions": [ { "int4": "", - "int8": 2.99, + "int8": 2.01, "fp16": "", "fp32": "", "bf16": "" @@ -7786,18 +7786,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.05, - "fp16": 4.74, - "fp32": "", + "int8": 893.76, + "fp16": "", + "fp32": 462.2, "bf16": "" } ], @@ -7808,7 +7808,7 @@ "Precisions": [ { "int4": "", - "int8": 79.14, + "int8": 1.62, "fp16": "", "fp32": "", "bf16": "" @@ -7820,18 +7820,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 327.91, - "fp16": 166.92, - "fp32": "", + "int8": 826.85, + "fp16": "", + "fp32": 315.6, "bf16": "" } ], @@ -7842,7 +7842,7 @@ "Precisions": [ { "int4": "", - "int8": 2.95, + "int8": 1.9, "fp16": "", "fp32": "", "bf16": "" @@ -7854,18 +7854,18 @@ } }, { - "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 133.75, - "fp16": 82.09, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 462.14, "bf16": "" } ], @@ -7876,7 +7876,7 @@ "Precisions": [ { "int4": "", - "int8": 7.98, + "int8": 1.72, "fp16": "", "fp32": "", "bf16": "" @@ -7888,18 +7888,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 50.08, + "int8": 2989.92, "fp16": "", - "fp32": 26.89, + "fp32": 1328.99, "bf16": "" } ], @@ -7910,7 +7910,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 0.69, "fp16": "", "fp32": "", "bf16": "" @@ -7922,18 +7922,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.15, + "int8": 848.04, "fp16": "", - "fp32": 2.58, + "fp32": 626.94, "bf16": "" } ], @@ -7944,7 +7944,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.4, "fp16": "", "fp32": "", "bf16": "" @@ -7956,18 +7956,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 75.84, + "int8": 1284.93, "fp16": "", - "fp32": 49.82, + "fp32": 509.36, "bf16": "" } ], @@ -7978,7 +7978,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 0.96, "fp16": "", "fp32": "", "bf16": "" @@ -7990,18 +7990,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.7, + "int8": 975.3, "fp16": "", - "fp32": 0.31, + "fp32": 312.11, "bf16": "" } ], @@ -8012,7 +8012,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.21, "fp16": "", "fp32": "", "bf16": "" @@ -8024,18 +8024,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Platform": "Intel® Core™ i7-12700H CPU-only", "Model": "mobilenet-v2", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1068.2, + "int8": 1966.6, "fp16": "", - "fp32": 552.06, + "fp32": 958.97, "bf16": "" } ], @@ -8046,7 +8046,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 0.96, "fp16": "", "fp32": "", "bf16": "" @@ -8058,18 +8058,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 242.35, + "int8": 1039.53, "fp16": "", - "fp32": 88.82, + "fp32": 513.13, "bf16": "" } ], @@ -8080,7 +8080,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.61, "fp16": "", "fp32": "", "bf16": "" @@ -8092,18 +8092,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.97, + "int8": "", "fp16": "", - "fp32": 1.76, + "fp32": "", "bf16": "" } ], @@ -8126,18 +8126,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 479.66, + "int8": 737.89, "fp16": "", - "fp32": 192.54, + "fp32": 488.9, "bf16": "" } ], @@ -8148,7 +8148,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.44, "fp16": "", "fp32": "", "bf16": "" @@ -8160,18 +8160,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.49, + "int8": 904.6, "fp16": "", - "fp32": 2.43, + "fp32": 570.78, "bf16": "" } ], @@ -8182,7 +8182,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.56, "fp16": "", "fp32": "", "bf16": "" @@ -8194,18 +8194,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 287.86, + "int8": 4254.47, "fp16": "", - "fp32": 113.45, + "fp32": 2047.25, "bf16": "" } ], @@ -8216,7 +8216,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 0.6, "fp16": "", "fp32": "", "bf16": "" @@ -8228,18 +8228,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 129.45, + "int8": 296.47, "fp16": "", - "fp32": 58.75, + "fp32": 183.87, "bf16": "" } ], @@ -8250,7 +8250,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.81, "fp16": "", "fp32": "", "bf16": "" @@ -8262,18 +8262,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 40.42, + "int8": 1451.27, "fp16": "", - "fp32": 16.12, + "fp32": 666.39, "bf16": "" } ], @@ -8284,7 +8284,7 @@ "Precisions": [ { "int4": "", - "int8": 39.92, + "int8": 1.2, "fp16": "", "fp32": "", "bf16": "" @@ -8296,18 +8296,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.39, + "int8": 519.78, "fp16": "", - "fp32": 1.38, + "fp32": 425.23, "bf16": "" } ], @@ -8318,7 +8318,7 @@ "Precisions": [ { "int4": "", - "int8": 382.26, + "int8": 2.07, "fp16": "", "fp32": "", "bf16": "" @@ -8330,18 +8330,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 56.95, + "int8": 5407.63, "fp16": "", - "fp32": 36.36, + "fp32": 1924.43, "bf16": "" } ], @@ -8352,7 +8352,7 @@ "Precisions": [ { "int4": "", - "int8": 28.53, + "int8": 1.51, "fp16": "", "fp32": "", "bf16": "" @@ -8364,18 +8364,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.58, + "int8": 15016.47, "fp16": "", - "fp32": 0.16, + "fp32": 4645.46, "bf16": "" } ], @@ -8386,7 +8386,7 @@ "Precisions": [ { "int4": "", - "int8": 2050.89, + "int8": 0.94, "fp16": "", "fp32": "", "bf16": "" @@ -8398,18 +8398,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 962.54, + "int8": 22842.63, "fp16": "", - "fp32": 469.49, + "fp32": 7144.4, "bf16": "" } ], @@ -8420,7 +8420,7 @@ "Precisions": [ { "int4": "", - "int8": 1.71, + "int8": 0.58, "fp16": "", "fp32": "", "bf16": "" @@ -8432,19 +8432,19 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 187.24, + "int8": 38642.1, "fp16": "", - "fp32": 54.08, - "bf16": "" + "fp32": 10319.56, + "bf16": 25708.49 } ], "Unit": "FPS", @@ -8454,10 +8454,10 @@ "Precisions": [ { "int4": "", - "int8": 9.42, + "int8": 0.64, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 0.65 } ], "Unit": "ms", @@ -8466,18 +8466,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 39913.42, "fp16": "", - "fp32": 0.93, + "fp32": 15945.06, "bf16": "" } ], @@ -8491,7 +8491,7 @@ "int8": "", "fp16": "", "fp32": "", - "bf16": "" + "bf16": 0.75 } ], "Unit": "ms", @@ -8500,18 +8500,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 388.55, + "int8": 10312.71, "fp16": "", - "fp32": 137.54, + "fp32": 3331.01, "bf16": "" } ], @@ -8522,7 +8522,7 @@ "Precisions": [ { "int4": "", - "int8": 4.08, + "int8": 1.24, "fp16": "", "fp32": "", "bf16": "" @@ -8534,18 +8534,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4.66, + "int8": 11955.69, "fp16": "", - "fp32": 0.84, + "fp32": 3563.39, "bf16": "" } ], @@ -8556,7 +8556,7 @@ "Precisions": [ { "int4": "", - "int8": 308.83, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -8568,18 +8568,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 211.93, + "int8": 1984.45, "fp16": "", - "fp32": 69.29, + "fp32": 814.84, "bf16": "" } ], @@ -8590,7 +8590,7 @@ "Precisions": [ { "int4": "", - "int8": 7.77, + "int8": 1.35, "fp16": "", "fp32": "", "bf16": "" @@ -8602,18 +8602,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 92.71, + "int8": 1516.8, "fp16": "", - "fp32": 36.74, + "fp32": 588.51, "bf16": "" } ], @@ -8624,7 +8624,7 @@ "Precisions": [ { "int4": "", - "int8": 18.06, + "int8": 1.61, "fp16": "", "fp32": "", "bf16": "" @@ -8636,18 +8636,18 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 48.14, - "fp16": 40.18, - "fp32": "", + "int8": 1651.84, + "fp16": "", + "fp32": 775.78, "bf16": "" } ], @@ -8658,7 +8658,7 @@ "Precisions": [ { "int4": "", - "int8": 17.95, + "int8": 1.02, "fp16": "", "fp32": "", "bf16": "" @@ -8670,17 +8670,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.29, - "fp16": 4.3, + "int8": 2423.58, + "fp16": 2444.62, "fp32": "", "bf16": "" } @@ -8692,7 +8692,7 @@ "Precisions": [ { "int4": "", - "int8": 137.43, + "int8": 0.64, "fp16": "", "fp32": "", "bf16": "" @@ -8704,17 +8704,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 82.42, - "fp16": 61.15, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -8726,7 +8726,7 @@ "Precisions": [ { "int4": "", - "int8": 14.52, + "int8": 0.99, "fp16": "", "fp32": "", "bf16": "" @@ -8738,17 +8738,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.55, - "fp16": 0.59, + "int8": 1862.03, + "fp16": 1564.35, "fp32": "", "bf16": "" } @@ -8760,7 +8760,7 @@ "Precisions": [ { "int4": "", - "int8": 1464.69, + "int8": 0.78, "fp16": "", "fp32": "", "bf16": "" @@ -8772,17 +8772,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", "Model": "mobilenet-v2", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 811.57, - "fp16": 542.42, + "int8": 1956.69, + "fp16": 1343.46, "fp32": "", "bf16": "" } @@ -8794,7 +8794,7 @@ "Precisions": [ { "int4": "", - "int8": 1.44, + "int8": 0.82, "fp16": "", "fp32": "", "bf16": "" @@ -8806,17 +8806,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 229.04, - "fp16": 128.78, + "int8": 1999.97, + "fp16": 1359.27, "fp32": "", "bf16": "" } @@ -8828,7 +8828,7 @@ "Precisions": [ { "int4": "", - "int8": 4.2, + "int8": 0.74, "fp16": "", "fp32": "", "bf16": "" @@ -8840,17 +8840,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.05, - "fp16": 2.96, + "int8": 3751.95, + "fp16": 2877.38, "fp32": "", "bf16": "" } @@ -8862,7 +8862,7 @@ "Precisions": [ { "int4": "", - "int8": 143.23, + "int8": 0.4, "fp16": "", "fp32": "", "bf16": "" @@ -8874,17 +8874,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 412.4, - "fp16": 244.34, + "int8": 415.36, + "fp16": 324.74, "fp32": "", "bf16": "" } @@ -8896,7 +8896,7 @@ "Precisions": [ { "int4": "", - "int8": 2.71, + "int8": 3.52, "fp16": "", "fp32": "", "bf16": "" @@ -8908,17 +8908,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.0, - "fp16": 4.8, + "int8": 188.4, + "fp16": 223.08, "fp32": "", "bf16": "" } @@ -8930,7 +8930,7 @@ "Precisions": [ { "int4": "", - "int8": 82.06, + "int8": 7.66, "fp16": "", "fp32": "", "bf16": "" @@ -8942,17 +8942,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 324.18, - "fp16": 168.85, + "int8": 673.52, + "fp16": 505.05, "fp32": "", "bf16": "" } @@ -8964,7 +8964,7 @@ "Precisions": [ { "int4": "", - "int8": 2.88, + "int8": 2.74, "fp16": "", "fp32": "", "bf16": "" @@ -8976,17 +8976,17 @@ } }, { - "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 135.98, - "fp16": 84.06, + "int8": 779.69, + "fp16": 496.63, "fp32": "", "bf16": "" } @@ -8998,7 +8998,7 @@ "Precisions": [ { "int4": "", - "int8": 6.88, + "int8": 1.63, "fp16": "", "fp32": "", "bf16": "" @@ -9010,18 +9010,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 119.86, + "int8": "", "fp16": "", - "fp32": 47.19, + "fp32": "", "bf16": "" } ], @@ -9032,7 +9032,7 @@ "Precisions": [ { "int4": "", - "int8": 13.16, + "int8": 1.46, "fp16": "", "fp32": "", "bf16": "" @@ -9044,18 +9044,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.28, - "fp16": "", - "fp32": 3.91, + "int8": "", + "fp16": 574.04, + "fp32": "", "bf16": "" } ], @@ -9066,7 +9066,7 @@ "Precisions": [ { "int4": "", - "int8": 128.91, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9078,18 +9078,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 152.58, - "fp16": "", - "fp32": 93.16, + "int8": 630.96, + "fp16": 442.65, + "fp32": "", "bf16": "" } ], @@ -9100,7 +9100,7 @@ "Precisions": [ { "int4": "", - "int8": 9.12, + "int8": 1.74, "fp16": "", "fp32": "", "bf16": "" @@ -9112,18 +9112,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.71, - "fp16": "", - "fp32": 0.5, + "int8": 1281.44, + "fp16": 911.94, + "fp32": "", "bf16": "" } ], @@ -9134,7 +9134,7 @@ "Precisions": [ { "int4": "", - "int8": 709.42, + "int8": 1.08, "fp16": "", "fp32": "", "bf16": "" @@ -9146,18 +9146,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", "Model": "mobilenet-v2", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2994.84, - "fp16": "", - "fp32": 1327.68, + "int8": 890.07, + "fp16": 624.4, + "fp32": "", "bf16": "" } ], @@ -9168,7 +9168,7 @@ "Precisions": [ { "int4": "", - "int8": 0.69, + "int8": 1.41, "fp16": "", "fp32": "", "bf16": "" @@ -9180,18 +9180,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 544.19, + "int8": "", "fp16": "", - "fp32": 150.23, + "fp32": "", "bf16": "" } ], @@ -9202,7 +9202,7 @@ "Precisions": [ { "int4": "", - "int8": 2.84, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9214,18 +9214,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 2.5, + "int8": 339.71, + "fp16": 267.18, + "fp32": "", "bf16": "" } ], @@ -9236,7 +9236,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.83, "fp16": "", "fp32": "", "bf16": "" @@ -9248,18 +9248,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1092.37, - "fp16": "", - "fp32": 389.37, + "int8": 1298.67, + "fp16": 1337.24, + "fp32": "", "bf16": "" } ], @@ -9270,7 +9270,7 @@ "Precisions": [ { "int4": "", - "int8": 1.32, + "int8": 0.78, "fp16": "", "fp32": "", "bf16": "" @@ -9282,18 +9282,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 12.64, - "fp16": "", - "fp32": 3.3, + "int8": 1422.4, + "fp16": 1361.15, + "fp32": "", "bf16": "" } ], @@ -9304,7 +9304,7 @@ "Precisions": [ { "int4": "", - "int8": 93.33, + "int8": 1.27, "fp16": "", "fp32": "", "bf16": "" @@ -9316,18 +9316,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 638.85, - "fp16": "", - "fp32": 199.4, + "int8": 1200.66, + "fp16": 1554.15, + "fp32": "", "bf16": "" } ], @@ -9338,7 +9338,7 @@ "Precisions": [ { "int4": "", - "int8": 2.38, + "int8": 1.23, "fp16": "", "fp32": "", "bf16": "" @@ -9350,18 +9350,18 @@ } }, { - "Platform": "Intel® Core™ i5-13600K CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 271.84, + "int8": 478.43, "fp16": "", - "fp32": 103.25, + "fp32": 307.02, "bf16": "" } ], @@ -9372,7 +9372,7 @@ "Precisions": [ { "int4": "", - "int8": 5.18, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9384,18 +9384,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 33.09, + "int8": 228.63, "fp16": "", - "fp32": 22.84, + "fp32": 220.31, "bf16": "" } ], @@ -9406,7 +9406,7 @@ "Precisions": [ { "int4": "", - "int8": 31.58, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9418,18 +9418,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.0, + "int8": 524.29, "fp16": "", - "fp32": 1.91, + "fp32": 394.1, "bf16": "" } ], @@ -9440,7 +9440,7 @@ "Precisions": [ { "int4": "", - "int8": 330.05, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9452,18 +9452,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 59.52, + "int8": "", "fp16": "", - "fp32": 42.47, + "fp32": 350.27, "bf16": "" } ], @@ -9474,7 +9474,7 @@ "Precisions": [ { "int4": "", - "int8": 17.57, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9486,18 +9486,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.48, + "int8": 1049.71, "fp16": "", - "fp32": 0.22, + "fp32": 538.46, "bf16": "" } ], @@ -9508,7 +9508,7 @@ "Precisions": [ { "int4": "", - "int8": 2054.55, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9520,18 +9520,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", "Model": "mobilenet-v2", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 849.65, + "int8": "", "fp16": "", - "fp32": 626.67, + "fp32": 680.55, "bf16": "" } ], @@ -9542,7 +9542,7 @@ "Precisions": [ { "int4": "", - "int8": 1.39, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9554,18 +9554,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 150.12, + "int8": "", "fp16": "", - "fp32": 76.35, + "fp32": 347.8, "bf16": "" } ], @@ -9576,7 +9576,7 @@ "Precisions": [ { "int4": "", - "int8": 7.12, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9588,18 +9588,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2306.0, "fp16": "", - "fp32": 1.35, + "fp32": 1096.89, "bf16": "" } ], @@ -9622,18 +9622,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 336.17, + "int8": 1219.99, "fp16": "", - "fp32": 183.19, + "fp32": 644.18, "bf16": "" } ], @@ -9644,7 +9644,7 @@ "Precisions": [ { "int4": "", - "int8": 3.13, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9656,18 +9656,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.92, + "int8": 1610.28, "fp16": "", - "fp32": 2.11, + "fp32": 845.71, "bf16": "" } ], @@ -9678,7 +9678,7 @@ "Precisions": [ { "int4": "", - "int8": 264.7, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9690,18 +9690,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", - "Parameters": { - "throughput": { + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { "Precisions": [ { "int4": "", - "int8": 172.37, + "int8": 484.88, "fp16": "", - "fp32": 90.91, + "fp32": 280.8, "bf16": "" } ], @@ -9712,7 +9712,7 @@ "Precisions": [ { "int4": "", - "int8": 6.09, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9724,18 +9724,18 @@ } }, { - "Platform": "Intel® Core™ i5-8500 CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 83.81, + "int8": 4622.78, "fp16": "", - "fp32": 48.64, + "fp32": 2338.78, "bf16": "" } ], @@ -9746,7 +9746,7 @@ "Precisions": [ { "int4": "", - "int8": 11.99, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -9758,18 +9758,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "mobilenet-v2", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 87.75, + "int8": "", "fp16": "", - "fp32": 52.2, + "fp32": 1684.08, "bf16": "" } ], @@ -9792,18 +9792,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 9.61, + "int8": 45.28, "fp16": "", - "fp32": 5.54, + "fp32": 18.84, "bf16": "" } ], @@ -9814,7 +9814,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 23.81, "fp16": "", "fp32": "", "bf16": "" @@ -9826,18 +9826,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 104.42, + "int8": 19.87, "fp16": "", - "fp32": 66.46, + "fp32": 8.15, "bf16": "" } ], @@ -9848,7 +9848,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 51.41, "fp16": "", "fp32": "", "bf16": "" @@ -9860,18 +9860,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.18, + "int8": 51.65, "fp16": "", - "fp32": 0.66, + "fp32": 14.46, "bf16": "" } ], @@ -9882,7 +9882,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 19.81, "fp16": "", "fp32": "", "bf16": "" @@ -9894,18 +9894,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1407.44, + "int8": 96.85, "fp16": "", - "fp32": 706.14, + "fp32": 50.34, "bf16": "" } ], @@ -9916,7 +9916,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 10.76, "fp16": "", "fp32": "", "bf16": "" @@ -9928,18 +9928,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Platform": "Intel® Core™ i5-10500TE CPU-only", "Model": "resnet-50", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 377.68, + "int8": 144.67, "fp16": "", - "fp32": 168.61, + "fp32": 72.98, "bf16": "" } ], @@ -9950,7 +9950,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 8.21, "fp16": "", "fp32": "", "bf16": "" @@ -9962,18 +9962,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.22, + "int8": 154.38, "fp16": "", - "fp32": 3.83, + "fp32": 40.41, "bf16": "" } ], @@ -9984,7 +9984,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 11.07, "fp16": "", "fp32": "", "bf16": "" @@ -9996,18 +9996,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 680.43, + "int8": 185.28, "fp16": "", - "fp32": 305.06, + "fp32": 53.47, "bf16": "" } ], @@ -10018,7 +10018,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 9.56, "fp16": "", "fp32": "", "bf16": "" @@ -10030,18 +10030,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 15.92, + "int8": 543.91, "fp16": "", - "fp32": 6.44, + "fp32": 151.19, "bf16": "" } ], @@ -10052,7 +10052,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.82, "fp16": "", "fp32": "", "bf16": "" @@ -10064,18 +10064,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 460.11, + "int8": 151.17, "fp16": "", - "fp32": 205.24, + "fp32": 75.67, "bf16": "" } ], @@ -10086,7 +10086,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 7.12, "fp16": "", "fp32": "", "bf16": "" @@ -10098,18 +10098,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 190.71, + "int8": 225.84, "fp16": "", - "fp32": 106.13, + "fp32": 61.28, "bf16": "" } ], @@ -10120,7 +10120,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.95, "fp16": "", "fp32": "", "bf16": "" @@ -10132,18 +10132,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 51.2, + "int8": 174.35, "fp16": "", - "fp32": 18.46, + "fp32": 45.46, "bf16": "" } ], @@ -10154,7 +10154,7 @@ "Precisions": [ { "int4": "", - "int8": 22.51, + "int8": 6.41, "fp16": "", "fp32": "", "bf16": "" @@ -10166,18 +10166,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.05, + "int8": 413.95, "fp16": "", - "fp32": 1.64, + "fp32": 107.82, "bf16": "" } ], @@ -10188,7 +10188,7 @@ "Precisions": [ { "int4": "", - "int8": 199.4, + "int8": 3.45, "fp16": "", "fp32": "", "bf16": "" @@ -10200,18 +10200,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 75.77, + "int8": 203.93, "fp16": "", - "fp32": 41.38, + "fp32": 59.04, "bf16": "" } ], @@ -10222,7 +10222,7 @@ "Precisions": [ { "int4": "", - "int8": 14.57, + "int8": 8.97, "fp16": "", "fp32": "", "bf16": "" @@ -10234,18 +10234,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.72, + "int8": 298.27, "fp16": "", - "fp32": 0.19, + "fp32": "", "bf16": "" } ], @@ -10256,7 +10256,7 @@ "Precisions": [ { "int4": "", - "int8": 1349.56, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -10268,18 +10268,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1356.45, + "int8": 122.15, "fp16": "", - "fp32": 514.42, + "fp32": 60.34, "bf16": "" } ], @@ -10290,7 +10290,7 @@ "Precisions": [ { "int4": "", - "int8": 0.95, + "int8": 7.21, "fp16": "", "fp32": "", "bf16": "" @@ -10302,18 +10302,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Platform": "Intel® Core™ i9-10900TE CPU-only", "Model": "resnet-50", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 225.03, + "int8": 152.19, "fp16": "", - "fp32": 61.51, + "fp32": 71.16, "bf16": "" } ], @@ -10324,7 +10324,7 @@ "Precisions": [ { "int4": "", - "int8": 4.94, + "int8": 7.72, "fp16": "", "fp32": "", "bf16": "" @@ -10336,18 +10336,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 766.25, "fp16": "", - "fp32": 1.01, + "fp32": 233.37, "bf16": "" } ], @@ -10358,7 +10358,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.16, "fp16": "", "fp32": "", "bf16": "" @@ -10370,18 +10370,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 516.94, + "int8": 48.79, "fp16": "", - "fp32": 149.57, + "fp32": 20.22, "bf16": "" } ], @@ -10392,7 +10392,7 @@ "Precisions": [ { "int4": "", - "int8": 2.18, + "int8": 21.9, "fp16": "", "fp32": "", "bf16": "" @@ -10404,18 +10404,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.55, + "int8": 245.58, "fp16": "", - "fp32": 1.66, + "fp32": 121.38, "bf16": "" } ], @@ -10426,7 +10426,7 @@ "Precisions": [ { "int4": "", - "int8": 154.77, + "int8": 5.17, "fp16": "", "fp32": "", "bf16": "" @@ -10438,18 +10438,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 247.12, + "int8": 92.24, "fp16": "", - "fp32": 77.37, + "fp32": 49.79, "bf16": "" } ], @@ -10460,7 +10460,7 @@ "Precisions": [ { "int4": "", - "int8": 4.23, + "int8": 11.19, "fp16": "", "fp32": "", "bf16": "" @@ -10472,18 +10472,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 111.26, + "int8": 971.95, "fp16": "", - "fp32": 40.37, + "fp32": 269.81, "bf16": "" } ], @@ -10494,7 +10494,7 @@ "Precisions": [ { "int4": "", - "int8": 10.16, + "int8": 3.12, "fp16": "", "fp32": "", "bf16": "" @@ -10506,18 +10506,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 68.19, - "fp16": 53.99, - "fp32": "", + "int8": 2968.31, + "fp16": "", + "fp32": 754.35, "bf16": "" } ], @@ -10528,7 +10528,7 @@ "Precisions": [ { "int4": "", - "int8": 16.35, + "int8": 1.61, "fp16": "", "fp32": "", "bf16": "" @@ -10540,18 +10540,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.87, - "fp16": 6.55, - "fp32": "", + "int8": 4948.09, + "fp16": "", + "fp32": 1155.67, "bf16": "" } ], @@ -10562,7 +10562,7 @@ "Precisions": [ { "int4": "", - "int8": 106.01, + "int8": 1.06, "fp16": "", "fp32": "", "bf16": "" @@ -10574,19 +10574,19 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 93.8, - "fp16": 73.29, - "fp32": "", - "bf16": "" + "int8": 19506.31, + "fp16": "", + "fp32": 1609.79, + "bf16": 7600.31 } ], "Unit": "FPS", @@ -10596,10 +10596,10 @@ "Precisions": [ { "int4": "", - "int8": 17.07, + "int8": 0.99, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 1.24 } ], "Unit": "ms", @@ -10608,19 +10608,19 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.83, - "fp16": 0.9, - "fp32": "", - "bf16": "" + "int8": 21749.45, + "fp16": "", + "fp32": 2011.71, + "bf16": 13645.99 } ], "Unit": "FPS", @@ -10630,10 +10630,10 @@ "Precisions": [ { "int4": "", - "int8": 1120.72, + "int8": 0.98, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 1.33 } ], "Unit": "ms", @@ -10642,18 +10642,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 783.89, - "fp16": 587.88, - "fp32": "", + "int8": 2122.71, + "fp16": "", + "fp32": 565.52, "bf16": "" } ], @@ -10664,7 +10664,7 @@ "Precisions": [ { "int4": "", - "int8": 1.91, + "int8": 1.88, "fp16": "", "fp32": "", "bf16": "" @@ -10676,18 +10676,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 280.59, - "fp16": 182.59, - "fp32": "", + "int8": 2249.41, + "fp16": "", + "fp32": 563.79, "bf16": "" } ], @@ -10698,7 +10698,7 @@ "Precisions": [ { "int4": "", - "int8": 4.54, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -10710,18 +10710,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.3, - "fp16": 4.69, - "fp32": "", + "int8": 392.72, + "fp16": "", + "fp32": 95.29, "bf16": "" } ], @@ -10732,7 +10732,7 @@ "Precisions": [ { "int4": "", - "int8": 116.67, + "int8": 6.4, "fp16": "", "fp32": "", "bf16": "" @@ -10744,18 +10744,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 482.46, - "fp16": 311.99, - "fp32": "", + "int8": 290.74, + "fp16": "", + "fp32": 70.82, "bf16": "" } ], @@ -10766,7 +10766,7 @@ "Precisions": [ { "int4": "", - "int8": 3.19, + "int8": 7.55, "fp16": "", "fp32": "", "bf16": "" @@ -10778,18 +10778,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 14.79, - "fp16": 7.69, - "fp32": "", + "int8": 318.23, + "fp16": "", + "fp32": 86.35, "bf16": "" } ], @@ -10800,7 +10800,7 @@ "Precisions": [ { "int4": "", - "int8": 63.56, + "int8": 4.59, "fp16": "", "fp32": "", "bf16": "" @@ -10812,17 +10812,17 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 428.87, - "fp16": 250.36, + "int8": 2318.55, + "fp16": 1375.72, "fp32": "", "bf16": "" } @@ -10834,7 +10834,7 @@ "Precisions": [ { "int4": "", - "int8": 2.92, + "int8": 0.87, "fp16": "", "fp32": "", "bf16": "" @@ -10846,17 +10846,17 @@ } }, { - "Platform": "Intel® Core™ i7-1185G7 iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", - "Parameters": { - "throughput": { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { "Precisions": [ { "int4": "", - "int8": 168.28, - "fp16": 115.07, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -10868,7 +10868,7 @@ "Precisions": [ { "int4": "", - "int8": 7.55, + "int8": 1.42, "fp16": "", "fp32": "", "bf16": "" @@ -10880,18 +10880,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 49.86, - "fp16": "", - "fp32": 26.12, + "int8": 854.09, + "fp16": 539.78, + "fp32": "", "bf16": "" } ], @@ -10902,7 +10902,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.4, "fp16": "", "fp32": "", "bf16": "" @@ -10914,18 +10914,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.15, - "fp16": "", - "fp32": 2.68, + "int8": 768.87, + "fp16": 382.94, + "fp32": "", "bf16": "" } ], @@ -10936,7 +10936,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.57, "fp16": "", "fp32": "", "bf16": "" @@ -10948,18 +10948,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 57.89, - "fp16": "", - "fp32": 28.17, + "int8": 772.54, + "fp16": 383.99, + "fp32": "", "bf16": "" } ], @@ -10970,7 +10970,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.54, "fp16": "", "fp32": "", "bf16": "" @@ -10982,18 +10982,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.7, - "fp16": "", - "fp32": 0.33, + "int8": 2022.98, + "fp16": 975.93, + "fp32": "", "bf16": "" } ], @@ -11004,7 +11004,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 0.75, "fp16": "", "fp32": "", "bf16": "" @@ -11016,18 +11016,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 963.77, - "fp16": "", - "fp32": 348.67, + "int8": 106.37, + "fp16": 64.66, + "fp32": "", "bf16": "" } ], @@ -11038,7 +11038,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 10.57, "fp16": "", "fp32": "", "bf16": "" @@ -11050,18 +11050,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Platform": "Intel® Atom® X6425E iGPU-only", "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 230.76, - "fp16": "", - "fp32": 85.68, + "int8": 48.1, + "fp16": 51.69, + "fp32": "", "bf16": "" } ], @@ -11072,7 +11072,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 23.01, "fp16": "", "fp32": "", "bf16": "" @@ -11084,18 +11084,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.6, - "fp16": "", - "fp32": 1.76, + "int8": 203.75, + "fp16": 118.64, + "fp32": "", "bf16": "" } ], @@ -11106,7 +11106,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 6.33, "fp16": "", "fp32": "", "bf16": "" @@ -11118,18 +11118,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 448.31, - "fp16": "", - "fp32": 164.3, + "int8": 213.35, + "fp16": 119.51, + "fp32": "", "bf16": "" } ], @@ -11140,7 +11140,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.89, "fp16": "", "fp32": "", "bf16": "" @@ -11152,18 +11152,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.89, - "fp16": "", - "fp32": 2.92, + "int8": 225.63, + "fp16": 128.49, + "fp32": "", "bf16": "" } ], @@ -11174,7 +11174,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.26, "fp16": "", "fp32": "", "bf16": "" @@ -11186,18 +11186,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 263.65, - "fp16": "", - "fp32": 108.88, + "int8": "", + "fp16": 174.47, + "fp32": "", "bf16": "" } ], @@ -11220,18 +11220,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 103.93, - "fp16": "", - "fp32": 53.38, + "int8": 203.92, + "fp16": 125.66, + "fp32": "", "bf16": "" } ], @@ -11242,7 +11242,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 5.53, "fp16": "", "fp32": "", "bf16": "" @@ -11254,18 +11254,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 38.24, - "fp16": "", - "fp32": 13.64, + "int8": 387.63, + "fp16": 228.73, + "fp32": "", "bf16": "" } ], @@ -11276,7 +11276,7 @@ "Precisions": [ { "int4": "", - "int8": 28.47, + "int8": 3.23, "fp16": "", "fp32": "", "bf16": "" @@ -11288,18 +11288,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.67, - "fp16": "", - "fp32": 1.2, + "int8": 278.1, + "fp16": 165.78, + "fp32": "", "bf16": "" } ], @@ -11310,7 +11310,7 @@ "Precisions": [ { "int4": "", - "int8": 267.33, + "int8": 3.86, "fp16": "", "fp32": "", "bf16": "" @@ -11322,18 +11322,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 52.85, + "int8": "", "fp16": "", - "fp32": 21.76, + "fp32": "", "bf16": "" } ], @@ -11344,7 +11344,7 @@ "Precisions": [ { "int4": "", - "int8": 20.2, + "int8": 3.5, "fp16": "", "fp32": "", "bf16": "" @@ -11356,18 +11356,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.52, - "fp16": "", - "fp32": 0.13, + "int8": 81.72, + "fp16": 49.75, + "fp32": "", "bf16": "" } ], @@ -11378,7 +11378,7 @@ "Precisions": [ { "int4": "", - "int8": 1782.48, + "int8": 13.15, "fp16": "", "fp32": "", "bf16": "" @@ -11390,18 +11390,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 966.53, - "fp16": "", - "fp32": 308.92, + "int8": 556.79, + "fp16": 393.72, + "fp32": "", "bf16": "" } ], @@ -11412,7 +11412,7 @@ "Precisions": [ { "int4": "", - "int8": 1.21, + "int8": 1.7, "fp16": "", "fp32": "", "bf16": "" @@ -11424,18 +11424,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", "Model": "resnet-50", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 174.34, - "fp16": "", - "fp32": 45.22, + "int8": 568.08, + "fp16": 375.74, + "fp32": "", "bf16": "" } ], @@ -11446,7 +11446,7 @@ "Precisions": [ { "int4": "", - "int8": 6.4, + "int8": 2.26, "fp16": "", "fp32": "", "bf16": "" @@ -11458,18 +11458,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 0.71, + "int8": 1167.79, + "fp16": 621.08, + "fp32": "", "bf16": "" } ], @@ -11480,7 +11480,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.49, "fp16": "", "fp32": "", "bf16": "" @@ -11492,18 +11492,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 387.33, + "int8": 129.36, "fp16": "", - "fp32": 101.02, + "fp32": 55.58, "bf16": "" } ], @@ -11514,7 +11514,7 @@ "Precisions": [ { "int4": "", - "int8": 2.81, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11526,18 +11526,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4.95, + "int8": 59.45, "fp16": "", - "fp32": 1.24, + "fp32": 54.27, "bf16": "" } ], @@ -11548,7 +11548,7 @@ "Precisions": [ { "int4": "", - "int8": 201.29, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11560,18 +11560,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 184.43, + "int8": 196.98, "fp16": "", - "fp32": 55.69, + "fp32": 115.77, "bf16": "" } ], @@ -11582,7 +11582,7 @@ "Precisions": [ { "int4": "", - "int8": 5.58, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11594,18 +11594,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 76.79, + "int8": "", "fp16": "", - "fp32": 27.65, + "fp32": 53.71, "bf16": "" } ], @@ -11616,7 +11616,7 @@ "Precisions": [ { "int4": "", - "int8": 13.28, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11628,18 +11628,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 47.85, - "fp16": 41.69, - "fp32": "", + "int8": 235.76, + "fp16": "", + "fp32": 88.15, "bf16": "" } ], @@ -11650,7 +11650,7 @@ "Precisions": [ { "int4": "", - "int8": 21.84, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11662,18 +11662,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.35, - "fp16": 4.47, - "fp32": "", + "int8": 368.58, + "fp16": "", + "fp32": 166.93, "bf16": "" } ], @@ -11684,7 +11684,7 @@ "Precisions": [ { "int4": "", - "int8": 179.04, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11696,18 +11696,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 55.84, - "fp16": 41.66, - "fp32": "", + "int8": 224.44, + "fp16": "", + "fp32": 81.26, "bf16": "" } ], @@ -11718,7 +11718,7 @@ "Precisions": [ { "int4": "", - "int8": 24.48, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11730,17 +11730,17 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.55, - "fp16": 0.58, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -11752,7 +11752,7 @@ "Precisions": [ { "int4": "", - "int8": 1662.16, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11764,18 +11764,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 607.18, - "fp16": 429.6, - "fp32": "", + "int8": 285.59, + "fp16": "", + "fp32": 110.56, "bf16": "" } ], @@ -11786,7 +11786,7 @@ "Precisions": [ { "int4": "", - "int8": 1.7, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11798,18 +11798,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", "Model": "resnet-50", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 207.16, - "fp16": 119.53, - "fp32": "", + "int8": 433.32, + "fp16": "", + "fp32": 147.73, "bf16": "" } ], @@ -11820,7 +11820,7 @@ "Precisions": [ { "int4": "", - "int8": 5.5, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11832,18 +11832,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.52, - "fp16": 2.99, - "fp32": "", + "int8": 112.49, + "fp16": "", + "fp32": 42.68, "bf16": "" } ], @@ -11854,7 +11854,7 @@ "Precisions": [ { "int4": "", - "int8": 172.91, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11866,18 +11866,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 353.15, - "fp16": 223.66, - "fp32": "", + "int8": 1107.14, + "fp16": "", + "fp32": 471.86, "bf16": "" } ], @@ -11888,7 +11888,7 @@ "Precisions": [ { "int4": "", - "int8": 3.33, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11900,18 +11900,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "resnet-50", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.08, - "fp16": 5.18, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 257.94, "bf16": "" } ], @@ -11922,7 +11922,7 @@ "Precisions": [ { "int4": "", - "int8": 93.7, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -11934,18 +11934,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 307.99, - "fp16": 169.63, - "fp32": "", + "int8": 0.76, + "fp16": "", + "fp32": 0.31, "bf16": "" } ], @@ -11956,7 +11956,7 @@ "Precisions": [ { "int4": "", - "int8": 3.36, + "int8": 1318.07, "fp16": "", "fp32": "", "bf16": "" @@ -11968,18 +11968,18 @@ } }, { - "Platform": "Intel® Core™ i7-1185GRE iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 117.48, - "fp16": 78.18, - "fp32": "", + "int8": 0.33, + "fp16": "", + "fp32": 0.13, "bf16": "" } ], @@ -11990,7 +11990,7 @@ "Precisions": [ { "int4": "", - "int8": 9.63, + "int8": 2998.35, "fp16": "", "fp32": "", "bf16": "" @@ -12002,18 +12002,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 85.3, + "int8": 0.89, "fp16": "", - "fp32": 33.64, + "fp32": 0.23, "bf16": "" } ], @@ -12024,7 +12024,7 @@ "Precisions": [ { "int4": "", - "int8": 16.56, + "int8": 1117.77, "fp16": "", "fp32": "", "bf16": "" @@ -12036,18 +12036,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.59, + "int8": 1.67, "fp16": "", - "fp32": 2.83, + "fp32": 0.89, "bf16": "" } ], @@ -12058,7 +12058,7 @@ "Precisions": [ { "int4": "", - "int8": 171.55, + "int8": 598.98, "fp16": "", "fp32": "", "bf16": "" @@ -12070,18 +12070,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 112.34, + "int8": 2.42, "fp16": "", - "fp32": 61.11, + "fp32": 1.29, "bf16": "" } ], @@ -12092,7 +12092,7 @@ "Precisions": [ { "int4": "", - "int8": 11.55, + "int8": 428.32, "fp16": "", "fp32": "", "bf16": "" @@ -12104,18 +12104,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.24, + "int8": 2.76, "fp16": "", - "fp32": 0.35, + "fp32": 0.79, "bf16": "" } ], @@ -12126,7 +12126,7 @@ "Precisions": [ { "int4": "", - "int8": 936.3, + "int8": 494.95, "fp16": "", "fp32": "", "bf16": "" @@ -12138,18 +12138,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1968.65, + "int8": 3.17, "fp16": "", - "fp32": 955.03, + "fp32": 0.92, "bf16": "" } ], @@ -12160,7 +12160,7 @@ "Precisions": [ { "int4": "", - "int8": 0.94, + "int8": 463.7, "fp16": "", "fp32": "", "bf16": "" @@ -12172,18 +12172,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 416.36, + "int8": 8.97, "fp16": "", - "fp32": 107.68, + "fp32": 2.5, "bf16": "" } ], @@ -12194,7 +12194,7 @@ "Precisions": [ { "int4": "", - "int8": 3.45, + "int8": 128.87, "fp16": "", "fp32": "", "bf16": "" @@ -12206,18 +12206,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", + "Platform": "Intel® Core™ i5-8500 CPU-only", "Model": "ssd-resnet34-1200", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.61, "fp16": "", - "fp32": 1.89, + "fp32": 1.34, "bf16": "" } ], @@ -12228,7 +12228,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 399.72, "fp16": "", "fp32": "", "bf16": "" @@ -12240,18 +12240,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 819.61, + "int8": 3.96, "fp16": "", - "fp32": 286.69, + "fp32": 1.02, "bf16": "" } ], @@ -12262,7 +12262,7 @@ "Precisions": [ { "int4": "", - "int8": 1.69, + "int8": 250.0, "fp16": "", "fp32": "", "bf16": "" @@ -12274,18 +12274,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 9.61, + "int8": "", "fp16": "", - "fp32": 2.4, + "fp32": "", "bf16": "" } ], @@ -12296,7 +12296,7 @@ "Precisions": [ { "int4": "", - "int8": 121.86, + "int8": 321.18, "fp16": "", "fp32": "", "bf16": "" @@ -12309,17 +12309,17 @@ }, { "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 479.88, + "int8": 6.82, "fp16": "", - "fp32": 140.14, + "fp32": 1.9, "bf16": "" } ], @@ -12330,7 +12330,7 @@ "Precisions": [ { "int4": "", - "int8": 2.95, + "int8": 169.83, "fp16": "", "fp32": "", "bf16": "" @@ -12342,18 +12342,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 194.08, + "int8": 3.5, "fp16": "", - "fp32": 76.35, + "fp32": 1.02, "bf16": "" } ], @@ -12364,7 +12364,7 @@ "Precisions": [ { "int4": "", - "int8": 6.51, + "int8": 436.59, "fp16": "", "fp32": "", "bf16": "" @@ -12376,17 +12376,17 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 88.93, - "fp16": 69.66, + "int8": 5.14, + "fp16": "", "fp32": "", "bf16": "" } @@ -12398,7 +12398,7 @@ "Precisions": [ { "int4": "", - "int8": 12.88, + "int8": 247.47, "fp16": "", "fp32": "", "bf16": "" @@ -12410,18 +12410,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 11.64, - "fp16": 8.35, - "fp32": "", + "int8": 2.0, + "fp16": "", + "fp32": 1.06, "bf16": "" } ], @@ -12432,7 +12432,7 @@ "Precisions": [ { "int4": "", - "int8": 87.57, + "int8": 374.78, "fp16": "", "fp32": "", "bf16": "" @@ -12444,18 +12444,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 127.94, - "fp16": 97.66, - "fp32": "", + "int8": 2.57, + "fp16": "", + "fp32": 1.28, "bf16": "" } ], @@ -12466,7 +12466,7 @@ "Precisions": [ { "int4": "", - "int8": 12.7, + "int8": 413.46, "fp16": "", "fp32": "", "bf16": "" @@ -12478,18 +12478,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.03, - "fp16": 1.14, - "fp32": "", + "int8": 12.97, + "fp16": "", + "fp32": 3.83, "bf16": "" } ], @@ -12500,7 +12500,7 @@ "Precisions": [ { "int4": "", - "int8": 972.95, + "int8": 101.21, "fp16": "", "fp32": "", "bf16": "" @@ -12512,18 +12512,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1275.12, - "fp16": 910.23, - "fp32": "", + "int8": 0.82, + "fp16": "", + "fp32": 0.32, "bf16": "" } ], @@ -12534,7 +12534,7 @@ "Precisions": [ { "int4": "", - "int8": 1.09, + "int8": 1223.85, "fp16": "", "fp32": "", "bf16": "" @@ -12546,18 +12546,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 386.47, - "fp16": 228.04, - "fp32": "", + "int8": 4.34, + "fp16": "", + "fp32": 2.29, "bf16": "" } ], @@ -12568,7 +12568,7 @@ "Precisions": [ { "int4": "", - "int8": 3.24, + "int8": 239.97, "fp16": "", "fp32": "", "bf16": "" @@ -12580,18 +12580,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Platform": "Intel® Xeon® E-2124G CPU-only", "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.44, - "fp16": 6.09, - "fp32": "", + "int8": 1.59, + "fp16": "", + "fp32": 0.85, "bf16": "" } ], @@ -12602,7 +12602,7 @@ "Precisions": [ { "int4": "", - "int8": 100.09, + "int8": 628.98, "fp16": "", "fp32": "", "bf16": "" @@ -12614,18 +12614,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 739.14, - "fp16": 415.33, - "fp32": "", + "int8": 17.67, + "fp16": "", + "fp32": 4.59, "bf16": "" } ], @@ -12636,7 +12636,7 @@ "Precisions": [ { "int4": "", - "int8": 1.86, + "int8": 115.61, "fp16": "", "fp32": "", "bf16": "" @@ -12648,18 +12648,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 18.34, - "fp16": 9.7, - "fp32": "", + "int8": 58.24, + "fp16": "", + "fp32": 15.05, "bf16": "" } ], @@ -12670,7 +12670,7 @@ "Precisions": [ { "int4": "", - "int8": 54.73, + "int8": 36.32, "fp16": "", "fp32": "", "bf16": "" @@ -12682,18 +12682,18 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 591.82, - "fp16": 319.3, - "fp32": "", + "int8": 85.63, + "fp16": "", + "fp32": 21.01, "bf16": "" } ], @@ -12704,7 +12704,7 @@ "Precisions": [ { "int4": "", - "int8": 1.97, + "int8": 25.38, "fp16": "", "fp32": "", "bf16": "" @@ -12716,19 +12716,19 @@ } }, { - "Platform": "Intel® Core™ i7-12700H iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 218.11, - "fp16": 148.84, - "fp32": "", - "bf16": "" + "int8": 438.33, + "fp16": "", + "fp32": 30.86, + "bf16": 213.33 } ], "Unit": "FPS", @@ -12738,10 +12738,10 @@ "Precisions": [ { "int4": "", - "int8": 5.54, + "int8": 7.94, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 13.88 } ], "Unit": "ms", @@ -12750,19 +12750,19 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 62.94, + "int8": 512.76, "fp16": "", - "fp32": 33.05, - "bf16": "" + "fp32": 35.43, + "bf16": 276.38 } ], "Unit": "FPS", @@ -12772,10 +12772,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 7.12, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 11.56 } ], "Unit": "ms", @@ -12784,18 +12784,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.62, + "int8": 41.98, "fp16": "", - "fp32": 3.23, + "fp32": 10.9, "bf16": "" } ], @@ -12806,7 +12806,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 48.76, "fp16": "", "fp32": "", "bf16": "" @@ -12818,18 +12818,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 89.9, + "int8": 42.23, "fp16": "", - "fp32": 60.09, + "fp32": 10.5, "bf16": "" } ], @@ -12840,7 +12840,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 49.04, "fp16": "", "fp32": "", "bf16": "" @@ -12852,18 +12852,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.88, + "int8": 6.45, "fp16": "", - "fp32": 0.45, + "fp32": 1.66, "bf16": "" } ], @@ -12874,7 +12874,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 208.68, "fp16": "", "fp32": "", "bf16": "" @@ -12886,18 +12886,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", - "Parameters": { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1230.71, + "int8": 4.88, "fp16": "", - "fp32": 660.1, + "fp32": 1.23, "bf16": "" } ], @@ -12908,7 +12908,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 259.24, "fp16": "", "fp32": "", "bf16": "" @@ -12920,18 +12920,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 293.95, + "int8": 6.08, "fp16": "", - "fp32": 112.37, + "fp32": 1.48, "bf16": "" } ], @@ -12942,7 +12942,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 234.74, "fp16": "", "fp32": "", "bf16": "" @@ -12954,18 +12954,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.16, - "fp16": "", - "fp32": 2.19, + "int8": 140.65, + "fp16": 92.11, + "fp32": "", "bf16": "" } ], @@ -12976,7 +12976,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 15.32, "fp16": "", "fp32": "", "bf16": "" @@ -12988,18 +12988,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 561.31, + "int8": "", "fp16": "", - "fp32": 236.99, + "fp32": "", "bf16": "" } ], @@ -13010,7 +13010,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 14.78, "fp16": "", "fp32": "", "bf16": "" @@ -13022,18 +13022,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 9.87, - "fp16": "", - "fp32": 3.67, + "int8": 35.4, + "fp16": 17.45, + "fp32": "", "bf16": "" } ], @@ -13044,7 +13044,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 35.98, "fp16": "", "fp32": "", "bf16": "" @@ -13056,18 +13056,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 349.32, - "fp16": "", - "fp32": 135.28, + "int8": 2.16, + "fp16": 1.32, + "fp32": "", "bf16": "" } ], @@ -13078,7 +13078,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 472.12, "fp16": "", "fp32": "", "bf16": "" @@ -13090,18 +13090,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 156.93, - "fp16": "", - "fp32": 74.81, + "int8": 1.16, + "fp16": 1.16, + "fp32": "", "bf16": "" } ], @@ -13112,7 +13112,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 870.37, "fp16": "", "fp32": "", "bf16": "" @@ -13124,18 +13124,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 44.98, - "fp16": "", - "fp32": 17.99, + "int8": 5.09, + "fp16": 2.78, + "fp32": "", "bf16": "" } ], @@ -13146,7 +13146,7 @@ "Precisions": [ { "int4": "", - "int8": 37.43, + "int8": 210.29, "fp16": "", "fp32": "", "bf16": "" @@ -13158,18 +13158,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4.07, - "fp16": "", - "fp32": 1.55, + "int8": 5.8, + "fp16": 2.81, + "fp32": "", "bf16": "" } ], @@ -13180,7 +13180,7 @@ "Precisions": [ { "int4": "", - "int8": 357.9, + "int8": 164.94, "fp16": "", "fp32": "", "bf16": "" @@ -13192,18 +13192,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 62.65, - "fp16": "", - "fp32": 39.85, + "int8": 5.92, + "fp16": 2.89, + "fp32": "", "bf16": "" } ], @@ -13214,7 +13214,7 @@ "Precisions": [ { "int4": "", - "int8": 26.75, + "int8": 143.88, "fp16": "", "fp32": "", "bf16": "" @@ -13226,18 +13226,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.64, - "fp16": "", - "fp32": 0.18, + "int8": 8.32, + "fp16": 4.74, + "fp32": "", "bf16": "" } ], @@ -13248,7 +13248,7 @@ "Precisions": [ { "int4": "", - "int8": 1903.03, + "int8": 117.76, "fp16": "", "fp32": "", "bf16": "" @@ -13260,18 +13260,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1044.1, - "fp16": "", - "fp32": 514.83, + "int8": 5.43, + "fp16": 3.17, + "fp32": "", "bf16": "" } ], @@ -13282,7 +13282,7 @@ "Precisions": [ { "int4": "", - "int8": 1.6, + "int8": 170.95, "fp16": "", "fp32": "", "bf16": "" @@ -13294,18 +13294,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 205.61, - "fp16": "", - "fp32": 59.59, + "int8": 10.46, + "fp16": 6.1, + "fp32": "", "bf16": "" } ], @@ -13316,7 +13316,7 @@ "Precisions": [ { "int4": "", - "int8": 8.92, + "int8": 100.05, "fp16": "", "fp32": "", "bf16": "" @@ -13328,18 +13328,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", "Model": "ssd-resnet34-1200", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 1.03, + "int8": 7.12, + "fp16": 4.0, + "fp32": "", "bf16": "" } ], @@ -13350,7 +13350,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 126.18, "fp16": "", "fp32": "", "bf16": "" @@ -13362,18 +13362,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 427.09, + "int8": "", "fp16": "", - "fp32": 154.82, + "fp32": "", "bf16": "" } ], @@ -13384,7 +13384,7 @@ "Precisions": [ { "int4": "", - "int8": 3.86, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13396,18 +13396,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.17, - "fp16": "", - "fp32": 0.98, + "int8": 1.62, + "fp16": 1.01, + "fp32": "", "bf16": "" } ], @@ -13418,7 +13418,7 @@ "Precisions": [ { "int4": "", - "int8": 289.96, + "int8": 623.25, "fp16": "", "fp32": "", "bf16": "" @@ -13430,18 +13430,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 232.99, - "fp16": "", - "fp32": 77.57, + "int8": 21.37, + "fp16": 12.68, + "fp32": "", "bf16": "" } ], @@ -13452,7 +13452,7 @@ "Precisions": [ { "int4": "", - "int8": 7.26, + "int8": 47.25, "fp16": "", "fp32": "", "bf16": "" @@ -13464,18 +13464,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 102.69, - "fp16": "", - "fp32": 41.19, + "int8": "", + "fp16": 10.09, + "fp32": "", "bf16": "" } ], @@ -13486,7 +13486,7 @@ "Precisions": [ { "int4": "", - "int8": 16.9, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13498,17 +13498,17 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 66.57, - "fp16": 53.45, + "int8": 65.86, + "fp16": 39.71, "fp32": "", "bf16": "" } @@ -13520,7 +13520,7 @@ "Precisions": [ { "int4": "", - "int8": 14.4, + "int8": 21.36, "fp16": "", "fp32": "", "bf16": "" @@ -13532,18 +13532,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.22, - "fp16": 5.94, - "fp32": "", + "int8": 2.53, + "fp16": "", + "fp32": 0.87, "bf16": "" } ], @@ -13554,7 +13554,7 @@ "Precisions": [ { "int4": "", - "int8": 110.97, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13566,18 +13566,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 101.06, - "fp16": 75.39, - "fp32": "", + "int8": 1.25, + "fp16": "", + "fp32": 1.08, "bf16": "" } ], @@ -13588,7 +13588,7 @@ "Precisions": [ { "int4": "", - "int8": 13.37, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13600,18 +13600,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.75, - "fp16": 0.79, - "fp32": "", + "int8": 5.37, + "fp16": "", + "fp32": 2.71, "bf16": "" } ], @@ -13622,7 +13622,7 @@ "Precisions": [ { "int4": "", - "int8": 1176.92, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13634,18 +13634,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 892.66, - "fp16": 630.28, - "fp32": "", + "int8": 3.52, + "fp16": "", + "fp32": 1.13, "bf16": "" } ], @@ -13656,7 +13656,7 @@ "Precisions": [ { "int4": "", - "int8": 1.36, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13668,18 +13668,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 279.02, - "fp16": 168.18, - "fp32": "", + "int8": 4.77, + "fp16": "", + "fp32": 1.75, "bf16": "" } ], @@ -13690,7 +13690,7 @@ "Precisions": [ { "int4": "", - "int8": 3.81, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13702,18 +13702,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", "Model": "ssd-resnet34-1200", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.22, - "fp16": 4.03, - "fp32": "", + "int8": 8.81, + "fp16": "", + "fp32": 3.81, "bf16": "" } ], @@ -13724,7 +13724,7 @@ "Precisions": [ { "int4": "", - "int8": 126.31, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13736,18 +13736,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 495.37, - "fp16": 302.64, - "fp32": "", + "int8": 4.33, + "fp16": "", + "fp32": 1.68, "bf16": "" } ], @@ -13758,7 +13758,7 @@ "Precisions": [ { "int4": "", - "int8": 2.46, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13770,17 +13770,17 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 12.93, - "fp16": 6.58, + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -13792,7 +13792,7 @@ "Precisions": [ { "int4": "", - "int8": 67.72, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13804,18 +13804,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 411.85, - "fp16": 219.54, - "fp32": "", + "int8": 5.71, + "fp16": "", + "fp32": 2.16, "bf16": "" } ], @@ -13826,7 +13826,7 @@ "Precisions": [ { "int4": "", - "int8": 2.5, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13838,18 +13838,18 @@ } }, { - "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 167.77, - "fp16": 110.14, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 3.05, "bf16": "" } ], @@ -13860,7 +13860,7 @@ "Precisions": [ { "int4": "", - "int8": 6.25, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -13872,18 +13872,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 98.23, + "int8": 2.05, "fp16": "", - "fp32": 56.22, + "fp32": 0.61, "bf16": "" } ], @@ -13906,18 +13906,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.19, + "int8": 18.73, "fp16": "", - "fp32": 5.91, + "fp32": 9.5, "bf16": "" } ], @@ -13940,18 +13940,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "ssd-resnet34-1200", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 108.41, + "int8": 12.04, "fp16": "", - "fp32": 57.85, + "fp32": 4.95, "bf16": "" } ], @@ -13974,18 +13974,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1608.64, + "int8": 97.87, "fp16": "", - "fp32": 849.7, + "fp32": 45.25, "bf16": "" } ], @@ -13996,7 +13996,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 10.56, "fp16": "", "fp32": "", "bf16": "" @@ -14008,18 +14008,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 453.79, + "int8": 45.67, "fp16": "", - "fp32": 181.36, + "fp32": 21.53, "bf16": "" } ], @@ -14030,7 +14030,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 22.79, "fp16": "", "fp32": "", "bf16": "" @@ -14042,18 +14042,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.66, + "int8": 115.01, "fp16": "", - "fp32": 5.44, + "fp32": 36.97, "bf16": "" } ], @@ -14064,7 +14064,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 9.06, "fp16": "", "fp32": "", "bf16": "" @@ -14076,18 +14076,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Platform": "Intel® Core™ i3-8100 CPU-only", "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 811.05, + "int8": 211.59, "fp16": "", - "fp32": 354.03, + "fp32": 119.52, "bf16": "" } ], @@ -14098,7 +14098,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.95, "fp16": "", "fp32": "", "bf16": "" @@ -14110,18 +14110,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 20.73, + "int8": 327.96, "fp16": "", - "fp32": 8.54, + "fp32": 163.65, "bf16": "" } ], @@ -14132,7 +14132,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.63, "fp16": "", "fp32": "", "bf16": "" @@ -14144,18 +14144,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 538.31, + "int8": 326.48, "fp16": "", - "fp32": 241.46, + "fp32": 98.82, "bf16": "" } ], @@ -14166,7 +14166,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.67, "fp16": "", "fp32": "", "bf16": "" @@ -14178,18 +14178,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 227.41, + "int8": 383.99, "fp16": "", - "fp32": 111.9, + "fp32": 136.38, "bf16": "" } ], @@ -14200,7 +14200,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 4.16, "fp16": "", "fp32": "", "bf16": "" @@ -14212,18 +14212,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 64.14, + "int8": 1073.43, "fp16": "", - "fp32": 25.24, + "fp32": 385.05, "bf16": "" } ], @@ -14234,7 +14234,7 @@ "Precisions": [ { "int4": "", - "int8": 24.31, + "int8": 1.31, "fp16": "", "fp32": "", "bf16": "" @@ -14246,18 +14246,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5.9, + "int8": 335.03, "fp16": "", - "fp32": 2.22, + "fp32": 182.29, "bf16": "" } ], @@ -14268,7 +14268,7 @@ "Precisions": [ { "int4": "", - "int8": 244.62, + "int8": 3.15, "fp16": "", "fp32": "", "bf16": "" @@ -14280,18 +14280,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 86.28, + "int8": 495.53, "fp16": "", - "fp32": 44.24, + "fp32": 147.22, "bf16": "" } ], @@ -14302,7 +14302,7 @@ "Precisions": [ { "int4": "", - "int8": 16.8, + "int8": 2.19, "fp16": "", "fp32": "", "bf16": "" @@ -14314,18 +14314,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.98, + "int8": 385.05, "fp16": "", - "fp32": 0.27, + "fp32": 100.34, "bf16": "" } ], @@ -14336,7 +14336,7 @@ "Precisions": [ { "int4": "", - "int8": 1392.43, + "int8": 2.83, "fp16": "", "fp32": "", "bf16": "" @@ -14348,18 +14348,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1356.83, + "int8": 832.22, "fp16": "", - "fp32": 719.36, + "fp32": 284.89, "bf16": "" } ], @@ -14370,7 +14370,7 @@ "Precisions": [ { "int4": "", - "int8": 1.17, + "int8": 1.73, "fp16": "", "fp32": "", "bf16": "" @@ -14382,18 +14382,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 310.2, + "int8": 423.45, "fp16": "", - "fp32": 81.12, + "fp32": 153.0, "bf16": "" } ], @@ -14404,7 +14404,7 @@ "Precisions": [ { "int4": "", - "int8": 5.17, + "int8": 3.88, "fp16": "", "fp32": "", "bf16": "" @@ -14417,8 +14417,8 @@ }, { "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -14427,7 +14427,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 1.43, + "fp32": "", "bf16": "" } ], @@ -14438,7 +14438,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.45, "fp16": "", "fp32": "", "bf16": "" @@ -14450,18 +14450,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", + "Platform": "Intel® Core™ i7-8700T CPU-only", "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 611.66, + "int8": 275.79, "fp16": "", - "fp32": 219.37, + "fp32": 151.19, "bf16": "" } ], @@ -14472,7 +14472,7 @@ "Precisions": [ { "int4": "", - "int8": 2.45, + "int8": 3.22, "fp16": "", "fp32": "", "bf16": "" @@ -14484,18 +14484,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 7.44, + "int8": 351.76, "fp16": "", - "fp32": 1.55, + "fp32": 183.93, "bf16": "" } ], @@ -14506,7 +14506,7 @@ "Precisions": [ { "int4": "", - "int8": 183.66, + "int8": 3.41, "fp16": "", "fp32": "", "bf16": "" @@ -14518,18 +14518,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 354.22, + "int8": 1607.16, "fp16": "", - "fp32": 104.25, + "fp32": 587.94, "bf16": "" } ], @@ -14540,7 +14540,7 @@ "Precisions": [ { "int4": "", - "int8": 4.36, + "int8": 1.09, "fp16": "", "fp32": "", "bf16": "" @@ -14552,18 +14552,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 144.91, + "int8": 105.81, "fp16": "", - "fp32": 56.17, + "fp32": 49.62, "bf16": "" } ], @@ -14574,7 +14574,7 @@ "Precisions": [ { "int4": "", - "int8": 9.33, + "int8": 9.76, "fp16": "", "fp32": "", "bf16": "" @@ -14586,18 +14586,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 92.26, - "fp16": 71.67, - "fp32": "", + "int8": 575.93, + "fp16": "", + "fp32": 272.53, "bf16": "" } ], @@ -14608,7 +14608,7 @@ "Precisions": [ { "int4": "", - "int8": 12.37, + "int8": 2.33, "fp16": "", "fp32": "", "bf16": "" @@ -14620,18 +14620,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 11.25, - "fp16": 8.61, - "fp32": "", + "int8": 202.32, + "fp16": "", + "fp32": 120.89, "bf16": "" } ], @@ -14642,7 +14642,7 @@ "Precisions": [ { "int4": "", - "int8": 91.3, + "int8": 5.11, "fp16": "", "fp32": "", "bf16": "" @@ -14654,18 +14654,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2068.2, "fp16": "", - "fp32": "", + "fp32": 637.61, "bf16": "" } ], @@ -14675,8 +14675,8 @@ "latency": { "Precisions": [ { - "int4": 163.82, - "int8": "", + "int4": "", + "int8": 1.66, "fp16": "", "fp32": "", "bf16": "" @@ -14688,18 +14688,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 109.11, - "fp16": 84.61, - "fp32": "", + "int8": 6032.65, + "fp16": "", + "fp32": 1652.7, "bf16": "" } ], @@ -14710,7 +14710,7 @@ "Precisions": [ { "int4": "", - "int8": 14.05, + "int8": 1.23, "fp16": "", "fp32": "", "bf16": "" @@ -14722,10 +14722,10 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ @@ -14733,7 +14733,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", + "fp32": 2525.11, "bf16": "" } ], @@ -14743,8 +14743,8 @@ "latency": { "Precisions": [ { - "int4": 150.55, - "int8": "", + "int4": "", + "int8": 0.69, "fp16": "", "fp32": "", "bf16": "" @@ -14756,19 +14756,19 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 23599.57, "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 3405.56, + "bf16": 12205.1 } ], "Unit": "FPS", @@ -14777,11 +14777,11 @@ "latency": { "Precisions": [ { - "int4": 183.29, - "int8": "", + "int4": "", + "int8": 0.74, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 0.87 } ], "Unit": "ms", @@ -14790,10 +14790,10 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "llama-3-8b", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ @@ -14801,8 +14801,8 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 4698.93, + "bf16": 16520.05 } ], "Unit": "FPS", @@ -14811,11 +14811,11 @@ "latency": { "Precisions": [ { - "int4": 194.21, - "int8": "", + "int4": "", + "int8": 0.83, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 1.2 } ], "Unit": "ms", @@ -14824,18 +14824,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 4267.65, "fp16": "", - "fp32": "", + "fp32": 1238.3, "bf16": "" } ], @@ -14845,8 +14845,8 @@ "latency": { "Precisions": [ { - "int4": 168.65, - "int8": "", + "int4": "", + "int8": 1.29, "fp16": "", "fp32": "", "bf16": "" @@ -14858,18 +14858,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1168.27, - "fp16": 809.9, - "fp32": "", + "int8": 4642.89, + "fp16": "", + "fp32": 1227.04, "bf16": "" } ], @@ -14880,7 +14880,7 @@ "Precisions": [ { "int4": "", - "int8": 1.28, + "int8": 0.93, "fp16": "", "fp32": "", "bf16": "" @@ -14892,18 +14892,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 682.74, "fp16": "", - "fp32": "", + "fp32": 243.93, "bf16": "" } ], @@ -14913,8 +14913,8 @@ "latency": { "Precisions": [ { - "int4": 102.16, - "int8": 163.2, + "int4": "", + "int8": 2.71, "fp16": "", "fp32": "", "bf16": "" @@ -14926,18 +14926,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 367.05, - "fp16": 230.75, - "fp32": "", + "int8": 533.14, + "fp16": "", + "fp32": 179.15, "bf16": "" } ], @@ -14948,7 +14948,7 @@ "Precisions": [ { "int4": "", - "int8": 3.51, + "int8": 3.35, "fp16": "", "fp32": "", "bf16": "" @@ -14960,18 +14960,18 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10.74, - "fp16": 6.21, - "fp32": "", + "int8": 663.32, + "fp16": "", + "fp32": 226.12, "bf16": "" } ], @@ -14982,7 +14982,7 @@ "Precisions": [ { "int4": "", - "int8": 94.66, + "int8": 2.25, "fp16": "", "fp32": "", "bf16": "" @@ -14994,17 +14994,17 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 659.36, - "fp16": 396.71, + "int8": 2300.75, + "fp16": 1706.66, "fp32": "", "bf16": "" } @@ -15016,7 +15016,7 @@ "Precisions": [ { "int4": "", - "int8": 2.24, + "int8": 0.91, "fp16": "", "fp32": "", "bf16": "" @@ -15028,12 +15028,12 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", - "Parameters": { - "throughput": { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { "Precisions": [ { "int4": "", @@ -15050,8 +15050,8 @@ "Precisions": [ { "int4": "", - "int8": 19.97, - "fp16": 18.94, + "int8": 1.28, + "fp16": "", "fp32": "", "bf16": "" } @@ -15062,17 +15062,17 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 1024.85, + "fp16": 777.67, "fp32": "", "bf16": "" } @@ -15084,8 +15084,8 @@ "Precisions": [ { "int4": "", - "int8": 19.99, - "fp16": 19.03, + "int8": 1.33, + "fp16": "", "fp32": "", "bf16": "" } @@ -15096,17 +15096,17 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 19.42, - "fp16": 10.25, + "int8": 704.76, + "fp16": 451.92, "fp32": "", "bf16": "" } @@ -15118,7 +15118,7 @@ "Precisions": [ { "int4": "", - "int8": 51.87, + "int8": 1.65, "fp16": "", "fp32": "", "bf16": "" @@ -15130,17 +15130,17 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 591.87, - "fp16": 321.77, + "int8": 705.61, + "fp16": 458.2, "fp32": "", "bf16": "" } @@ -15152,7 +15152,7 @@ "Precisions": [ { "int4": "", - "int8": 2.22, + "int8": 1.66, "fp16": "", "fp32": "", "bf16": "" @@ -15164,17 +15164,17 @@ } }, { - "Platform": "Intel® Core™ i7-1360P iGPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 208.72, - "fp16": 145.7, + "int8": 229.58, + "fp16": 198.86, "fp32": "", "bf16": "" } @@ -15186,7 +15186,7 @@ "Precisions": [ { "int4": "", - "int8": 5.84, + "int8": 7.67, "fp16": "", "fp32": "", "bf16": "" @@ -15198,18 +15198,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 27.23, - "fp16": "", - "fp32": 18.28, + "int8": 210.98, + "fp16": 137.08, + "fp32": "", "bf16": "" } ], @@ -15220,7 +15220,7 @@ "Precisions": [ { "int4": "", - "int8": 43.5, + "int8": 6.21, "fp16": "", "fp32": "", "bf16": "" @@ -15232,18 +15232,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.5, - "fp16": "", - "fp32": 1.54, + "int8": 92.82, + "fp16": 95.83, + "fp32": "", "bf16": "" } ], @@ -15254,7 +15254,7 @@ "Precisions": [ { "int4": "", - "int8": 464.53, + "int8": 13.65, "fp16": "", "fp32": "", "bf16": "" @@ -15266,18 +15266,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 52.58, - "fp16": "", - "fp32": 37.77, + "int8": 396.49, + "fp16": 222.23, + "fp32": "", "bf16": "" } ], @@ -15288,7 +15288,7 @@ "Precisions": [ { "int4": "", - "int8": 23.64, + "int8": 4.31, "fp16": "", "fp32": "", "bf16": "" @@ -15300,18 +15300,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.37, - "fp16": "", - "fp32": 0.15, + "int8": 392.98, + "fp16": 229.59, + "fp32": "", "bf16": "" } ], @@ -15322,7 +15322,7 @@ "Precisions": [ { "int4": "", - "int8": 2909.82, + "int8": 3.07, "fp16": "", "fp32": "", "bf16": "" @@ -15334,18 +15334,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 738.24, - "fp16": "", - "fp32": 485.65, + "int8": 405.21, + "fp16": 238.92, + "fp32": "", "bf16": "" } ], @@ -15356,7 +15356,7 @@ "Precisions": [ { "int4": "", - "int8": 1.89, + "int8": 2.72, "fp16": "", "fp32": "", "bf16": "" @@ -15368,18 +15368,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 122.21, - "fp16": "", - "fp32": 60.73, + "int8": "", + "fp16": 298.42, + "fp32": "", "bf16": "" } ], @@ -15390,7 +15390,7 @@ "Precisions": [ { "int4": "", - "int8": 10.02, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15402,18 +15402,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 1.05, + "int8": 360.04, + "fp16": 225.51, + "fp32": "", "bf16": "" } ], @@ -15424,7 +15424,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.42, "fp16": "", "fp32": "", "bf16": "" @@ -15436,18 +15436,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", + "Platform": "Intel® Core™ i7-12700H iGPU-only", "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 277.07, - "fp16": "", - "fp32": 152.76, + "int8": 748.06, + "fp16": 416.28, + "fp32": "", "bf16": "" } ], @@ -15458,7 +15458,7 @@ "Precisions": [ { "int4": "", - "int8": 4.34, + "int8": 1.86, "fp16": "", "fp32": "", "bf16": "" @@ -15470,18 +15470,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.07, - "fp16": "", - "fp32": 1.65, + "int8": 488.8, + "fp16": 302.47, + "fp32": "", "bf16": "" } ], @@ -15492,7 +15492,7 @@ "Precisions": [ { "int4": "", - "int8": 366.29, + "int8": 2.51, "fp16": "", "fp32": "", "bf16": "" @@ -15504,18 +15504,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 137.09, + "int8": "", "fp16": "", - "fp32": 68.12, + "fp32": "", "bf16": "" } ], @@ -15526,7 +15526,7 @@ "Precisions": [ { "int4": "", - "int8": 8.25, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15538,18 +15538,18 @@ } }, { - "Platform": "Intel® Core™ i7-8700T CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 70.85, - "fp16": "", - "fp32": 40.95, + "int8": 164.35, + "fp16": 106.86, + "fp32": "", "bf16": "" } ], @@ -15560,7 +15560,7 @@ "Precisions": [ { "int4": "", - "int8": 16.53, + "int8": 7.36, "fp16": "", "fp32": "", "bf16": "" @@ -15572,18 +15572,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 32.92, - "fp16": "", - "fp32": 21.43, + "int8": 979.63, + "fp16": 802.16, + "fp32": "", "bf16": "" } ], @@ -15594,7 +15594,7 @@ "Precisions": [ { "int4": "", - "int8": 37.89, + "int8": 1.15, "fp16": "", "fp32": "", "bf16": "" @@ -15606,18 +15606,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.15, - "fp16": "", - "fp32": 1.9, + "int8": 974.05, + "fp16": 701.6, + "fp32": "", "bf16": "" } ], @@ -15628,7 +15628,7 @@ "Precisions": [ { "int4": "", - "int8": 389.61, + "int8": 1.35, "fp16": "", "fp32": "", "bf16": "" @@ -15640,18 +15640,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 64.89, - "fp16": "", - "fp32": 41.07, + "int8": 985.08, + "fp16": 990.93, + "fp32": "", "bf16": "" } ], @@ -15662,7 +15662,7 @@ "Precisions": [ { "int4": "", - "int8": 18.77, + "int8": 1.87, "fp16": "", "fp32": "", "bf16": "" @@ -15674,18 +15674,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.47, + "int8": 234.86, "fp16": "", - "fp32": 0.17, + "fp32": 116.72, "bf16": "" } ], @@ -15696,7 +15696,7 @@ "Precisions": [ { "int4": "", - "int8": 2244.49, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15708,18 +15708,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 906.7, + "int8": 111.52, "fp16": "", - "fp32": 572.68, + "fp32": 98.51, "bf16": "" } ], @@ -15730,7 +15730,7 @@ "Precisions": [ { "int4": "", - "int8": 1.56, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15742,18 +15742,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 153.1, + "int8": 318.36, "fp16": "", - "fp32": 71.18, + "fp32": 194.83, "bf16": "" } ], @@ -15764,7 +15764,7 @@ "Precisions": [ { "int4": "", - "int8": 7.72, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15776,9 +15776,9 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { @@ -15787,7 +15787,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 1.27, + "fp32": 117.54, "bf16": "" } ], @@ -15810,18 +15810,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 352.77, + "int8": 471.49, "fp16": "", - "fp32": 183.36, + "fp32": 189.58, "bf16": "" } ], @@ -15832,7 +15832,7 @@ "Precisions": [ { "int4": "", - "int8": 3.41, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15844,18 +15844,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.79, + "int8": 650.89, "fp16": "", - "fp32": 1.9, + "fp32": 298.25, "bf16": "" } ], @@ -15866,7 +15866,7 @@ "Precisions": [ { "int4": "", - "int8": 286.09, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15878,18 +15878,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 177.72, + "int8": "", "fp16": "", - "fp32": 72.41, + "fp32": 160.27, "bf16": "" } ], @@ -15900,7 +15900,7 @@ "Precisions": [ { "int4": "", - "int8": 6.37, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15912,18 +15912,18 @@ } }, { - "Platform": "Intel® Core™ i9-10900TE CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 89.62, + "int8": "", "fp16": "", - "fp32": 48.86, + "fp32": 380.11, "bf16": "" } ], @@ -15934,7 +15934,7 @@ "Precisions": [ { "int4": "", - "int8": 12.9, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15946,18 +15946,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 168.58, + "int8": 554.71, "fp16": "", - "fp32": 67.12, + "fp32": 229.14, "bf16": "" } ], @@ -15968,7 +15968,7 @@ "Precisions": [ { "int4": "", - "int8": 10.65, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -15980,18 +15980,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 15.78, + "int8": "", "fp16": "", - "fp32": 5.99, + "fp32": 350.12, "bf16": "" } ], @@ -16002,7 +16002,7 @@ "Precisions": [ { "int4": "", - "int8": 94.55, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -16014,18 +16014,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 217.21, "fp16": "", - "fp32": "", + "fp32": 95.95, "bf16": "" } ], @@ -16035,9 +16035,9 @@ "latency": { "Precisions": [ { - "int4": 65.1, - "int8": 91.17, - "fp16": 177.71, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -16048,18 +16048,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 219.68, + "int8": 1045.56, "fp16": "", - "fp32": 126.96, + "fp32": 608.3, "bf16": "" } ], @@ -16070,7 +16070,7 @@ "Precisions": [ { "int4": "", - "int8": 7.2, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -16082,18 +16082,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "ssd_mobilenet_v1_coco", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 748.16, "fp16": "", - "fp32": "", + "fp32": 419.13, "bf16": "" } ], @@ -16103,9 +16103,9 @@ "latency": { "Precisions": [ { - "int4": 67.23, - "int8": 106.59, - "fp16": 206.8, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -16116,18 +16116,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 1.49, "fp16": "", - "fp32": "", + "fp32": 0.37, "bf16": "" } ], @@ -16137,9 +16137,9 @@ "latency": { "Precisions": [ { - "int4": 74.75, - "int8": 107.89, - "fp16": 202.31, + "int4": "", + "int8": 672.94, + "fp16": "", "fp32": "", "bf16": "" } @@ -16150,18 +16150,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "llama-3-8b", - "Checked": true, + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.54, "fp16": "", - "fp32": "", + "fp32": 1.37, "bf16": "" } ], @@ -16171,9 +16171,9 @@ "latency": { "Precisions": [ { - "int4": 83.76, - "int8": 115.97, - "fp16": 223.88, + "int4": "", + "int8": 403.86, + "fp16": "", "fp32": "", "bf16": "" } @@ -16184,18 +16184,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.48, + "int8": 3.62, "fp16": "", - "fp32": 0.7, + "fp32": 2.01, "bf16": "" } ], @@ -16206,7 +16206,7 @@ "Precisions": [ { "int4": "", - "int8": 555.27, + "int8": 306.85, "fp16": "", "fp32": "", "bf16": "" @@ -16218,18 +16218,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 3.8, "fp16": "", - "fp32": "", + "fp32": 0.82, "bf16": "" } ], @@ -16239,9 +16239,9 @@ "latency": { "Precisions": [ { - "int4": 69.67, - "int8": 109.38, - "fp16": 212.63, + "int4": "", + "int8": 348.07, + "fp16": "", "fp32": "", "bf16": "" } @@ -16252,18 +16252,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4246.79, + "int8": 4.66, "fp16": "", - "fp32": 2042.19, + "fp32": 0.83, "bf16": "" } ], @@ -16274,7 +16274,7 @@ "Precisions": [ { "int4": "", - "int8": 0.59, + "int8": 310.23, "fp16": "", "fp32": "", "bf16": "" @@ -16286,18 +16286,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 12.67, "fp16": "", - "fp32": "", + "fp32": 3.3, "bf16": "" } ], @@ -16307,9 +16307,9 @@ "latency": { "Precisions": [ { - "int4": 42.83, - "int8": 64.19, - "fp16": 117.53, + "int4": "", + "int8": 93.38, + "fp16": "", "fp32": "", "bf16": "" } @@ -16320,18 +16320,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 765.18, + "int8": 3.95, "fp16": "", - "fp32": 233.31, + "fp32": 2.06, "bf16": "" } ], @@ -16342,7 +16342,7 @@ "Precisions": [ { "int4": "", - "int8": 2.14, + "int8": 247.13, "fp16": "", "fp32": "", "bf16": "" @@ -16354,18 +16354,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 6.54, "fp16": "", - "fp32": 3.84, + "fp32": 1.66, "bf16": "" } ], @@ -16376,7 +16376,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 154.95, "fp16": "", "fp32": "", "bf16": "" @@ -16388,18 +16388,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1613.42, + "int8": 4.97, "fp16": "", - "fp32": 588.45, + "fp32": 1.24, "bf16": "" } ], @@ -16410,7 +16410,7 @@ "Precisions": [ { "int4": "", - "int8": 1.08, + "int8": 206.27, "fp16": "", "fp32": "", "bf16": "" @@ -16422,18 +16422,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 9.59, "fp16": "", - "fp32": "", + "fp32": 2.4, "bf16": "" } ], @@ -16444,8 +16444,8 @@ "Precisions": [ { "int4": "", - "int8": 44.5, - "fp16": 43.36, + "int8": 121.76, + "fp16": "", "fp32": "", "bf16": "" } @@ -16456,16 +16456,16 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 5.14, "fp16": "", "fp32": "", "bf16": "" @@ -16478,8 +16478,8 @@ "Precisions": [ { "int4": "", - "int8": 44.53, - "fp16": 43.14, + "int8": 292.14, + "fp16": "", "fp32": "", "bf16": "" } @@ -16490,18 +16490,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", + "Platform": "Intel® Core™ i7-1360P CPU-only", "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™) CPU-only", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 18.62, + "int8": 7.22, "fp16": "", - "fp32": 4.12, + "fp32": 1.55, "bf16": "" } ], @@ -16512,7 +16512,7 @@ "Precisions": [ { "int4": "", - "int8": 72.22, + "int8": 178.96, "fp16": "", "fp32": "", "bf16": "" @@ -16524,18 +16524,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™) CPU-only", + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 883.62, + "int8": 3.06, "fp16": "", - "fp32": 280.07, + "fp32": 1.66, "bf16": "" } ], @@ -16546,7 +16546,7 @@ "Precisions": [ { "int4": "", - "int8": 1.83, + "int8": 254.86, "fp16": "", "fp32": "", "bf16": "" @@ -16558,18 +16558,18 @@ } }, { - "Platform": "Intel® Core™ i9-13900K CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Client Platforms (Intel® Core™) CPU-only", + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 388.3, + "int8": 3.79, "fp16": "", - "fp32": 154.17, + "fp32": 1.91, "bf16": "" } ], @@ -16580,7 +16580,7 @@ "Precisions": [ { "int4": "", - "int8": 4.13, + "int8": 282.74, "fp16": "", "fp32": "", "bf16": "" @@ -16592,18 +16592,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 169.07, - "fp16": 136.35, - "fp32": "", + "int8": 18.74, + "fp16": "", + "fp32": 4.12, "bf16": "" } ], @@ -16614,7 +16614,7 @@ "Precisions": [ { "int4": "", - "int8": 6.27, + "int8": 72.32, "fp16": "", "fp32": "", "bf16": "" @@ -16626,18 +16626,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 31.41, - "fp16": 22.83, - "fp32": "", + "int8": 6.13, + "fp16": "", + "fp32": 3.29, "bf16": "" } ], @@ -16648,7 +16648,7 @@ "Precisions": [ { "int4": "", - "int8": 31.84, + "int8": 174.28, "fp16": "", "fp32": "", "bf16": "" @@ -16660,18 +16660,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2.45, "fp16": "", - "fp32": "", + "fp32": 1.35, "bf16": "" } ], @@ -16681,8 +16681,8 @@ "latency": { "Precisions": [ { - "int4": 77.22, - "int8": "", + "int4": "", + "int8": 415.75, "fp16": "", "fp32": "", "bf16": "" @@ -16694,18 +16694,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 146.84, - "fp16": 120.95, - "fp32": "", + "int8": 28.98, + "fp16": "", + "fp32": 7.41, "bf16": "" } ], @@ -16716,7 +16716,7 @@ "Precisions": [ { "int4": "", - "int8": 9.61, + "int8": 69.96, "fp16": "", "fp32": "", "bf16": "" @@ -16728,18 +16728,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 96.65, "fp16": "", - "fp32": "", + "fp32": 22.64, "bf16": "" } ], @@ -16749,8 +16749,8 @@ "latency": { "Precisions": [ { - "int4": 169.76, - "int8": "", + "int4": "", + "int8": 23.08, "fp16": "", "fp32": "", "bf16": "" @@ -16762,18 +16762,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 139.91, "fp16": "", - "fp32": "", + "fp32": 33.26, "bf16": "" } ], @@ -16783,8 +16783,8 @@ "latency": { "Precisions": [ { - "int4": 193.46, - "int8": "", + "int4": "", + "int8": 15.34, "fp16": "", "fp32": "", "bf16": "" @@ -16796,19 +16796,19 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.0, + "int8": 511.53, "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 48.78, + "bf16": 276.34 } ], "Unit": "FPS", @@ -16818,10 +16818,10 @@ "Precisions": [ { "int4": "", - "int8": 187.27, + "int8": 6.66, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 9.97 } ], "Unit": "ms", @@ -16830,19 +16830,19 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 617.57, "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 56.93, + "bf16": 334.64 } ], "Unit": "FPS", @@ -16851,11 +16851,11 @@ "latency": { "Precisions": [ { - "int4": 82.49, - "int8": "", + "int4": "", + "int8": 5.71, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 7.81 } ], "Unit": "ms", @@ -16864,18 +16864,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1637.84, - "fp16": 1426.18, - "fp32": "", + "int8": 69.09, + "fp16": "", + "fp32": 16.42, "bf16": "" } ], @@ -16886,7 +16886,7 @@ "Precisions": [ { "int4": "", - "int8": 0.82, + "int8": 29.59, "fp16": "", "fp32": "", "bf16": "" @@ -16898,18 +16898,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 69.98, "fp16": "", - "fp32": "", + "fp32": 16.46, "bf16": "" } ], @@ -16919,8 +16919,8 @@ "latency": { "Precisions": [ { - "int4": 51.42, - "int8": 77.7, + "int4": "", + "int8": 30.05, "fp16": "", "fp32": "", "bf16": "" @@ -16932,18 +16932,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 733.73, - "fp16": 505.75, - "fp32": "", + "int8": 8.9, + "fp16": "", + "fp32": 1.98, "bf16": "" } ], @@ -16954,7 +16954,7 @@ "Precisions": [ { "int4": "", - "int8": 1.55, + "int8": 152.81, "fp16": "", "fp32": "", "bf16": "" @@ -16966,18 +16966,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 30.37, - "fp16": 15.28, - "fp32": "", + "int8": 6.79, + "fp16": "", + "fp32": 1.6, "bf16": "" } ], @@ -16988,7 +16988,7 @@ "Precisions": [ { "int4": "", - "int8": 39.94, + "int8": 179.19, "fp16": "", "fp32": "", "bf16": "" @@ -17000,18 +17000,18 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 982.12, - "fp16": 761.15, - "fp32": "", + "int8": 7.92, + "fp16": "", + "fp32": 2.48, "bf16": "" } ], @@ -17022,7 +17022,7 @@ "Precisions": [ { "int4": "", - "int8": 1.37, + "int8": 185.72, "fp16": "", "fp32": "", "bf16": "" @@ -17034,17 +17034,17 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 276.55, + "fp16": 194.61, "fp32": "", "bf16": "" } @@ -17056,8 +17056,8 @@ "Precisions": [ { "int4": "", - "int8": 9.96, - "fp16": 9.81, + "int8": 5.38, + "fp16": "", "fp32": "", "bf16": "" } @@ -17068,9 +17068,9 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { @@ -17090,8 +17090,8 @@ "Precisions": [ { "int4": "", - "int8": 10.01, - "fp16": 9.84, + "int8": 6.54, + "fp16": "", "fp32": "", "bf16": "" } @@ -17104,15 +17104,15 @@ { "Platform": "Intel® Data Center GPU Flex 140 dGPU", "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Checked": "true", "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 55.03, - "fp16": 34.37, + "int8": 55.61, + "fp16": 34.5, "fp32": "", "bf16": "" } @@ -17124,7 +17124,7 @@ "Precisions": [ { "int4": "", - "int8": 19.14, + "int8": 19.05, "fp16": "", "fp32": "", "bf16": "" @@ -17136,17 +17136,17 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 637.68, - "fp16": 654.7, + "int8": "", + "fp16": 9.86, "fp32": "", "bf16": "" } @@ -17158,7 +17158,7 @@ "Precisions": [ { "int4": "", - "int8": 1.84, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17170,17 +17170,17 @@ } }, { - "Platform": "Intel® Data Center GPU Flex 140 dGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Accelerator Platforms", + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 249.88, - "fp16": 274.64, + "int8": "", + "fp16": 9.91, "fp32": "", "bf16": "" } @@ -17192,7 +17192,7 @@ "Precisions": [ { "int4": "", - "int8": 4.51, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17204,18 +17204,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 37.29, - "fp16": "", - "fp32": 28.25, + "int8": "", + "fp16": 46.18, + "fp32": "", "bf16": "" } ], @@ -17238,18 +17238,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 489.13, + "int8": 3.4, "fp16": "", - "fp32": 282.44, + "fp32": "", "bf16": "" } ], @@ -17260,7 +17260,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 294.79, "fp16": "", "fp32": "", "bf16": "" @@ -17272,18 +17272,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 113.02, + "int8": 1.98, "fp16": "", - "fp32": 43.11, + "fp32": "", "bf16": "" } ], @@ -17294,7 +17294,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 505.59, "fp16": "", "fp32": "", "bf16": "" @@ -17306,18 +17306,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.62, - "fp16": "", - "fp32": 0.64, + "int8": 8.29, + "fp16": 4.48, + "fp32": "", "bf16": "" } ], @@ -17328,7 +17328,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 121.49, "fp16": "", "fp32": "", "bf16": "" @@ -17340,18 +17340,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 217.68, - "fp16": "", - "fp32": 96.69, + "int8": 10.02, + "fp16": 4.68, + "fp32": "", "bf16": "" } ], @@ -17362,7 +17362,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 79.13, "fp16": "", "fp32": "", "bf16": "" @@ -17374,18 +17374,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 127.08, - "fp16": "", - "fp32": 44.27, + "int8": 9.86, + "fp16": 4.73, + "fp32": "", "bf16": "" } ], @@ -17396,7 +17396,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 82.71, "fp16": "", "fp32": "", "bf16": "" @@ -17408,18 +17408,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU+iGPU", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 61.22, - "fp16": "", - "fp32": 29.19, + "int8": 14.62, + "fp16": 7.64, + "fp32": "", "bf16": "" } ], @@ -17430,7 +17430,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 63.94, "fp16": "", "fp32": "", "bf16": "" @@ -17442,18 +17442,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 15.45, - "fp16": "", - "fp32": 12.76, + "int8": "", + "fp16": 5.13, + "fp32": "", "bf16": "" } ], @@ -17464,7 +17464,7 @@ "Precisions": [ { "int4": "", - "int8": 66.3, + "int8": 93.71, "fp16": "", "fp32": "", "bf16": "" @@ -17476,18 +17476,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 296.43, - "fp16": "", - "fp32": 184.84, + "int8": 18.44, + "fp16": 9.72, + "fp32": "", "bf16": "" } ], @@ -17498,7 +17498,7 @@ "Precisions": [ { "int4": "", - "int8": 3.82, + "int8": 54.75, "fp16": "", "fp32": "", "bf16": "" @@ -17510,18 +17510,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 48.78, - "fp16": "", - "fp32": 20.2, + "int8": 12.84, + "fp16": 6.49, + "fp32": "", "bf16": "" } ], @@ -17532,7 +17532,7 @@ "Precisions": [ { "int4": "", - "int8": 21.89, + "int8": 68.04, "fp16": "", "fp32": "", "bf16": "" @@ -17544,10 +17544,10 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -17555,7 +17555,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 0.32, + "fp32": "", "bf16": "" } ], @@ -17578,18 +17578,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 106.18, + "int8": 2.56, "fp16": "", - "fp32": 49.82, + "fp32": "", "bf16": "" } ], @@ -17600,7 +17600,7 @@ "Precisions": [ { "int4": "", - "int8": 9.73, + "int8": 390.36, "fp16": "", "fp32": "", "bf16": "" @@ -17612,18 +17612,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™) CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 57.05, - "fp16": "", - "fp32": 24.81, + "int8": 36.35, + "fp16": 23.49, + "fp32": "", "bf16": "" } ], @@ -17634,7 +17634,7 @@ "Precisions": [ { "int4": "", - "int8": 18.81, + "int8": 25.29, "fp16": "", "fp32": "", "bf16": "" @@ -17646,18 +17646,18 @@ } }, { - "Platform": "Intel® Processor N100 CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 23.66, - "fp16": "", - "fp32": 12.9, + "int8": 31.67, + "fp16": 18.53, + "fp32": "", "bf16": "" } ], @@ -17668,7 +17668,7 @@ "Precisions": [ { "int4": "", - "int8": 43.48, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17680,17 +17680,17 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.36, - "fp16": "", + "int8": 105.25, + "fp16": 74.67, "fp32": "", "bf16": "" } @@ -17702,7 +17702,7 @@ "Precisions": [ { "int4": "", - "int8": 407.92, + "int8": 10.37, "fp16": "", "fp32": "", "bf16": "" @@ -17714,18 +17714,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 33.64, - "fp16": 30.93, - "fp32": "", + "int8": 8.85, + "fp16": "", + "fp32": 4.55, "bf16": "" } ], @@ -17736,7 +17736,7 @@ "Precisions": [ { "int4": "", - "int8": 38.0, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17748,18 +17748,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 340.87, - "fp16": 267.71, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 1.47, "bf16": "" } ], @@ -17770,7 +17770,7 @@ "Precisions": [ { "int4": "", - "int8": 3.81, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17782,18 +17782,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 81.72, - "fp16": 49.76, - "fp32": "", + "int8": 7.38, + "fp16": "", + "fp32": 2.41, "bf16": "" } ], @@ -17804,7 +17804,7 @@ "Precisions": [ { "int4": "", - "int8": 13.14, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17816,18 +17816,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1.62, - "fp16": 1.01, - "fp32": "", + "int8": 15.79, + "fp16": "", + "fp32": 6.34, "bf16": "" } ], @@ -17838,7 +17838,7 @@ "Precisions": [ { "int4": "", - "int8": 623.4, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17850,18 +17850,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 164.34, - "fp16": 106.95, - "fp32": "", + "int8": 7.73, + "fp16": "", + "fp32": 2.82, "bf16": "" } ], @@ -17872,7 +17872,7 @@ "Precisions": [ { "int4": "", - "int8": 7.33, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17884,18 +17884,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.56, + "int8": "", "fp16": "", - "fp32": "", + "fp32": 6.37, "bf16": "" } ], @@ -17906,7 +17906,7 @@ "Precisions": [ { "int4": "", - "int8": 390.35, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17918,18 +17918,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 95.73, - "fp16": 62.51, - "fp32": "", + "int8": 9.45, + "fp16": "", + "fp32": 3.58, "bf16": "" } ], @@ -17940,7 +17940,7 @@ "Precisions": [ { "int4": "", - "int8": 10.87, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17952,18 +17952,18 @@ } }, { - "Platform": "Intel® Processor N100 iGPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 47.05, - "fp16": 34.98, - "fp32": "", + "int8": "", + "fp16": "", + "fp32": 5.04, "bf16": "" } ], @@ -17974,7 +17974,7 @@ "Precisions": [ { "int4": "", - "int8": 23.0, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -17986,18 +17986,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 20.54, + "int8": 31.21, "fp16": "", - "fp32": 14.7, + "fp32": 16.3, "bf16": "" } ], @@ -18008,7 +18008,7 @@ "Precisions": [ { "int4": "", - "int8": 49.98, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -18020,18 +18020,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", - "Parameters": { - "throughput": { - "Precisions": [ + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "unet-camvid-onnx-0001", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ { "int4": "", - "int8": 1.98, + "int8": "", "fp16": "", - "fp32": 1.27, + "fp32": 7.99, "bf16": "" } ], @@ -18042,7 +18042,7 @@ "Precisions": [ { "int4": "", - "int8": 514.43, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -18054,18 +18054,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® x7425E CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 35.83, + "int8": 5.65, "fp16": "", - "fp32": 30.12, + "fp32": 2.51, "bf16": "" } ], @@ -18076,7 +18076,7 @@ "Precisions": [ { "int4": "", - "int8": 28.57, + "int8": 182.75, "fp16": "", "fp32": "", "bf16": "" @@ -18088,18 +18088,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.29, + "int8": 2.58, "fp16": "", - "fp32": 0.15, + "fp32": 1.04, "bf16": "" } ], @@ -18110,7 +18110,7 @@ "Precisions": [ { "int4": "", - "int8": 3413.65, + "int8": 393.57, "fp16": "", "fp32": "", "bf16": "" @@ -18122,18 +18122,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 517.55, + "int8": 6.38, "fp16": "", - "fp32": 420.54, + "fp32": 1.86, "bf16": "" } ], @@ -18144,7 +18144,7 @@ "Precisions": [ { "int4": "", - "int8": 2.1, + "int8": 158.93, "fp16": "", "fp32": "", "bf16": "" @@ -18156,18 +18156,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 91.9, + "int8": 12.59, "fp16": "", - "fp32": 49.4, + "fp32": 6.77, "bf16": "" } ], @@ -18178,7 +18178,7 @@ "Precisions": [ { "int4": "", - "int8": 11.19, + "int8": 80.57, "fp16": "", "fp32": "", "bf16": "" @@ -18190,18 +18190,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 18.57, "fp16": "", - "fp32": 0.86, + "fp32": 9.33, "bf16": "" } ], @@ -18212,7 +18212,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 57.66, "fp16": "", "fp32": "", "bf16": "" @@ -18224,18 +18224,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 203.48, + "int8": 18.83, "fp16": "", - "fp32": 121.18, + "fp32": 5.89, "bf16": "" } ], @@ -18246,7 +18246,7 @@ "Precisions": [ { "int4": "", - "int8": 5.11, + "int8": 76.97, "fp16": "", "fp32": "", "bf16": "" @@ -18258,18 +18258,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2.44, + "int8": 23.43, "fp16": "", - "fp32": 1.35, + "fp32": 7.32, "bf16": "" } ], @@ -18280,7 +18280,7 @@ "Precisions": [ { "int4": "", - "int8": 420.33, + "int8": 70.0, "fp16": "", "fp32": "", "bf16": "" @@ -18292,18 +18292,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 104.89, + "int8": 66.59, "fp16": "", - "fp32": 59.76, + "fp32": 20.16, "bf16": "" } ], @@ -18314,7 +18314,7 @@ "Precisions": [ { "int4": "", - "int8": 9.55, + "int8": 19.62, "fp16": "", "fp32": "", "bf16": "" @@ -18326,18 +18326,18 @@ } }, { - "Platform": "Intel® Xeon® E-2124G CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-8500 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 51.87, + "int8": 19.4, "fp16": "", - "fp32": 32.46, + "fp32": 10.16, "bf16": "" } ], @@ -18348,7 +18348,7 @@ "Precisions": [ { "int4": "", - "int8": 19.57, + "int8": 52.75, "fp16": "", "fp32": "", "bf16": "" @@ -18360,18 +18360,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 217.64, + "int8": 27.81, "fp16": "", - "fp32": 80.49, + "fp32": 7.85, "bf16": "" } ], @@ -18382,7 +18382,7 @@ "Precisions": [ { "int4": "", - "int8": 14.48, + "int8": 37.86, "fp16": "", "fp32": "", "bf16": "" @@ -18394,18 +18394,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 21.88, + "int8": 20.29, "fp16": "", - "fp32": 7.16, + "fp32": 5.69, "bf16": "" } ], @@ -18416,7 +18416,7 @@ "Precisions": [ { "int4": "", - "int8": 102.56, + "int8": 49.78, "fp16": "", "fp32": "", "bf16": "" @@ -18428,18 +18428,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 271.59, + "int8": 49.8, "fp16": "", - "fp32": 166.47, + "fp32": 14.8, "bf16": "" } ], @@ -18450,7 +18450,7 @@ "Precisions": [ { "int4": "", - "int8": 10.86, + "int8": 25.53, "fp16": "", "fp32": "", "bf16": "" @@ -18462,18 +18462,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.24, + "int8": 25.87, "fp16": "", - "fp32": 0.9, + "fp32": 8.21, "bf16": "" } ], @@ -18484,7 +18484,7 @@ "Precisions": [ { "int4": "", - "int8": 645.82, + "int8": 65.38, "fp16": "", "fp32": "", "bf16": "" @@ -18496,18 +18496,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5417.69, + "int8": 37.03, "fp16": "", - "fp32": 1951.56, + "fp32": 10.74, "bf16": "" } ], @@ -18518,7 +18518,7 @@ "Precisions": [ { "int4": "", - "int8": 1.55, + "int8": 36.87, "fp16": "", "fp32": "", "bf16": "" @@ -18530,18 +18530,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 977.75, + "int8": 15.32, "fp16": "", - "fp32": 268.95, + "fp32": 7.94, "bf16": "" } ], @@ -18552,7 +18552,7 @@ "Precisions": [ { "int4": "", - "int8": 3.03, + "int8": 50.38, "fp16": "", "fp32": "", "bf16": "" @@ -18564,18 +18564,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 19.78, "fp16": "", - "fp32": 4.58, + "fp32": 9.0, "bf16": "" } ], @@ -18586,7 +18586,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 54.97, "fp16": "", "fp32": "", "bf16": "" @@ -18598,18 +18598,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2098.35, + "int8": 95.49, "fp16": "", - "fp32": 638.36, + "fp32": 30.36, "bf16": "" } ], @@ -18620,7 +18620,7 @@ "Precisions": [ { "int4": "", - "int8": 1.63, + "int8": 15.47, "fp16": "", "fp32": "", "bf16": "" @@ -18632,18 +18632,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 28.95, + "int8": 6.13, "fp16": "", - "fp32": 7.41, + "fp32": 2.62, "bf16": "" } ], @@ -18654,7 +18654,7 @@ "Precisions": [ { "int4": "", - "int8": 69.9, + "int8": 167.91, "fp16": "", "fp32": "", "bf16": "" @@ -18666,18 +18666,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1046.46, + "int8": 32.67, "fp16": "", - "fp32": 337.12, + "fp32": 14.74, "bf16": "" } ], @@ -18688,7 +18688,7 @@ "Precisions": [ { "int4": "", - "int8": 2.54, + "int8": 34.71, "fp16": "", "fp32": "", "bf16": "" @@ -18700,18 +18700,18 @@ } }, { - "Platform": "Intel® Xeon® Gold 5218T CPU-only", - "Model": "yolo_v8n", - "Checked": true, + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 444.54, + "int8": 12.06, "fp16": "", - "fp32": 173.35, + "fp32": 6.75, "bf16": "" } ], @@ -18722,7 +18722,7 @@ "Precisions": [ { "int4": "", - "int8": 6.01, + "int8": 83.73, "fp16": "", "fp32": "", "bf16": "" @@ -18734,18 +18734,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "bert-base-cased", - "Checked": true, + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 591.59, + "int8": 117.81, "fp16": "", - "fp32": 224.32, + "fp32": 35.12, "bf16": "" } ], @@ -18756,7 +18756,7 @@ "Precisions": [ { "int4": "", - "int8": 8.97, + "int8": 19.72, "fp16": "", "fp32": "", "bf16": "" @@ -18769,17 +18769,17 @@ }, { "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 51.23, + "int8": 334.59, "fp16": "", - "fp32": 18.18, + "fp32": 102.89, "bf16": "" } ], @@ -18790,7 +18790,7 @@ "Precisions": [ { "int4": "", - "int8": 48.54, + "int8": 8.17, "fp16": "", "fp32": "", "bf16": "" @@ -18802,18 +18802,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 586.49, + "int8": 533.18, "fp16": "", - "fp32": 330.88, + "fp32": 154.64, "bf16": "" } ], @@ -18824,7 +18824,7 @@ "Precisions": [ { "int4": "", - "int8": 6.81, + "int8": 5.76, "fp16": "", "fp32": "", "bf16": "" @@ -18836,19 +18836,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 8.47, + "int8": 1419.98, "fp16": "", - "fp32": 2.26, - "bf16": "" + "fp32": 214.44, + "bf16": 830.31 } ], "Unit": "FPS", @@ -18858,10 +18858,10 @@ "Precisions": [ { "int4": "", - "int8": 240.77, + "int8": 4.62, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 5.98 } ], "Unit": "ms", @@ -18870,19 +18870,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 15049.28, + "int8": 1755.21, "fp16": "", - "fp32": 4720.87, - "bf16": "" + "fp32": 265.47, + "bf16": 1055.23 } ], "Unit": "FPS", @@ -18892,10 +18892,10 @@ "Precisions": [ { "int4": "", - "int8": 0.98, + "int8": 4.46, "fp16": "", "fp32": "", - "bf16": "" + "bf16": 5.21 } ], "Unit": "ms", @@ -18904,18 +18904,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2983.04, + "int8": 251.62, "fp16": "", - "fp32": 761.91, + "fp32": 74.96, "bf16": "" } ], @@ -18926,7 +18926,7 @@ "Precisions": [ { "int4": "", - "int8": 1.63, + "int8": 11.14, "fp16": "", "fp32": "", "bf16": "" @@ -18938,18 +18938,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "yolo_v5m", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 265.17, "fp16": "", - "fp32": 15.12, + "fp32": 76.67, "bf16": "" } ], @@ -18960,7 +18960,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 9.63, "fp16": "", "fp32": "", "bf16": "" @@ -18972,18 +18972,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6154.14, + "int8": 44.74, "fp16": "", - "fp32": 1647.46, + "fp32": 12.8, "bf16": "" } ], @@ -18994,7 +18994,7 @@ "Precisions": [ { "int4": "", - "int8": 1.16, + "int8": 36.67, "fp16": "", "fp32": "", "bf16": "" @@ -19006,18 +19006,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 96.99, + "int8": 33.1, "fp16": "", - "fp32": 22.68, + "fp32": 9.15, "bf16": "" } ], @@ -19028,7 +19028,7 @@ "Precisions": [ { "int4": "", - "int8": 22.95, + "int8": 45.86, "fp16": "", "fp32": "", "bf16": "" @@ -19040,18 +19040,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2888.11, - "fp16": "", - "fp32": 900.74, + "int8": 288.05, + "fp16": 333.83, + "fp32": "", "bf16": "" } ], @@ -19062,7 +19062,7 @@ "Precisions": [ { "int4": "", - "int8": 1.32, + "int8": 5.35, "fp16": "", "fp32": "", "bf16": "" @@ -19074,18 +19074,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8280 CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1008.75, + "int8": "", "fp16": "", - "fp32": 455.37, + "fp32": "", "bf16": "" } ], @@ -19096,7 +19096,7 @@ "Precisions": [ { "int4": "", - "int8": 3.62, + "int8": 6.92, "fp16": "", "fp32": "", "bf16": "" @@ -19108,18 +19108,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 884.16, - "fp16": "", - "fp32": 340.66, + "int8": 105.43, + "fp16": 93.59, + "fp32": "", "bf16": "" } ], @@ -19130,7 +19130,7 @@ "Precisions": [ { "int4": "", - "int8": 5.03, + "int8": 11.01, "fp16": "", "fp32": "", "bf16": "" @@ -19142,18 +19142,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 78.5, - "fp16": "", - "fp32": 30.65, + "int8": 50.31, + "fp16": 40.99, + "fp32": "", "bf16": "" } ], @@ -19164,7 +19164,7 @@ "Precisions": [ { "int4": "", - "int8": 38.23, + "int8": 21.31, "fp16": "", "fp32": "", "bf16": "" @@ -19176,17 +19176,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 50.34, + "fp16": 41.31, "fp32": "", "bf16": "" } @@ -19197,9 +19197,9 @@ "latency": { "Precisions": [ { - "int4": 32.24, - "int8": 43.21, - "fp16": 78.06, + "int4": "", + "int8": 21.03, + "fp16": "", "fp32": "", "bf16": "" } @@ -19210,18 +19210,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1013.0, - "fp16": "", - "fp32": 578.0, + "int8": 14.53, + "fp16": 9.52, + "fp32": "", "bf16": "" } ], @@ -19232,7 +19232,7 @@ "Precisions": [ { "int4": "", - "int8": 4.25, + "int8": 71.11, "fp16": "", "fp32": "", "bf16": "" @@ -19244,17 +19244,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 7.37, + "fp16": 7.57, "fp32": "", "bf16": "" } @@ -19265,9 +19265,9 @@ "latency": { "Precisions": [ { - "int4": 34.77, - "int8": 50.16, - "fp16": 91.17, + "int4": "", + "int8": 141.78, + "fp16": "", "fp32": "", "bf16": "" } @@ -19278,17 +19278,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Celeron® 6305E iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 31.36, + "fp16": 17.91, "fp32": "", "bf16": "" } @@ -19299,9 +19299,9 @@ "latency": { "Precisions": [ { - "int4": 39.36, - "int8": 53.72, - "fp16": 93.67, + "int4": "", + "int8": 34.6, + "fp16": "", "fp32": "", "bf16": "" } @@ -19312,17 +19312,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "llama-3-8b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 33.47, + "fp16": 18.2, "fp32": "", "bf16": "" } @@ -19333,9 +19333,9 @@ "latency": { "Precisions": [ { - "int4": 37.82, - "int8": 56.11, - "fp16": 101.67, + "int4": "", + "int8": 24.97, + "fp16": "", "fp32": "", "bf16": "" } @@ -19346,18 +19346,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 14.58, - "fp16": "", - "fp32": 3.48, + "int8": 35.33, + "fp16": 18.84, + "fp32": "", "bf16": "" } ], @@ -19368,7 +19368,7 @@ "Precisions": [ { "int4": "", - "int8": 156.62, + "int8": 24.68, "fp16": "", "fp32": "", "bf16": "" @@ -19380,17 +19380,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 48.16, + "fp16": 28.25, "fp32": "", "bf16": "" } @@ -19401,9 +19401,9 @@ "latency": { "Precisions": [ { - "int4": 37.27, - "int8": 54.13, - "fp16": 96.82, + "int4": "", + "int8": 22.07, + "fp16": "", "fp32": "", "bf16": "" } @@ -19414,18 +19414,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 22842.75, - "fp16": "", - "fp32": 7176.51, + "int8": 33.73, + "fp16": 18.76, + "fp32": "", "bf16": "" } ], @@ -19436,7 +19436,7 @@ "Precisions": [ { "int4": "", - "int8": 0.58, + "int8": 29.57, "fp16": "", "fp32": "", "bf16": "" @@ -19448,17 +19448,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 63.37, + "fp16": 36.52, "fp32": "", "bf16": "" } @@ -19469,9 +19469,9 @@ "latency": { "Precisions": [ { - "int4": 24.27, - "int8": 34.78, - "fp16": 57.87, + "int4": "", + "int8": 17.02, + "fp16": "", "fp32": "", "bf16": "" } @@ -19482,18 +19482,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4956.56, - "fp16": "", - "fp32": 1156.87, + "int8": 44.64, + "fp16": 24.85, + "fp32": "", "bf16": "" } ], @@ -19504,7 +19504,7 @@ "Precisions": [ { "int4": "", - "int8": 1.06, + "int8": 20.43, "fp16": "", "fp32": "", "bf16": "" @@ -19516,18 +19516,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 21.03, + "int8": 53.52, + "fp16": 30.53, + "fp32": "", "bf16": "" } ], @@ -19538,7 +19538,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 17.5, "fp16": "", "fp32": "", "bf16": "" @@ -19550,18 +19550,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10271.81, - "fp16": "", - "fp32": 2546.94, + "int8": 11.12, + "fp16": 7.41, + "fp32": "", "bf16": "" } ], @@ -19572,7 +19572,7 @@ "Precisions": [ { "int4": "", - "int8": 0.69, + "int8": 91.66, "fp16": "", "fp32": "", "bf16": "" @@ -19584,17 +19584,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 132.43, + "fp16": 70.84, "fp32": "", "bf16": "" } @@ -19606,8 +19606,8 @@ "Precisions": [ { "int4": "", - "int8": 12.54, - "fp16": 12.72, + "int8": 7.23, + "fp16": "", "fp32": "", "bf16": "" } @@ -19618,17 +19618,17 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 120.91, + "fp16": 58.45, "fp32": "", "bf16": "" } @@ -19640,8 +19640,8 @@ "Precisions": [ { "int4": "", - "int8": 12.54, - "fp16": 12.75, + "int8": 9.06, + "fp16": "", "fp32": "", "bf16": "" } @@ -19652,18 +19652,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 139.91, + "int8": 17.32, "fp16": "", - "fp32": 33.12, + "fp32": 7.01, "bf16": "" } ], @@ -19674,7 +19674,7 @@ "Precisions": [ { "int4": "", - "int8": 15.33, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -19686,18 +19686,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4576.15, + "int8": 8.67, "fp16": "", - "fp32": 1350.44, + "fp32": 7.46, "bf16": "" } ], @@ -19708,7 +19708,7 @@ "Precisions": [ { "int4": "", - "int8": 0.91, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -19720,18 +19720,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8380 CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1720.12, + "int8": 32.84, "fp16": "", - "fp32": 701.48, + "fp32": 18.05, "bf16": "" } ], @@ -19742,7 +19742,7 @@ "Precisions": [ { "int4": "", - "int8": 2.36, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -19754,19 +19754,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2931.47, + "int8": "", "fp16": "", - "fp32": 473.83, - "bf16": 1895.22 + "fp32": 7.54, + "bf16": "" } ], "Unit": "FPS", @@ -19776,10 +19776,10 @@ "Precisions": [ { "int4": "", - "int8": 3.85, + "int8": "", "fp16": "", "fp32": "", - "bf16": 4.76 + "bf16": "" } ], "Unit": "ms", @@ -19788,19 +19788,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 290.4, + "int8": 32.16, "fp16": "", - "fp32": 39.74, - "bf16": 198.51 + "fp32": 12.68, + "bf16": "" } ], "Unit": "FPS", @@ -19810,10 +19810,10 @@ "Precisions": [ { "int4": "", - "int8": 22.19, + "int8": "", "fp16": "", "fp32": "", - "bf16": 29.03 + "bf16": "" } ], "Unit": "ms", @@ -19822,18 +19822,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 55.36, "fp16": "", - "fp32": "", + "fp32": 25.15, "bf16": "" } ], @@ -19843,9 +19843,9 @@ "latency": { "Precisions": [ { - "int4": 31.05, - "int8": 43.8, - "fp16": 61.36, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -19856,19 +19856,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1400.47, + "int8": 29.16, "fp16": "", - "fp32": 830.29, - "bf16": 973.77 + "fp32": 11.65, + "bf16": "" } ], "Unit": "FPS", @@ -19878,10 +19878,10 @@ "Precisions": [ { "int4": "", - "int8": 4.68, + "int8": "", "fp16": "", "fp32": "", - "bf16": 5.14 + "bf16": "" } ], "Unit": "ms", @@ -19890,10 +19890,10 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -19901,7 +19901,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", + "fp32": 24.74, "bf16": "" } ], @@ -19911,9 +19911,9 @@ "latency": { "Precisions": [ { - "int4": 33.31, - "int8": 51.84, - "fp16": 71.57, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -19924,18 +19924,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 39.77, "fp16": "", - "fp32": "", + "fp32": 15.13, "bf16": "" } ], @@ -19945,9 +19945,9 @@ "latency": { "Precisions": [ { - "int4": 39.4, - "int8": 53.08, - "fp16": 73.24, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -19958,18 +19958,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "llama-3-8b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 52.61, "fp16": "", - "fp32": "", + "fp32": 20.01, "bf16": "" } ], @@ -19979,9 +19979,9 @@ "latency": { "Precisions": [ { - "int4": 40.65, - "int8": 54.93, - "fp16": 78.78, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -19992,19 +19992,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 59.55, + "int8": 14.47, "fp16": "", - "fp32": 5.11, - "bf16": 36.28 + "fp32": 4.84, + "bf16": "" } ], "Unit": "FPS", @@ -20014,10 +20014,10 @@ "Precisions": [ { "int4": "", - "int8": 62.18, + "int8": "", "fp16": "", "fp32": "", - "bf16": 80.51 + "bf16": "" } ], "Unit": "ms", @@ -20026,18 +20026,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 120.56, "fp16": "", - "fp32": "", + "fp32": 58.53, "bf16": "" } ], @@ -20047,9 +20047,9 @@ "latency": { "Precisions": [ { - "int4": 37.0, - "int8": 54.97, - "fp16": 75.4, + "int4": "", + "int8": "", + "fp16": "", "fp32": "", "bf16": "" } @@ -20060,19 +20060,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "yolo_v5m", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 38116.66, + "int8": 70.85, "fp16": "", - "fp32": 9572.39, - "bf16": 24622.8 + "fp32": 32.17, + "bf16": "" } ], "Unit": "FPS", @@ -20082,10 +20082,10 @@ "Precisions": [ { "int4": "", - "int8": 0.66, + "int8": "", "fp16": "", "fp32": "", - "bf16": 0.67 + "bf16": "" } ], "Unit": "ms", @@ -20094,18 +20094,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® x7425E CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 21.65, "fp16": "", - "fp32": "", + "fp32": 11.8, "bf16": "" } ], @@ -20115,9 +20115,9 @@ "latency": { "Precisions": [ { - "int4": 23.77, - "int8": 33.47, - "fp16": 46.2, + "int4": "", + "int8": 47.52, + "fp16": "", "fp32": "", "bf16": "" } @@ -20128,19 +20128,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® X6425E CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 19067.22, + "int8": 10.28, "fp16": "", - "fp32": 1533.78, - "bf16": 7132.74 + "fp32": 5.11, + "bf16": "" } ], "Unit": "FPS", @@ -20150,10 +20150,10 @@ "Precisions": [ { "int4": "", - "int8": 1.01, + "int8": 100.13, "fp16": "", "fp32": "", - "bf16": 1.26 + "bf16": "" } ], "Unit": "ms", @@ -20162,19 +20162,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Celeron® 6305E CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 25.98, "fp16": "", - "fp32": 30.34, - "bf16": 201.98 + "fp32": 9.65, + "bf16": "" } ], "Unit": "FPS", @@ -20184,10 +20184,10 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 40.09, "fp16": "", "fp32": "", - "bf16": 14.33 + "bf16": "" } ], "Unit": "ms", @@ -20196,19 +20196,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i3-8100 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 23871.79, + "int8": 53.64, "fp16": "", - "fp32": 3329.41, - "bf16": 11859.89 + "fp32": 32.13, + "bf16": "" } ], "Unit": "FPS", @@ -20218,10 +20218,10 @@ "Precisions": [ { "int4": "", - "int8": 0.75, + "int8": 19.04, "fp16": "", "fp32": "", - "bf16": 0.9 + "bf16": "" } ], "Unit": "ms", @@ -20230,18 +20230,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-10500TE CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 81.71, "fp16": "", - "fp32": "", + "fp32": 45.23, "bf16": "" } ], @@ -20252,8 +20252,8 @@ "Precisions": [ { "int4": "", - "int8": 3.9, - "fp16": 3.82, + "int8": 13.68, + "fp16": "", "fp32": "", "bf16": "" } @@ -20264,18 +20264,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1235U Processor CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 70.36, "fp16": "", - "fp32": "", + "fp32": 27.96, "bf16": "" } ], @@ -20286,8 +20286,8 @@ "Precisions": [ { "int4": "", - "int8": 3.9, - "fp16": 3.83, + "int8": 19.88, + "fp16": "", "fp32": "", "bf16": "" } @@ -20298,19 +20298,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1335U Processor CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 489.37, + "int8": 91.48, "fp16": "", - "fp32": 47.9, - "bf16": 256.98 + "fp32": 36.51, + "bf16": "" } ], "Unit": "FPS", @@ -20320,10 +20320,10 @@ "Precisions": [ { "int4": "", - "int8": 6.82, + "int8": 18.13, "fp16": "", "fp32": "", - "bf16": 10.34 + "bf16": "" } ], "Unit": "ms", @@ -20332,19 +20332,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-13600K CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 10663.3, + "int8": 272.16, "fp16": "", - "fp32": 1957.85, - "bf16": 7901.76 + "fp32": 103.27, + "bf16": "" } ], "Unit": "FPS", @@ -20354,10 +20354,10 @@ "Precisions": [ { "int4": "", - "int8": 0.9, + "int8": 5.12, "fp16": "", "fp32": "", - "bf16": 0.82 + "bf16": "" } ], "Unit": "ms", @@ -20366,19 +20366,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Platform": "Intel® Core™ i5-8500 CPU-only", "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 2347.05, + "int8": 84.24, "fp16": "", - "fp32": 917.84, - "bf16": 2272.95 + "fp32": 49.32, + "bf16": "" } ], "Unit": "FPS", @@ -20388,10 +20388,10 @@ "Precisions": [ { "int4": "", - "int8": 3.18, + "int8": 11.97, "fp16": "", "fp32": "", - "bf16": 2.58 + "bf16": "" } ], "Unit": "ms", @@ -20400,19 +20400,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185G7 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 4727.2, + "int8": 111.42, "fp16": "", - "fp32": 570.86, - "bf16": 3189.16 + "fp32": 40.37, + "bf16": "" } ], "Unit": "FPS", @@ -20422,10 +20422,10 @@ "Precisions": [ { "int4": "", - "int8": 3.68, + "int8": 10.1, "fp16": "", "fp32": "", - "bf16": 4.37 + "bf16": "" } ], "Unit": "ms", @@ -20434,19 +20434,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185GRE CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 369.57, + "int8": 76.56, "fp16": "", - "fp32": 51.03, - "bf16": 290.35 + "fp32": 27.61, + "bf16": "" } ], "Unit": "FPS", @@ -20456,10 +20456,10 @@ "Precisions": [ { "int4": "", - "int8": 16.84, + "int8": 13.37, "fp16": "", "fp32": "", - "bf16": 27.96 + "bf16": "" } ], "Unit": "ms", @@ -20468,18 +20468,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "chatglm2-6b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-12700H CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 200.97, "fp16": "", - "fp32": "", + "fp32": 75.16, "bf16": "" } ], @@ -20489,9 +20489,9 @@ "latency": { "Precisions": [ { - "int4": 25.04, - "int8": 33.9, - "fp16": 53.51, + "int4": "", + "int8": 6.52, + "fp16": "", "fp32": "", "bf16": "" } @@ -20502,19 +20502,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1355U Processor CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1732.67, + "int8": 101.43, "fp16": "", - "fp32": 1138.88, - "bf16": 1432.17 + "fp32": 40.83, + "bf16": "" } ], "Unit": "FPS", @@ -20524,10 +20524,10 @@ "Precisions": [ { "int4": "", - "int8": 4.7, + "int8": 16.95, "fp16": "", "fp32": "", - "bf16": 4.7 + "bf16": "" } ], "Unit": "ms", @@ -20536,10 +20536,10 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "falcon-7b-instruct", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -20557,9 +20557,9 @@ "latency": { "Precisions": [ { - "int4": 27.7, - "int8": 39.66, - "fp16": 61.46, + "int4": "", + "int8": 9.34, + "fp16": "", "fp32": "", "bf16": "" } @@ -20570,18 +20570,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "llama-2-7b-chat-hf", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-8700T CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 70.91, "fp16": "", - "fp32": "", + "fp32": 40.94, "bf16": "" } ], @@ -20591,9 +20591,9 @@ "latency": { "Precisions": [ { - "int4": 31.44, - "int8": 41.97, - "fp16": 63.62, + "int4": "", + "int8": 11.95, + "fp16": "", "fp32": "", "bf16": "" } @@ -20604,18 +20604,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "llama-3-8b", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i9-10900TE CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 89.73, "fp16": "", - "fp32": "", + "fp32": 48.88, "bf16": "" } ], @@ -20625,9 +20625,9 @@ "latency": { "Precisions": [ { - "int4": 34.15, - "int8": 43.97, - "fp16": 70.83, + "int4": "", + "int8": 12.74, + "fp16": "", "fp32": "", "bf16": "" } @@ -20638,19 +20638,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 76.64, + "int8": 387.96, "fp16": "", - "fp32": 6.4, - "bf16": 49.11 + "fp32": 154.46, + "bf16": "" } ], "Unit": "FPS", @@ -20660,10 +20660,10 @@ "Precisions": [ { "int4": "", - "int8": 55.27, + "int8": 4.11, "fp16": "", "fp32": "", - "bf16": 70.44 + "bf16": "" } ], "Unit": "ms", @@ -20672,18 +20672,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "mistral-7b-v0.1", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Processor N100 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 23.66, "fp16": "", - "fp32": "", + "fp32": 12.89, "bf16": "" } ], @@ -20693,9 +20693,9 @@ "latency": { "Precisions": [ { - "int4": 29.76, - "int8": 43.56, - "fp16": 67.94, + "int4": "", + "int8": 43.5, + "fp16": "", "fp32": "", "bf16": "" } @@ -20706,19 +20706,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Xeon® W1290P CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 40565.45, + "int8": 136.65, "fp16": "", - "fp32": 16295.77, - "bf16": 31334.21 + "fp32": 71.98, + "bf16": "" } ], "Unit": "FPS", @@ -20728,10 +20728,10 @@ "Precisions": [ { "int4": "", - "int8": 0.76, + "int8": 8.7, "fp16": "", "fp32": "", - "bf16": 0.77 + "bf16": "" } ], "Unit": "ms", @@ -20740,18 +20740,18 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "phi-3-mini-4k-instruct", - "Checked": true, + "Platform": "Intel® Xeon® E-2124G CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 51.95, "fp16": "", - "fp32": "", + "fp32": 32.5, "bf16": "" } ], @@ -20761,9 +20761,9 @@ "latency": { "Precisions": [ { - "int4": 18.67, - "int8": 26.01, - "fp16": 39.35, + "int4": "", + "int8": 19.42, + "fp16": "", "fp32": "", "bf16": "" } @@ -20774,19 +20774,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Xeon® Gold 5218T CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 22345.32, + "int8": 442.04, "fp16": "", - "fp32": 2027.96, - "bf16": 13919.52 + "fp32": 173.4, + "bf16": "" } ], "Unit": "FPS", @@ -20796,10 +20796,10 @@ "Precisions": [ { "int4": "", - "int8": 1.19, + "int8": 6.02, "fp16": "", "fp32": "", - "bf16": 1.32 + "bf16": "" } ], "Unit": "ms", @@ -20808,19 +20808,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8280 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 997.47, "fp16": "", - "fp32": 35.75, - "bf16": 280.99 + "fp32": 452.11, + "bf16": "" } ], "Unit": "FPS", @@ -20833,7 +20833,7 @@ "int8": "", "fp16": "", "fp32": "", - "bf16": 11.56 + "bf16": "" } ], "Unit": "ms", @@ -20842,19 +20842,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 28110.55, + "int8": 1718.36, "fp16": "", - "fp32": 4751.56, - "bf16": 17087.34 + "fp32": 701.27, + "bf16": "" } ], "Unit": "FPS", @@ -20864,10 +20864,10 @@ "Precisions": [ { "int4": "", - "int8": 0.74, + "int8": 2.39, "fp16": "", "fp32": "", - "bf16": 1.0 + "bf16": "" } ], "Unit": "ms", @@ -20876,19 +20876,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", + "int8": 2411.67, "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 959.63, + "bf16": 2381.88 } ], "Unit": "FPS", @@ -20898,10 +20898,10 @@ "Precisions": [ { "int4": "", - "int8": 3.33, - "fp16": 3.24, - "fp32": "", - "bf16": "" + "int8": 3.11, + "fp16": "", + "fp32": "", + "bf16": 2.53 } ], "Unit": "ms", @@ -20911,8 +20911,8 @@ }, { "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "stable-diffusion-v2-1", - "Checked": true, + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { @@ -20921,8 +20921,8 @@ "int4": "", "int8": "", "fp16": "", - "fp32": "", - "bf16": "" + "fp32": 1262.79, + "bf16": 3461.09 } ], "Unit": "FPS", @@ -20932,10 +20932,10 @@ "Precisions": [ { "int4": "", - "int8": 3.34, - "fp16": 3.25, + "int8": 3.15, + "fp16": "", "fp32": "", - "bf16": "" + "bf16": 2.62 } ], "Unit": "ms", @@ -20944,19 +20944,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, + "Platform": "Intel® Xeon® Gold 6238L CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 618.84, + "int8": 757.45, "fp16": "", - "fp32": 57.43, - "bf16": 340.8 + "fp32": 337.98, + "bf16": "" } ], "Unit": "FPS", @@ -20966,10 +20966,10 @@ "Precisions": [ { "int4": "", - "int8": 5.61, + "int8": 4.31, "fp16": "", "fp32": "", - "bf16": 7.75 + "bf16": "" } ], "Unit": "ms", @@ -20978,19 +20978,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, + "Platform": "Intel® Xeon® Silver 4316 CPU-only", + "Model": "yolo_v8n", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 15025.26, + "int8": 859.9, "fp16": "", - "fp32": 2508.91, - "bf16": 13648.94 + "fp32": 340.51, + "bf16": "" } ], "Unit": "FPS", @@ -21000,10 +21000,10 @@ "Precisions": [ { "int4": "", - "int8": 0.96, + "int8": 3.38, "fp16": "", "fp32": "", - "bf16": 0.85 + "bf16": "" } ], "Unit": "ms", @@ -21012,19 +21012,19 @@ } }, { - "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU-only", "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3054.7, + "int8": 166.62, "fp16": "", - "fp32": 1267.93, - "bf16": 3458.4 + "fp32": 64.56, + "bf16": "" } ], "Unit": "FPS", @@ -21034,10 +21034,10 @@ "Precisions": [ { "int4": "", - "int8": 3.12, + "int8": 12.93, "fp16": "", "fp32": "", - "bf16": 2.58 + "bf16": "" } ], "Unit": "ms", @@ -21046,18 +21046,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 209.57, + "int8": 127.76, "fp16": "", - "fp32": 76.84, + "fp32": 46.89, "bf16": "" } ], @@ -21068,7 +21068,7 @@ "Precisions": [ { "int4": "", - "int8": 15.15, + "int8": 14.67, "fp16": "", "fp32": "", "bf16": "" @@ -21080,18 +21080,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 9 processor 288V CPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 20.82, + "int8": 139.58, "fp16": "", - "fp32": 6.86, + "fp32": 59.12, "bf16": "" } ], @@ -21102,7 +21102,7 @@ "Precisions": [ { "int4": "", - "int8": 106.02, + "int8": 9.46, "fp16": "", "fp32": "", "bf16": "" @@ -21114,18 +21114,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 262.51, - "fp16": "", - "fp32": 160.86, + "int8": 803.05, + "fp16": 733.02, + "fp32": "", "bf16": "" } ], @@ -21136,7 +21136,7 @@ "Precisions": [ { "int4": "", - "int8": 11.26, + "int8": 2.32, "fp16": "", "fp32": "", "bf16": "" @@ -21148,18 +21148,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 3.11, + "int8": "", "fp16": "", - "fp32": 0.87, + "fp32": "", "bf16": "" } ], @@ -21170,7 +21170,7 @@ "Precisions": [ { "int4": "", - "int8": 657.59, + "int8": 3.14, "fp16": "", "fp32": "", "bf16": "" @@ -21182,18 +21182,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "mobilenet-v2", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 5175.19, - "fp16": "", - "fp32": 1873.96, + "int8": 322.1, + "fp16": 299.84, + "fp32": "", "bf16": "" } ], @@ -21204,7 +21204,7 @@ "Precisions": [ { "int4": "", - "int8": 1.62, + "int8": 3.75, "fp16": "", "fp32": "", "bf16": "" @@ -21216,18 +21216,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "resnet-50", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 155H NPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 927.96, - "fp16": "", - "fp32": 259.21, + "int8": 126.74, + "fp16": 129.8, + "fp32": "", "bf16": "" } ], @@ -21238,7 +21238,7 @@ "Precisions": [ { "int4": "", - "int8": 3.14, + "int8": 9.1, "fp16": "", "fp32": "", "bf16": "" @@ -21250,18 +21250,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H NPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", - "fp32": 4.37, + "int8": 127.62, + "fp16": 131.24, + "fp32": "", "bf16": "" } ], @@ -21272,7 +21272,7 @@ "Precisions": [ { "int4": "", - "int8": "", + "int8": 8.95, "fp16": "", "fp32": "", "bf16": "" @@ -21284,18 +21284,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 9 processor 288V NPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1997.4, - "fp16": "", - "fp32": 617.19, + "int8": 390.98, + "fp16": 506.71, + "fp32": "", "bf16": "" } ], @@ -21306,7 +21306,7 @@ "Precisions": [ { "int4": "", - "int8": 1.69, + "int8": 3.51, "fp16": "", "fp32": "", "bf16": "" @@ -21318,18 +21318,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® x7425E iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 27.5, - "fp16": "", - "fp32": 7.08, + "int8": 60.91, + "fp16": 44.63, + "fp32": "", "bf16": "" } ], @@ -21340,7 +21340,7 @@ "Precisions": [ { "int4": "", - "int8": 73.55, + "int8": 18.54, "fp16": "", "fp32": "", "bf16": "" @@ -21352,18 +21352,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Atom® X6425E iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1007.33, - "fp16": "", - "fp32": 320.41, + "int8": 31.72, + "fp16": 33.09, + "fp32": "", "bf16": "" } ], @@ -21374,7 +21374,7 @@ "Precisions": [ { "int4": "", - "int8": 2.68, + "int8": 35.85, "fp16": "", "fp32": "", "bf16": "" @@ -21386,18 +21386,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4216R CPU-only", + "Platform": "Intel® Celeron® 6305E iGPU-only", "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 425.85, - "fp16": "", - "fp32": 165.87, + "int8": 121.95, + "fp16": 81.83, + "fp32": "", "bf16": "" } ], @@ -21408,7 +21408,7 @@ "Precisions": [ { "int4": "", - "int8": 6.27, + "int8": 10.32, "fp16": "", "fp32": "", "bf16": "" @@ -21420,18 +21420,52 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i5-1235U Processor iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 435.85, + "int8": 130.79, + "fp16": 80.07, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 8.12, "fp16": "", - "fp32": 167.84, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i5-1335U Processor iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 133.28, + "fp16": 83.52, + "fp32": "", "bf16": "" } ], @@ -21442,7 +21476,7 @@ "Precisions": [ { "int4": "", - "int8": 7.94, + "int8": 6.92, "fp16": "", "fp32": "", "bf16": "" @@ -21454,18 +21488,52 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1185G7 iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 39.05, + "int8": 164.13, + "fp16": 112.15, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", "fp16": "", - "fp32": 15.17, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1185GRE iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 117.62, + "fp16": 77.67, + "fp32": "", "bf16": "" } ], @@ -21476,7 +21544,7 @@ "Precisions": [ { "int4": "", - "int8": 62.3, + "int8": 9.6, "fp16": "", "fp32": "", "bf16": "" @@ -21488,18 +21556,52 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-12700H iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 500.81, + "int8": 218.62, + "fp16": 149.58, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 5.56, "fp16": "", - "fp32": 302.76, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1355U Processor iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 164.07, + "fp16": 107.64, + "fp32": "", "bf16": "" } ], @@ -21510,7 +21612,7 @@ "Precisions": [ { "int4": "", - "int8": 5.83, + "int8": 6.35, "fp16": "", "fp32": "", "bf16": "" @@ -21522,18 +21624,2466 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 5.83, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Processor N100 iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 47.04, + "fp16": 34.98, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 23.03, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 155H iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 388.85, + "fp16": 291.51, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 2.61, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 386.42, + "fp16": 271.08, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 3.16, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 442.05, + "fp16": 412.46, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": 3.33, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Atom® x7425E CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 68.47, + "fp16": "", + "fp32": 36.85, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Atom® X6425E CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 36.31, + "fp16": "", + "fp32": 34.01, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Celeron® 6305E CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 114.66, + "fp16": "", + "fp32": 78.23, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i5-1235U Processor CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": 36.38, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i5-1335U Processor CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 126.5, + "fp16": "", + "fp32": 58.24, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1185G7 CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 184.9, + "fp16": "", + "fp32": 103.88, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1185GRE CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 100.37, + "fp16": "", + "fp32": 51.71, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-12700H CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": 117.6, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1355U Processor CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 154.41, + "fp16": "", + "fp32": 72.66, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 227.78, + "fp16": "", + "fp32": 103.62, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Processor N100 CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Mobile Platforms (Intel® Atom™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 61.09, + "fp16": "", + "fp32": 28.95, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 155H CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 369.1, + "fp16": "", + "fp32": 228.3, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU+iGPU", + "Model": "yolo_v8n", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": 253.52, + "fp16": "", + "fp32": 149.21, + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 15.4, + "int8": 11.0, + "fp16": 5.7, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 64.94, + "int8": 90.95, + "fp16": 176.6, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 30.9, + "int8": 22.8, + "fp16": 12.7, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 32.39, + "int8": 43.95, + "fp16": 78.58, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 33.7, + "int8": 25.7, + "fp16": 16.2, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 29.69, + "int8": 38.85, + "fp16": 61.67, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 39.5, + "int8": 29.1, + "fp16": 18.6, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 25.3, + "int8": 34.31, + "fp16": 53.7, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 9.4, + "int8": 6.2, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 106.9, + "int8": 162.58, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 56.8, + "int8": 45.2, + "fp16": 26.5, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 17.61, + "int8": 22.14, + "fp16": 37.67, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 45.5, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 21.99, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 11.4, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 87.86, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 15.8, + "int8": 11.3, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 63.49, + "int8": 88.47, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "chatglm2-6b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 18.0, + "int8": 12.6, + "fp16": 7.0, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 55.41, + "int8": 79.46, + "fp16": 142.26, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 14.8, + "int8": 9.4, + "fp16": 4.9, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 67.35, + "int8": 106.1, + "fp16": 205.6, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 28.4, + "int8": 19.7, + "fp16": 10.9, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 35.25, + "int8": 50.64, + "fp16": 91.76, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 30.6, + "int8": 21.6, + "fp16": 14.1, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 32.72, + "int8": 46.36, + "fp16": 71.16, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 35.7, + "int8": 24.3, + "fp16": 15.9, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 28.02, + "int8": 41.12, + "fp16": 62.78, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 9.8, + "int8": 5.4, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 102.44, + "int8": 186.87, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 44.7, + "int8": 32.1, + "fp16": 21.3, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 22.37, + "int8": 31.17, + "fp16": 47.04, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 34.7, + "int8": 25.8, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 28.79, + "int8": 38.77, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 5.7, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 174.81, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 6.5, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 153.92, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 14.2, + "int8": 9.7, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 70.34, + "int8": 102.9, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "falcon-7b-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 17.6, + "int8": 10.8, + "fp16": 6.1, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 56.96, + "int8": 92.92, + "fp16": 164.05, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 13.4, + "int8": 9.3, + "fp16": 5.0, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 74.6, + "int8": 107.69, + "fp16": 201.87, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 25.2, + "int8": 18.4, + "fp16": 10.6, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 39.73, + "int8": 54.31, + "fp16": 94.63, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 26.7, + "int8": 20.3, + "fp16": 14.2, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 37.4, + "int8": 49.27, + "fp16": 70.22, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 32.5, + "int8": 23.1, + "fp16": 16.4, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 30.75, + "int8": 43.23, + "fp16": 60.97, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 8.6, + "int8": 5.3, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 116.29, + "int8": 189.6, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 45.3, + "int8": 35.9, + "fp16": 21.8, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 22.08, + "int8": 27.87, + "fp16": 45.77, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 38.1, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 26.27, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 5.4, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 184.58, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 13.3, + "int8": 9.1, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 75.47, + "int8": 109.71, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "llama-2-7b-chat", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 15.6, + "int8": 10.4, + "fp16": 5.8, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 64.18, + "int8": 95.84, + "fp16": 171.66, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 11.8, + "int8": 8.7, + "fp16": 4.5, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 84.87, + "int8": 115.0, + "fp16": 223.46, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 26.1, + "int8": 17.6, + "fp16": 9.8, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 38.25, + "int8": 56.78, + "fp16": 102.16, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 25.3, + "int8": 19.3, + "fp16": 13.3, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 39.49, + "int8": 51.8, + "fp16": 75.23, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 28.9, + "int8": 21.2, + "fp16": 15.0, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 34.63, + "int8": 47.15, + "fp16": 66.83, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 4.8, + "int8": 4.9, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 209.01, + "int8": 205.41, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 45.6, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 21.92, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 35.3, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 28.33, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 5.7, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 175.65, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": "", + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 14.3, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 70.04, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "llama-3-8b", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 17.0, + "int8": 9.7, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 58.82, + "int8": 102.99, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 14.4, + "int8": 9.1, + "fp16": 4.7, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 69.6, + "int8": 109.3, + "fp16": 212.27, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 27.1, + "int8": 18.3, + "fp16": 10.3, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 36.86, + "int8": 54.59, + "fp16": 97.42, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 27.8, + "int8": 20.0, + "fp16": 13.9, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 35.91, + "int8": 49.99, + "fp16": 72.1, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Server Platforms (Intel® Xeon®)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 33.0, + "int8": 22.7, + "fp16": 15.8, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 30.3, + "int8": 44.07, + "fp16": 63.31, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 9.0, + "int8": 5.0, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 111.21, + "int8": 201.82, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 46.0, + "int8": 34.4, + "fp16": 21.0, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 21.76, + "int8": 29.06, + "fp16": 47.66, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 38.0, + "int8": "", + "fp16": 17.9, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 26.33, + "int8": "", + "fp16": 55.81, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Accelerator Platforms", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 11.1, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 90.09, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 5.8, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 171.03, + "int8": "", + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 14.6, + "int8": 9.3, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 68.27, + "int8": 108.02, + "fp16": "", + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "mistral-7b-v0.1", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", + "Parameters": { + "throughput": { + "Precisions": [ + { + "int4": 16.7, + "int8": 10.2, + "fp16": 5.7, + "fp32": "", + "bf16": "" + } + ], + "Unit": "FPS", + "UnitDesc": "higher is better" + }, + "latency": { + "Precisions": [ + { + "int4": 60.02, + "int8": 98.33, + "fp16": 176.33, + "fp32": "", + "bf16": "" + } + ], + "Unit": "ms", + "UnitDesc": "lower is better" + } + } + }, + { + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 7.22, - "fp16": "", - "fp32": 1.76, + "int4": 23.3, + "int8": 15.6, + "fp16": 8.5, + "fp32": "", "bf16": "" } ], @@ -21543,9 +24093,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 281.71, - "fp16": "", + "int4": 42.95, + "int8": 64.22, + "fp16": 117.2, "fp32": "", "bf16": "" } @@ -21556,18 +24106,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 12272.08, - "fp16": "", - "fp32": 3591.32, + "int4": 40.8, + "int8": 29.1, + "fp16": 17.1, + "fp32": "", "bf16": "" } ], @@ -21577,9 +24127,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 0.63, - "fp16": "", + "int4": 24.53, + "int8": 34.38, + "fp16": 58.33, "fp32": "", "bf16": "" } @@ -21590,18 +24140,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 2264.37, - "fp16": "", - "fp32": 569.28, + "int4": 43.6, + "int8": 33.3, + "fp16": 22.0, + "fp32": "", "bf16": "" } ], @@ -21611,9 +24161,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 1.55, - "fp16": "", + "int4": 22.94, + "int8": 30.03, + "fp16": 45.44, "fp32": "", "bf16": "" } @@ -21624,18 +24174,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": "", - "fp16": "", - "fp32": 10.56, + "int4": 52.2, + "int8": 39.0, + "fp16": 25.9, + "fp32": "", "bf16": "" } ], @@ -21645,9 +24195,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": "", - "fp16": "", + "int4": 19.15, + "int8": 25.66, + "fp16": 38.58, "fp32": "", "bf16": "" } @@ -21658,18 +24208,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H CPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 4708.99, - "fp16": "", - "fp32": 1235.24, + "int4": 11.6, + "int8": 8.6, + "fp16": 6.9, + "fp32": "", "bf16": "" } ], @@ -21679,9 +24229,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 1.01, - "fp16": "", + "int4": 86.42, + "int8": 116.68, + "fp16": 145.89, "fp32": "", "bf16": "" } @@ -21692,18 +24242,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 170 dGPU", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 70.37, - "fp16": "", - "fp32": 16.53, + "int4": 55.6, + "int8": 46.6, + "fp16": 31.6, + "fp32": "", "bf16": "" } ], @@ -21713,9 +24263,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 29.89, - "fp16": "", + "int4": 17.98, + "int8": 21.47, + "fp16": 31.63, "fp32": "", "bf16": "" } @@ -21726,18 +24276,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 2232.73, + "int4": 41.9, + "int8": "", "fp16": "", - "fp32": 696.62, + "fp32": "", "bf16": "" } ], @@ -21747,8 +24297,8 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 1.39, + "int4": 23.88, + "int8": "", "fp16": "", "fp32": "", "bf16": "" @@ -21760,18 +24310,18 @@ } }, { - "Platform": "Intel® Xeon® Silver 4316 CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 868.1, + "int4": 18.8, + "int8": 10.7, "fp16": "", - "fp32": 341.49, + "fp32": "", "bf16": "" } ], @@ -21781,8 +24331,8 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 3.33, + "int4": 53.33, + "int8": 93.53, "fp16": "", "fp32": "", "bf16": "" @@ -21794,18 +24344,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "bert-base-cased", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 52.43, + "int4": 9.7, + "int8": 6.1, "fp16": "", - "fp32": 36.18, + "fp32": "", "bf16": "" } ], @@ -21815,8 +24365,8 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 27.41, + "int4": 102.87, + "int8": 165.24, "fp16": "", "fp32": "", "bf16": "" @@ -21828,18 +24378,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "bert-large-uncased-whole-word-masking-squad-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 7 processor 165H iGPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 5.15, - "fp16": "", - "fp32": 3.32, + "int4": 23.1, + "int8": 15.7, + "fp16": 9.1, + "fp32": "", "bf16": "" } ], @@ -21849,9 +24399,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 257.26, - "fp16": "", + "int4": 43.28, + "int8": 63.82, + "fp16": 109.36, "fp32": "", "bf16": "" } @@ -21862,18 +24412,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "efficientdet-d0", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "phi-3-mini-4k-instruct", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": "", - "int8": 96.11, - "fp16": "", - "fp32": 46.96, + "int4": 25.6, + "int8": 16.7, + "fp16": 10.3, + "fp32": "", "bf16": "" } ], @@ -21883,9 +24433,9 @@ "latency": { "Precisions": [ { - "int4": "", - "int8": 13.55, - "fp16": "", + "int4": 38.99, + "int8": 59.98, + "fp16": 96.89, "fp32": "", "bf16": "" } @@ -21896,18 +24446,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "mask_rcnn_resnet50_atrous_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i9-13900K CPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 0.75, + "int8": "", "fp16": "", - "fp32": 0.28, + "fp32": "", "bf16": "" } ], @@ -21918,8 +24468,8 @@ "Precisions": [ { "int4": "", - "int8": 1441.58, - "fp16": "", + "int8": 42.87, + "fp16": 41.99, "fp32": "", "bf16": "" } @@ -21930,18 +24480,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "mobilenet-v2", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8380 CPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 1446.3, + "int8": "", "fp16": "", - "fp32": 663.43, + "fp32": "", "bf16": "" } ], @@ -21952,8 +24502,8 @@ "Precisions": [ { "int4": "", - "int8": 1.28, - "fp16": "", + "int8": 14.24, + "fp16": 14.44, "fp32": "", "bf16": "" } @@ -21964,18 +24514,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "resnet-50", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8480+ CPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 244.84, + "int8": "", "fp16": "", - "fp32": 123.21, + "fp32": "", "bf16": "" } ], @@ -21986,8 +24536,8 @@ "Precisions": [ { "int4": "", - "int8": 5.34, - "fp16": "", + "int8": 4.67, + "fp16": 4.55, "fp32": "", "bf16": "" } @@ -21998,9 +24548,9 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "ssd-resnet34-1200", - "Checked": true, + "Platform": "Intel® Xeon® Platinum 8580 CPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", "PlatformType": "Server Platforms (Intel® Xeon®)", "Parameters": { "throughput": { @@ -22009,7 +24559,7 @@ "int4": "", "int8": "", "fp16": "", - "fp32": 2.3, + "fp32": "", "bf16": "" } ], @@ -22020,8 +24570,8 @@ "Precisions": [ { "int4": "", - "int8": "", - "fp16": "", + "int8": 4.13, + "fp16": 4.04, "fp32": "", "bf16": "" } @@ -22032,18 +24582,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "ssd_mobilenet_v1_coco", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Arc™ A-Series Graphics dGPU", + "Model": "stable-diffusion-v1-5", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 577.33, + "int8": "", "fp16": "", - "fp32": 271.36, + "fp32": "", "bf16": "" } ], @@ -22054,8 +24604,8 @@ "Precisions": [ { "int4": "", - "int8": 2.36, - "fp16": "", + "int8": 2.55, + "fp16": 2.47, "fp32": "", "bf16": "" } @@ -22066,18 +24616,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "unet-camvid-onnx-0001", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Data Center GPU Flex 140 dGPU", + "Model": "stable-diffusion-v1-5", + "Checked": "true", + "PlatformType": "Accelerator Platforms", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 6.16, + "int8": "", "fp16": "", - "fp32": 3.31, + "fp32": "", "bf16": "" } ], @@ -22088,8 +24638,8 @@ "Precisions": [ { "int4": "", - "int8": 176.77, - "fp16": "", + "int8": 10.8, + "fp16": 10.89, "fp32": "", "bf16": "" } @@ -22100,18 +24650,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "yolo_v3_tiny", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ i7-1360P iGPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 298.95, + "int8": "", "fp16": "", - "fp32": 120.89, + "fp32": "", "bf16": "" } ], @@ -22122,8 +24672,8 @@ "Precisions": [ { "int4": "", - "int8": 3.96, - "fp16": "", + "int8": 33.5, + "fp16": 32.47, "fp32": "", "bf16": "" } @@ -22134,18 +24684,18 @@ } }, { - "Platform": "Intel® Xeon® W1290P CPU-only", - "Model": "yolo_v8n", - "Checked": true, - "PlatformType": "Server Platforms (Intel® Xeon®)", + "Platform": "Intel® Core™ Ultra 9 processor 288V iGPU-only", + "Model": "stable-diffusion-v1-5", + "Checked": "true", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { "int4": "", - "int8": 134.9, + "int8": "", "fp16": "", - "fp32": 72.23, + "fp32": "", "bf16": "" } ], @@ -22156,8 +24706,8 @@ "Precisions": [ { "int4": "", - "int8": 9.02, - "fp16": "", + "int8": 5.67, + "fp16": 5.33, "fp32": "", "bf16": "" } @@ -22168,10 +24718,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "bert-base-cased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22202,10 +24752,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "bert-large-uncased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22236,10 +24786,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "efficientdet-d0", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22270,10 +24820,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "mask_rcnn_resnet50_atrous_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22304,10 +24854,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "mobilenet-v2", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22338,10 +24888,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "resnet-50", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22372,10 +24922,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "ssd_mobilenet_v1_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22406,10 +24956,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "ssd-resnet34-1200", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22440,10 +24990,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "unet-camvid-onnx-0001", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22474,10 +25024,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "yolo_v5m", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22508,10 +25058,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU-only", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU-only", "Model": "yolo_v8n", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22542,10 +25092,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "bert-base-cased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22576,10 +25126,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "bert-large-uncased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22610,10 +25160,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "efficientdet-d0", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22644,10 +25194,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "mask_rcnn_resnet50_atrous_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22678,10 +25228,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "mobilenet-v2", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22712,10 +25262,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "resnet-50", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22746,10 +25296,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "ssd_mobilenet_v1_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22780,10 +25330,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "ssd-resnet34-1200", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22814,10 +25364,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "unet-camvid-onnx-0001", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22848,10 +25398,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "yolo_v5m", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22882,10 +25432,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "yolo_v8n", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22916,10 +25466,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "bert-base-cased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22950,10 +25500,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "bert-large-uncased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -22984,10 +25534,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "efficientdet-d0", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23018,10 +25568,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "mask_rcnn_resnet50_atrous_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23052,10 +25602,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "mobilenet-v2", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23086,10 +25636,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "resnet-50", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23120,10 +25670,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "ssd_mobilenet_v1_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23154,10 +25704,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "ssd-resnet34-1200", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23188,10 +25738,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "unet-camvid-onnx-0001", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23222,10 +25772,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "yolo_v5m", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23256,10 +25806,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V CPU+iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V CPU+iGPU", "Model": "yolo_v8n", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23290,10 +25840,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "bert-base-cased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23324,10 +25874,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "bert-large-uncased", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23358,10 +25908,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "efficientdet-d0", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23392,10 +25942,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "mask_rcnn_resnet50_atrous_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23426,10 +25976,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "mobilenet-v2", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23460,10 +26010,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "resnet-50", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23494,10 +26044,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "ssd_mobilenet_v1_coco", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23528,10 +26078,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "ssd-resnet34-1200", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23562,10 +26112,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "unet-camvid-onnx-0001", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23596,10 +26146,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "yolo_v5m", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23630,10 +26180,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V NPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V NPU", "Model": "yolo_v8n", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ @@ -23664,15 +26214,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "chatglm2-6b", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 14.8, + "int4": 20.6, "int8": "", "fp16": "", "fp32": "", @@ -23685,7 +26235,7 @@ "latency": { "Precisions": [ { - "int4": 67, + "int4": 48, "int8": "", "fp16": "", "fp32": "", @@ -23698,15 +26248,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "falcon-7b-instruct", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 13.4, + "int4": 18.8, "int8": "", "fp16": "", "fp32": "", @@ -23719,7 +26269,7 @@ "latency": { "Precisions": [ { - "int4": 74, + "int4": 53, "int8": "", "fp16": "", "fp32": "", @@ -23732,15 +26282,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "llama-2-7b-chat-hf", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 11.8, + "int4": 17.5, "int8": "", "fp16": "", "fp32": "", @@ -23753,7 +26303,7 @@ "latency": { "Precisions": [ { - "int4": 84, + "int4": 57, "int8": "", "fp16": "", "fp32": "", @@ -23766,15 +26316,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "llama-3-8b", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 12.9, + "int4": 19.2, "int8": "", "fp16": "", "fp32": "", @@ -23787,7 +26337,7 @@ "latency": { "Precisions": [ { - "int4": 77, + "int4": 52, "int8": "", "fp16": "", "fp32": "", @@ -23800,15 +26350,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "mistral-7b-v0.1", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 14.3, + "int4": 18.2, "int8": "", "fp16": "", "fp32": "", @@ -23821,7 +26371,7 @@ "latency": { "Precisions": [ { - "int4": 69, + "int4": 54, "int8": "", "fp16": "", "fp32": "", @@ -23834,15 +26384,15 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "phi-3-mini-4k-instruct", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ { - "int4": 23.5, + "int4": 29.5, "int8": "", "fp16": "", "fp32": "", @@ -23855,7 +26405,7 @@ "latency": { "Precisions": [ { - "int4": 42, + "int4": 34, "int8": "", "fp16": "", "fp32": "", @@ -23868,10 +26418,10 @@ } }, { - "Platform": "Intel(R) Core(TM) Ultra 7 processor 268V iGPU", + "Platform": "Intel® Core™ Ultra 7 processor 268V iGPU", "Model": "stable-diffusion-v1-5", "Checked": "true", - "PlatformType": "Client Platforms (Intel(R) Core(TM))", + "PlatformType": "Client Platforms (Intel® Core™)", "Parameters": { "throughput": { "Precisions": [ From 42b7322d3575677193309600e35691f4671e3244 Mon Sep 17 00:00:00 2001 From: Andrei Kashchikhin Date: Thu, 19 Sep 2024 16:52:01 +0100 Subject: [PATCH 17/49] [CI] [GHA] Add `lost communication with the server` to errors to look for in rerunner (#26691) ### Tickets: - *152565* --- .github/scripts/workflow_rerun/errors_to_look_for.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/scripts/workflow_rerun/errors_to_look_for.json b/.github/scripts/workflow_rerun/errors_to_look_for.json index bfde22bb70c6df..aecef0c49c71b3 100644 --- a/.github/scripts/workflow_rerun/errors_to_look_for.json +++ b/.github/scripts/workflow_rerun/errors_to_look_for.json @@ -74,5 +74,9 @@ { "error_text": "json.decoder.JSONDecodeError: Unterminated string starting at", "ticket": 151796 + }, + { + "error_text": "lost communication with the server", + "ticket": 152565 } ] \ No newline at end of file From b4af3d53291aaf37dc6cb1b211556654621b348c Mon Sep 17 00:00:00 2001 From: Alicja Miloszewska Date: Fri, 20 Sep 2024 06:42:34 +0200 Subject: [PATCH 18/49] [OV JS] npm run lint on .js files (#26543) ### Details: - include *.js files - Fix codestyle errors about max-len, snake-case etc. ### Tickets: - *ticket-id* --- src/bindings/js/.eslintrc-global.js | 3 +- src/bindings/js/.eslintrc.js | 2 +- src/bindings/js/node/.eslintrc.js | 3 + src/bindings/js/node/lib/addon.ts | 98 ++++---- .../js/node/scripts/download_runtime.js | 58 +++-- .../node/tests/e2e/demo-electron-app/index.js | 1 + .../js/node/tests/e2e/electron-app.test.js | 25 +- src/bindings/js/node/tests/unit/basic.test.js | 144 ++++++----- .../js/node/tests/unit/compiled_model.test.js | 34 +-- src/bindings/js/node/tests/unit/core.test.js | 17 +- .../js/node/tests/unit/infer_request.test.js | 197 +++++++-------- src/bindings/js/node/tests/unit/model.test.js | 98 ++++---- .../tests/unit/pre_post_processor.test.js | 226 ++++++++++++------ .../js/node/tests/unit/read_model.test.js | 22 +- .../js/node/tests/unit/tensor.test.js | 176 ++++++++------ src/bindings/js/node/tests/unit/utils.js | 12 +- 16 files changed, 632 insertions(+), 484 deletions(-) diff --git a/src/bindings/js/.eslintrc-global.js b/src/bindings/js/.eslintrc-global.js index 623b8ba549a00a..7f4abc54561495 100644 --- a/src/bindings/js/.eslintrc-global.js +++ b/src/bindings/js/.eslintrc-global.js @@ -2,7 +2,7 @@ module.exports = { rules: { 'semi': ['error'], 'no-var': ['error'], - 'max-len': ['error'], + 'max-len': ['error', { 'ignoreUrls': true }], 'eol-last': ['error'], 'indent': ['error', 2], 'camelcase': ['error'], @@ -23,5 +23,6 @@ module.exports = { 'key-spacing': ['error', { beforeColon: false }], 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }], 'keyword-spacing': ['error', { overrides: { catch: { after: false } } }], + '@typescript-eslint/no-var-requires': 0, } }; diff --git a/src/bindings/js/.eslintrc.js b/src/bindings/js/.eslintrc.js index 8cb6464d27ddcc..5958104aa92946 100644 --- a/src/bindings/js/.eslintrc.js +++ b/src/bindings/js/.eslintrc.js @@ -4,6 +4,6 @@ module.exports = { 'plugin:@typescript-eslint/recommended', './.eslintrc-global.js', ], - ignorePatterns: ['**/*.js', 'node_modules/', 'types/', 'dist/', 'bin/'], + ignorePatterns: ['node_modules/', 'types/', 'dist/', 'bin/', '.eslintrc.js'], root: true, }; diff --git a/src/bindings/js/node/.eslintrc.js b/src/bindings/js/node/.eslintrc.js index 992f409c909343..24ba06e7821d43 100644 --- a/src/bindings/js/node/.eslintrc.js +++ b/src/bindings/js/node/.eslintrc.js @@ -1,5 +1,8 @@ module.exports = { extends: ['../.eslintrc.js'], + env: { + node: true, + }, parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint'], }; diff --git a/src/bindings/js/node/lib/addon.ts b/src/bindings/js/node/lib/addon.ts index c2ba1d9c61f1f9..060af2cfec92e8 100644 --- a/src/bindings/js/node/lib/addon.ts +++ b/src/bindings/js/node/lib/addon.ts @@ -48,7 +48,7 @@ interface Core { compileModel( model: Model, deviceName: string, - config?: { [propertyName: string]: string } + config?: { [propertyName: string]: string }, ): Promise; /** * Asynchronously reads a model and creates a compiled model @@ -67,7 +67,7 @@ interface Core { compileModel( modelPath: string, deviceName: string, - config?: { [propertyName: string]: string } + config?: { [propertyName: string]: string }, ): Promise; /** * A synchronous version of {@link Core.compileModel}. @@ -76,7 +76,7 @@ interface Core { compileModelSync( model: Model, deviceName: string, - config?: { [propertyName: string]: string } + config?: { [propertyName: string]: string }, ): CompiledModel; /** * A synchronous version of {@link Core.compileModel}. @@ -85,7 +85,7 @@ interface Core { compileModelSync( modelPath: string, deviceName: string, - config?: { [propertyName: string]: string } + config?: { [propertyName: string]: string }, ): CompiledModel; /** * It returns a list of available inference devices. @@ -118,9 +118,9 @@ interface Core { */ getVersions(deviceName: string): { [deviceName: string]: { - buildNumber: string, - description: string, - }, + buildNumber: string; + description: string; + }; }; /** * Asynchronously imports a previously exported compiled model. @@ -135,7 +135,7 @@ interface Core { importModel( modelStream: Buffer, device: string, - config?: { [key: string]: string | number | boolean } + config?: { [key: string]: string | number | boolean }, ): Promise; /** * A synchronous version of {@link Core.importModel}. @@ -144,7 +144,7 @@ interface Core { importModelSync( modelStream: Buffer, device: string, - config?: { [key: string]: string | number | boolean } + config?: { [key: string]: string | number | boolean }, ): CompiledModel; /** * It reads models from the IR / ONNX / PDPD / TF and TFLite formats. @@ -175,7 +175,9 @@ interface Core { * @param weightsBuffer Binary data with tensor data. */ readModel( - modelBuffer: Uint8Array, weightsBuffer?: Uint8Array): Promise; + modelBuffer: Uint8Array, + weightsBuffer?: Uint8Array, + ): Promise; /** * A synchronous version of {@link Core.readModel}. * It reads models from the IR / ONNX / PDPD / TF and TFLite formats. @@ -220,7 +222,7 @@ interface Core { ): {[key: string]: string | number | boolean}; } interface CoreConstructor { - new(): Core; + new (): Core; } /** @@ -277,9 +279,9 @@ interface Model { */ isDynamic(): boolean; /** - * It gets the output of the model. - * If a model has more than one output, this method throws an exception. - */ + * It gets the output of the model. + * If a model has more than one output, this method throws an exception. + */ output(): Output; /** * It gets the output of the model identified by the tensor name. @@ -372,15 +374,15 @@ interface CompiledModel { * @returns {Output} A compiled model input. */ input(name: string): Output; - /** + /** * It sets properties for the current compiled model. Properties * can be retrieved via {@link CompiledModel.getProperty}. * @param property An object with the key-value pairs. * (property name, property value) */ - setProperty(properties: { - [propertyName: string]: string | number | boolean - }): void; + setProperty(properties: { + [propertyName: string]: string | number | boolean; + }): void; } /** @@ -438,7 +440,7 @@ interface TensorConstructor { * @param type The element type of the new tensor. * @param shape The shape of the new tensor. */ - new(type: element | elementTypeString, shape: number[]): Tensor; + new (type: element | elementTypeString, shape: number[]): Tensor; /** * It constructs a tensor using the element type and shape. The new tensor * wraps allocated host memory. @@ -447,14 +449,17 @@ interface TensorConstructor { * @param tensorData A subclass of TypedArray that will be wrapped * by a {@link Tensor}. */ - new(type: element | elementTypeString, shape: number[], - tensorData: SupportedTypedArray): Tensor; + new ( + type: element | elementTypeString, + shape: number[], + tensorData: SupportedTypedArray, + ): Tensor; /** * It constructs a tensor using the element type and shape. The strings from * the array are used to fill the new tensor. Each element of a string tensor * is a string of arbitrary length, including an empty string. */ - new(tensorData: string[]): Tensor; + new (tensorData: string[]): Tensor; } /** @@ -478,8 +483,9 @@ interface InferRequest { * TypedArray will be wrapped into Tensor underneath using the input shape * and element type of the deployed model. */ - infer(inputData: { [inputName: string]: Tensor | SupportedTypedArray }) - : { [outputName: string]: Tensor }; + infer(inputData: { [inputName: string]: Tensor | SupportedTypedArray }): { + [outputName: string]: Tensor; + }; /** * It infers specified input(s) in the synchronous mode. * @param inputData An array with tensors or TypedArrays. TypedArrays will be @@ -487,16 +493,18 @@ interface InferRequest { * of the deployed model. If the model has multiple inputs, the Tensors * and TypedArrays must be passed in the correct order. */ - infer(inputData: Tensor[] | SupportedTypedArray[]) - : { [outputName: string]: Tensor }; + infer(inputData: Tensor[] | SupportedTypedArray[]): { + [outputName: string]: Tensor; + }; /** * It infers specified input(s) in the asynchronous mode. * @param inputData An object with the key-value pairs where the key is the * input name and value is a tensor or an array with tensors. If the model has * multiple inputs, the Tensors must be passed in the correct order. */ - inferAsync(inputData: { [inputName: string]: Tensor } - | Tensor[]): Promise<{ [outputName: string]: Tensor }>; + inferAsync( + inputData: { [inputName: string]: Tensor } | Tensor[], + ): Promise<{ [outputName: string]: Tensor }>; /** * It gets the compiled model used by the InferRequest object. */ @@ -521,11 +529,11 @@ interface InferRequest { */ getOutputTensor(): Tensor; /** - * It gets the output tensor for inference. - * @param idx An index of the tensor to get. - * @returns A tensor at the specified index. If the tensor with the specified - * idx is not found, an exception is thrown. - */ + * It gets the output tensor for inference. + * @param idx An index of the tensor to get. + * @returns A tensor at the specified index. If the tensor with the specified + * idx is not found, an exception is thrown. + */ getOutputTensor(idx?: number): Tensor; /** * It gets an input/output tensor for inference. @@ -619,7 +627,7 @@ interface PrePostProcessor { output(idxOrTensorName?: number | string): OutputInfo; } interface PrePostProcessorConstructor { - new(model: Model): PrePostProcessor; + new (model: Model): PrePostProcessor; } interface PartialShape { @@ -638,7 +646,7 @@ interface PartialShapeConstructor { * Omit parameter to create empty shape. * @param [shape] String representation of the shape. */ - new(shape?: string): PartialShape; + new (shape?: string): PartialShape; } declare enum element { @@ -662,18 +670,16 @@ declare enum resizeAlgorithm { } export interface NodeAddon { - Core: CoreConstructor, - Tensor: TensorConstructor, - PartialShape: PartialShapeConstructor, + Core: CoreConstructor; + Tensor: TensorConstructor; + PartialShape: PartialShapeConstructor; preprocess: { - resizeAlgorithm: typeof resizeAlgorithm, - PrePostProcessor: PrePostProcessorConstructor, - }, - element: typeof element, + resizeAlgorithm: typeof resizeAlgorithm; + PrePostProcessor: PrePostProcessorConstructor; + }; + element: typeof element; } -export default - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('../bin/ov_node_addon.node') as - NodeAddon; +export default // eslint-disable-next-line @typescript-eslint/no-var-requires +require('../bin/ov_node_addon.node') as NodeAddon; diff --git a/src/bindings/js/node/scripts/download_runtime.js b/src/bindings/js/node/scripts/download_runtime.js index 775b4aa6c754c9..321eb4b125bc6c 100644 --- a/src/bindings/js/node/scripts/download_runtime.js +++ b/src/bindings/js/node/scripts/download_runtime.js @@ -25,10 +25,11 @@ async function main() { try { await downloadRuntime(destinationPath, { force, ignoreIfExists, proxy }); - } catch (error) { + } catch(error) { if (error instanceof RuntimeExistsError) { console.error( - `Directory '${destinationPath}' already exists. To force runtime downloading run 'npm run download_runtime -- -f'` + `Directory '${destinationPath}' already exists. ` + + 'To force runtime downloading run \'npm run download_runtime -- -f\'', ); } else { throw error; @@ -52,13 +53,18 @@ class RuntimeExistsError extends Error { * @function downloadRuntime * @param {string} destinationPath - The destination directory path. * @param {Object} [config] - The configuration object. - * @param {boolean} [config.force=false] - The flag to force install and replace runtime if it exists. Default is `false`. - * @param {boolean} [config.ignoreIfExists=true] - The flag to skip installation if it exists Default is `true`. + * @param {boolean} [config.force=false] - The flag + * to force install and replace runtime if it exists. Default is `false`. + * @param {boolean} [config.ignoreIfExists=true] - The flag + * to skip installation if it exists Default is `true`. * @param {string|null} [config.proxy=null] - The proxy URL. Default is `null`. * @returns {Promise} * @throws {RuntimeExistsError} */ -async function downloadRuntime(destinationPath, config = { force: false, ignoreIfExists: true, proxy: null }) { +async function downloadRuntime( + destinationPath, + config = { force: false, ignoreIfExists: true, proxy: null }, +) { const { version } = packageJson; const osInfo = await getOsInfo(); const isRuntimeDirectoryExists = await checkIfPathExists(destinationPath); @@ -66,13 +72,16 @@ async function downloadRuntime(destinationPath, config = { force: false, ignoreI if (isRuntimeDirectoryExists && !config.force) { if (config.ignoreIfExists) { console.warn( - `Directory '${destinationPath}' already exists. Skipping runtime downloading because 'ignoreIfExists' flag is passed.` + `Directory '${destinationPath}' already exists. Skipping ` + + 'runtime downloading because \'ignoreIfExists\' flag is passed.', ); + return; } throw new RuntimeExistsError( - `Directory '${destinationPath}' already exists. To force runtime downloading use 'force' flag.` + `Directory '${destinationPath}' already exists. ` + + 'To force runtime downloading use \'force\' flag.', ); } @@ -87,7 +96,12 @@ async function downloadRuntime(destinationPath, config = { force: false, ignoreI await fs.mkdir(tempDirectoryPath); console.log('Downloading OpenVINO runtime archive...'); - await downloadFile(runtimeArchiveUrl, tempDirectoryPath, filename, config.proxy); + await downloadFile( + runtimeArchiveUrl, + tempDirectoryPath, + filename, + config.proxy, + ); console.log('OpenVINO runtime archive downloaded.'); await removeDirectory(destinationPath); @@ -96,7 +110,7 @@ async function downloadRuntime(destinationPath, config = { force: false, ignoreI await unarchive(archiveFilePath, destinationPath); console.log('The archive was successfully extracted.'); - } catch (error) { + } catch(error) { console.error(`Failed to download OpenVINO runtime: ${error}.`); throw error; } finally { @@ -149,8 +163,9 @@ async function getOsInfo() { async function checkIfPathExists(path) { try { await fs.access(path); + return true; - } catch (error) { + } catch(error) { if (error.code === codeENOENT) { return false; } @@ -167,12 +182,12 @@ async function checkIfPathExists(path) { * @returns {string} */ function getRuntimeArchiveUrl(version, osInfo) { - const { + const { host, package_name: packageNameTemplate, remote_path: remotePathTemplate, } = packageJson.binary; - const fullPathTemplate = `${remotePathTemplate}${packageNameTemplate}` + const fullPathTemplate = `${remotePathTemplate}${packageNameTemplate}`; const fullPath = fullPathTemplate .replace(new RegExp('{version}', 'g'), version) .replace(new RegExp('{platform}', 'g'), osInfo.platform) @@ -193,7 +208,7 @@ async function removeDirectory(path) { try { console.log(`Removing ${path}`); await fs.rm(path, { recursive: true, force: true }); - } catch (error) { + } catch(error) { if (error.code === codeENOENT) console.log(`Path: ${path} doesn't exist`); throw error; @@ -215,7 +230,7 @@ function downloadFile(url, destination, filename, proxy = null) { const fullPath = path.resolve(destination, filename); const file = createWriteStream(fullPath); - if (new URL(url).protocol === 'http') + if (new URL(url).protocol === 'http') throw new Error('Http link doesn\'t support'); let agent; @@ -271,12 +286,15 @@ function unarchive(tarFilePath, dest) { return new Promise((resolve, reject) => { createReadStream(tarFilePath) .pipe(gunzip()) - .pipe(tar.extract(dest) - .on('finish', () => { - resolve(); - }).on('error', (err) => { - reject(err); - }), + .pipe( + tar + .extract(dest) + .on('finish', () => { + resolve(); + }) + .on('error', (err) => { + reject(err); + }), ); }); } diff --git a/src/bindings/js/node/tests/e2e/demo-electron-app/index.js b/src/bindings/js/node/tests/e2e/demo-electron-app/index.js index 9f5fcb8511b868..cfa5fd27b0fa4e 100644 --- a/src/bindings/js/node/tests/e2e/demo-electron-app/index.js +++ b/src/bindings/js/node/tests/e2e/demo-electron-app/index.js @@ -3,6 +3,7 @@ const { addon: ov } = require('openvino-node'); app.whenReady().then(() => { console.log('Creating OpenVINO Runtime Core'); + // eslint-disable-next-line @typescript-eslint/no-unused-vars const core = new ov.Core(); console.log('Created OpenVINO Runtime Core'); diff --git a/src/bindings/js/node/tests/e2e/electron-app.test.js b/src/bindings/js/node/tests/e2e/electron-app.test.js index 948146b98225f8..01e84dea884502 100644 --- a/src/bindings/js/node/tests/e2e/electron-app.test.js +++ b/src/bindings/js/node/tests/e2e/electron-app.test.js @@ -1,29 +1,36 @@ +/* global describe, it, before, after */ const fs = require('node:fs'); const assert = require('node:assert'); const { exec } = require('child_process'); -describe('E2E test of installation openvino as electron dependency', function() { +describe('E2E testing for OpenVINO as an Electron dependency.', function() { this.timeout(50000); before((done) => { - exec('cp -r ./tests/e2e/demo-electron-app/ demo-electron-app-project', (error) => { - if (error) { - console.error(`exec error: ${error}`); + exec( + 'cp -r ./tests/e2e/demo-electron-app/ demo-electron-app-project', + (error) => { + if (error) { + console.error(`exec error: ${error}`); - return done(error); - } + return done(error); + } - done(); - }); + done(); + }, + ); }); it('should install dependencies', (done) => { exec('cd demo-electron-app-project && npm install', (error) => { if (error) { console.error(`exec error: ${error}`); + return done(error); } - const packageJson = JSON.parse(fs.readFileSync('demo-electron-app-project/package-lock.json', 'utf8')); + const packageJson = JSON.parse( + fs.readFileSync('demo-electron-app-project/package-lock.json', 'utf8'), + ); assert.equal(packageJson.name, 'demo-electron-app'); done(); }); diff --git a/src/bindings/js/node/tests/unit/basic.test.js b/src/bindings/js/node/tests/unit/basic.test.js index d84aabeb91267c..0717b430ae002d 100644 --- a/src/bindings/js/node/tests/unit/basic.test.js +++ b/src/bindings/js/node/tests/unit/basic.test.js @@ -9,8 +9,7 @@ const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); const epsilon = 0.5; describe('ov basic tests.', () => { - - let testXml = null; + let testXml = null; let core = null; let model = null; let compiledModel = null; @@ -35,7 +34,6 @@ describe('ov basic tests.', () => { }); describe('Core.getVersions()', () => { - it('getVersions(validDeviceName: string)', () => { const deviceVersion = core.getVersions('CPU'); assert.strictEqual(typeof deviceVersion, 'object'); @@ -44,20 +42,15 @@ describe('ov basic tests.', () => { assert.strictEqual(typeof deviceVersion.CPU.description, 'string'); }); - it('getVersions() throws if no arguments are passed into the function', () => { - assert.throws( - () => core.getVersions(), - { message: 'getVersions() method expects 1 argument of string type.' } - ); + it('getVersions() throws if no arguments are passed', () => { + assert.throws(() => core.getVersions(), { + message: 'getVersions() method expects 1 argument of string type.', + }); }); - it('getVersions() throws if non string coercable arguments are passed into the function', () => { - assert.throws( - () => core.getVersions({ deviceName: 'CPU' }), - { message: 'The argument in getVersions() method must be a string or convertible to a string.' } - ); + it('getVersions() throws with non string coercable arg.', () => { + assert.throws(() => core.getVersions({ deviceName: 'CPU' })); }); - }); it('CompiledModel type', () => { @@ -70,14 +63,14 @@ describe('ov basic tests.', () => { }); describe('Core.compileModelSync()', () => { - const tput = { 'PERFORMANCE_HINT': 'THROUGHPUT' }; + const tput = { PERFORMANCE_HINT: 'THROUGHPUT' }; it('compileModelSync(model:Model, deviceName: string, config: {}) ', () => { const cm = core.compileModelSync(model, 'CPU', tput); assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); - it('compileModelSync(model:model_path, deviceName: string, config: {}) ', () => { + it('compileModelSync(model_path, deviceName, config: {}) ', () => { const cm = core.compileModelSync(testXml, 'CPU', tput); assert.equal(cm.inputs.length, 1); }); @@ -87,14 +80,16 @@ describe('ov basic tests.', () => { assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); - it('compileModelSync(model, device, config) throws when config is a string', () => { - const expectedMsg = ('\'compileModelSync\' method called with incorrect parameters.\n' + - 'Provided signature: (object, string, string) \n' + - 'Allowed signatures:\n' + - '- (string, string)\n' + - '- (Model, string)\n' + - '- (string, string, object)\n' + - '- (Model, string, object)\n').replace(/[()]/g, '\\$&'); + it('compileModelSync(model, device, configOfTypeString) throws', () => { + const expectedMsg = ( + '\'compileModelSync\' method called with incorrect parameters.\n' + + 'Provided signature: (object, string, string) \n' + + 'Allowed signatures:\n' + + '- (string, string)\n' + + '- (Model, string)\n' + + '- (string, string, object)\n' + + '- (Model, string, object)\n' + ).replace(/[()]/g, '\\$&'); assert.throws( () => core.compileModelSync(model, 'CPU', 'string'), @@ -102,21 +97,23 @@ describe('ov basic tests.', () => { ); }); - it('compileModelSync(model, device, config) throws when config value is not a string', () => { + it('compileModelSync(model, device, invalidConfig) throws', () => { assert.throws( - () => core.compileModelSync(model, 'CPU', { 'PERFORMANCE_HINT': tput }), - /Cannot convert to ov::Any/ + () => core.compileModelSync(model, 'CPU', { PERFORMANCE_HINT: tput }), + /Cannot convert to ov::Any/, ); }); - it('compileModelSync(model) throws if the number of arguments is invalid', () => { - const expectedMsg = ('\'compileModelSync\' method called with incorrect parameters.\n' + - 'Provided signature: (object) \n' + - 'Allowed signatures:\n' + - '- (string, string)\n' + - '- (Model, string)\n' + - '- (string, string, object)\n' + - '- (Model, string, object)\n').replace(/[()]/g, '\\$&'); + it('compileModelSync(model) throws with invalid number of args', () => { + const expectedMsg = ( + '\'compileModelSync\' method called with incorrect parameters.\n' + + 'Provided signature: (object) \n' + + 'Allowed signatures:\n' + + '- (string, string)\n' + + '- (Model, string)\n' + + '- (string, string, object)\n' + + '- (Model, string, object)\n' + ).replace(/[()]/g, '\\$&'); assert.throws( () => core.compileModelSync(model), @@ -126,54 +123,50 @@ describe('ov basic tests.', () => { }); describe('Core.compileModel()', () => { - const tput = { 'PERFORMANCE_HINT': 'THROUGHPUT' }; + const tput = { PERFORMANCE_HINT: 'THROUGHPUT' }; it('compileModel(model:Model, deviceName: string, config: {}) ', () => { - core.compileModel(model, 'CPU', tput).then(cm => { + core.compileModel(model, 'CPU', tput).then((cm) => { assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); - }); - it('compileModel(model:model_path, deviceName: string, config: {}) ', () => { - core.compileModel(testXml, 'CPU', tput).then(cm => { + it('compileModel(model_path, deviceName, config: {}) ', () => { + core.compileModel(testXml, 'CPU', tput).then((cm) => { assert.equal(cm.inputs.length, 1); }); - }); it('compileModel(model:model_path, deviceName: string) ', () => { - core.compileModel(testXml, 'CPU').then(cm => { + core.compileModel(testXml, 'CPU').then((cm) => { assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); - }); - it('compileModel(model, device, config) throws when config isn\'t an object', () => { + it('compileModel(model, device, invalidconfig) throws', () => { assert.throws( () => core.compileModel(model, 'CPU', 'string').then(), - 'Argument #3 must be an Object.' + 'Argument #3 must be an Object.', ); }); - it('compileModel(model, device, config) throws when config value is not a string', () => { + it('compileModel(model, device, invalidConfig) throws', () => { assert.throws( - () => core.compileModel(model, 'CPU', { 'PERFORMANCE_HINT': tput }).then(), - /Cannot convert to ov::Any/ + () => + core.compileModel(model, 'CPU', { PERFORMANCE_HINT: tput }).then(), + /Cannot convert to ov::Any/, ); }); - it('compileModel(model) throws if the number of arguments is invalid', () => { + it('compileModel(model) throws with invalid number of args', () => { assert.throws( () => core.compileModel(model).then(), - /Invalid number of arguments/ + /Invalid number of arguments/, ); }); - }); describe('ov.Model/ov.CompiledModel output()', () => { - it('model.output() type', () => { assert.ok(model.output() instanceof ov.Output); }); @@ -183,7 +176,6 @@ describe('ov basic tests.', () => { }); it('output() methods/properties', () => { - modelLike.forEach((obj) => { assert.strictEqual(obj.outputs.length, 1); // tests for an obj with one output @@ -195,12 +187,10 @@ describe('ov basic tests.', () => { assert.strictEqual(obj.output().getAnyName(), 'fc_out'); assert.strictEqual(obj.output().anyName, 'fc_out'); }); - }); }); describe('ov.Model/ov.CompiledModel input()', () => { - it('ov.Model.input() type', () => { assert.ok(model.input() instanceof ov.Output); }); @@ -211,7 +201,6 @@ describe('ov basic tests.', () => { it('input() methods/properties', () => { modelLike.forEach((obj) => { - assert.strictEqual(typeof obj.input(), 'object'); assert.strictEqual(obj.inputs.length, 1); assert.strictEqual(obj.input().toString(), 'data'); @@ -223,9 +212,7 @@ describe('ov basic tests.', () => { assert.deepStrictEqual(obj.input(0).shape, [1, 3, 32, 32]); assert.deepStrictEqual(obj.input(0).getShape(), [1, 3, 32, 32]); }); - }); - }); describe('Test exportModel()/importModel()', () => { @@ -234,7 +221,10 @@ describe('ov basic tests.', () => { let res1 = null; before(() => { - tensor = Float32Array.from({ length: 3072 }, () => (Math.random() + epsilon)); + tensor = Float32Array.from( + { length: 3072 }, + () => Math.random() + epsilon, + ); const core = new ov.Core(); const model = core.readModelSync(testXml); const compiledModel = core.compileModelSync(model, 'CPU'); @@ -252,7 +242,9 @@ describe('ov basic tests.', () => { }); it('Test importModelSync(stream, device, config)', () => { - const newCompiled = core.importModelSync(userStream, 'CPU', { 'NUM_STREAMS': 1 }); + const newCompiled = core.importModelSync(userStream, 'CPU', { + NUM_STREAMS: 1, + }); const newInferRequest = newCompiled.createInferRequest(); const res2 = newInferRequest.infer([tensor]); @@ -262,20 +254,20 @@ describe('ov basic tests.', () => { it('Test importModelSync(stream, device) throws', () => { assert.throws( () => core.importModelSync(epsilon, 'CPU'), - /The first argument must be of type Buffer./ + /The first argument must be of type Buffer./, ); }); it('Test importModelSync(stream, device) throws', () => { assert.throws( () => core.importModelSync(userStream, tensor), - /The second argument must be of type String./ + /The second argument must be of type String./, ); }); it('Test importModelSync(stream, device, config: tensor) throws', () => { assert.throws( () => core.importModelSync(userStream, 'CPU', tensor), - /NotFound: Unsupported property 0 by CPU plugin./ + /NotFound: Unsupported property 0 by CPU plugin./, ); }); @@ -283,7 +275,7 @@ describe('ov basic tests.', () => { const testString = 'test'; assert.throws( () => core.importModelSync(userStream, 'CPU', testString), - /Passed Napi::Value must be an object./ + /Passed Napi::Value must be an object./, ); }); @@ -291,13 +283,13 @@ describe('ov basic tests.', () => { throws', () => { const tmpDir = '/tmp'; assert.throws( - () => core.importModelSync(userStream, 'CPU', { 'CACHE_DIR': tmpDir }), - /Unsupported property CACHE_DIR by CPU plugin./ + () => core.importModelSync(userStream, 'CPU', { CACHE_DIR: tmpDir }), + /Unsupported property CACHE_DIR by CPU plugin./, ); }); it('Test importModel(stream, device)', () => { - core.importModel(userStream, 'CPU').then(newCompiled => { + core.importModel(userStream, 'CPU').then((newCompiled) => { const newInferRequest = newCompiled.createInferRequest(); const res2 = newInferRequest.infer([tensor]); assert.deepStrictEqual(res1['fc_out'].data[0], res2['fc_out'].data[0]); @@ -305,26 +297,30 @@ describe('ov basic tests.', () => { }); it('Test importModel(stream, device, config)', () => { - core.importModel(userStream, 'CPU', { 'NUM_STREAMS': 1 }).then( - newCompiled => { + core + .importModel(userStream, 'CPU', { NUM_STREAMS: 1 }) + .then((newCompiled) => { const newInferRequest = newCompiled.createInferRequest(); const res2 = newInferRequest.infer([tensor]); - assert.deepStrictEqual(res1['fc_out'].data[0], res2['fc_out'].data[0]); + assert.deepStrictEqual( + res1['fc_out'].data[0], + res2['fc_out'].data[0], + ); }); }); it('Test importModel(stream, device) throws', () => { assert.throws( () => core.importModel(epsilon, 'CPU').then(), - /'importModel' method called with incorrect parameters./ + /'importModel' method called with incorrect parameters./, ); }); it('Test importModel(stream, device) throws', () => { assert.throws( () => core.importModel(userStream, tensor).then(), - /'importModel' method called with incorrect parameters./ + /'importModel' method called with incorrect parameters./, ); }); @@ -332,10 +328,8 @@ describe('ov basic tests.', () => { const testString = 'test'; assert.throws( () => core.importModel(userStream, 'CPU', testString).then(), - /'importModel' method called with incorrect parameters./ + /'importModel' method called with incorrect parameters./, ); }); - }); - }); diff --git a/src/bindings/js/node/tests/unit/compiled_model.test.js b/src/bindings/js/node/tests/unit/compiled_model.test.js index d433cf3b8e96b1..86c7bf4b7d1b3f 100644 --- a/src/bindings/js/node/tests/unit/compiled_model.test.js +++ b/src/bindings/js/node/tests/unit/compiled_model.test.js @@ -8,8 +8,6 @@ const { describe, it, before, beforeEach } = require('node:test'); const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); describe('ov.CompiledModel tests', () => { - - let testXml = null; let core = null; let compiledModel = null; @@ -19,10 +17,10 @@ describe('ov.CompiledModel tests', () => { testXml = getModelPath().xml; core = new ov.Core(); }); - + beforeEach(() => { const properties = { - 'AUTO_BATCH_TIMEOUT': '1', + AUTO_BATCH_TIMEOUT: '1', }; compiledModel = core.compileModelSync(testXml, 'BATCH:CPU', properties); }); @@ -34,51 +32,55 @@ describe('ov.CompiledModel tests', () => { it('throws an error when called without arguments', () => { assert.throws( () => compiledModel.getProperty(), - /'getProperty' method called with incorrect parameters/ + /'getProperty' method called with incorrect parameters/, ); }); - it('throws an error when called with property name that does not exists', () => { - assert.throws( - () => compiledModel.getProperty('PROPERTY_THAT_DOES_NOT_EXIST') + it('throws when called with property name that does not exists', () => { + assert.throws(() => + compiledModel.getProperty('PROPERTY_THAT_DOES_NOT_EXIST'), ); }); }); describe('setProperty()', () => { it('sets a properties for compiled model', () => { - const properties = {'AUTO_BATCH_TIMEOUT': '1000'}; + const properties = { AUTO_BATCH_TIMEOUT: '1000' }; assert.doesNotThrow(() => compiledModel.setProperty(properties)); }); it('throws an error when called without an object argument', () => { assert.throws( () => compiledModel.setProperty(), - /'setProperty' method called with incorrect parameters/ + /'setProperty' method called with incorrect parameters/, ); }); it('throws an error when called with wrong argument', () => { assert.throws( () => compiledModel.setProperty(123), - /'setProperty' method called with incorrect parameters/ + /'setProperty' method called with incorrect parameters/, ); }); it('throws an error when called with multiple arguments', () => { assert.throws( - () => compiledModel.setProperty({'PERFORMANCE_HINT': 'THROUGHPUT'}, {'NUM_STREAMS': 'AUTO'}), - /'setProperty' method called with incorrect parameters/ + () => + compiledModel.setProperty( + { PERFORMANCE_HINT: 'THROUGHPUT' }, + { NUM_STREAMS: 'AUTO' }, + ), + /'setProperty' method called with incorrect parameters/, ); }); it('returns the set property of the compiled model', () => { - const properties = {'AUTO_BATCH_TIMEOUT': '123'}; + const properties = { AUTO_BATCH_TIMEOUT: '123' }; compiledModel.setProperty(properties); assert.strictEqual(compiledModel.getProperty('AUTO_BATCH_TIMEOUT'), 123); }); it('retains the last set property when set multiple times', () => { - compiledModel.setProperty({'AUTO_BATCH_TIMEOUT': '321'}); - compiledModel.setProperty({'AUTO_BATCH_TIMEOUT': '132'}); + compiledModel.setProperty({ AUTO_BATCH_TIMEOUT: '321' }); + compiledModel.setProperty({ AUTO_BATCH_TIMEOUT: '132' }); assert.strictEqual(compiledModel.getProperty('AUTO_BATCH_TIMEOUT'), 132); }); diff --git a/src/bindings/js/node/tests/unit/core.test.js b/src/bindings/js/node/tests/unit/core.test.js index fac64e489273b5..6cf431a38b5030 100644 --- a/src/bindings/js/node/tests/unit/core.test.js +++ b/src/bindings/js/node/tests/unit/core.test.js @@ -20,7 +20,7 @@ describe('ov.Core tests', () => { it('Core.setProperty()', () => { const tmpDir = '/tmp'; - core.setProperty({ 'CACHE_DIR': tmpDir }); + core.setProperty({ CACHE_DIR: tmpDir }); const cacheDir = core.getProperty('CACHE_DIR'); @@ -30,7 +30,7 @@ describe('ov.Core tests', () => { it('Core.setProperty(\'CPU\')', () => { const tmpDir = '/tmp'; - core.setProperty('CPU', { 'CACHE_DIR': tmpDir }); + core.setProperty('CPU', { CACHE_DIR: tmpDir }); const cacheDir = core.getProperty('CPU', 'CACHE_DIR'); @@ -38,7 +38,10 @@ describe('ov.Core tests', () => { }); it('Core.getProperty(\'CPU\', \'SUPPORTED_PROPERTIES\') is Array', () => { - const supportedPropertiesArray = core.getProperty('CPU', 'SUPPORTED_PROPERTIES'); + const supportedPropertiesArray = core.getProperty( + 'CPU', + 'SUPPORTED_PROPERTIES', + ); assert.ok(Array.isArray(supportedPropertiesArray)); }); @@ -46,7 +49,7 @@ describe('ov.Core tests', () => { it('Core.setProperty(\'CPU\', { \'NUM_STREAMS\': 5 })', () => { const streams = 5; - core.setProperty('CPU', { 'NUM_STREAMS': streams }); + core.setProperty('CPU', { NUM_STREAMS: streams }); const result = core.getProperty('CPU', 'NUM_STREAMS'); assert.equal(result, streams); @@ -55,7 +58,7 @@ describe('ov.Core tests', () => { it('Core.setProperty(\'CPU\', { \'INFERENCE_NUM_THREADS\': 3 })', () => { const threads = 3; - core.setProperty('CPU', { 'INFERENCE_NUM_THREADS': threads }); + core.setProperty('CPU', { INFERENCE_NUM_THREADS: threads }); const result = core.getProperty('CPU', 'INFERENCE_NUM_THREADS'); assert.equal(result, threads); @@ -64,7 +67,7 @@ describe('ov.Core tests', () => { it('Core.addExtension() with empty parameters', () => { assert.throws( () => core.addExtension(), - /addExtension method applies one argument of string type/ + /addExtension method applies one argument of string type/, ); }); @@ -73,7 +76,7 @@ describe('ov.Core tests', () => { assert.throws( () => core.addExtension(notExistsExt), - /Cannot load library 'not_exists'/ + /Cannot load library 'not_exists'/, ); }); diff --git a/src/bindings/js/node/tests/unit/infer_request.test.js b/src/bindings/js/node/tests/unit/infer_request.test.js index d1ee057cd77e0e..3f993ef70f25db 100644 --- a/src/bindings/js/node/tests/unit/infer_request.test.js +++ b/src/bindings/js/node/tests/unit/infer_request.test.js @@ -11,7 +11,6 @@ const epsilon = 0.5; // To avoid very small numbers const testXml = getModelPath().xml; describe('ov.InferRequest tests', () => { - let compiledModel = null; let tensorData = null; let tensor = null; @@ -25,17 +24,12 @@ describe('ov.InferRequest tests', () => { const model = core.readModelSync(testXml); compiledModel = core.compileModelSync(model, 'CPU'); - tensorData = Float32Array.from({ length: 3072 }, () => (Math.random() + epsilon)); - tensor = new ov.Tensor( - ov.element.f32, - [1, 3, 32, 32], - tensorData, - ); - resTensor = new ov.Tensor( - ov.element.f32, - [1, 10], - tensorData.slice(-10), + tensorData = Float32Array.from( + { length: 3072 }, + () => Math.random() + epsilon, ); + tensor = new ov.Tensor(ov.element.f32, [1, 3, 32, 32], tensorData); + resTensor = new ov.Tensor(ov.element.f32, [1, 10], tensorData.slice(-10)); tensorLike = [tensor, tensorData]; }); @@ -45,7 +39,7 @@ describe('ov.InferRequest tests', () => { inferRequest = compiledModel.createInferRequest(); }); - it('Test infer(inputData: {inputName: string]: Tensor[]/TypedArray[]}', () => { + it('infer(inputData: {inputName: string]: Tensor[]/TypedArray[]}', () => { tensorLike.forEach((tl) => { const result = inferRequest.infer({ data: tl }); assert.deepStrictEqual(Object.keys(result), ['fc_out']); @@ -62,72 +56,77 @@ describe('ov.InferRequest tests', () => { }); it('Test infer(TypedArray) throws', () => { - assert.throws( - () => inferRequest.infer(tensorData), - {message: /TypedArray cannot be passed directly into infer\(\) method./}); + assert.throws(() => inferRequest.infer(tensorData), { + message: /TypedArray cannot be passed directly into infer\(\) method./, + }); }); it('Test for invalid input data', () => { const buffer = new ArrayBuffer(tensorData.length); const inputMessagePairs = [ ['string', 'Cannot create a tensor from the passed Napi::Value.'], - [tensorData.slice(-10), 'Memory allocated using shape and element::type mismatch passed data\'s size'], - [new Float32Array(buffer, 4), 'TypedArray.byteOffset has to be equal to zero.'], + [ + tensorData.slice(-10), + /Memory allocated using shape and element::type mismatch/, + ], + [ + new Float32Array(buffer, 4), + 'TypedArray.byteOffset has to be equal to zero.', + ], [{}, /Invalid argument/], // Test for object that is not Tensor ]; - inputMessagePairs.forEach( ([tl, msg]) => { - + inputMessagePairs.forEach(([tl, msg]) => { assert.throws( () => inferRequest.infer([tl]), - { message: new RegExp(msg) }, 'infer([data]) throws'); + { message: new RegExp(msg) }, + 'infer([data]) throws', + ); assert.throws( - () => inferRequest.infer({data: tl}), - { message: new RegExp(msg) }, 'infer({ data: tl}) throws'); - + () => inferRequest.infer({ data: tl }), + { message: new RegExp(msg) }, + 'infer({ data: tl}) throws', + ); }); - }); - }); describe('inferAsync() method', () => { let inferRequest = null; - before( () => { + before(() => { inferRequest = compiledModel.createInferRequest(); }); it('Test inferAsync(inputData: { [inputName: string]: Tensor })', () => { - inferRequest.inferAsync({ data: tensor }).then(result => { + inferRequest.inferAsync({ data: tensor }).then((result) => { assert.ok(result['fc_out'] instanceof ov.Tensor); assert.deepStrictEqual(Object.keys(result), ['fc_out']); - assert.deepStrictEqual(result['fc_out'].data.length, 10);} - ); + assert.deepStrictEqual(result['fc_out'].data.length, 10); + }); }); it('Test inferAsync(inputData: Tensor[])', () => { - inferRequest.inferAsync([ tensor ]).then(result => { + inferRequest.inferAsync([tensor]).then((result) => { assert.ok(result['fc_out'] instanceof ov.Tensor); assert.deepStrictEqual(Object.keys(result), ['fc_out']); assert.deepStrictEqual(result['fc_out'].data.length, 10); }); }); - it('Test inferAsync([data]) throws: Cannot create a tensor from the passed Napi::Value.', () => { + it('Test inferAsync([data]) throws', () => { assert.throws( () => inferRequest.inferAsync(['string']).then(), - /Cannot create a tensor from the passed Napi::Value./ + /Cannot create a tensor from the passed Napi::Value./, ); }); - it('Test inferAsync({ data: "string"}) throws: Cannot create a tensor from the passed Napi::Value.', () => { + it('Test inferAsync({ data: "string"}) throws', () => { assert.throws( - () => inferRequest.inferAsync({data: 'string'}).then(), - /Cannot create a tensor from the passed Napi::Value./ + () => inferRequest.inferAsync({ data: 'string' }).then(), + /Cannot create a tensor from the passed Napi::Value./, ); }); - }); describe('setters', () => { @@ -136,128 +135,117 @@ describe('ov.InferRequest tests', () => { inferRequest = compiledModel.createInferRequest(); }); - it('Test setInputTensor(tensor)', () => { + it('setInputTensor(tensor)', () => { inferRequest.setInputTensor(tensor); const t1 = inferRequest.getInputTensor(); assert.deepStrictEqual(tensor.data[0], t1.data[0]); }); - it('Test setInputTensor(object) throws when passed object is not a Tensor.', () => { - assert.throws( - () => inferRequest.setInputTensor({}), - {message: /Argument #[0-9]+ must be a Tensor./} - ); + it('setInputTensor(object) throws if object is not a Tensor.', () => { + assert.throws(() => inferRequest.setInputTensor({}), { + message: /Argument #[0-9]+ must be a Tensor./, + }); }); - it('Test setInputTensor(idx, tensor)', () => { + it('setInputTensor(idx, tensor)', () => { inferRequest.setInputTensor(0, tensor); const t1 = inferRequest.getInputTensor(); assert.deepStrictEqual(tensor.data[0], t1.data[0]); }); - it('Test setInputTensor(idx, tensor) throws', () => { + it('setInputTensor(idx, tensor) throws', () => { const testIdx = 10; - assert.throws ( - () => inferRequest.setInputTensor(testIdx, tensor), - {message: /Input port for index [0-9]+ was not found!/} - ); + assert.throws(() => inferRequest.setInputTensor(testIdx, tensor), { + message: /Input port for index [0-9]+ was not found!/, + }); }); - it('Test setInputTensor(idx, object) throws when passed object is not a Tensor.', () => { - assert.throws( - () => inferRequest.setInputTensor(0, {}), - {message: /Argument #[0-9]+ must be a Tensor./} - ); + it('setInputTensor(idx, object) throws if object is not a Tensor.', () => { + assert.throws(() => inferRequest.setInputTensor(0, {}), { + message: /Argument #[0-9]+ must be a Tensor./, + }); }); - it('Test setInputTensor(tensor, tensor) throws', () => { - assert.throws( - () => inferRequest.setInputTensor(resTensor, tensor), - {message: / invalid argument./} - ); + it('setInputTensor(tensor, tensor) throws', () => { + assert.throws(() => inferRequest.setInputTensor(resTensor, tensor), { + message: / invalid argument./, + }); }); - it('Test setOutputTensor(tensor)', () => { + it('setOutputTensor(tensor)', () => { inferRequest.setOutputTensor(resTensor); const res2 = inferRequest.getOutputTensor(); assert.deepStrictEqual(resTensor.data[0], res2.data[0]); }); - it('Test setOutputTensor(object) throws when passed object is not a Tensor.', () => { - assert.throws( - () => inferRequest.setOutputTensor({}), - {message: /Argument #[0-9]+ must be a Tensor./} - ); + it('setOutputTensor(object) throws if object is not a Tensor.', () => { + assert.throws(() => inferRequest.setOutputTensor({}), { + message: /Argument #[0-9]+ must be a Tensor./, + }); }); - it('Test setOutputTensor(idx, tensor) throws', () => { + it('setOutputTensor(idx, tensor) throws', () => { const testIdx = 10; - assert.throws ( - () => inferRequest.setOutputTensor(testIdx, tensor), - {message: /Output port for index [0-9]+ was not found!/} - ); + assert.throws(() => inferRequest.setOutputTensor(testIdx, tensor), { + message: /Output port for index [0-9]+ was not found!/, + }); }); - it('Test setOutputTensor(idx, tensor)', () => { + it('setOutputTensor(idx, tensor)', () => { inferRequest.setOutputTensor(0, resTensor); const res2 = inferRequest.getOutputTensor(); assert.deepStrictEqual(resTensor.data[0], res2.data[0]); }); - it('Test setOutputTensor(idx, tensor) throws when passed object is not a Tensor.', () => { - assert.throws( - () => inferRequest.setOutputTensor(0, {}), - {message: /Argument #[0-9]+ must be a Tensor./} - ); + it('setOutputTensor(idx, object) throws if object is not a Tensor.', () => { + assert.throws(() => inferRequest.setOutputTensor(0, {}), { + message: /Argument #[0-9]+ must be a Tensor./, + }); }); - it('Test setOutputTensor() - pass two tensors', () => { - assert.throws( - () => inferRequest.setOutputTensor(resTensor, tensor), - {message: / invalid argument./}); + it('setOutputTensor() - pass two tensors', () => { + assert.throws(() => inferRequest.setOutputTensor(resTensor, tensor), { + message: / invalid argument./, + }); }); - it('Test setTensor(string, tensor)', () => { + it('setTensor(string, tensor)', () => { inferRequest.setTensor('fc_out', resTensor); const res2 = inferRequest.getTensor('fc_out'); assert.ok(res2 instanceof ov.Tensor); assert.deepStrictEqual(resTensor.data[0], res2.data[0]); }); - it('Test setTensor(string, object) - throws', () => { + it('setTensor(string, object) - throws', () => { const testName = 'testName'; - assert.throws( - () => inferRequest.setTensor(testName, tensor), - {message: /Port for tensor name testName was not found./}); + assert.throws(() => inferRequest.setTensor(testName, tensor), { + message: /Port for tensor name testName was not found./, + }); }); - it('Test setTensor(string, object) - throws', () => { - assert.throws( - () => inferRequest.setTensor('fc_out', {}), - {message: /Argument #[0-9]+ must be a Tensor./}); + it('setTensor(string, object) - throws', () => { + assert.throws(() => inferRequest.setTensor('fc_out', {}), { + message: /Argument #[0-9]+ must be a Tensor./, + }); }); - it('Test setTensor(string, tensor) - pass one arg', () => { - assert.throws( - () => inferRequest.setTensor('fc_out'), - {message: / invalid argument./} - ); + it('setTensor(string, tensor) - pass one arg', () => { + assert.throws(() => inferRequest.setTensor('fc_out'), { + message: / invalid argument./, + }); }); - it('Test setTensor(string, tensor) - pass args in wrong order', () => { - assert.throws( - () => inferRequest.setTensor(resTensor, 'fc_out'), - {message: / invalid argument./} - ); + it('setTensor(string, tensor) - pass args in wrong order', () => { + assert.throws(() => inferRequest.setTensor(resTensor, 'fc_out'), { + message: / invalid argument./, + }); }); - it('Test setTensor(string, tensor) - pass number as first arg', () => { - assert.throws( - () => inferRequest.setTensor(123, 'fc_out'), - {message: / invalid argument/} - ); + it('setTensor(string, tensor) - pass number as first arg', () => { + assert.throws(() => inferRequest.setTensor(123, 'fc_out'), { + message: / invalid argument/, + }); }); - }); describe('getters', () => { @@ -310,6 +298,5 @@ describe('ov.InferRequest tests', () => { const res1 = ir.infer([tensorData]); assert.deepStrictEqual(res1['fc_out'].data[0], res2['fc_out'].data[0]); }); - }); }); diff --git a/src/bindings/js/node/tests/unit/model.test.js b/src/bindings/js/node/tests/unit/model.test.js index e71226e756ea44..f66c119578f305 100644 --- a/src/bindings/js/node/tests/unit/model.test.js +++ b/src/bindings/js/node/tests/unit/model.test.js @@ -8,7 +8,6 @@ const { describe, it, before, beforeEach } = require('node:test'); const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); describe('ov.Model tests', () => { - let testXml = null; let core = null; let model = null; @@ -24,12 +23,12 @@ describe('ov.Model tests', () => { }); describe('Model.isDynamic()', () => { - it('should return a boolean value indicating if the model is dynamic', () => { + it('should return a boolean value type', () => { const result = model.isDynamic(); assert.strictEqual( typeof result, 'boolean', - 'isDynamic() should return a boolean value' + 'isDynamic() should return a boolean value', ); }); @@ -39,7 +38,7 @@ describe('ov.Model tests', () => { model.isDynamic('unexpected argument'); }, /^Error: isDynamic\(\) does not accept any arguments\.$/, - 'Expected isDynamic to throw an error when called with arguments' + 'Expected isDynamic to throw an error when called with arguments', ); }); @@ -48,20 +47,20 @@ describe('ov.Model tests', () => { assert.strictEqual( model.isDynamic(), expectedStatus, - 'Expected isDynamic to return false for a static model' + 'Expected isDynamic to return false for a static model', ); }); }); describe('Model.getFriendlyName()', () => { - it('returns the unique name of the model if no friendly name is set', () => { + it('returns model\'s unique name if no friendly name is set', () => { const expectedName = 'test_model'; assert.strictEqual(model.getFriendlyName(), expectedName); }); it('throws an error when called with arguments', () => { assert.throws( () => model.getFriendlyName('unexpected argument'), - /getFriendlyName\(\) does not take any arguments/ + /getFriendlyName\(\) does not take any arguments/, ); }); }); @@ -69,18 +68,18 @@ describe('ov.Model tests', () => { it('throws an error when called without a string argument', () => { assert.throws( () => model.setFriendlyName(), - /Expected a single string argument for the friendly name/ + /Expected a single string argument for the friendly name/, ); assert.throws( () => model.setFriendlyName(123), - /Expected a single string argument for the friendly name/ + /Expected a single string argument for the friendly name/, ); }); it('throws an error when called with multiple arguments', () => { assert.throws( () => model.setFriendlyName('Name1', 'Name2'), - /Expected a single string argument for the friendly name/ + /Expected a single string argument for the friendly name/, ); }); @@ -103,85 +102,94 @@ describe('ov.Model tests', () => { }); describe('Model.getOutputSize()', () => { - - it('should return a number indicating number of outputs for the model', () => { + it('getOutputSize() should return a number', () => { const result = model.getOutputSize(); - assert.strictEqual(typeof result, 'number', 'getOutputSize() should return a number'); + assert.strictEqual(typeof result, 'number'); }); it('should not accept any arguments', () => { assert.throws(() => { model.getOutputSize('unexpected argument'); - }, /^Error: getOutputSize\(\) does not accept any arguments\.$/, 'Expected getOutputSize to throw an error when called with arguments'); + }, /^Error: getOutputSize\(\) does not accept any arguments\.$/); }); it('should return 1 for the default model', () => { - assert.strictEqual(model.getOutputSize(), 1, 'Expected getOutputSize to return 1 for the default model'); + assert.strictEqual(model.getOutputSize(), 1); }); }); describe('Model.getOutputElementType()', () => { - it('should return a string for the element type ', () => { + it('should return a string', () => { const result = model.getOutputElementType(0); - assert.strictEqual(typeof result, 'string', - 'getOutputElementType() should return a string'); + assert.strictEqual(typeof result, 'string'); }); it('should accept a single integer argument', () => { - assert.throws(() => { - model.getOutputElementType(); - }, /'getOutputElementType' method called with incorrect parameters/, - 'Should throw when called without arguments'); + assert.throws( + () => { + model.getOutputElementType(); + }, + /'getOutputElementType' method called with incorrect parameters/, + 'Should throw when called without arguments', + ); - assert.throws(() => { - model.getOutputElementType('unexpected argument'); - }, /'getOutputElementType' method called with incorrect parameters/, - 'Should throw on non-number argument'); + assert.throws( + () => { + model.getOutputElementType('unexpected argument'); + }, + /'getOutputElementType' method called with incorrect parameters/, + 'Should throw on non-number argument', + ); - assert.throws(() => { - model.getOutputElementType(0, 1); - }, /'getOutputElementType' method called with incorrect parameters/, - 'Should throw on multiple arguments'); + assert.throws( + () => { + model.getOutputElementType(0, 1); + }, + /'getOutputElementType' method called with incorrect parameters/, + 'Should throw on multiple arguments', + ); - assert.throws(() => { - model.getOutputElementType(3.14); - }, /'getOutputElementType' method called with incorrect parameters/, - 'Should throw on non-integer number'); + assert.throws( + () => { + model.getOutputElementType(3.14); + }, + /'getOutputElementType' method called with incorrect parameters/, + 'Should throw on non-integer number', + ); }); it('should return a valid element type for the default model', () => { const elementType = model.getOutputElementType(0); - assert.ok(typeof elementType === 'string' && elementType.length > 0, - `Expected a non-empty string, got ${elementType}`); + assert.ok( + typeof elementType === 'string' && elementType.length > 0, + `Expected a non-empty string, got ${elementType}`, + ); }); it('should throw an error for out-of-range index', () => { const outputSize = model.getOutputSize(); - assert.throws( - () => { model.getOutputElementType(outputSize); }, - /^Error: /, - 'Should throw for out-of-range index' - ); + assert.throws(() => { + model.getOutputElementType(outputSize); + }, /^Error: /); }); }); describe('Model.clone()', () => { it('should return an object of type model', () => { const clonedModel = model.clone(); - assert.ok(clonedModel instanceof ov.Model, 'clone() should return a model'); + assert.ok(clonedModel instanceof ov.Model); }); it('should return a model that is a clone of the calling model', () => { const clonedModel = model.clone(); - assert.deepStrictEqual(clonedModel, model, 'Cloned Model should be exactly equal to the calling model'); + assert.deepStrictEqual(clonedModel, model); }); it('should not accept any arguments', () => { assert.throws( () => model.clone('Unexpected argument').then(), - /'clone' method called with incorrect parameters./ + /'clone' method called with incorrect parameters./, ); }); }); - }); diff --git a/src/bindings/js/node/tests/unit/pre_post_processor.test.js b/src/bindings/js/node/tests/unit/pre_post_processor.test.js index adb02dc082e797..04bef1fead6dac 100644 --- a/src/bindings/js/node/tests/unit/pre_post_processor.test.js +++ b/src/bindings/js/node/tests/unit/pre_post_processor.test.js @@ -8,7 +8,6 @@ const { describe, it, before, beforeEach } = require('node:test'); const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); describe('ov.preprocess.PrePostProcessor tests', () => { - let testXml = null; let core = null; let model = null; @@ -17,7 +16,6 @@ describe('ov.preprocess.PrePostProcessor tests', () => { await isModelAvailable(testModels.testModelFP32); testXml = getModelPath().xml; core = new ov.Core(); - }); beforeEach(() => { @@ -25,192 +23,278 @@ describe('ov.preprocess.PrePostProcessor tests', () => { }); describe('PrePostProcess', () => { - it('input() ', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input()); + new ov.preprocess.PrePostProcessor(model).input(), + ); }); it('input(size_t input_index)', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0)); + new ov.preprocess.PrePostProcessor(model).input(0), + ); }); it('input(const std::string& tensor_name)', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input('data')); + new ov.preprocess.PrePostProcessor(model).input('data'), + ); }); it('output() ', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output()); + new ov.preprocess.PrePostProcessor(model).output(), + ); }); it('output(size_t output_index)', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output(0)); + new ov.preprocess.PrePostProcessor(model).output(0), + ); }); it('output(const std::string& tensor_name)', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output('fc_out')); + new ov.preprocess.PrePostProcessor(model).output('fc_out'), + ); }); - }); describe('InputInfo', () => { it('tensor()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor()); + new ov.preprocess.PrePostProcessor(model).input(0).tensor(), + ); }); it('preprocess()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).preprocess()); + new ov.preprocess.PrePostProcessor(model).input(0).preprocess(), + ); }); it('model()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).model()); + new ov.preprocess.PrePostProcessor(model).input(0).model(), + ); }); it('tensor(param) throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor(0), - /Function does not take any parameters./); + assert.throws( + () => new ov.preprocess.PrePostProcessor(model).input(0).tensor(0), + /Function does not take any parameters./, + ); }); it('preprocess(param) throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).preprocess(0), - /Function does not take any parameters./); + assert.throws( + () => new ov.preprocess.PrePostProcessor(model).input(0).preprocess(0), + /Function does not take any parameters./, + ); }); it('model(param) throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).model(0), - /Function does not take any parameters./); + assert.throws( + () => new ov.preprocess.PrePostProcessor(model).input(0).model(0), + /Function does not take any parameters./, + ); }); it('tensor().setElementType()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setElementType(ov.element.u8)); + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setElementType(ov.element.u8), + ); }); it('tensor().setElementType() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setElementType(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setElementType(), + /Wrong number of parameters./, + ); }); it('tensor().setElementType() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setElementType('invalidType'), - /Cannot create ov::element::Type/); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setElementType('invalidType'), + /Cannot create ov::element::Type/, + ); }); it('tensor().SetShape()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setShape([1, 10])); + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setShape([1, 10]), + ); }); it('tensor().SetShape() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setShape(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setShape(), + /Wrong number of parameters./, + ); }); it('tensor().setLayout()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setLayout('NHWC')); + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setLayout('NHWC'), + ); }); it('tensor().setLayout() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).tensor().setLayout(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .tensor() + .setLayout(), + /Wrong number of parameters./, + ); }); it('preprocess().resize()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).preprocess().resize( - ov.preprocess.resizeAlgorithm.RESIZE_LINEAR, - )); + new ov.preprocess.PrePostProcessor(model) + .input(0) + .preprocess() + .resize(ov.preprocess.resizeAlgorithm.RESIZE_LINEAR), + ); }); it('preprocess().resize() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).preprocess().resize( - ov.preprocess.resizeAlgorithm.RESIZE_LINEAR, 'extraArg', - ), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .preprocess() + .resize(ov.preprocess.resizeAlgorithm.RESIZE_LINEAR, 'extraArg'), + /Wrong number of parameters./, + ); }); it('preprocess().resize() no arg throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).preprocess().resize(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .preprocess() + .resize(), + /Wrong number of parameters./, + ); }); it('model().setLayout()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).input(0).model().setLayout('NCHW')); + new ov.preprocess.PrePostProcessor(model) + .input(0) + .model() + .setLayout('NCHW'), + ); }); it('model().setLayout() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).model().setLayout('NCHW', 'extraArg'), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .input(0) + .model() + .setLayout('NCHW', 'extraArg'), + /Wrong number of parameters./, + ); }); it('model().setLayout() throws', () => { assert.throws(() => - new ov.preprocess.PrePostProcessor(model).input(0).model().setLayout('invalidLayout') + new ov.preprocess.PrePostProcessor(model) + .input(0) + .model() + .setLayout('invalidLayout'), ); }); - }); describe('OutputInfo', () => { it('tensor()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor()); + new ov.preprocess.PrePostProcessor(model).output(0).tensor(), + ); }); it('tensor(param) throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor(0), - /Function does not take any parameters./); + assert.throws( + () => new ov.preprocess.PrePostProcessor(model).output(0).tensor(0), + /Function does not take any parameters./, + ); }); it('tensor().setElementType()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor().setElementType(ov.element.u8)); + new ov.preprocess.PrePostProcessor(model) + .output(0) + .tensor() + .setElementType(ov.element.u8), + ); }); it('tensor().setElementType() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor().setElementType(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .output(0) + .tensor() + .setElementType(), + /Wrong number of parameters./, + ); }); it('tensor().setElementType() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor().setElementType('invalidType'), - /Cannot create ov::element::Type/); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .output(0) + .tensor() + .setElementType('invalidType'), + /Cannot create ov::element::Type/, + ); }); it('tensor().setLayout()', () => { assert.doesNotThrow(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor().setLayout('NHWC')); + new ov.preprocess.PrePostProcessor(model) + .output(0) + .tensor() + .setLayout('NHWC'), + ); }); it('tensor().setLayout() throws', () => { - assert.throws(() => - new ov.preprocess.PrePostProcessor(model).output(0).tensor().setLayout(), - /Wrong number of parameters./); + assert.throws( + () => + new ov.preprocess.PrePostProcessor(model) + .output(0) + .tensor() + .setLayout(), + /Wrong number of parameters./, + ); }); - }); - }); diff --git a/src/bindings/js/node/tests/unit/read_model.test.js b/src/bindings/js/node/tests/unit/read_model.test.js index ab0add15d59ce5..902ee2d963d161 100644 --- a/src/bindings/js/node/tests/unit/read_model.test.js +++ b/src/bindings/js/node/tests/unit/read_model.test.js @@ -11,11 +11,10 @@ const { testModels, isModelAvailable, getModelPath } = require('./utils.js'); const { xml: modelPath, bin: weightsPath } = getModelPath(); describe('Tests for reading model.', () => { - let modelFile = null; let modelStr = null; let weightsFile = null; - let weightsTensor= null; + let weightsTensor = null; let core = null; before(async () => { @@ -27,7 +26,11 @@ describe('Tests for reading model.', () => { beforeEach(() => { core = new ov.Core(); - weightsTensor = new ov.Tensor(ov.element.u8, [weightsFile.buffer.byteLength], new Uint8Array(weightsFile.buffer)); + weightsTensor = new ov.Tensor( + ov.element.u8, + [weightsFile.buffer.byteLength], + new Uint8Array(weightsFile.buffer), + ); }); describe('Core.readModeSync', () => { @@ -51,10 +54,7 @@ describe('Tests for reading model.', () => { }); it('readModelSync(modelString, weightsTensor) ', () => { - const model = core.readModelSync( - modelStr, - weightsTensor, - ); + const model = core.readModelSync(modelStr, weightsTensor); assert.ok(model instanceof ov.Model); assert.equal(model.inputs.length, 1); }); @@ -81,15 +81,12 @@ describe('Tests for reading model.', () => { }); it('readModel(modelString, weightsTensor) ', async () => { - const model = await core.readModel( - modelStr, - weightsTensor, - ); + const model = await core.readModel(modelStr, weightsTensor); assert.ok(model instanceof ov.Model); assert.equal(model.inputs.length, 1); }); - it('readModel(modelUint8ArrayBuffer, weightsUint8ArrayBuffer) ', async () => { + it('readModel(Uint8ArrayBuffer, Uint8ArrayBuffer) ', async () => { const model = await core.readModel( new Uint8Array(modelFile.buffer), new Uint8Array(weightsFile.buffer), @@ -97,5 +94,4 @@ describe('Tests for reading model.', () => { assert.equal(model.inputs.length, 1); }); }); - }); diff --git a/src/bindings/js/node/tests/unit/tensor.test.js b/src/bindings/js/node/tests/unit/tensor.test.js index 5f03030d98cc02..656bdf9b122e58 100644 --- a/src/bindings/js/node/tests/unit/tensor.test.js +++ b/src/bindings/js/node/tests/unit/tensor.test.js @@ -8,74 +8,112 @@ const { test, describe, it, before } = require('node:test'); const getRandomBigInt = require('random-bigint'); describe('ov.Tensor tests', () => { - let shape = null; let elemNum = null; let data = null; - let params =null; + let params = null; before(() => { shape = [1, 3, 224, 224]; elemNum = 1 * 3 * 224 * 224; - data = Float32Array.from({ length: elemNum }, () => Math.random() ); + data = Float32Array.from({ length: elemNum }, () => Math.random()); params = [ - [ov.element.i8, 'i8', Int8Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.u8, 'u8', Uint8Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.i16, 'i16', Int16Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.u16, 'u16', Uint16Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.i32, 'i32', Int32Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.u32, 'u32', Uint32Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.f32, 'f32', Float32Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.f64, 'f64', Float64Array.from({ length: elemNum }, () => Math.random() )], - [ov.element.i64, 'i64', BigInt64Array.from({ length: elemNum }, () => getRandomBigInt(10) )], - [ov.element.u64, 'u64', BigUint64Array.from({ length: elemNum }, () => getRandomBigInt(10) )], + [ + ov.element.i8, + 'i8', + Int8Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.u8, + 'u8', + Uint8Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.i16, + 'i16', + Int16Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.u16, + 'u16', + Uint16Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.i32, + 'i32', + Int32Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.u32, + 'u32', + Uint32Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.f32, + 'f32', + Float32Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.f64, + 'f64', + Float64Array.from({ length: elemNum }, () => Math.random()), + ], + [ + ov.element.i64, + 'i64', + BigInt64Array.from({ length: elemNum }, () => getRandomBigInt(10)), + ], + [ + ov.element.u64, + 'u64', + BigUint64Array.from({ length: elemNum }, () => getRandomBigInt(10)), + ], ]; }); test('Test for number of arguments in tensor', () => { - assert.throws( () => new ov.Tensor(ov.element.f32, shape, data, params), - {message: /Invalid number of arguments for Tensor constructor./}); + assert.throws(() => new ov.Tensor(ov.element.f32, shape, data, params), { + message: /Invalid number of arguments for Tensor constructor./, + }); }); - describe('Tensor without data parameters', () => { - it('Tensor should have array with zeros and numbers of elements according to the shape', () => { - const tensor = new ov.Tensor(ov.element.f32, shape); - assert.strictEqual(tensor.data.length, elemNum); - }); + test('Tensor without data parameters', () => { + const tensor = new ov.Tensor(ov.element.f32, shape); + assert.strictEqual(tensor.data.length, elemNum); }); describe('Tensor data', () => { it('set tensor data with element type', () => { - params.forEach(([type, stringType, data]) => { + params.forEach(([type, , data]) => { const tensor = new ov.Tensor(type, shape, data); assert.deepStrictEqual(tensor.data, data); }); }); it('create string tensor', () => { - const str_arr = ['text', 'more text', 'even more text']; - const tensor = new ov.Tensor(str_arr); - assert.deepStrictEqual(tensor.data, str_arr); + const strArray = ['text', 'more text', 'even more text']; + const tensor = new ov.Tensor(strArray); + assert.deepStrictEqual(tensor.data, strArray); }); it('create string tensor', () => { - const str_arr = ['text', 'more text', 'even more text']; - const tensor = new ov.Tensor(str_arr); - assert.deepStrictEqual(tensor.data, str_arr); + const strArray = ['text', 'more text', 'even more text']; + const tensor = new ov.Tensor(strArray); + assert.deepStrictEqual(tensor.data, strArray); }); it('string tensor - passed array does not contain string elements', () => { - const str_arr = ['text', true]; - assert.throws(() => { new ov.Tensor(str_arr);}, - /The array passed to create string tensor must contain only strings./ - ); + const strArray = ['text', true]; + assert.throws(() => { + new ov.Tensor(strArray); + }, /The array passed to create string tensor must contain only strings./); }); it('set string tensor data', () => { - const str_arr = ['H', 'e', 'l', 'l', 'o']; + const strArray = ['H', 'e', 'l', 'l', 'o']; const tensor = new ov.Tensor(ov.element.string, [1, 1, 1, 5]); - tensor.data = str_arr; - assert.deepStrictEqual(tensor.data, str_arr); + tensor.data = strArray; + assert.deepStrictEqual(tensor.data, strArray); }); it('test tensor getData()', () => { @@ -84,30 +122,27 @@ describe('ov.Tensor tests', () => { }); it('test tensor.data setter - different element type throws', () => { - const float64_data = Float64Array.from([1, 2, 3] ); + const float64Data = Float64Array.from([1, 2, 3]); const tensor = new ov.Tensor(ov.element.f32, [1, 3]); assert.throws(() => { - tensor.data = float64_data;}, - /Passed array must have the same size as the Tensor!/ - ); + tensor.data = float64Data; + }, /Passed array must have the same size as the Tensor!/); }); it('test tensor.data setter - different element length throws', () => { - const float64_data = Float64Array.from([1, 2, 3] ); + const float64Data = Float64Array.from([1, 2, 3]); const tensor = new ov.Tensor(ov.element.f64, [1, 2]); assert.throws(() => { - tensor.data = float64_data;}, - /Passed array must have the same size as the Tensor!/ - ); + tensor.data = float64Data; + }, /Passed array must have the same size as the Tensor!/); }); it('test tensor.data setter', () => { const testString = 'test'; const tensor = new ov.Tensor(ov.element.f64, [1, 2]); assert.throws(() => { - tensor.data = testString;}, - /Passed argument must be TypedArray, or Array if the tensor type is string./ - ); + tensor.data = testString; + }, /Passed argument must be TypedArray, or Array/); }); it('test tensor.data setter', () => { @@ -130,40 +165,45 @@ describe('ov.Tensor tests', () => { const buffer = new ArrayBuffer(size); const view = new Float32Array(buffer); view.set(data); - assert.throws( () => new ov.Tensor(ov.element.f32, shape, view), - {message: /Memory allocated using shape and element::type mismatch/}); + assert.throws(() => new ov.Tensor(ov.element.f32, shape, view), { + message: /Memory allocated using shape and element::type mismatch/, + }); }); it('third argument of a tensor cannot be an ArrayBuffer', () => { assert.throws( () => new ov.Tensor(ov.element.f32, shape, new ArrayBuffer(1234)), - {message: /Third argument of a tensor must be TypedArray./}); + { message: /Third argument of a tensor must be TypedArray./ }, + ); }); it('third argument of a tensor cannot be an array object', () => { - assert.throws( - () => new ov.Tensor(ov.element.f32, shape, [1, 2, 3, 4]), - {message: /Third argument of a tensor must be TypedArray./}); + assert.throws(() => new ov.Tensor(ov.element.f32, shape, [1, 2, 3, 4]), { + message: /Third argument of a tensor must be TypedArray./, + }); }); }); describe('Tensor shape', () => { - it('ov::Shape from an array object', () => { const tensor = new ov.Tensor(ov.element.f32, [1, 3, 224, 224], data); assert.deepStrictEqual(tensor.getShape(), [1, 3, 224, 224]); }); it('ov::Shape from an array object with floating point numbers', () => { - const tensor = - new ov.Tensor(ov.element.f32, [1, 3.0, 224.8, 224.4], data); + const tensor = new ov.Tensor( + ov.element.f32, + [1, 3.0, 224.8, 224.4], + data, + ); assert.deepStrictEqual(tensor.getShape(), [1, 3, 224, 224]); }); it('array argument to create ov::Shape can only contain numbers', () => { assert.throws( () => new ov.Tensor(ov.element.f32, ['1', 3, 224, 224], data), - {message: /Passed array must contain only numbers/}); + { message: /Passed array must contain only numbers/ }, + ); }); it('ov::Shape from TypedArray -> Int32Array', () => { @@ -176,7 +216,7 @@ describe('ov.Tensor tests', () => { const shape = Float32Array.from([1, 224, 224, 3]); assert.throws( () => new ov.Tensor(ov.element.f32, shape, data), - /Passed argument must be an Int32Array or a Uint32Array./ + /Passed argument must be an Int32Array or a Uint32Array./, ); }); @@ -184,30 +224,27 @@ describe('ov.Tensor tests', () => { const shape = Int32Array.from([1, 224, 224, 3]); assert.throws( () => new ov.Tensor(ov.element.f32, shape.buffer, data), - /Passed argument must be of type Array or TypedArray./ + /Passed argument must be of type Array or TypedArray./, ); }); it('getShape() method does not accept parameters', () => { const tensor = new ov.Tensor(ov.element.f32, [1, 3, 224, 224], data); - assert.throws( - () => tensor.getShape(1, 2, 3), - { message: 'No parameters are allowed for the getShape() method.'} - ); + assert.throws(() => tensor.getShape(1, 2, 3), { + message: 'No parameters are allowed for the getShape() method.', + }); }); }); describe('Tensor element type', () => { it('comparisons of ov.element to string', () => { params.forEach(([elemType, val]) => { - assert.strictEqual(elemType, val); }); }); it('comparisons of ov.element got from Tensor object', () => { params.forEach(([elemType, , data]) => { - const tensor = new ov.Tensor(elemType, shape, data); assert.strictEqual(tensor.getElementType(), elemType); }); @@ -215,7 +252,6 @@ describe('ov.Tensor tests', () => { }); describe('Tensor getSize', () => { - it('getSize returns the correct total number of elements', () => { const tensor = new ov.Tensor(ov.element.f32, shape, data); const expectedSize = shape.reduce((acc, dim) => acc * dim, 1); @@ -224,18 +260,16 @@ describe('ov.Tensor tests', () => { it('getSize should throw an error if arguments are provided', () => { const tensor = new ov.Tensor(ov.element.f32, shape, data); - assert.throws( - () => tensor.getSize(1), - { message: 'getSize() does not accept any arguments.' } - ); + assert.throws(() => tensor.getSize(1), { + message: 'getSize() does not accept any arguments.', + }); }); }); describe('Tensor getSize for various shapes', () => { - - it('calculates size correctly for a common image data shape [3, 224, 224]', () => { + it('calculates size for a common image data shape [3, 224, 224]', () => { const shape = [3, 224, 224]; - const expectedSize = 3*224*224; + const expectedSize = 3 * 224 * 224; const tensorData = new Float32Array(expectedSize).fill(0); const tensor = new ov.Tensor(ov.element.f32, shape, tensorData); assert.strictEqual(tensor.getSize(), expectedSize); diff --git a/src/bindings/js/node/tests/unit/utils.js b/src/bindings/js/node/tests/unit/utils.js index cf541a332b103f..c2089e30b4cdc8 100644 --- a/src/bindings/js/node/tests/unit/utils.js +++ b/src/bindings/js/node/tests/unit/utils.js @@ -4,7 +4,10 @@ const path = require('path'); const fs = require('node:fs/promises'); -const { downloadFile, checkIfPathExists } = require('../../scripts/download_runtime'); +const { + downloadFile, + checkIfPathExists, +} = require('../../scripts/download_runtime'); const modelDir = 'tests/unit/test_models/'; const testModels = { @@ -25,7 +28,7 @@ module.exports = { testModels, }; -function getModelPath(isFP16=false) { +function getModelPath(isFP16 = false) { const modelName = `test_model_fp${isFP16 ? 16 : 32}`; return { @@ -63,7 +66,8 @@ async function isModelAvailable(model) { const modelExists = await checkIfPathExists(modelPath); if (modelExists) return; - console.log('\n\nTestModel cannot be found.\nPlease run `npm run test_setup`.\n\n'); + console.log( + '\n\nTestModel cannot be found.\nPlease run `npm run test_setup`.\n\n', + ); process.exit(1); - } From fa918602c5e2f4403b7849a7d0a5afc2cfab16bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:05:58 +0400 Subject: [PATCH 19/49] Bump actions/setup-node from 4.0.3 to 4.0.4 (#26701) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.3 to 4.0.4.

    Release notes

    Sourced from actions/setup-node's releases.

    v4.0.4

    What's Changed

    Documentation changes:

    New Contributors

    Full Changelog: https://github.com/actions/setup-node/compare/v4...v4.0.4

    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-node&package-manager=github_actions&previous-version=4.0.3&new-version=4.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/job_openvino_js.yml | 2 +- .github/workflows/windows_vs2019_release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/job_openvino_js.yml b/.github/workflows/job_openvino_js.yml index 5fd603923752a6..3b1911c28cea4e 100644 --- a/.github/workflows/job_openvino_js.yml +++ b/.github/workflows/job_openvino_js.yml @@ -52,7 +52,7 @@ jobs: - name: Setup Node ${{ env.NODE_VERSION }} if: runner.os != 'Linux' # Node is already installed in the Docker image - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/windows_vs2019_release.yml b/.github/workflows/windows_vs2019_release.yml index b9d5d1687f773e..43c3879ba4ae8d 100644 --- a/.github/workflows/windows_vs2019_release.yml +++ b/.github/workflows/windows_vs2019_release.yml @@ -169,7 +169,7 @@ jobs: path: ${{ env.OPENVINO_JS_LIBS_DIR }} - name: Setup Node ${{ env.NODE_VERSION }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ env.NODE_VERSION }} From 9c4bd4b5292185500a7a5a276aef4321fab87d48 Mon Sep 17 00:00:00 2001 From: Eddy Kim Date: Fri, 20 Sep 2024 16:08:10 +0900 Subject: [PATCH 20/49] [GPU] update unfusing logic to rename additional deps of fc (#26563) ### Details: - `fully_connected` has additional dependencies (such as weights, bias, and so on) that cannot be found in the `input`. - This PR updates the unfusing logic to rename these additional input nodes for `fully_connected` layers. ### Tickets: - 152248 - 152867 --- .../intel_gpu/src/graph/primitive_inst.cpp | 16 +++++--- .../fusions/fully_connected_fusion_test.cpp | 40 +++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/plugins/intel_gpu/src/graph/primitive_inst.cpp b/src/plugins/intel_gpu/src/graph/primitive_inst.cpp index af99500afb6225..00c321e1f1db51 100644 --- a/src/plugins/intel_gpu/src/graph/primitive_inst.cpp +++ b/src/plugins/intel_gpu/src/graph/primitive_inst.cpp @@ -2291,18 +2291,25 @@ cldnn::network::ptr primitive_inst::get_unfused_subgraph() { std::vector outer_dep_ids; // Add input primitives: constants are moved as is // Any other primitive types are replaced with input_layout + auto prim_of_fused_node = std::const_pointer_cast(_impl_params->desc); + size_t dep_idx = 0; for (auto& dep : _node->get_dependencies()) { + cldnn::primitive_id dep_id = dep.first->id(); + if (dep.first->is_type()) { auto& data_node = dep.first->as(); - auto data_prim = *data_node.get_primitive(); + // need to rename primitive ids of dependent data of the current fused nodes with those in the original primitive + if (dep_idx >= prim_of_fused_node->input_size() && dep_idx < prim_of_fused_node->dependencies().size()) + dep_id = prim_of_fused_node->dependencies()[dep_idx].pid; // mem field of original primitive can be nullified during transfer_memory_to_device pass, thus use mem from program_node - data_prim.mem = data_node.get_attached_memory_ptr(); + data data_prim(dep_id, data_node.get_attached_memory_ptr()); t.add(data_prim); } else { - input_layout in_prim(dep.first->id(), dep.first->get_output_layout()); + input_layout in_prim(dep_id, dep.first->get_output_layout()); t.add(in_prim); } - outer_dep_ids.push_back(dep.first->id()); + outer_dep_ids.push_back(dep_id); + dep_idx += 1; } // Create the primitive itself @@ -2346,7 +2353,6 @@ cldnn::network::ptr primitive_inst::get_unfused_subgraph() { outer_dep_ids.push_back(prim->id); } // Samely, need to update dependency of the current fused nodes' input primitive ids with those in the current program - auto prim_of_fused_node = std::const_pointer_cast(_impl_params->desc); for (size_t i = 0; i < prim_of_fused_node->input.size(); ++i) { auto& in = prim_of_fused_node->input[i]; if (std::find_if(outer_dep_ids.begin(), outer_dep_ids.end(), diff --git a/src/plugins/intel_gpu/tests/unit/fusions/fully_connected_fusion_test.cpp b/src/plugins/intel_gpu/tests/unit/fusions/fully_connected_fusion_test.cpp index 5e1b381328301b..4a1133ab00507f 100644 --- a/src/plugins/intel_gpu/tests/unit/fusions/fully_connected_fusion_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/fusions/fully_connected_fusion_test.cpp @@ -197,6 +197,7 @@ class FullyConnectedFusingTestOneDNN : public BaseFusingTest{ + fully_connected_test_params{ CASE_FC_FP16_INT4_COMP_2, 2, 4 }, +})); + class fc_fp16_eltwise_sub : public FullyConnectedFusingTestOneDNN { public: void run_test(bool is_caching_test = false) { From 248028ea81b128dd461d01434ba8fe1013219334 Mon Sep 17 00:00:00 2001 From: Tomasz Jankowski Date: Fri, 20 Sep 2024 09:45:17 +0200 Subject: [PATCH 21/49] [Core] Resolve coverity issues (#26684) ### Tickets: - CVS-148594 --- src/core/src/pass/manager.cpp | 25 ++++++++++++------------- src/core/src/pass/serialize.cpp | 4 ++-- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/core/src/pass/manager.cpp b/src/core/src/pass/manager.cpp index 86c2e57e03599a..9168292f5284c0 100644 --- a/src/core/src/pass/manager.cpp +++ b/src/core/src/pass/manager.cpp @@ -21,8 +21,6 @@ #include "openvino/util/log.hpp" #include "perf_counters.hpp" -using namespace std; - #ifdef ENABLE_PROFILING_ITT namespace ov { @@ -196,8 +194,9 @@ class Profiler { bool is_pass_manager = name == m_manager_name; if (is_pass_manager) { - std::cout << std::setw(25) << left; + std::cout << std::setw(25) << std::left; std::cout << "PassManager started: " << m_manager_name << std::endl; + std::cout << std::right; } } } @@ -209,15 +208,15 @@ class Profiler { bool is_pass_manager = name == m_manager_name; if (m_profile_pass.is_bool()) { - std::cout << std::setw(25) << left; + std::cout << std::setw(25) << std::left; if (is_pass_manager) { std::cout << "PassManager finished: "; } else { std::cout << " "; } - std::cout << std::setw(60) << left << name; - std::cout << std::setw(5) << right << stopwatch.get_milliseconds() << "ms " << (applied ? "+" : "-") - << std::endl; + std::cout << std::setw(60) << std::left << name; + std::cout << std::setw(5) << std::right << stopwatch.get_milliseconds() << "ms " + << (applied ? "+" : "-") << std::endl; } else if (m_file.is_open()) { if (is_pass_manager) { m_file << "m;" << name << ";" << stopwatch.get_timer_value().count() << ";" << (applied ? "1" : "0") @@ -233,7 +232,7 @@ class Profiler { } } - void visualize(const shared_ptr& model, const std::string& pass_name) const { + void visualize(const std::shared_ptr& model, const std::string& pass_name) const { static size_t viz_index = 0; if (m_visualize.is_enabled()) { const auto& _visualize = [&]() { @@ -256,7 +255,7 @@ class Profiler { } } - void serialize(const shared_ptr& model, const std::string& pass_name) const { + void serialize(const std::shared_ptr& model, const std::string& pass_name) const { static size_t serialize_index = 0; if (m_serialize.is_enabled()) { const auto& _serialize = [&]() { @@ -330,7 +329,7 @@ void ov::pass::Manager::set_per_pass_validation(bool new_state) { m_per_pass_validation = new_state; } -bool ov::pass::Manager::run_passes(const shared_ptr& model) { +bool ov::pass::Manager::run_passes(const std::shared_ptr& model) { OV_ITT_SCOPED_TASK(ov::itt::domains::core, "pass::Manager::run_passes"); Profiler profiler(m_name); @@ -375,11 +374,11 @@ bool ov::pass::Manager::run_pass(const std::shared_ptr& pass, OV_ITT_SCOPE(FIRST_INFERENCE, ov::itt::domains::ov_pass, ov::pass::perf_counters()[pass->get_type_info()]); - if (auto matcher_pass = dynamic_pointer_cast(pass)) { + if (auto matcher_pass = std::dynamic_pointer_cast(pass)) { // GraphRewrite is a temporary container for MatcherPass to make execution on entire ov::Model return GraphRewrite(matcher_pass).run_on_model(model); - } else if (auto model_pass = dynamic_pointer_cast(pass)) { - if (dynamic_pointer_cast(model_pass) && !needs_validate) { + } else if (auto model_pass = std::dynamic_pointer_cast(pass)) { + if (std::dynamic_pointer_cast(model_pass) && !needs_validate) { return false; } return model_pass->run_on_model(model); diff --git a/src/core/src/pass/serialize.cpp b/src/core/src/pass/serialize.cpp index 55acbda9b41a66..409dcad066d7a6 100644 --- a/src/core/src/pass/serialize.cpp +++ b/src/core/src/pass/serialize.cpp @@ -1278,8 +1278,8 @@ bool pass::Serialize::run_on_model(const std::shared_ptr& model) { // hence we need to delete it here in case of failure xml_file.close(); bin_file.close(); - std::remove(m_xmlPath.c_str()); - std::remove(m_binPath.c_str()); + std::ignore = std::remove(m_xmlPath.c_str()); + std::ignore = std::remove(m_binPath.c_str()); throw; } } From 36b6e3c80f59f034a30a953d021131e3ec05fc7a Mon Sep 17 00:00:00 2001 From: Sebastian Golebiewski Date: Fri, 20 Sep 2024 10:22:28 +0200 Subject: [PATCH 22/49] [DOCS] Adding snippets for remote tensor creation (#26632) Adding code snippets for D3D and VA handles in Remote Tensor API of GPU Plugin. This PR addresses the following JIRA ticket: 120077 --------- Co-authored-by: Karol Blaszczak --- .../remote-tensor-api-gpu-plugin.rst | 104 +++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/gpu-device/remote-tensor-api-gpu-plugin.rst b/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/gpu-device/remote-tensor-api-gpu-plugin.rst index d58a2ea16b0b21..fd303d2754d6c8 100644 --- a/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/gpu-device/remote-tensor-api-gpu-plugin.rst +++ b/docs/articles_en/openvino-workflow/running-inference/inference-devices-and-modes/gpu-device/remote-tensor-api-gpu-plugin.rst @@ -350,7 +350,109 @@ For more details, see the code snippets below: The ``ov::intel_gpu::ocl::D3DContext`` and ``ov::intel_gpu::ocl::VAContext`` classes are derived from ``ov::intel_gpu::ocl::ClContext``. Therefore, they provide the functionality described above and extend it -to allow creation of ``ov::RemoteTensor`` objects from ``ID3D11Buffer``, ``ID3D11Texture2D`` pointers or the ``VASurfaceID`` handle respectively. +to enable creation of ``ov::RemoteTensor`` objects from ``ID3D11Buffer``, ``ID3D11Texture2D`` +pointers or the ``VASurfaceID`` handle, as shown in the examples below: + + +.. tab-set:: + + .. tab-item:: ID3D11Buffer + :sync: id3d11-buffer + + .. code-block:: cpp + + // ... + + // initialize the core and load the network + ov::Core core; + auto model = core.read_model("model.xml"); + auto compiled_model = core.compile_model(model, "GPU"); + auto infer_request = compiled_model.create_infer_request(); + + + // obtain the RemoteContext from the compiled model object and cast it to D3DContext + auto gpu_context = compiled_model.get_context().as(); + + auto input = model->get_parameters().at(0); + ID3D11Buffer* d3d_handle = get_d3d_buffer(); + auto tensor = gpu_context.create_tensor(input->get_element_type(), input->get_shape(), d3d_handle); + infer_request.set_tensor(input, tensor); + + .. tab-item:: ID3D11Texture2D + :sync: id3d11-texture + + .. code-block:: cpp + + using namespace ov::preprocess; + auto p = PrePostProcessor(model); + p.input().tensor().set_element_type(ov::element::u8) + .set_color_format(ov::preprocess::ColorFormat::NV12_TWO_PLANES, {"y", "uv"}) + .set_memory_type(ov::intel_gpu::memory_type::surface); + p.input().preprocess().convert_color(ov::preprocess::ColorFormat::BGR); + p.input().model().set_layout("NCHW"); + model = p.build(); + + CComPtr device_ptr = get_d3d_device_ptr() + // create the shared context object + auto shared_d3d_context = ov::intel_gpu::ocl::D3DContext(core, device_ptr); + // compile model within a shared context + auto compiled_model = core.compile_model(model, shared_d3d_context); + + auto param_input_y = model->get_parameters().at(0); + auto param_input_uv = model->get_parameters().at(1); + + D3D11_TEXTURE2D_DESC texture_description = get_texture_desc(); + CComPtr dx11_texture = get_texture(); + // ... + //wrap decoder output into RemoteBlobs and set it as inference input + auto nv12_blob = shared_d3d_context.create_tensor_nv12(texture_description.Heights, texture_description.Width, dx11_texture); + + auto infer_request = compiled_model.create_infer_request(); + infer_request.set_tensor(param_input_y->get_friendly_name(), nv12_blob.first); + infer_request.set_tensor(param_input_uv->get_friendly_name(), nv12_blob.second); + infer_request.start_async(); + infer_request.wait(); + + .. tab-item:: VASurfaceID + :sync: vasurfaceid + + .. code-block:: cpp + + using namespace ov::preprocess; + auto p = PrePostProcessor(model); + p.input().tensor().set_element_type(ov::element::u8) + .set_color_format(ov::preprocess::ColorFormat::NV12_TWO_PLANES, {"y", "uv"}) + .set_memory_type(ov::intel_gpu::memory_type::surface); + p.input().preprocess().convert_color(ov::preprocess::ColorFormat::BGR); + p.input().model().set_layout("NCHW"); + model = p.build(); + + CComPtr device_ptr = get_d3d_device_ptr() + // create the shared context object + auto shared_va_context = ov::intel_gpu::ocl::VAContext(core, device_ptr); + // compile model within a shared context + auto compiled_model = core.compile_model(model, shared_va_context); + + auto param_input_y = model->get_parameters().at(0); + auto param_input_uv = model->get_parameters().at(1); + + auto shape = param_input_y->get_shape(); + auto width = shape[1]; + auto height = shape[2]; + + VASurfaceID va_surface = decode_va_surface(); + // ... + //wrap decoder output into RemoteBlobs and set it as inference input + auto nv12_blob = shared_va_context.create_tensor_nv12(height, width, va_surface); + + auto infer_request = compiled_model.create_infer_request(); + infer_request.set_tensor(param_input_y->get_friendly_name(), nv12_blob.first); + infer_request.set_tensor(param_input_uv->get_friendly_name(), nv12_blob.second); + infer_request.start_async(); + infer_request.wait(); + + + Direct NV12 Video Surface Input ########################################################### From 22869259a79110ba9611d8ae28127a686470811d Mon Sep 17 00:00:00 2001 From: Andrzej Kopytko Date: Fri, 20 Sep 2024 11:01:10 +0200 Subject: [PATCH 23/49] [DOCS] Fixed problems with console (#26704) ### Details: - *item1* - *...* ### Tickets: - *ticket-id* --- docs/sphinx_setup/_static/js/custom.js | 14 ++++++++------ docs/sphinx_setup/_static/js/graphs.js | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/sphinx_setup/_static/js/custom.js b/docs/sphinx_setup/_static/js/custom.js index e67a09e84f7549..df8bc9131bf42e 100644 --- a/docs/sphinx_setup/_static/js/custom.js +++ b/docs/sphinx_setup/_static/js/custom.js @@ -125,13 +125,15 @@ function handleSidebar() { function initSidebar() { const sidebar = document.querySelector("#bd-sidebar"); - var size; - if(localStorage['resizeSidebarX'] == null){ - size = "350px"; - }else{ - size = localStorage['resizeSidebarX']; + if (sidebar) { + var size; + if (localStorage['resizeSidebarX'] == null) { + size = "350px"; + } else { + size = localStorage['resizeSidebarX']; + } + sidebar.style.flexBasis = size; } - sidebar.style.flexBasis = size; } // Determine where we'd go if clicking on a version selector option diff --git a/docs/sphinx_setup/_static/js/graphs.js b/docs/sphinx_setup/_static/js/graphs.js index 62224cedd3b3fb..f8146c1580c58e 100644 --- a/docs/sphinx_setup/_static/js/graphs.js +++ b/docs/sphinx_setup/_static/js/graphs.js @@ -637,7 +637,7 @@ $(document).ready(function () { } } } - } Throughput + } function getChartDataNew(labels, datasets) { return { From cf7c24cf0e3ef2658991af80ace629ef4638b667 Mon Sep 17 00:00:00 2001 From: Tatiana Savina Date: Fri, 20 Sep 2024 11:12:06 +0200 Subject: [PATCH 24/49] [Docs] Port release docs (#26689) ### Details: - *item1* - *...* ### Tickets: - *ticket-id* --------- Co-authored-by: Karol Blaszczak Co-authored-by: Alexander Suvorov --- .../about-openvino/key-features.rst | 70 +++++++++---------- .../about-openvino/release-notes-openvino.rst | 24 ++++++- .../get-started/install-openvino.rst | 2 +- ...ector-83076730.js => selector-4f9c3c09.js} | 32 ++++----- ...tor-9dbd5b1.html => selector-8d4cf1d.html} | 6 +- 5 files changed, 76 insertions(+), 58 deletions(-) rename docs/sphinx_setup/_static/selector-tool/assets/{selector-83076730.js => selector-4f9c3c09.js} (51%) rename docs/sphinx_setup/_static/selector-tool/{selector-9dbd5b1.html => selector-8d4cf1d.html} (77%) diff --git a/docs/articles_en/about-openvino/key-features.rst b/docs/articles_en/about-openvino/key-features.rst index 128d3947b3b402..6514bdc67a3302 100644 --- a/docs/articles_en/about-openvino/key-features.rst +++ b/docs/articles_en/about-openvino/key-features.rst @@ -5,65 +5,65 @@ Easy Integration ######################### | :doc:`Support for multiple frameworks <../openvino-workflow/model-preparation/convert-model-to-ir>` -| Use deep learning models from PyTorch, TensorFlow, TensorFlow Lite, PaddlePaddle, and ONNX - directly or convert them to the optimized OpenVINO IR format for improved performance. +| Use deep learning models from PyTorch, TensorFlow, TensorFlow Lite, PaddlePaddle, and ONNX + directly or convert them to the optimized OpenVINO IR format for improved performance. | :doc:`Close integration with PyTorch <../openvino-workflow/torch-compile>` -| For PyTorch-based applications, specify OpenVINO as a backend using - :doc:`torch.compile <../openvino-workflow/torch-compile>` to improve model inference. Apply - OpenVINO optimizations to your PyTorch models directly with a single line of code. +| For PyTorch-based applications, specify OpenVINO as a backend using + :doc:`torch.compile <../openvino-workflow/torch-compile>` to improve model inference. Apply + OpenVINO optimizations to your PyTorch models directly with a single line of code. | :doc:`GenAI Out Of The Box <../learn-openvino/llm_inference_guide/genai-guide>` -| With the genAI flavor of OpenVINO, you can run generative AI with just a couple lines of code. - Check out the GenAI guide for instructions on how to do it. +| With the genAI flavor of OpenVINO, you can run generative AI with just a couple lines of code. + Check out the GenAI guide for instructions on how to do it. | `Python / C++ / C / NodeJS APIs `__ -| OpenVINO offers the C++ API as a complete set of available methods. For less resource-critical - solutions, the Python API provides almost full coverage, while C and NodeJS ones are limited - to the methods most basic for their typical environments. The NodeJS API, is still in its - early and active development. +| OpenVINO offers the C++ API as a complete set of available methods. For less resource-critical + solutions, the Python API provides almost full coverage, while C and NodeJS ones are limited + to the methods most basic for their typical environments. The NodeJS API, is still in its + early and active development. | :doc:`Open source and easy to extend <../about-openvino/contributing>` -| If you need a particular feature or inference accelerator to be supported, you are free to file - a feature request or develop new components specific to your projects yourself. As open source, - OpenVINO may be used and modified freely. See the extensibility guide for more information on - how to adapt it to your needs. +| If you need a particular feature or inference accelerator to be supported, you are free to file + a feature request or develop new components specific to your projects yourself. As open source, + OpenVINO may be used and modified freely. See the extensibility guide for more information on + how to adapt it to your needs. Deployment ######################### | :doc:`Local or remote <../openvino-workflow>` -| Integrate the OpenVINO runtime directly with your application to run inference locally or use - `OpenVINO Model Server `__ to shift the inference - workload to a remote system, a separate server or a Kubernetes environment. For serving, - OpenVINO is also integrated with `vLLM `__ - and `Triton `__ services. +| Integrate the OpenVINO runtime directly with your application to run inference locally or use + `OpenVINO Model Server `__ to shift the inference + workload to a remote system, a separate server or a Kubernetes environment. For serving, + OpenVINO is also integrated with `vLLM `__ + and `Triton `__ services. | :doc:`Scalable and portable ` -| Write an application once, deploy it anywhere, always making the most out of your hardware setup. - The automatic device selection mode gives you the ultimate deployment flexibility on all major - operating systems. Check out system requirements. +| Write an application once, deploy it anywhere, always making the most out of your hardware setup. + The automatic device selection mode gives you the ultimate deployment flexibility on all major + operating systems. Check out system requirements. | **Light-weight** -| Designed with minimal external dependencies, OpenVINO does not bloat your application - and simplifies installation and dependency management. The custom compilation for your specific - model(s) may further reduce the final binary size. +| Designed with minimal external dependencies, OpenVINO does not bloat your application + and simplifies installation and dependency management. The custom compilation for your specific + model(s) may further reduce the final binary size. Performance ######################### | :doc:`Model Optimization <../openvino-workflow/model-optimization>` -| Optimize your deep learning models with NNCF, using various training-time and post-training - compression methods, such as pruning, sparsity, quantization, and weight compression. Make - your models take less space, run faster, and use less resources. +| Optimize your deep learning models with NNCF, using various training-time and post-training + compression methods, such as pruning, sparsity, quantization, and weight compression. Make + your models take less space, run faster, and use less resources. | :doc:`Top performance <../about-openvino/performance-benchmarks>` -| OpenVINO is optimized to work with Intel hardware, delivering confirmed high performance for - hundreds of models. Explore OpenVINO Performance Benchmarks to discover the optimal hardware - configurations and plan your AI deployment based on verified data. +| OpenVINO is optimized to work with Intel hardware, delivering confirmed high performance for + hundreds of models. Explore OpenVINO Performance Benchmarks to discover the optimal hardware + configurations and plan your AI deployment based on verified data. | :doc:`Enhanced App Start-Up Time <../openvino-workflow/running-inference/optimize-inference>` -| If you need your application to launch immediately, OpenVINO will reduce first-inference latency, - running inference on CPU until a more suited device is ready to take over. Once a model - is compiled for inference, it is also cached, improving the start-up time even more. +| If you need your application to launch immediately, OpenVINO will reduce first-inference latency, + running inference on CPU until a more suited device is ready to take over. Once a model + is compiled for inference, it is also cached, improving the start-up time even more. diff --git a/docs/articles_en/about-openvino/release-notes-openvino.rst b/docs/articles_en/about-openvino/release-notes-openvino.rst index c60371119de69b..0e3e84cfdc2aad 100644 --- a/docs/articles_en/about-openvino/release-notes-openvino.rst +++ b/docs/articles_en/about-openvino/release-notes-openvino.rst @@ -15,7 +15,7 @@ OpenVINO Release Notes -2024.4 - 18 September 2024 +2024.4 - 19 September 2024 ############################# :doc:`System Requirements <./release-notes-openvino/system-requirements>` | :doc:`Release policy <./release-notes-openvino/release-policy>` | :doc:`Installation Guides <./../get-started/install-openvino>` @@ -203,8 +203,7 @@ OpenVINO Model Server * Ability to compress the KV Cache to a lower precision, reducing memory consumption without a significant loss of accuracy. * ``stop`` sampling parameters, to define a sequence that stops text generation. - * ``logprobs`` sampling parameter, returning the probabilities to returned tokens, which can - be used to calculate the model perplexity metric, among other things. + * ``logprobs`` sampling parameter, returning the probabilities to returned tokens. * Generic metrics related to execution of the MediaPipe graph that can be used for autoscaling based on the current load and the level of concurrency. * `Demo of text generation horizontal scalability `__ @@ -212,6 +211,7 @@ OpenVINO Model Server * Automatic cancelling of text generation for disconnected clients. * Non-UTF-8 responses from the model can be now automatically changed to Unicode replacement characters, due to their configurable handling. + * Intel GPU with paged attention is now supported. * Support for Llama3.1 models. * The following has been improved: @@ -301,6 +301,24 @@ Known Issues | OpenVINO.GenAI archive doesn't have debug libraries for OpenVINO Tokenizers and OpenVINO.GenAI. +| **Component: ONNX for ARM** +| ID: n/a +| Description: +| For ARM binaries, the `1.16 ONNX library `__ + is not yet available, while the current latest has shown two significant vulnerabilities: + `CVE-2024-27318 `__ and + `CVE-2024-27319 `__. + The vulnerabilities are less severe in the context of OpenVINO and will be fixed as soon as + the most recent version of the library is available for ARM, expected at the 2024.5 release. + + + + + + + + + diff --git a/docs/articles_en/get-started/install-openvino.rst b/docs/articles_en/get-started/install-openvino.rst index b843bc3682f0a9..6dda915af93b69 100644 --- a/docs/articles_en/get-started/install-openvino.rst +++ b/docs/articles_en/get-started/install-openvino.rst @@ -21,7 +21,7 @@ Install OpenVINO™ 2024.4 - + OpenVINO 2024.4, described here, is not a Long-Term-Support version! All currently supported versions are: diff --git a/docs/sphinx_setup/_static/selector-tool/assets/selector-83076730.js b/docs/sphinx_setup/_static/selector-tool/assets/selector-4f9c3c09.js similarity index 51% rename from docs/sphinx_setup/_static/selector-tool/assets/selector-83076730.js rename to docs/sphinx_setup/_static/selector-tool/assets/selector-4f9c3c09.js index c6a30484013d7a..0836ad1aed41f3 100644 --- a/docs/sphinx_setup/_static/selector-tool/assets/selector-83076730.js +++ b/docs/sphinx_setup/_static/selector-tool/assets/selector-4f9c3c09.js @@ -1,4 +1,4 @@ -var Xf=Object.defineProperty;var Jf=(e,t,n)=>t in e?Xf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ze=(e,t,n)=>(Jf(e,typeof t!="symbol"?t+"":t,n),n);function uc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var cc={exports:{}},po={},dc={exports:{}},D={};/** +var Xf=Object.defineProperty;var Jf=(e,t,n)=>t in e?Xf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ve=(e,t,n)=>(Jf(e,typeof t!="symbol"?t+"":t,n),n);function uc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var cc={exports:{}},po={},dc={exports:{}},D={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ var Xf=Object.defineProperty;var Jf=(e,t,n)=>t in e?Xf(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var qr=Symbol.for("react.element"),Zf=Symbol.for("react.portal"),qf=Symbol.for("react.fragment"),ep=Symbol.for("react.strict_mode"),tp=Symbol.for("react.profiler"),np=Symbol.for("react.provider"),rp=Symbol.for("react.context"),ip=Symbol.for("react.forward_ref"),op=Symbol.for("react.suspense"),lp=Symbol.for("react.memo"),sp=Symbol.for("react.lazy"),Oa=Symbol.iterator;function ap(e){return e===null||typeof e!="object"?null:(e=Oa&&e[Oa]||e["@@iterator"],typeof e=="function"?e:null)}var fc={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},pc=Object.assign,hc={};function sr(e,t,n){this.props=e,this.context=t,this.refs=hc,this.updater=n||fc}sr.prototype.isReactComponent={};sr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};sr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function mc(){}mc.prototype=sr.prototype;function hs(e,t,n){this.props=e,this.context=t,this.refs=hc,this.updater=n||fc}var ms=hs.prototype=new mc;ms.constructor=hs;pc(ms,sr.prototype);ms.isPureReactComponent=!0;var _a=Array.isArray,gc=Object.prototype.hasOwnProperty,gs={current:null},vc={key:!0,ref:!0,__self:!0,__source:!0};function yc(e,t,n){var r,i={},o=null,l=null;if(t!=null)for(r in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(o=""+t.key),t)gc.call(t,r)&&!vc.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1t in e?Xf(e,t,{enumerable:!0,config * LICENSE file in the root directory of this source tree. */var hp=U,mp=Symbol.for("react.element"),gp=Symbol.for("react.fragment"),vp=Object.prototype.hasOwnProperty,yp=hp.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,wp={key:!0,ref:!0,__self:!0,__source:!0};function wc(e,t,n){var r,i={},o=null,l=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(l=t.ref);for(r in t)vp.call(t,r)&&!wp.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:mp,type:e,key:o,ref:l,props:i,_owner:yp.current}}po.Fragment=gp;po.jsx=wc;po.jsxs=wc;cc.exports=po;var ys=cc.exports;const Zn=ys.Fragment,v=ys.jsx,R=ys.jsxs;document.body.style.cssText+=` overflow: hidden; -`;const kp=()=>{const e={type:"size",height:document.body.offsetHeight};window.parent.postMessage(e)};new ResizeObserver(kp).observe(document.body);function pe(e){"@babel/helpers - typeof";return pe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pe(e)}function ft(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sp(e,t){if(pe(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(pe(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kc(e){var t=Sp(e,"string");return pe(t)==="symbol"?t:String(t)}function Pa(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:{};ft(this,e),this.init(t,n)}return pt(e,[{key:"init",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=r.prefix||"i18next:",this.logger=n||Np,this.options=r,this.debug=r.debug}},{key:"setDebug",value:function(n){this.debug=n}},{key:"log",value:function(){for(var n=arguments.length,r=new Array(n),i=0;i1?r-1:0),o=1;o-1?s.replace(/###/g,"."):s}function i(){return!e||typeof e=="string"}for(var o=typeof t!="string"?[].concat(t):t.split(".");o.length>1;){if(i())return{};var l=r(o.shift());!e[l]&&n&&(e[l]=new n),Object.prototype.hasOwnProperty.call(e,l)?e=e[l]:e={}}return i()?{}:{obj:e,k:r(o.shift())}}function Ta(e,t,n){var r=ws(e,t,Object),i=r.obj,o=r.k;i[o]=n}function Ep(e,t,n,r){var i=ws(e,t,Object),o=i.obj,l=i.k;o[l]=o[l]||[],r&&(o[l]=o[l].concat(n)),r||o[l].push(n)}function zi(e,t){var n=ws(e,t),r=n.obj,i=n.k;if(r)return r[i]}function Ra(e,t,n){var r=zi(e,n);return r!==void 0?r:zi(t,n)}function Nc(e,t,n){for(var r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):Nc(e[r],t[r],n):e[r]=t[r]);return e}function Tn(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var Cp={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function Ip(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,function(t){return Cp[t]}):e}var mo=typeof window<"u"&&window.navigator&&typeof window.navigator.userAgentData>"u"&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,Tp=[" ",",","?","!",";"];function Rp(e,t,n){t=t||"",n=n||"";var r=Tp.filter(function(s){return t.indexOf(s)<0&&n.indexOf(s)<0});if(r.length===0)return!0;var i=new RegExp("(".concat(r.map(function(s){return s==="?"?"\\?":s}).join("|"),")")),o=!i.test(e);if(!o){var l=e.indexOf(n);l>0&&!i.test(e.substring(0,l))&&(o=!0)}return o}function La(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function si(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Pc(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(e){if(e[t])return e[t];for(var r=t.split(n),i=e,o=0;oo+l;)l++,s=r.slice(o,o+l).join(n),a=i[s];if(a===void 0)return;if(a===null)return null;if(t.endsWith(s)){if(typeof a=="string")return a;if(s&&typeof a[s]=="string")return a[s]}var u=r.slice(o+l).join(n);return u?Pc(a,u,n):void 0}i=i[r[o]]}return i}}var Fp=function(e){ho(n,e);var t=Lp(n);function n(r){var i,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};return ft(this,n),i=t.call(this),mo&&en.call(Ht(i)),i.data=r||{},i.options=o,i.options.keySeparator===void 0&&(i.options.keySeparator="."),i.options.ignoreJSONStructure===void 0&&(i.options.ignoreJSONStructure=!0),i}return pt(n,[{key:"addNamespaces",value:function(i){this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}},{key:"removeNamespaces",value:function(i){var o=this.options.ns.indexOf(i);o>-1&&this.options.ns.splice(o,1)}},{key:"getResource",value:function(i,o,l){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},a=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,u=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure,p=[i,o];l&&typeof l!="string"&&(p=p.concat(l)),l&&typeof l=="string"&&(p=p.concat(a?l.split(a):l)),i.indexOf(".")>-1&&(p=i.split("."));var d=zi(this.data,p);return d||!u||typeof l!="string"?d:Pc(this.data&&this.data[i]&&this.data[i][o],l,a)}},{key:"addResource",value:function(i,o,l,s){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1},u=this.options.keySeparator;u===void 0&&(u=".");var p=[i,o];l&&(p=p.concat(u?l.split(u):l)),i.indexOf(".")>-1&&(p=i.split("."),s=o,o=p[1]),this.addNamespaces(o),Ta(this.data,p,s),a.silent||this.emit("added",i,o,l,s)}},{key:"addResources",value:function(i,o,l){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(var a in l)(typeof l[a]=="string"||Object.prototype.toString.apply(l[a])==="[object Array]")&&this.addResource(i,o,a,l[a],{silent:!0});s.silent||this.emit("added",i,o,l)}},{key:"addResourceBundle",value:function(i,o,l,s,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},p=[i,o];i.indexOf(".")>-1&&(p=i.split("."),s=l,l=o,o=p[1]),this.addNamespaces(o);var d=zi(this.data,p)||{};s?Nc(d,l,a):d=si(si({},d),l),Ta(this.data,p,d),u.silent||this.emit("added",i,o,l)}},{key:"removeResourceBundle",value:function(i,o){this.hasResourceBundle(i,o)&&delete this.data[i][o],this.removeNamespaces(o),this.emit("removed",i,o)}},{key:"hasResourceBundle",value:function(i,o){return this.getResource(i,o)!==void 0}},{key:"getResourceBundle",value:function(i,o){return o||(o=this.options.defaultNS),this.options.compatibilityAPI==="v1"?si(si({},{}),this.getResource(i,o)):this.getResource(i,o)}},{key:"getDataByLanguage",value:function(i){return this.data[i]}},{key:"hasLanguageSomeTranslations",value:function(i){var o=this.getDataByLanguage(i),l=o&&Object.keys(o)||[];return!!l.find(function(s){return o[s]&&Object.keys(o[s]).length>0})}},{key:"toJSON",value:function(){return this.data}}]),n}(en),xc={processors:{},addPostProcessor:function(t){this.processors[t.name]=t},handle:function(t,n,r,i,o){var l=this;return t.forEach(function(s){l.processors[s]&&(n=l.processors[s].process(n,r,i,o))}),n}};function ja(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function ke(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Fa={},Aa=function(e){ho(n,e);var t=Ap(n);function n(r){var i,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ft(this,n),i=t.call(this),mo&&en.call(Ht(i)),xp(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],r,Ht(i)),i.options=o,i.options.keySeparator===void 0&&(i.options.keySeparator="."),i.logger=wt.create("translator"),i}return pt(n,[{key:"changeLanguage",value:function(i){i&&(this.language=i)}},{key:"exists",value:function(i){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(i==null)return!1;var l=this.resolve(i,o);return l&&l.res!==void 0}},{key:"extractFromKey",value:function(i,o){var l=o.nsSeparator!==void 0?o.nsSeparator:this.options.nsSeparator;l===void 0&&(l=":");var s=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,a=o.ns||this.options.defaultNS||[],u=l&&i.indexOf(l)>-1,p=!this.options.userDefinedKeySeparator&&!o.keySeparator&&!this.options.userDefinedNsSeparator&&!o.nsSeparator&&!Rp(i,l,s);if(u&&!p){var d=i.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:i,namespaces:a};var h=i.split(l);(l!==s||l===s&&this.options.ns.indexOf(h[0])>-1)&&(a=h.shift()),i=h.join(s)}return typeof a=="string"&&(a=[a]),{key:i,namespaces:a}}},{key:"translate",value:function(i,o,l){var s=this;if(pe(o)!=="object"&&this.options.overloadTranslationOptionHandler&&(o=this.options.overloadTranslationOptionHandler(arguments)),o||(o={}),i==null)return"";Array.isArray(i)||(i=[String(i)]);var a=o.returnDetails!==void 0?o.returnDetails:this.options.returnDetails,u=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,p=this.extractFromKey(i[i.length-1],o),d=p.key,h=p.namespaces,g=h[h.length-1],y=o.lng||this.language,k=o.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(y&&y.toLowerCase()==="cimode"){if(k){var _=o.nsSeparator||this.options.nsSeparator;return a?{res:"".concat(g).concat(_).concat(d),usedKey:d,exactUsedKey:d,usedLng:y,usedNS:g}:"".concat(g).concat(_).concat(d)}return a?{res:d,usedKey:d,exactUsedKey:d,usedLng:y,usedNS:g}:d}var f=this.resolve(i,o),c=f&&f.res,m=f&&f.usedKey||d,w=f&&f.exactUsedKey||d,O=Object.prototype.toString.apply(c),S=["[object Number]","[object Function]","[object RegExp]"],P=o.joinArrays!==void 0?o.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject,j=typeof c!="string"&&typeof c!="boolean"&&typeof c!="number";if(x&&c&&j&&S.indexOf(O)<0&&!(typeof P=="string"&&O==="[object Array]")){if(!o.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var E=this.options.returnedObjectHandler?this.options.returnedObjectHandler(m,c,ke(ke({},o),{},{ns:h})):"key '".concat(d," (").concat(this.language,")' returned an object instead of string.");return a?(f.res=E,f):E}if(u){var W=O==="[object Array]",Ie=W?[]:{},_t=W?w:m;for(var nt in c)if(Object.prototype.hasOwnProperty.call(c,nt)){var En="".concat(_t).concat(u).concat(nt);Ie[nt]=this.translate(En,ke(ke({},o),{joinArrays:!1,ns:h})),Ie[nt]===En&&(Ie[nt]=c[nt])}c=Ie}}else if(x&&typeof P=="string"&&O==="[object Array]")c=c.join(P),c&&(c=this.extendTranslation(c,i,o,l));else{var ht=!1,rt=!1,C=o.count!==void 0&&typeof o.count!="string",L=n.hasDefaultValue(o),F=C?this.pluralResolver.getSuffix(y,o.count,o):"",V=o["defaultValue".concat(F)]||o.defaultValue;!this.isValidLookup(c)&&L&&(ht=!0,c=V),this.isValidLookup(c)||(rt=!0,c=d);var X=o.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,Nt=X&&rt?void 0:c,Ue=L&&V!==c&&this.options.updateMissing;if(rt||ht||Ue){if(this.logger.log(Ue?"updateKey":"missingKey",y,g,d,Ue?V:c),u){var Cn=this.resolve(d,ke(ke({},o),{},{keySeparator:!1}));Cn&&Cn.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var be=[],Pt=this.languageUtils.getFallbackCodes(this.options.fallbackLng,o.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Pt&&Pt[0])for(var Lo=0;Lo1&&arguments[1]!==void 0?arguments[1]:{},s,a,u,p,d;return typeof i=="string"&&(i=[i]),i.forEach(function(h){if(!o.isValidLookup(s)){var g=o.extractFromKey(h,l),y=g.key;a=y;var k=g.namespaces;o.options.fallbackNS&&(k=k.concat(o.options.fallbackNS));var _=l.count!==void 0&&typeof l.count!="string",f=_&&!l.ordinal&&l.count===0&&o.pluralResolver.shouldUseIntlApi(),c=l.context!==void 0&&(typeof l.context=="string"||typeof l.context=="number")&&l.context!=="",m=l.lngs?l.lngs:o.languageUtils.toResolveHierarchy(l.lng||o.language,l.fallbackLng);k.forEach(function(w){o.isValidLookup(s)||(d=w,!Fa["".concat(m[0],"-").concat(w)]&&o.utils&&o.utils.hasLoadedNamespace&&!o.utils.hasLoadedNamespace(d)&&(Fa["".concat(m[0],"-").concat(w)]=!0,o.logger.warn('key "'.concat(a,'" for languages "').concat(m.join(", "),`" won't get resolved as namespace "`).concat(d,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(function(O){if(!o.isValidLookup(s)){p=O;var S=[y];if(o.i18nFormat&&o.i18nFormat.addLookupKeys)o.i18nFormat.addLookupKeys(S,y,O,w,l);else{var P;_&&(P=o.pluralResolver.getSuffix(O,l.count,l));var x="".concat(o.options.pluralSeparator,"zero");if(_&&(S.push(y+P),f&&S.push(y+x)),c){var j="".concat(y).concat(o.options.contextSeparator).concat(l.context);S.push(j),_&&(S.push(j+P),f&&S.push(j+x))}}for(var E;E=S.pop();)o.isValidLookup(s)||(u=E,s=o.getResource(O,w,E,l))}}))})}}),{res:s,usedKey:a,exactUsedKey:u,usedLng:p,usedNS:d}}},{key:"isValidLookup",value:function(i){return i!==void 0&&!(!this.options.returnNull&&i===null)&&!(!this.options.returnEmptyString&&i==="")}},{key:"getResource",value:function(i,o,l){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(i,o,l,s):this.resourceStore.getResource(i,o,l,s)}}],[{key:"hasDefaultValue",value:function(i){var o="defaultValue";for(var l in i)if(Object.prototype.hasOwnProperty.call(i,l)&&o===l.substring(0,o.length)&&i[l]!==void 0)return!0;return!1}}]),n}(en);function Do(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Da=function(){function e(t){ft(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=wt.create("languageUtils")}return pt(e,[{key:"getScriptPartFromCode",value:function(n){if(!n||n.indexOf("-")<0)return null;var r=n.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}},{key:"getLanguagePartFromCode",value:function(n){if(!n||n.indexOf("-")<0)return n;var r=n.split("-");return this.formatLanguageCode(r[0])}},{key:"formatLanguageCode",value:function(n){if(typeof n=="string"&&n.indexOf("-")>-1){var r=["hans","hant","latn","cyrl","cans","mong","arab"],i=n.split("-");return this.options.lowerCaseLng?i=i.map(function(o){return o.toLowerCase()}):i.length===2?(i[0]=i[0].toLowerCase(),i[1]=i[1].toUpperCase(),r.indexOf(i[1].toLowerCase())>-1&&(i[1]=Do(i[1].toLowerCase()))):i.length===3&&(i[0]=i[0].toLowerCase(),i[1].length===2&&(i[1]=i[1].toUpperCase()),i[0]!=="sgn"&&i[2].length===2&&(i[2]=i[2].toUpperCase()),r.indexOf(i[1].toLowerCase())>-1&&(i[1]=Do(i[1].toLowerCase())),r.indexOf(i[2].toLowerCase())>-1&&(i[2]=Do(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?n.toLowerCase():n}},{key:"isSupportedCode",value:function(n){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(n=this.getLanguagePartFromCode(n)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(n)>-1}},{key:"getBestMatchFromCodes",value:function(n){var r=this;if(!n)return null;var i;return n.forEach(function(o){if(!i){var l=r.formatLanguageCode(o);(!r.options.supportedLngs||r.isSupportedCode(l))&&(i=l)}}),!i&&this.options.supportedLngs&&n.forEach(function(o){if(!i){var l=r.getLanguagePartFromCode(o);if(r.isSupportedCode(l))return i=l;i=r.options.supportedLngs.find(function(s){if(s.indexOf(l)===0)return s})}}),i||(i=this.getFallbackCodes(this.options.fallbackLng)[0]),i}},{key:"getFallbackCodes",value:function(n,r){if(!n)return[];if(typeof n=="function"&&(n=n(r)),typeof n=="string"&&(n=[n]),Object.prototype.toString.apply(n)==="[object Array]")return n;if(!r)return n.default||[];var i=n[r];return i||(i=n[this.getScriptPartFromCode(r)]),i||(i=n[this.formatLanguageCode(r)]),i||(i=n[this.getLanguagePartFromCode(r)]),i||(i=n.default),i||[]}},{key:"toResolveHierarchy",value:function(n,r){var i=this,o=this.getFallbackCodes(r||this.options.fallbackLng||[],n),l=[],s=function(u){u&&(i.isSupportedCode(u)?l.push(u):i.logger.warn("rejecting language code not found in supportedLngs: ".concat(u)))};return typeof n=="string"&&n.indexOf("-")>-1?(this.options.load!=="languageOnly"&&s(this.formatLanguageCode(n)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&s(this.getScriptPartFromCode(n)),this.options.load!=="currentOnly"&&s(this.getLanguagePartFromCode(n))):typeof n=="string"&&s(this.formatLanguageCode(n)),o.forEach(function(a){l.indexOf(a)<0&&s(i.formatLanguageCode(a))}),l}}]),e}(),Up=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],bp={1:function(t){return+(t>1)},2:function(t){return+(t!=1)},3:function(t){return 0},4:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},5:function(t){return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},6:function(t){return t==1?0:t>=2&&t<=4?1:2},7:function(t){return t==1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},8:function(t){return t==1?0:t==2?1:t!=8&&t!=11?2:3},9:function(t){return+(t>=2)},10:function(t){return t==1?0:t==2?1:t<7?2:t<11?3:4},11:function(t){return t==1||t==11?0:t==2||t==12?1:t>2&&t<20?2:3},12:function(t){return+(t%10!=1||t%100==11)},13:function(t){return+(t!==0)},14:function(t){return t==1?0:t==2?1:t==3?2:3},15:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2},16:function(t){return t%10==1&&t%100!=11?0:t!==0?1:2},17:function(t){return t==1||t%10==1&&t%100!=11?0:1},18:function(t){return t==0?0:t==1?1:2},19:function(t){return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3},20:function(t){return t==1?0:t==0||t%100>0&&t%100<20?1:2},21:function(t){return t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0},22:function(t){return t==1?0:t==2?1:(t<0||t>10)&&t%10==0?2:3}},zp=["v1","v2","v3"],Ua={zero:0,one:1,two:2,few:3,many:4,other:5};function Vp(){var e={};return Up.forEach(function(t){t.lngs.forEach(function(n){e[n]={numbers:t.nr,plurals:bp[t.fc]}})}),e}var Mp=function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};ft(this,e),this.languageUtils=t,this.options=n,this.logger=wt.create("pluralResolver"),(!this.options.compatibilityJSON||this.options.compatibilityJSON==="v4")&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Vp()}return pt(e,[{key:"addRule",value:function(n,r){this.rules[n]=r}},{key:"getRule",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(n,{type:r.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[n]||this.rules[this.languageUtils.getLanguagePartFromCode(n)]}},{key:"needsPlural",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=this.getRule(n,r);return this.shouldUseIntlApi()?i&&i.resolvedOptions().pluralCategories.length>1:i&&i.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(n,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(n,i).map(function(o){return"".concat(r).concat(o)})}},{key:"getSuffixes",value:function(n){var r=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=this.getRule(n,i);return o?this.shouldUseIntlApi()?o.resolvedOptions().pluralCategories.sort(function(l,s){return Ua[l]-Ua[s]}).map(function(l){return"".concat(r.options.prepend).concat(l)}):o.numbers.map(function(l){return r.getSuffix(n,l,i)}):[]}},{key:"getSuffix",value:function(n,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=this.getRule(n,i);return o?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(o.select(r)):this.getSuffixRetroCompatible(o,r):(this.logger.warn("no plural rule found for: ".concat(n)),"")}},{key:"getSuffixRetroCompatible",value:function(n,r){var i=this,o=n.noAbs?n.plurals(r):n.plurals(Math.abs(r)),l=n.numbers[o];this.options.simplifyPluralSuffix&&n.numbers.length===2&&n.numbers[0]===1&&(l===2?l="plural":l===1&&(l=""));var s=function(){return i.options.prepend&&l.toString()?i.options.prepend+l.toString():l.toString()};return this.options.compatibilityJSON==="v1"?l===1?"":typeof l=="number"?"_plural_".concat(l.toString()):s():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&n.numbers.length===2&&n.numbers[0]===1?s():this.options.prepend&&o.toString()?this.options.prepend+o.toString():o.toString()}},{key:"shouldUseIntlApi",value:function(){return!zp.includes(this.options.compatibilityJSON)}}]),e}();function ba(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function it(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{};ft(this,e),this.logger=wt.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(n){return n},this.init(t)}return pt(e,[{key:"init",value:function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};n.interpolation||(n.interpolation={escapeValue:!0});var r=n.interpolation;this.escape=r.escape!==void 0?r.escape:Ip,this.escapeValue=r.escapeValue!==void 0?r.escapeValue:!0,this.useRawValueToEscape=r.useRawValueToEscape!==void 0?r.useRawValueToEscape:!1,this.prefix=r.prefix?Tn(r.prefix):r.prefixEscaped||"{{",this.suffix=r.suffix?Tn(r.suffix):r.suffixEscaped||"}}",this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||",",this.unescapePrefix=r.unescapeSuffix?"":r.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":r.unescapeSuffix||"",this.nestingPrefix=r.nestingPrefix?Tn(r.nestingPrefix):r.nestingPrefixEscaped||Tn("$t("),this.nestingSuffix=r.nestingSuffix?Tn(r.nestingSuffix):r.nestingSuffixEscaped||Tn(")"),this.nestingOptionsSeparator=r.nestingOptionsSeparator?r.nestingOptionsSeparator:r.nestingOptionsSeparator||",",this.maxReplaces=r.maxReplaces?r.maxReplaces:1e3,this.alwaysFormat=r.alwaysFormat!==void 0?r.alwaysFormat:!1,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var n="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(n,"g");var r="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(r,"g");var i="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(i,"g")}},{key:"interpolate",value:function(n,r,i,o){var l=this,s,a,u,p=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function d(_){return _.replace(/\$/g,"$$$$")}var h=function(f){if(f.indexOf(l.formatSeparator)<0){var c=Ra(r,p,f);return l.alwaysFormat?l.format(c,void 0,i,it(it(it({},o),r),{},{interpolationkey:f})):c}var m=f.split(l.formatSeparator),w=m.shift().trim(),O=m.join(l.formatSeparator).trim();return l.format(Ra(r,p,w),O,i,it(it(it({},o),r),{},{interpolationkey:w}))};this.resetRegExp();var g=o&&o.missingInterpolationHandler||this.options.missingInterpolationHandler,y=o&&o.interpolation&&o.interpolation.skipOnVariables!==void 0?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables,k=[{regex:this.regexpUnescape,safeValue:function(f){return d(f)}},{regex:this.regexp,safeValue:function(f){return l.escapeValue?d(l.escape(f)):d(f)}}];return k.forEach(function(_){for(u=0;s=_.regex.exec(n);){var f=s[1].trim();if(a=h(f),a===void 0)if(typeof g=="function"){var c=g(n,s,o);a=typeof c=="string"?c:""}else if(o&&Object.prototype.hasOwnProperty.call(o,f))a="";else if(y){a=s[0];continue}else l.logger.warn("missed to pass in variable ".concat(f," for interpolating ").concat(n)),a="";else typeof a!="string"&&!l.useRawValueToEscape&&(a=Ia(a));var m=_.safeValue(a);if(n=n.replace(s[0],m),y?(_.regex.lastIndex+=a.length,_.regex.lastIndex-=s[0].length):_.regex.lastIndex=0,u++,u>=l.maxReplaces)break}}),n}},{key:"nest",value:function(n,r){var i=this,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l,s,a;function u(g,y){var k=this.nestingOptionsSeparator;if(g.indexOf(k)<0)return g;var _=g.split(new RegExp("".concat(k,"[ ]*{"))),f="{".concat(_[1]);g=_[0],f=this.interpolate(f,a);var c=f.match(/'/g),m=f.match(/"/g);(c&&c.length%2===0&&!m||m.length%2!==0)&&(f=f.replace(/'/g,'"'));try{a=JSON.parse(f),y&&(a=it(it({},y),a))}catch(w){return this.logger.warn("failed parsing options string in nesting for key ".concat(g),w),"".concat(g).concat(k).concat(f)}return delete a.defaultValue,g}for(;l=this.nestingRegexp.exec(n);){var p=[];a=it({},o),a=a.replace&&typeof a.replace!="string"?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;var d=!1;if(l[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(l[1])){var h=l[1].split(this.formatSeparator).map(function(g){return g.trim()});l[1]=h.shift(),p=h,d=!0}if(s=r(u.call(this,l[1].trim(),a),a),s&&l[0]===n&&typeof s!="string")return s;typeof s!="string"&&(s=Ia(s)),s||(this.logger.warn("missed to resolve ".concat(l[1]," for nesting ").concat(n)),s=""),d&&(s=p.reduce(function(g,y){return i.format(g,y,o.lng,it(it({},o),{},{interpolationkey:l[1].trim()}))},s.trim())),n=n.replace(l[0],s),this.regexp.lastIndex=0}return n}}]),e}();function za(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function xt(e){for(var t=1;t-1){var r=e.split("(");t=r[0].toLowerCase().trim();var i=r[1].substring(0,r[1].length-1);if(t==="currency"&&i.indexOf(":")<0)n.currency||(n.currency=i.trim());else if(t==="relativetime"&&i.indexOf(":")<0)n.range||(n.range=i.trim());else{var o=i.split(";");o.forEach(function(l){if(l){var s=l.split(":"),a=_p(s),u=a[0],p=a.slice(1),d=p.join(":").trim().replace(/^'+|'+$/g,"");n[u.trim()]||(n[u.trim()]=d),d==="false"&&(n[u.trim()]=!1),d==="true"&&(n[u.trim()]=!0),isNaN(d)||(n[u.trim()]=parseInt(d,10))}})}}return{formatName:t,formatOptions:n}}function Rn(e){var t={};return function(r,i,o){var l=i+JSON.stringify(o),s=t[l];return s||(s=e(i,o),t[l]=s),s(r)}}var Kp=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ft(this,e),this.logger=wt.create("formatter"),this.options=t,this.formats={number:Rn(function(n,r){var i=new Intl.NumberFormat(n,xt({},r));return function(o){return i.format(o)}}),currency:Rn(function(n,r){var i=new Intl.NumberFormat(n,xt(xt({},r),{},{style:"currency"}));return function(o){return i.format(o)}}),datetime:Rn(function(n,r){var i=new Intl.DateTimeFormat(n,xt({},r));return function(o){return i.format(o)}}),relativetime:Rn(function(n,r){var i=new Intl.RelativeTimeFormat(n,xt({},r));return function(o){return i.format(o,r.range||"day")}}),list:Rn(function(n,r){var i=new Intl.ListFormat(n,xt({},r));return function(o){return i.format(o)}})},this.init(t)}return pt(e,[{key:"init",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}},i=r.interpolation;this.formatSeparator=i.formatSeparator?i.formatSeparator:i.formatSeparator||","}},{key:"add",value:function(n,r){this.formats[n.toLowerCase().trim()]=r}},{key:"addCached",value:function(n,r){this.formats[n.toLowerCase().trim()]=Rn(r)}},{key:"format",value:function(n,r,i){var o=this,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},s=r.split(this.formatSeparator),a=s.reduce(function(u,p){var d=Bp(p),h=d.formatName,g=d.formatOptions;if(o.formats[h]){var y=u;try{var k=l&&l.formatParams&&l.formatParams[l.interpolationkey]||{},_=k.locale||k.lng||l.locale||l.lng||i;y=o.formats[h](u,_,xt(xt(xt({},g),l),k))}catch(f){o.logger.warn(f)}return y}else o.logger.warn("there was no format function for ".concat(h));return u},n);return a}}]),e}();function Va(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Ma(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Gp(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}var Yp=function(e){ho(n,e);var t=Hp(n);function n(r,i,o){var l,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return ft(this,n),l=t.call(this),mo&&en.call(Ht(l)),l.backend=r,l.store=i,l.services=o,l.languageUtils=o.languageUtils,l.options=s,l.logger=wt.create("backendConnector"),l.waitingReads=[],l.maxParallelReads=s.maxParallelReads||10,l.readingCalls=0,l.maxRetries=s.maxRetries>=0?s.maxRetries:5,l.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,l.state={},l.queue=[],l.backend&&l.backend.init&&l.backend.init(o,s.backend,s),l}return pt(n,[{key:"queueLoad",value:function(i,o,l,s){var a=this,u={},p={},d={},h={};return i.forEach(function(g){var y=!0;o.forEach(function(k){var _="".concat(g,"|").concat(k);!l.reload&&a.store.hasResourceBundle(g,k)?a.state[_]=2:a.state[_]<0||(a.state[_]===1?p[_]===void 0&&(p[_]=!0):(a.state[_]=1,y=!1,p[_]===void 0&&(p[_]=!0),u[_]===void 0&&(u[_]=!0),h[k]===void 0&&(h[k]=!0)))}),y||(d[g]=!0)}),(Object.keys(u).length||Object.keys(p).length)&&this.queue.push({pending:p,pendingCount:Object.keys(p).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(u),pending:Object.keys(p),toLoadLanguages:Object.keys(d),toLoadNamespaces:Object.keys(h)}}},{key:"loaded",value:function(i,o,l){var s=i.split("|"),a=s[0],u=s[1];o&&this.emit("failedLoading",a,u,o),l&&this.store.addResourceBundle(a,u,l),this.state[i]=o?-1:2;var p={};this.queue.forEach(function(d){Ep(d.loaded,[a],u),Gp(d,i),o&&d.errors.push(o),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(function(h){p[h]||(p[h]={});var g=d.loaded[h];g.length&&g.forEach(function(y){p[h][y]===void 0&&(p[h][y]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",p),this.queue=this.queue.filter(function(d){return!d.done})}},{key:"read",value:function(i,o,l){var s=this,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,u=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,p=arguments.length>5?arguments[5]:void 0;if(!i.length)return p(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:i,ns:o,fcName:l,tried:a,wait:u,callback:p});return}this.readingCalls++;var d=function(k,_){if(s.readingCalls--,s.waitingReads.length>0){var f=s.waitingReads.shift();s.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(k&&_&&a2&&arguments[2]!==void 0?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();typeof i=="string"&&(i=this.languageUtils.toResolveHierarchy(i)),typeof o=="string"&&(o=[o]);var u=this.queueLoad(i,o,s,a);if(!u.toLoad.length)return u.pending.length||a(),null;u.toLoad.forEach(function(p){l.loadOne(p)})}},{key:"load",value:function(i,o,l){this.prepareLoading(i,o,{},l)}},{key:"reload",value:function(i,o,l){this.prepareLoading(i,o,{reload:!0},l)}},{key:"loadOne",value:function(i){var o=this,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",s=i.split("|"),a=s[0],u=s[1];this.read(a,u,"read",void 0,void 0,function(p,d){p&&o.logger.warn("".concat(l,"loading namespace ").concat(u," for language ").concat(a," failed"),p),!p&&d&&o.logger.log("".concat(l,"loaded namespace ").concat(u," for language ").concat(a),d),o.loaded(i,p,d)})}},{key:"saveMissing",value:function(i,o,l,s,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},p=arguments.length>6&&arguments[6]!==void 0?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(o)){this.logger.warn('did not save key "'.concat(l,'" as the namespace "').concat(o,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(l==null||l==="")){if(this.backend&&this.backend.create){var d=Ma(Ma({},u),{},{isUpdate:a}),h=this.backend.create.bind(this.backend);if(h.length<6)try{var g;h.length===5?g=h(i,o,l,s,d):g=h(i,o,l,s),g&&typeof g.then=="function"?g.then(function(y){return p(null,y)}).catch(p):p(null,g)}catch(y){p(y)}else h(i,o,l,s,p,d)}!i||!i[0]||this.store.addResource(i[0],o,l,s)}}}]),n}(en);function $a(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){var n={};if(pe(t[1])==="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),pe(t[2])==="object"||pe(t[3])==="object"){var r=t[3]||t[2];Object.keys(r).forEach(function(i){n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:function(t,n,r,i){return t},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function Ba(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Ka(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function mt(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ai(){}function Jp(e){var t=Object.getOwnPropertyNames(Object.getPrototypeOf(e));t.forEach(function(n){typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}var Vi=function(e){ho(n,e);var t=Qp(n);function n(){var r,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;if(ft(this,n),r=t.call(this),mo&&en.call(Ht(r)),r.options=Ba(i),r.services={},r.logger=wt,r.modules={external:[]},Jp(Ht(r)),o&&!r.isInitialized&&!i.isClone){if(!r.options.initImmediate)return r.init(i,o),ei(r,Ht(r));setTimeout(function(){r.init(i,o)},0)}return r}return pt(n,[{key:"init",value:function(){var i=this,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=arguments.length>1?arguments[1]:void 0;typeof o=="function"&&(l=o,o={}),!o.defaultNS&&o.defaultNS!==!1&&o.ns&&(typeof o.ns=="string"?o.defaultNS=o.ns:o.ns.indexOf("translation")<0&&(o.defaultNS=o.ns[0]));var s=$a();this.options=mt(mt(mt({},s),this.options),Ba(o)),this.options.compatibilityAPI!=="v1"&&(this.options.interpolation=mt(mt({},s.interpolation),this.options.interpolation)),o.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=o.keySeparator),o.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=o.nsSeparator);function a(f){return f?typeof f=="function"?new f:f:null}if(!this.options.isClone){this.modules.logger?wt.init(a(this.modules.logger),this.options):wt.init(null,this.options);var u;this.modules.formatter?u=this.modules.formatter:typeof Intl<"u"&&(u=Kp);var p=new Da(this.options);this.store=new Fp(this.options.resources,this.options);var d=this.services;d.logger=wt,d.resourceStore=this.store,d.languageUtils=p,d.pluralResolver=new Mp(p,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(d.formatter=a(u),d.formatter.init(d,this.options),this.options.interpolation.format=d.formatter.format.bind(d.formatter)),d.interpolator=new $p(this.options),d.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},d.backendConnector=new Yp(a(this.modules.backend),d.resourceStore,d,this.options),d.backendConnector.on("*",function(f){for(var c=arguments.length,m=new Array(c>1?c-1:0),w=1;w1?c-1:0),w=1;w0&&h[0]!=="dev"&&(this.options.lng=h[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined");var g=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];g.forEach(function(f){i[f]=function(){var c;return(c=i.store)[f].apply(c,arguments)}});var y=["addResource","addResources","addResourceBundle","removeResourceBundle"];y.forEach(function(f){i[f]=function(){var c;return(c=i.store)[f].apply(c,arguments),i}});var k=fr(),_=function(){var c=function(w,O){i.isInitialized&&!i.initializedStoreOnce&&i.logger.warn("init: i18next is already initialized. You should call init just once!"),i.isInitialized=!0,i.options.isClone||i.logger.log("initialized",i.options),i.emit("initialized",i.options),k.resolve(O),l(w,O)};if(i.languages&&i.options.compatibilityAPI!=="v1"&&!i.isInitialized)return c(null,i.t.bind(i));i.changeLanguage(i.options.lng,c)};return this.options.resources||!this.options.initImmediate?_():setTimeout(_,0),k}},{key:"loadResources",value:function(i){var o=this,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ai,s=l,a=typeof i=="string"?i:this.language;if(typeof i=="function"&&(s=i),!this.options.resources||this.options.partialBundledLanguages){if(a&&a.toLowerCase()==="cimode")return s();var u=[],p=function(g){if(g){var y=o.services.languageUtils.toResolveHierarchy(g);y.forEach(function(k){u.indexOf(k)<0&&u.push(k)})}};if(a)p(a);else{var d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.forEach(function(h){return p(h)})}this.options.preload&&this.options.preload.forEach(function(h){return p(h)}),this.services.backendConnector.load(u,this.options.ns,function(h){!h&&!o.resolvedLanguage&&o.language&&o.setResolvedLanguage(o.language),s(h)})}else s(null)}},{key:"reloadResources",value:function(i,o,l){var s=fr();return i||(i=this.languages),o||(o=this.options.ns),l||(l=ai),this.services.backendConnector.reload(i,o,function(a){s.resolve(),l(a)}),s}},{key:"use",value:function(i){if(!i)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!i.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return i.type==="backend"&&(this.modules.backend=i),(i.type==="logger"||i.log&&i.warn&&i.error)&&(this.modules.logger=i),i.type==="languageDetector"&&(this.modules.languageDetector=i),i.type==="i18nFormat"&&(this.modules.i18nFormat=i),i.type==="postProcessor"&&xc.addPostProcessor(i),i.type==="formatter"&&(this.modules.formatter=i),i.type==="3rdParty"&&this.modules.external.push(i),this}},{key:"setResolvedLanguage",value:function(i){if(!(!i||!this.languages)&&!(["cimode","dev"].indexOf(i)>-1))for(var o=0;o-1)&&this.store.hasLanguageSomeTranslations(l)){this.resolvedLanguage=l;break}}}},{key:"changeLanguage",value:function(i,o){var l=this;this.isLanguageChangingTo=i;var s=fr();this.emit("languageChanging",i);var a=function(h){l.language=h,l.languages=l.services.languageUtils.toResolveHierarchy(h),l.resolvedLanguage=void 0,l.setResolvedLanguage(h)},u=function(h,g){g?(a(g),l.translator.changeLanguage(g),l.isLanguageChangingTo=void 0,l.emit("languageChanged",g),l.logger.log("languageChanged",g)):l.isLanguageChangingTo=void 0,s.resolve(function(){return l.t.apply(l,arguments)}),o&&o(h,function(){return l.t.apply(l,arguments)})},p=function(h){!i&&!h&&l.services.languageDetector&&(h=[]);var g=typeof h=="string"?h:l.services.languageUtils.getBestMatchFromCodes(h);g&&(l.language||a(g),l.translator.language||l.translator.changeLanguage(g),l.services.languageDetector&&l.services.languageDetector.cacheUserLanguage&&l.services.languageDetector.cacheUserLanguage(g)),l.loadResources(g,function(y){u(y,g)})};return!i&&this.services.languageDetector&&!this.services.languageDetector.async?p(this.services.languageDetector.detect()):!i&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(p):this.services.languageDetector.detect(p):p(i),s}},{key:"getFixedT",value:function(i,o,l){var s=this,a=function u(p,d){var h;if(pe(d)!=="object"){for(var g=arguments.length,y=new Array(g>2?g-2:0),k=2;k1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var s=this.resolvedLanguage||this.languages[0],a=this.options?this.options.fallbackLng:!1,u=this.languages[this.languages.length-1];if(s.toLowerCase()==="cimode")return!0;var p=function(g,y){var k=o.services.backendConnector.state["".concat(g,"|").concat(y)];return k===-1||k===2};if(l.precheck){var d=l.precheck(this,p);if(d!==void 0)return d}return!!(this.hasResourceBundle(s,i)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||p(s,i)&&(!a||p(u,i)))}},{key:"loadNamespaces",value:function(i,o){var l=this,s=fr();return this.options.ns?(typeof i=="string"&&(i=[i]),i.forEach(function(a){l.options.ns.indexOf(a)<0&&l.options.ns.push(a)}),this.loadResources(function(a){s.resolve(),o&&o(a)}),s):(o&&o(),Promise.resolve())}},{key:"loadLanguages",value:function(i,o){var l=fr();typeof i=="string"&&(i=[i]);var s=this.options.preload||[],a=i.filter(function(u){return s.indexOf(u)<0});return a.length?(this.options.preload=s.concat(a),this.loadResources(function(u){l.resolve(),o&&o(u)}),l):(o&&o(),Promise.resolve())}},{key:"dir",value:function(i){if(i||(i=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!i)return"rtl";var o=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],l=this.services&&this.services.languageUtils||new Da($a());return o.indexOf(l.getLanguagePartFromCode(i))>-1||i.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var i=this,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ai,s=mt(mt(mt({},this.options),o),{isClone:!0}),a=new n(s);(o.debug!==void 0||o.prefix!==void 0)&&(a.logger=a.logger.clone(o));var u=["store","services","language"];return u.forEach(function(p){a[p]=i[p]}),a.services=mt({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a.translator=new Aa(a.services,a.options),a.translator.on("*",function(p){for(var d=arguments.length,h=new Array(d>1?d-1:0),g=1;g0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new Vi(e,t)});var ce=Vi.createInstance();ce.createInstance=Vi.createInstance;ce.createInstance;ce.dir;ce.init;ce.loadResources;ce.reloadResources;ce.use;ce.changeLanguage;ce.getFixedT;ce.t;ce.exists;ce.setDefaultNamespace;ce.hasLoadedNamespace;ce.loadNamespaces;ce.loadLanguages;function Zp(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}function ks(e,t){if(e==null)return{};var n=Zp(e,t),r,i;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var qp={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};const eh=uc(qp);var th=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function Ha(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(eh[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){var r=e.indexOf("-->");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var i=new RegExp(th),o=null;(o=i.exec(e))!==null;)if(o[0].trim())if(o[1]){var l=o[1].trim(),s=[l,""];l.indexOf("=")>-1&&(s=l.split("=")),t.attrs[s[0]]=s[1],i.lastIndex--}else o[2]&&(t.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return t}var nh=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,rh=/^\s*$/,ih=Object.create(null);function Ec(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var i in n)r.push(i+'="'+n[i]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(Ec,"")+"";case"comment":return e+""}}var oh={parse:function(e,t){t||(t={}),t.components||(t.components=ih);var n,r=[],i=[],o=-1,l=!1;if(e.indexOf("<")!==0){var s=e.indexOf("<");r.push({type:"text",content:s===-1?e:e.substring(0,s)})}return e.replace(nh,function(a,u){if(l){if(a!=="")return;l=!1}var p,d=a.charAt(1)!=="/",h=a.startsWith("");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var i=new RegExp(th),o=null;(o=i.exec(e))!==null;)if(o[0].trim())if(o[1]){var l=o[1].trim(),s=[l,""];l.indexOf("=")>-1&&(s=l.split("=")),t.attrs[s[0]]=s[1],i.lastIndex--}else o[2]&&(t.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return t}var nh=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,rh=/^\s*$/,ih=Object.create(null);function xc(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var i in n)r.push(i+'="'+n[i]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(xc,"")+"";case"comment":return e+""}}var oh={parse:function(e,t){t||(t={}),t.components||(t.components=ih);var n,r=[],i=[],o=-1,l=!1;if(e.indexOf("<")!==0){var s=e.indexOf("<");r.push({type:"text",content:s===-1?e:e.substring(0,s)})}return e.replace(nh,function(a,u){if(l){if(a!=="")return;l=!1}var p,d=a.charAt(1)!=="/",h=a.startsWith("

    GUl&_9WrU#>|7KR(E~OK3k6u*KVgE70 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�dv(fGmc;erP^E%E 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 literal 0 HcmV?d00001 diff --git a/docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-platform_list.pdf b/docs/sphinx_setup/_static/benchmarks_files/OV-2024.4-platform_list.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6782dea6d0f3b221232582133dc56f817987a0f5 GIT binary patch literal 240967 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 z