From 83cb0cbfcb0597692b83be8909c698770dbc4aa8 Mon Sep 17 00:00:00 2001 From: Helena Date: Mon, 11 Mar 2024 13:50:45 +0100 Subject: [PATCH 1/5] Add warning for transformers>=4.38 and OpenVINO 2024.0 --- optimum/exporters/openvino/model_patcher.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/optimum/exporters/openvino/model_patcher.py b/optimum/exporters/openvino/model_patcher.py index aea57161e2..0b6352e1a4 100644 --- a/optimum/exporters/openvino/model_patcher.py +++ b/optimum/exporters/openvino/model_patcher.py @@ -15,6 +15,7 @@ import logging as log from optimum.intel.utils.import_utils import ( + _openvino_version, _torch_version, _transformers_version, is_torch_version, @@ -23,13 +24,14 @@ def patch_model_with_bettertransformer(model): + COLOR_RED = "\033[1;31m" + COLOR_RESET = "\033[0m" + # check that the model has not yet been pathced if hasattr(model, "use_bettertransformer") and model.use_bettertransformer is True: return model if is_transformers_version("<", "4.36") or is_torch_version("<", "2.1.1"): - COLOR_RED = "\033[1;31m" - COLOR_RESET = "\033[0m" log.warn( COLOR_RED + "[WARNING] For good performance with stateful models, transformers>=4.36.2 and PyTorch>=2.1.1 are required. " @@ -39,6 +41,14 @@ def patch_model_with_bettertransformer(model): + COLOR_RESET ) + if is_transformers_version(">=", "4.38") and _openvino_version < "2024.1.0-14612": + log.warn( + COLOR_RED + f"[WARNING] Stateful models are not supported with Transformers {_transformers_version} and " + "this OpenVINO version. For good performance, consider using a nightly OpenVINO build: " + "https://docs.openvino.ai/2024/get-started/install-openvino.html. For models that do not need transformers " + "4.38+, it is also an option to downgrade transformers: `pip install transformers==4.37.2`" + COLOR_RESET + ) + # model already has required SDPA implementation if getattr(model, "_supports_sdpa", False) and getattr(model.config, "_attn_implementation", "eager") == "sdpa": return model From c885a54f502d9d9aaa7b30097f8abd1c2dc42991 Mon Sep 17 00:00:00 2001 From: Helena Date: Mon, 11 Mar 2024 16:44:30 +0100 Subject: [PATCH 2/5] Use is_openvino_version to compare versions --- optimum/exporters/openvino/model_patcher.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/optimum/exporters/openvino/model_patcher.py b/optimum/exporters/openvino/model_patcher.py index 0b6352e1a4..e9c1f88a31 100644 --- a/optimum/exporters/openvino/model_patcher.py +++ b/optimum/exporters/openvino/model_patcher.py @@ -15,9 +15,9 @@ import logging as log from optimum.intel.utils.import_utils import ( - _openvino_version, _torch_version, _transformers_version, + is_openvino_version, is_torch_version, is_transformers_version, ) @@ -41,7 +41,7 @@ def patch_model_with_bettertransformer(model): + COLOR_RESET ) - if is_transformers_version(">=", "4.38") and _openvino_version < "2024.1.0-14612": + if is_transformers_version(">=", "4.38") and is_openvino_version("<", "2024.1.0-14612"): log.warn( COLOR_RED + f"[WARNING] Stateful models are not supported with Transformers {_transformers_version} and " "this OpenVINO version. For good performance, consider using a nightly OpenVINO build: " From a85b8aa07ba356ee2ceb9f97c8ab22d92d1ba828 Mon Sep 17 00:00:00 2001 From: Helena Date: Mon, 11 Mar 2024 16:56:51 +0100 Subject: [PATCH 3/5] Show version warning only for llama and gpt-bigcode --- optimum/exporters/openvino/model_patcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimum/exporters/openvino/model_patcher.py b/optimum/exporters/openvino/model_patcher.py index e9c1f88a31..e021fca15c 100644 --- a/optimum/exporters/openvino/model_patcher.py +++ b/optimum/exporters/openvino/model_patcher.py @@ -41,7 +41,7 @@ def patch_model_with_bettertransformer(model): + COLOR_RESET ) - if is_transformers_version(">=", "4.38") and is_openvino_version("<", "2024.1.0-14612"): + if getattr(model.config, "model_type") in {"gpt_bigcode", "llama"} and is_transformers_version(">=", "4.38") and is_openvino_version("<", "2024.1.0-14612"): log.warn( COLOR_RED + f"[WARNING] Stateful models are not supported with Transformers {_transformers_version} and " "this OpenVINO version. For good performance, consider using a nightly OpenVINO build: " From dea14624b902d99e719d7a1adf065124eb07a349 Mon Sep 17 00:00:00 2001 From: Helena Date: Mon, 11 Mar 2024 17:09:29 +0100 Subject: [PATCH 4/5] Fix style, show OpenVINO version --- optimum/exporters/openvino/model_patcher.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/optimum/exporters/openvino/model_patcher.py b/optimum/exporters/openvino/model_patcher.py index e021fca15c..0b9fb78441 100644 --- a/optimum/exporters/openvino/model_patcher.py +++ b/optimum/exporters/openvino/model_patcher.py @@ -15,6 +15,7 @@ import logging as log from optimum.intel.utils.import_utils import ( + _openvino_version, _torch_version, _transformers_version, is_openvino_version, @@ -41,10 +42,18 @@ def patch_model_with_bettertransformer(model): + COLOR_RESET ) - if getattr(model.config, "model_type") in {"gpt_bigcode", "llama"} and is_transformers_version(">=", "4.38") and is_openvino_version("<", "2024.1.0-14612"): + if ( + getattr(model.config, "model_type") in {"gpt_bigcode", "llama"} + and is_transformers_version(">=", "4.38") + and is_openvino_version("<", "2024.1.0-14612") + ): + # display commit-id only when a nightly/prerelease of OpenVINO is installed. + display_version = ( + _openvino_version.split("-")[0] if is_openvino_version("<=", "2024.0.0-14509") else _openvino_version + ) log.warn( COLOR_RED + f"[WARNING] Stateful models are not supported with Transformers {_transformers_version} and " - "this OpenVINO version. For good performance, consider using a nightly OpenVINO build: " + f"OpenVINO {display_version}. For good performance, consider using a nightly OpenVINO build: " "https://docs.openvino.ai/2024/get-started/install-openvino.html. For models that do not need transformers " "4.38+, it is also an option to downgrade transformers: `pip install transformers==4.37.2`" + COLOR_RESET ) From 004135beda3f7d17518bf65268122ca5711eedf7 Mon Sep 17 00:00:00 2001 From: Helena Date: Mon, 11 Mar 2024 17:29:44 +0100 Subject: [PATCH 5/5] Include affected model types in warning message --- optimum/exporters/openvino/model_patcher.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/optimum/exporters/openvino/model_patcher.py b/optimum/exporters/openvino/model_patcher.py index 0b9fb78441..91dc48df05 100644 --- a/optimum/exporters/openvino/model_patcher.py +++ b/optimum/exporters/openvino/model_patcher.py @@ -52,8 +52,8 @@ def patch_model_with_bettertransformer(model): _openvino_version.split("-")[0] if is_openvino_version("<=", "2024.0.0-14509") else _openvino_version ) log.warn( - COLOR_RED + f"[WARNING] Stateful models are not supported with Transformers {_transformers_version} and " - f"OpenVINO {display_version}. For good performance, consider using a nightly OpenVINO build: " + COLOR_RED + f"[WARNING] Stateful models are not supported for Llama and GPTBigCode with Transformers " + f"{_transformers_version} and OpenVINO {display_version}. For good performance, consider using a nightly OpenVINO build: " "https://docs.openvino.ai/2024/get-started/install-openvino.html. For models that do not need transformers " "4.38+, it is also an option to downgrade transformers: `pip install transformers==4.37.2`" + COLOR_RESET )