From b180019eeea2b32cb9e44043222d3e09a64cd999 Mon Sep 17 00:00:00 2001 From: Ella Charlaix Date: Mon, 21 Oct 2024 14:57:46 +0200 Subject: [PATCH] add sentence-transformers and timm example to documentation --- .../onnxruntime/usage_guides/models.mdx | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/docs/source/onnxruntime/usage_guides/models.mdx b/docs/source/onnxruntime/usage_guides/models.mdx index 1292e755c0..f4c9b70246 100644 --- a/docs/source/onnxruntime/usage_guides/models.mdx +++ b/docs/source/onnxruntime/usage_guides/models.mdx @@ -43,6 +43,62 @@ Once your model was [exported to the ONNX format](https://huggingface.co/docs/op image = pipeline(prompt).images[0] ``` + +### Sentence Transformers models + +Once your model was [exported to the ONNX format](https://huggingface.co/docs/optimum/exporters/onnx/usage_guides/export_a_model), you can load it by replacing the `AutoModel` class with the corresponding `ORTModelForFeatureExtraction`. + +```diff + from transformers import AutoTokenizer +- from transformers import AutoModel ++ from optimum.onnxruntime import ORTModelForFeatureExtraction + + model_id = "sentence-transformers/all-MiniLM-L6-v2" + tokenizer = AutoTokenizer.from_pretrained(model_id) +- model = AutoModel.from_pretrained(model_id) ++ model = ORTModelForFeatureExtraction.from_pretrained(model_id, export=True) + inputs = tokenizer("This is an example sentence", return_tensors="pt") + outputs = model(**inputs) +``` + +You can also load your ONNX model directly using the `SentenceTransformer` class, just make sure to have `sentence-transformers>=3.2.1` installed. If the model wasn't already converted to ONNX, it will be converted automatically on-the-fly. + +```diff + from sentence_transformers import SentenceTransformer + + model_id = "sentence-transformers/all-MiniLM-L6-v2" +- model = SentenceTransformer(model_id) ++ model = SentenceTransformer(model_id, backend="onnx") + + sentences = ["This is an example sentence", "Each sentence is converted"] + embeddings = model.encode(sentences) +``` + + +### Timm models + +Once your model was [exported to the ONNX format](https://huggingface.co/docs/optimum/exporters/onnx/usage_guides/export_a_model), you can load it by replacing the `create_model` with the corresponding `ORTModelForImageClassification` class. + + +```diff + import requests + from PIL import Image +- from timm import create_model + from timm.data import resolve_data_config, create_transform ++ from optimum.onnxruntime import ORTModelForImageClassification + + model_id = "timm/mobilenetv3_large_100.ra_in1k" +- model = create_model(model_id, pretrained=True) ++ model = ORTModelForImageClassification.from_pretrained(model_id, export=True) + transform = create_transform(**resolve_data_config(model.config.pretrained_cfg, model=model)) + url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png" + image = Image.open(requests.get(url, stream=True).raw) + inputs = transform(image).unsqueeze(0) + outputs = model(inputs) +``` + + + ## Converting your model to ONNX on-the-fly In case your model wasn't already [converted to ONNX](https://huggingface.co/docs/optimum/exporters/onnx/usage_guides/export_a_model), [`~optimum.onnxruntime.ORTModel`] includes a method to convert your model to ONNX on-the-fly.