From 14fd5616de4ce0722eb9d532cb35c8f0d56ba761 Mon Sep 17 00:00:00 2001 From: Artur Paniukov Date: Tue, 3 Dec 2024 22:32:15 +0400 Subject: [PATCH 01/11] Support Already Converted Llava Tokenizers (#332) --- src/regex_normalization.cpp | 3 ++- tests/layer_tests.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/regex_normalization.cpp b/src/regex_normalization.cpp index dd5b5b79..37b4ed87 100644 --- a/src/regex_normalization.cpp +++ b/src/regex_normalization.cpp @@ -31,7 +31,8 @@ std::string reformat_replace_pattern(std::string replace_pattern) { const std::map search_pattern_rewrites = { {R"( ([\\.\\?\\!,])| ('[ms])| (') | ('[rv]e)| (n't))", R"((?| ([\\.\\?\\!,])| ('[ms])| (') | ('[rv]e)| (n't)))"}, - {R"((^)(.))", R"((^)([\s\S]))"} + {R"((^)(.))", R"((^)([\s\S]))"}, + {R"((^)(.+))", R"((^)([\s\S]))"} }; /** diff --git a/tests/layer_tests.py b/tests/layer_tests.py index 17ed84f4..f46b1be9 100644 --- a/tests/layer_tests.py +++ b/tests/layer_tests.py @@ -154,6 +154,14 @@ def test_charsmap_normalizartion(test_string, hf_charsmap_tokenizer, precompiled replace_term=r"▁\2", ) ), + ( # test backward compatibility with old regex + "\n", + "▁\n", + RegexNormalizationStep( + regex_search_pattern=r"(^)(.+)", + replace_term=r"▁$2", + ) + ), ] ) def test_regex_normalization(test_string, expected, layer): From e4ceea3e3466e73cd9afcdcf0ccee690d2d03872 Mon Sep 17 00:00:00 2001 From: Stewart Blacklock Date: Thu, 5 Dec 2024 05:55:23 -0800 Subject: [PATCH 02/11] Update sdl.yml (#330) OpenSSF Scorecard requires top level permissions exist and at most are read-all (corrected). Moved existing detailed permissions to the specific job. --- .github/workflows/sdl.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sdl.yml b/.github/workflows/sdl.yml index 19f24d14..a58ff0ea 100644 --- a/.github/workflows/sdl.yml +++ b/.github/workflows/sdl.yml @@ -8,10 +8,7 @@ on: - master - 'releases/**' -permissions: - actions: read - contents: read - security-events: write +permissions: read-all concurrency: # github.ref is not unique in post-commit @@ -29,6 +26,10 @@ jobs: run: shell: bash runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write steps: - name: Clone Openvino tokenizers sources and tests From 904046825b6378bae74f16f302b40599aa88d5b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 00:36:22 +0400 Subject: [PATCH 03/11] Bump py-build-cmake from 0.3.0 to 0.3.2 (#335) Bumps [py-build-cmake](https://github.com/tttapa/py-build-cmake) from 0.3.0 to 0.3.2. - [Release notes](https://github.com/tttapa/py-build-cmake/releases) - [Commits](https://github.com/tttapa/py-build-cmake/compare/0.3.0...0.3.2) --- updated-dependencies: - dependency-name: py-build-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1bd81c37..ecbc8538 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,7 +104,7 @@ python_abi = "none" [build-system] requires = [ - "py-build-cmake==0.3.0", + "py-build-cmake==0.3.2", "cmake~=3.14", "openvino~=2025.0.0.0.dev" ] From 66c96cce77caede6829f23caa4522041996be8f0 Mon Sep 17 00:00:00 2001 From: Alina Kladieva Date: Fri, 6 Dec 2024 21:44:06 +0100 Subject: [PATCH 04/11] GitHub workspace w/a on Windows (#342) --- .github/workflows/windows.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 378d7fd9..7f24ed38 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -33,7 +33,9 @@ jobs: runs-on: aks-linux-2-cores-8gb container: image: 'openvinogithubactions.azurecr.io/openvino_provider:0.1.0' - volumes: [ "/mount:/mount" ] + volumes: + - /mount:/mount + - ${{ github.workspace }}:${{ github.workspace }} continue-on-error: true steps: From ece19659e5fce6694d6068d93e6fb1275b446db5 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sat, 7 Dec 2024 18:02:46 +0400 Subject: [PATCH 05/11] Improvements for build (#346) --- .github/workflows/linux.yml | 3 +-- pyproject.toml | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 71b1ab89..6c68a142 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -268,9 +268,8 @@ jobs: env: PIP_EXTRA_INDEX_URL: "https://download.pytorch.org/whl/cpu" - - name: Tokenizers regression tests (using openvino python modules) + - name: Tokenizers regression tests (using openvino python wheels) run: | - source ${INSTALL_DIR}/setupvars.sh python3 -m pytest layer_tests.py python3 -m pytest tokenizers_test.py working-directory: ${{ env.OPENVINO_TOKENIZERS_REPO }}/tests diff --git a/pyproject.toml b/pyproject.toml index ecbc8538..f00e86f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,24 +3,37 @@ name = "openvino-tokenizers" version = "2025.0.0.0" description = "Convert tokenizers into OpenVINO models" requires-python = ">=3.9" -readme = {file = "README.md", content-type="text/markdown"} -license = {text = "OSI Approved :: Apache Software License"} +readme = { file = "README.md", content-type="text/markdown" } +license = { "file" = "LICENSE" } authors = [ { name = "OpenVINO Developers", email = "openvino@intel.com" }, ] classifiers = [ + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: Apache Software License", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Operating System :: Unix", + "Operating System :: POSIX :: Linux", + "Operating System :: Microsoft :: Windows", + "Operating System :: MacOS", + "Programming Language :: C++", + "Programming Language :: C", + "Programming Language :: Python :: 3 :: Only", ] dependencies = [ # support of nightly openvino packages with dev suffix - "openvino~=2025.0.0.0.dev" + "openvino~=2025.0.0.dev" ] [project.optional-dependencies] @@ -106,6 +119,6 @@ python_abi = "none" requires = [ "py-build-cmake==0.3.2", "cmake~=3.14", - "openvino~=2025.0.0.0.dev" + "openvino~=2025.0.0.dev" ] build-backend = "py_build_cmake.build" From 6c170a90553775ddf1ee69c8ade5e743aac2288c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 22:28:27 +0400 Subject: [PATCH 06/11] Bump py-build-cmake from 0.3.2 to 0.3.3 (#347) Bumps [py-build-cmake](https://github.com/tttapa/py-build-cmake) from 0.3.2 to 0.3.3. - [Release notes](https://github.com/tttapa/py-build-cmake/releases) - [Commits](https://github.com/tttapa/py-build-cmake/compare/0.3.2...0.3.3) --- updated-dependencies: - dependency-name: py-build-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f00e86f0..806f95f7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,7 +117,7 @@ python_abi = "none" [build-system] requires = [ - "py-build-cmake==0.3.2", + "py-build-cmake==0.3.3", "cmake~=3.14", "openvino~=2025.0.0.dev" ] From 428fdb232adc58990d8a511f4aecdd9e5798f220 Mon Sep 17 00:00:00 2001 From: Pavel Esir Date: Tue, 10 Dec 2024 12:48:58 +0100 Subject: [PATCH 07/11] print debug errors only if ENV VAR is set (#334) (#348) --- src/regex_normalization.cpp | 4 ++- src/utils.cpp | 56 +++++++++++++++++++++++++++++-------- src/utils.hpp | 2 ++ 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/src/regex_normalization.cpp b/src/regex_normalization.cpp index 37b4ed87..081da370 100644 --- a/src/regex_normalization.cpp +++ b/src/regex_normalization.cpp @@ -46,7 +46,9 @@ std::string fix_search_pattern(const std::string search_pattern) { if (it == search_pattern_rewrites.end()) { return search_pattern; } - std::cerr << "Replace search pattern: `" << search_pattern << "` -> `" << it->second << "`" << std::endl; + if (getenv_bool("OPENVINO_TOKENIZERS_PRINT_DEBUG_INFO", false)) { + std::cerr << "Replace search pattern: `" << search_pattern << "` -> `" << it->second << "`" << std::endl; + } return it->second; } diff --git a/src/utils.cpp b/src/utils.cpp index 7f22dd84..7ab08bde 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -9,6 +9,9 @@ #include "string_tensor_pack.hpp" #include "string_tensor_unpack.hpp" #include "ragged_tensor_pack.hpp" +#include +#include +#include using namespace ov; using namespace ov::frontend; @@ -117,9 +120,11 @@ void unpack_strings_to_tensors (const std::string* strings, const Shape shape, o } void override_parameter (std::shared_ptr node, element::Type type, const PartialShape& shape) { - if (auto parameter = std::dynamic_pointer_cast(node)) { + if (auto parameter = std::dynamic_pointer_cast(node)) { // TODO: Apply this change conditionally based on real Parameter value - std::cerr << "Overriding Parameter element_type to " << type << " and shape " << shape << "\n"; + if (getenv_bool("OPENVINO_TOKENIZERS_PRINT_DEBUG_INFO", false)) { + std::cerr << "Overriding Parameter element_type to " << type << " and shape " << shape << "\n"; + } parameter->set_partial_shape(shape); parameter->set_element_type(type); parameter->validate_and_infer_types(); @@ -252,7 +257,9 @@ PCRE2Wrapper::PCRE2Wrapper(const absl::string_view& pattern) { if (m_compiled == NULL) { PCRE2_UCHAR buffer[256]; pcre2_get_error_message(errorcode, buffer, sizeof(buffer)); - std::cerr << "PCRE2 compilation failed at offset " << erroroffset << ": " << buffer << std::endl; + if (getenv_bool("OPENVINO_TOKENIZERS_PRINT_DEBUG_INFO", false)) { + std::cerr << "PCRE2 compilation failed at offset " << erroroffset << ": " << buffer << std::endl; + } return; } } @@ -292,7 +299,9 @@ std::string PCRE2Wrapper::substitute(const std::string& orig_str, size_t buffer_length = sizeof(PCRE2_UCHAR) * 4 * (subject_length + num_matches * replace_pattern.size()); PCRE2_UCHAR* buffer = (PCRE2_UCHAR*) std::malloc(buffer_length); if (buffer == nullptr) { - std::cerr << "Memory allocation failed" << std::endl; + if (getenv_bool("OPENVINO_TOKENIZERS_PRINT_DEBUG_INFO", false)) { + std::cerr << "Memory allocation failed" << std::endl; + } pcre2_match_data_free(match_data); return orig_str; } @@ -310,13 +319,15 @@ std::string PCRE2Wrapper::substitute(const std::string& orig_str, ); if (rc < 0) { - if (rc == PCRE2_ERROR_NOMEMORY) { - std::cerr << "Buffer overflow" << std::endl; - } else { - size_t error_length = sizeof(PCRE2_UCHAR) * 400; - PCRE2_UCHAR* error_buffer = (PCRE2_UCHAR*) std::malloc(error_length); - pcre2_get_error_message(rc, error_buffer, error_length); - std::cerr << "PCRE2 substitution failed with error code " << rc << ": " << error_buffer << std::endl; + if (getenv_bool("OPENVINO_TOKENIZERS_PRINT_DEBUG_INFO", false)) { + if (rc == PCRE2_ERROR_NOMEMORY) { + std::cerr << "Buffer overflow" << std::endl; + } else { + size_t error_length = sizeof(PCRE2_UCHAR) * 400; + PCRE2_UCHAR* error_buffer = (PCRE2_UCHAR*) std::malloc(error_length); + pcre2_get_error_message(rc, error_buffer, error_length); + std::cerr << "PCRE2 substitution failed with error code " << rc << ": " << error_buffer << std::endl; + } } pcre2_match_data_free(match_data); std::free(buffer); @@ -418,3 +429,26 @@ int Trie::find_longest(const std::string_view& str, int& idx) { idx = end_idx; return token_id; } + +bool getenv_bool(const char* env_var, bool default_value) { + const char* env_p = std::getenv(env_var); + std::string value = env_p != nullptr ? std::string(env_p) : ""; + + std::transform(value.begin(), value.end(), value.begin(), [](unsigned char c){ return std::tolower(c); }); + + std::set off = {"0", "false", "off"}; + std::set on = {"1", "true", "on"}; + bool rc; + if (value == "") { + rc = default_value; + } else if (off.find(value) != off.end()) { + rc = false; + } else if (on.find(value) != on.end()) { + rc = true; + } else { + std::stringstream ss; + ss << "environment variable '" << env_var << "' value '" << value << "' invalid. Must be boolean."; + throw std::runtime_error(ss.str()); + } + return rc; +} diff --git a/src/utils.hpp b/src/utils.hpp index a7822258..daea0197 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -94,3 +94,5 @@ class Trie { std::unordered_map> m_to; int m_value = -1; // -1 for unset value }; + +bool getenv_bool(const char* env_var, bool default_value); From 78946fa8c385fdc26d978019ecbcb1a55b39eb18 Mon Sep 17 00:00:00 2001 From: Pavel Esir Date: Wed, 11 Dec 2024 16:08:22 +0100 Subject: [PATCH 08/11] replace _get_node_factory_opset1 usage with _get_factory (#349) * replace _get_node_factory_opset1 usage with _get_factory * fix/add setting opset version --- python/openvino_tokenizers/__init__.py | 12 ++++++------ python/openvino_tokenizers/hf_parser.py | 5 ++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/python/openvino_tokenizers/__init__.py b/python/openvino_tokenizers/__init__.py index 575f5d91..bfe3d635 100644 --- a/python/openvino_tokenizers/__init__.py +++ b/python/openvino_tokenizers/__init__.py @@ -7,7 +7,7 @@ import sys from itertools import chain from pathlib import Path -from typing import Callable +from typing import Callable, Optional import openvino from openvino.runtime.utils.node_factory import NodeFactory @@ -71,14 +71,14 @@ def new_fe_init(self, *args, **kwargs): def _get_factory_callable() -> Callable[[], NodeFactory]: - factory = None + factory = {} - def inner() -> NodeFactory: + def inner(opset_version: Optional[str] = None) -> NodeFactory: nonlocal factory - if factory is None: - factory = NodeFactory() + if factory.get(opset_version, False) == False: + factory[opset_version] = NodeFactory() if opset_version is None else NodeFactory(opset_version) - return factory + return factory[opset_version] return inner diff --git a/python/openvino_tokenizers/hf_parser.py b/python/openvino_tokenizers/hf_parser.py index 1476c3a6..c477a153 100644 --- a/python/openvino_tokenizers/hf_parser.py +++ b/python/openvino_tokenizers/hf_parser.py @@ -16,7 +16,6 @@ from openvino import Model, PartialShape, Type from openvino.runtime import Node, op from openvino.runtime.exceptions import OVTypeError -from openvino.runtime.opset1.ops import _get_node_factory_opset1 from openvino.runtime.utils.types import as_node, make_constant_node from transformers import PreTrainedTokenizerBase, PreTrainedTokenizerFast from transformers.convert_slow_tokenizer import import_protobuf @@ -835,10 +834,10 @@ def convert_sentencepiece_model_tokenizer( ) if do_left_padding: - attention_mask = _get_node_factory_opset1().create( + attention_mask = _get_factory("opset1").create( "Reverse", [attention_mask, make_constant_node(np.array([-1]))], {"mode": "index"} ) - scattered_input_ids = _get_node_factory_opset1().create( + scattered_input_ids = _get_factory("opset1").create( "Reverse", [scattered_input_ids, make_constant_node(np.array([-1]))], {"mode": "index"} ) From 1da0d2c705016ad3f04c160ac9338f06505a07c1 Mon Sep 17 00:00:00 2001 From: Mikhail Ryzhov Date: Wed, 11 Dec 2024 17:27:32 +0100 Subject: [PATCH 09/11] set python_tag (#350) --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 806f95f7..9980a6b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -113,6 +113,7 @@ OPENVINO_TOKENIZERS_INSTALL_BINDIR = "openvino_tokenizers/lib" OPENVINO_TOKENIZERS_INSTALL_LIBDIR = "openvino_tokenizers/lib" [tool.py-build-cmake.wheel] +python_tag = ['py3'] python_abi = "none" [build-system] From bcfd3eda25ae3ec423502a4074e35c774506c732 Mon Sep 17 00:00:00 2001 From: Pawel Raasz Date: Mon, 16 Dec 2024 15:14:06 +0100 Subject: [PATCH 10/11] Fix set tensor name for `attention_mask` (#352) Signed-off-by: Raasz, Pawel --- python/openvino_tokenizers/hf_parser.py | 11 ++++++----- python/openvino_tokenizers/tokenizer_pipeline.py | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/python/openvino_tokenizers/hf_parser.py b/python/openvino_tokenizers/hf_parser.py index c477a153..a6c8a781 100644 --- a/python/openvino_tokenizers/hf_parser.py +++ b/python/openvino_tokenizers/hf_parser.py @@ -389,7 +389,7 @@ def decoding(self) -> None: self.pipeline.add_steps(CharsToBytesStep()) else: self.pipeline.add_steps(FuseStep()) - + if self.utf8_replace_mode is not None and (self.utf8_replace_mode != UTF8ReplaceMode.DISABLE): self.pipeline.add_steps(UTF8ValidateStep(mode=self.utf8_replace_mode)) @@ -444,16 +444,17 @@ def convert_fast_tokenizer( filtered_outputs = [] for i, output_name in enumerate(ov_tokenizer_output_names): current_output = next( - (output for output in ov_tokenizer.outputs if output.any_name == output_name), + (output for output in ov_tokenizer.outputs if output_name in output.names), False, ) if current_output: filtered_outputs.append(current_output) + filtered_outputs[-1].add_names({output_name}) continue if output_name in output_names: - ov_tokenizer.output(i).tensor.add_names({output_name}) filtered_outputs.append(ov_tokenizer.output(i)) + filtered_outputs[-1].add_names({output_name}) tokenizer_model = Model(filtered_outputs, ov_tokenizer.get_parameters(), TOKENIZER_NAME) @@ -861,8 +862,8 @@ def convert_sentencepiece_model_tokenizer( outputs = scattered_input_ids.outputs() if add_attention_mask: - attention_mask.output(0).tensor.add_names({ATTENTION_MASK_INPUT_NAME}) outputs.append(attention_mask.output(0)) + outputs[-1].add_names({ATTENTION_MASK_INPUT_NAME}) tokenizer = Model(outputs, [input_node], TOKENIZER_NAME) tokenizer.validate_nodes_and_infer_types() @@ -980,7 +981,7 @@ def get_sp_detokenizer( if params.clean_up_tokenization_spaces: detokenizer = RegexDecodingStep.clean_up_tokenization_spaces().get_ov_subgraph(detokenizer) - + last_sinks = detokenizer if params.utf8_replace_mode is not None and params.utf8_replace_mode != UTF8ReplaceMode.DISABLE: last_sinks = UTF8ValidateStep(params.utf8_replace_mode).get_ov_subgraph(detokenizer) diff --git a/python/openvino_tokenizers/tokenizer_pipeline.py b/python/openvino_tokenizers/tokenizer_pipeline.py index 734a04d5..527a296e 100644 --- a/python/openvino_tokenizers/tokenizer_pipeline.py +++ b/python/openvino_tokenizers/tokenizer_pipeline.py @@ -993,8 +993,8 @@ def get_ov_subgraph(self, input_nodes: List[Output]) -> List[Output]: 0 ) # TODO: Change RaggedToDense to generate mask of any type - mask.tensor.add_names({ATTENTION_MASK_INPUT_NAME}) outputs.append(mask) + outputs[-1].add_names({ATTENTION_MASK_INPUT_NAME}) return outputs @@ -1026,7 +1026,7 @@ def get_ov_subgraph(self, input_nodes: List[Output]) -> List[Output]: else: vocab_outputs = self.create_string_constant_node(self.vocab).outputs() input_nodes.extend(vocab_outputs) - + # Put constant with skip tokens even if do_skip_tokens=False, so that it can be switched on/off at runtime. # Slice through all skip tokens if flag is true, else slice to get an empty tensor. stop_const = op.Constant(Type.i32, Shape([1]), [np.iinfo(np.int32).max if self.do_skip_tokens else 0]) From df5420cb2321c03875195a656a13319fe89c7a06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:40:45 +0000 Subject: [PATCH 11/11] Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#354) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.5.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882...6f51ac03b9356f520e9adb1b1b7802705f340c2b) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/linux.yml | 4 ++-- .github/workflows/mac.yml | 8 ++++---- .github/workflows/windows.yml | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 6c68a142..5b3d19ac 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -136,7 +136,7 @@ jobs: - name: Upload openvino tokenizers package if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_cpack_${{ matrix.build_fast_tokenizers }}_${{ matrix.build_type }} path: ${{ env.BUILD_DIR }}/*.tar.gz @@ -202,7 +202,7 @@ jobs: - name: Upload openvino tokenizers wheel if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_wheel_${{ matrix.build_fast_tokenizers }} path: ${{ env.BUILD_DIR }}/*.whl diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index c15c4070..bec1cd7a 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -46,7 +46,7 @@ jobs: - name: Upload openvino package if: steps.openvino_download.outcome == 'success' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_package path: openvino_package.tar.gz @@ -169,7 +169,7 @@ jobs: - name: Upload openvino package if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_package path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz @@ -252,7 +252,7 @@ jobs: - name: Upload openvino tokenizers package if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_cpack_${{ matrix.build_fast_tokenizers }}_${{ matrix.build_type }} path: ${{ env.BUILD_DIR }}/*.tar.gz @@ -335,7 +335,7 @@ jobs: - name: Upload openvino tokenizers wheel if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_wheel path: ${{ env.BUILD_DIR }}/*.whl diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7f24ed38..ce5b79b8 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -147,7 +147,7 @@ jobs: - name: Upload openvino tokenizers package if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_cpack_${{ matrix.build_fast_tokenizers }}_${{ matrix.build_type }} path: ${{ env.BUILD_DIR }}/*.zip @@ -220,7 +220,7 @@ jobs: - name: Upload openvino tokenizers wheel if: ${{ always() }} - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: openvino_tokenizers_wheel path: ${{ env.BUILD_DIR }}/*.whl