-
Notifications
You must be signed in to change notification settings - Fork 178
Add version check for transformers package when trying to import bettertransformers #600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
Added version compatibility checking for transformers package in BetterTransformer integration to prevent runtime crashes with newer versions.
- Added version check in
libs/infinity_emb/infinity_emb/transformer/acceleration.pyto disable BetterTransformer when transformers package ≥ 4.49.0 - Implements graceful fallback behavior instead of crashing when incompatible versions are detected
1 file reviewed, 1 comment
Edit PR Review Bot Settings | Greptile
| if CHECK_OPTIMUM.is_available: | ||
| from optimum.bettertransformer import ( # type: ignore[import-untyped] | ||
| BetterTransformer, | ||
| BetterTransformerManager, | ||
| ) | ||
| transformers_version_string = version('transformers') | ||
| transformers_version = tuple([int(number) for number in transformers_version_string.split(".")]) | ||
| if transformers_version < (4,49,0): | ||
| bettertransformer_available = True | ||
| from optimum.bettertransformer import ( # type: ignore[import-untyped] | ||
| BetterTransformer, | ||
| BetterTransformerManager, | ||
| ) | ||
| else: | ||
| bettertransformer_available = False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Make bettertransformer_available global before usage. If CHECK_OPTIMUM.is_available is False, this variable will be undefined when used later.
| if CHECK_OPTIMUM.is_available: | |
| from optimum.bettertransformer import ( # type: ignore[import-untyped] | |
| BetterTransformer, | |
| BetterTransformerManager, | |
| ) | |
| transformers_version_string = version('transformers') | |
| transformers_version = tuple([int(number) for number in transformers_version_string.split(".")]) | |
| if transformers_version < (4,49,0): | |
| bettertransformer_available = True | |
| from optimum.bettertransformer import ( # type: ignore[import-untyped] | |
| BetterTransformer, | |
| BetterTransformerManager, | |
| ) | |
| else: | |
| bettertransformer_available = False | |
| bettertransformer_available = False | |
| if CHECK_OPTIMUM.is_available: | |
| transformers_version_string = version('transformers') | |
| transformers_version = tuple([int(number) for number in transformers_version_string.split(".")]) | |
| if transformers_version < (4,49,0): | |
| bettertransformer_available = True | |
| from optimum.bettertransformer import ( # type: ignore[import-untyped] | |
| BetterTransformer, | |
| BetterTransformerManager, | |
| ) | |
| else: | |
| bettertransformer_available = False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Adds a runtime check for the installed Transformers version to disable BetterTransformer when the version is 4.49.0 or higher.
- Import and parse
transformersversion - Conditionally set
bettertransformer_availableand import BetterTransformer - Early-return in relevant functions if BetterTransformer is unavailable
Comments suppressed due to low confidence (3)
libs/infinity_emb/infinity_emb/transformer/acceleration.py:65
- [nitpick] The warning could be more informative by including the detected transformers version in the message to aid debugging.
logger.warning(
libs/infinity_emb/infinity_emb/transformer/acceleration.py:13
- The new version-checking logic isn't covered by existing tests. Consider adding unit tests for scenarios below, at, and above the 4.49.0 threshold.
transformers_version = tuple([int(number) for number in transformers_version_string.split(".")])
libs/infinity_emb/infinity_emb/transformer/acceleration.py:9
- If
CHECK_OPTIMUM.is_availableis false,bettertransformer_availablewill never be defined, causing a NameError. Initializebettertransformer_available = Falsebefore this block.
from importlib.metadata import version
| BetterTransformer, | ||
| BetterTransformerManager, | ||
| ) | ||
| transformers_version_string = version('transformers') |
Copilot
AI
Jun 15, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Parsing the version string by splitting and int-casting can fail on pre-release or metadata tags. Consider using packaging.version.parse for robust comparisons.
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #600 +/- ##
==========================================
- Coverage 79.85% 79.34% -0.51%
==========================================
Files 43 43
Lines 3489 3500 +11
==========================================
- Hits 2786 2777 -9
- Misses 703 723 +20 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Related Issue
#590
Additional Notes
Check if transformers package is < 4.49 and if not, set flag to disable bettertransformers.