Skip to content

Commit e6e5ffd

Browse files
eaidovaecharlaix
andauthored
Fix sentence transformers CLI export (#674)
* fix sentence transformers export after latest changes merge * add test case * Update optimum/commands/export/openvino.py Co-authored-by: Ella Charlaix <80481427+echarlaix@users.noreply.github.com> --------- Co-authored-by: Ella Charlaix <80481427+echarlaix@users.noreply.github.com>
1 parent f392c9b commit e6e5ffd

File tree

4 files changed

+37
-1
lines changed

4 files changed

+37
-1
lines changed

optimum/commands/export/openvino.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,13 @@ def run(self):
214214
quantization_config["dataset"] = self.args.dataset
215215
ov_config = OVConfig(quantization_config=quantization_config)
216216

217-
library_name = TasksManager.infer_library_from_model(self.args.model)
217+
library_name = TasksManager.infer_library_from_model(self.args.model, library_name=self.args.library)
218+
if library_name == "sentence_transformers" and self.args.library is None:
219+
logger.warning(
220+
"Library name is not specified. There are multiple possible variants: `sentence_transformers`, `transformers`."
221+
"`transformers` will be selected. If you want to load your model with the `sentence-transformers` library instead, please set --library sentence_transformers"
222+
)
223+
library_name = "transformers"
218224

219225
if (
220226
library_name == "diffusers"

setup.py

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"transformers_stream_generator",
5454
"einops",
5555
"tiktoken",
56+
"sentence_transformers",
5657
]
5758

5859
QUALITY_REQUIRE = ["black~=23.1", "ruff>=0.0.241"]

tests/openvino/test_exporters_cli.py

+28
Original file line numberDiff line numberDiff line change
@@ -218,3 +218,31 @@ def test_exporters_cli_help(self):
218218
shell=True,
219219
check=True,
220220
)
221+
222+
def test_exporters_cli_sentence_transformers(self):
223+
model_id = MODEL_NAMES["bge"]
224+
with TemporaryDirectory() as tmpdir:
225+
# default export creates transformers model
226+
subprocess.run(
227+
f"optimum-cli export openvino --model {model_id} --task feature-extraction {tmpdir}",
228+
shell=True,
229+
check=True,
230+
)
231+
model = eval(_HEAD_TO_AUTOMODELS["feature-extraction"]).from_pretrained(tmpdir, compile=False)
232+
self.assertTrue("last_hidden_state" in model.output_names)
233+
# export with transformers lib creates transformers model
234+
subprocess.run(
235+
f"optimum-cli export openvino --model {model_id} --task feature-extraction --library transformers {tmpdir}",
236+
shell=True,
237+
check=True,
238+
)
239+
model = eval(_HEAD_TO_AUTOMODELS["feature-extraction"]).from_pretrained(tmpdir, compile=False)
240+
self.assertTrue("last_hidden_state" in model.output_names)
241+
# export with sentence_transformers lib creates sentence_transformers model
242+
subprocess.run(
243+
f"optimum-cli export openvino --model {model_id} --task feature-extraction --library sentence_transformers {tmpdir}",
244+
shell=True,
245+
check=True,
246+
)
247+
model = eval(_HEAD_TO_AUTOMODELS["feature-extraction"]).from_pretrained(tmpdir, compile=False)
248+
self.assertFalse("last_hidden_state" in model.output_names)

tests/openvino/utils_tests.py

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
MODEL_NAMES = {
2020
"albert": "hf-internal-testing/tiny-random-albert",
2121
"audio_spectrogram_transformer": "Ericwang/tiny-random-ast",
22+
"bge": "BAAI/bge-small-en-v1.5",
2223
"beit": "hf-internal-testing/tiny-random-BeitForImageClassification",
2324
"bert": "hf-internal-testing/tiny-random-bert",
2425
"bart": "hf-internal-testing/tiny-random-bart",

0 commit comments

Comments
 (0)