huggingface / huggingface/optimum-intel

Bug: sentence-transformers export fails due to removed _text_length attribute in version 5.4.0

Open
#1,680 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
620
Forks
270
Avg merge
3d 10h
Merged PRs (30d)
22

Description

**Description**

Exporting `sentence-transformers` models using the OpenVINO exporter fails with an `AttributeError` related to the `_text_length` attribute.

**This is leading multiple failing tests :**
```
FAILED tests/openvino/test_exporters_cli.py::OVCLIExportTestCase::test_exporters_cli_full_quantization_10_feature_extraction - subprocess.CalledProcessError: Command 'optimum-cli export openvino --task feature-extraction --model optimum-intel-internal-testing/stsb-bert-tiny-safetensors --quant-mode int8 --library sentence_transformers --dataset c4 --num-samples 1 /tmp/tmp8apu_q83' returned non-zero exit status 1.
```
```
FAILED tests/openvino/test_exporters_cli.py::OVCLIExportTestCase::test_exporters_cli_sentence_transformers - AttributeError: type object 'SentenceTransformer' has no attribute '_text_length'. Did you mean: '_input_length'?
```

**Reproduction**
Reproduce the bug in this [notebook](https://colab.research.google.com/drive/1ydaxdDx8BosGlFmgoR3JlTyDt26kxhTD?usp=sharing)

Run the following command:
```
optimum-cli export openvino \
--task feature-extraction \
--model optimum-intel-internal-testing/stsb-bert-tiny-safetensors \
--quant-mode int8 \
--library sentence_transformers \
--dataset c4 \
--num-samples 1 \
ov_model
```

**Error**
```
Traceback (most recent call last):
File "/usr/local/bin/optimum-cli", line 6, in
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/commands/optimum_cli.py", line 219, in main
service.run()
File "/usr/local/lib/python3.12/dist-packages/optimum/commands/export/openvino.py", line 485, in run
_main_quantize(
File "/usr/local/lib/python3.12/dist-packages/optimum/exporters/openvino/__main__.py", line 681, in _main_quantize
model = model_cls.from_pretrained(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/intel/openvino/modeling_base.py", line 613, in from_pretrained
return super().from_pretrained(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/modeling_base.py", line 407, in from_pretrained
return from_pretrained_method(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/intel/openvino/modeling_sentence_transformers.py", line 97, in _from_pretrained
model = super()._from_pretrained(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/intel/openvino/modeling_base.py", line 534, in _from_pretrained
model = cls(
^^^^
File "/usr/local/lib/python3.12/dist-packages/optimum/intel/openvino/modeling_sentence_transformers.py", line 30, in __init__
self._text_length = MethodType(SentenceTransformer._text_length, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'SentenceTransformer' has no attribute '_text_length'. Did you mean: '_input_length'?
```

**Root Cause**

The exporter binds the private `_text_length` method from `SentenceTransformer`. However, this attribute has been removed in recent versions of the sentence-transformers library.

The binding appears to be unused in the current implementation (dead binding).

**Expected Behavior**

The export should complete successfully without relying on removed or private attributes.

**Environment**
optimum-intel: current main
sentence-transformers: latest(5.4.0)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.