Optimum 文件

模型

您正在檢視的是需要從原始碼安裝。如果您想進行常規的 pip 安裝,請檢視最新穩定版本 (v1.27.0)。
Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型

通用模型類

以下 ORT 類可用於例項化沒有特定頭的基本模型類。

ORTModel

class optimum.onnxruntime.ORTModel

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

引數

  • - config (PretrainedConfig — 模型的配置。—
  • - session (~onnxruntime.InferenceSession) — 執行模型的 ONNX Runtime 推理會話。—
  • - use_io_binding (bool, 可選, 預設為 True) — 是否在 **ONNX Runtime 中使用 I/O 繫結 —
  • CUDAExecutionProvider**, 這可以根據任務顯著加快推理速度。—
  • - model_save_dir (Path) — 匯出到 ONNX 的模型儲存目錄。—
  • 預設情況下,如果載入的模型是本地模型,則使用原始模型所在的目錄。否則,將使用 —
  • 快取目錄。—

使用 ONNX Runtime 實現模型的基本類。

ORTModel 實現了與 Hugging Face Hub 互動的通用方法,以及使用 optimum.exporters.onnx 工具鏈將原生 transformers 模型匯出到 ONNX。

類屬性

  • model_type (str, 可選, 預設為 "onnx_model") — 註冊 ORTModel 類時使用的模型型別名稱。
  • auto_model_class (Type, 可選, 預設為 AutoModel) — 當前 ORTModel 類表示的“AutoModel”類。

can_generate

< >

( )

返回此模型是否可以使用 ` .generate()` 生成序列。

from_pretrained

< >

( model_id: typing.Union[str, pathlib.Path] config: typing.Optional[ForwardRef('PretrainedConfig')] = None export: bool = False subfolder: str = '' revision: str = 'main' force_download: bool = False local_files_only: bool = False trust_remote_code: bool = False cache_dir: str = '/root/.cache/huggingface/hub' token: typing.Union[str, bool, NoneType] = None provider: str = 'CPUExecutionProvider' providers: typing.Optional[typing.Sequence[str]] = None provider_options: typing.Union[typing.Sequence[typing.Dict[str, typing.Any]], typing.Dict[str, typing.Any], NoneType] = None session_options: typing.Optional[onnxruntime.capi.onnxruntime_pybind11_state.SessionOptions] = None use_io_binding: typing.Optional[bool] = None **kwargs ) ORTModel

引數

  • model_id (Union[str, Path]) — 可以是:

    • 一個字串,是託管在 huggingface.co 模型倉庫中的預訓練模型的 模型 ID。有效的模型 ID 可以在根級別找到,例如 bert-base-uncased,也可以在使用者或組織名稱下名稱空間,例如 dbmdz/bert-base-german-cased
    • 一個 目錄 的路徑,其中包含使用 ~OptimizedModel.save_pretrained 儲存的模型,例如 ./my_model_directory/
  • export (bool, 預設為 False) — 定義提供的 model_id 是否需要匯出到目標格式。
  • force_download (bool, 預設為 True) — 是否強制(重新)下載模型權重和配置檔案,如果存在快取版本則覆蓋。
  • use_auth_token (Optional[Union[bool,str]], 預設為 None) — 已棄用。請改用 token 引數。
  • token (Optional[Union[bool,str]], 預設為 None) — 用作遠端檔案 HTTP 持有者授權的令牌。如果為 True,將使用執行 huggingface-cli login 時生成的令牌(儲存在 huggingface_hub.constants.HF_TOKEN_PATH 中)。
  • cache_dir (Optional[str], 預設為 None) — 如果不應使用標準快取,則下載的預訓練模型配置應快取到的目錄路徑。
  • subfolder (str, 預設為 "") — 如果相關檔案位於模型倉庫的子資料夾中(本地或 huggingface.co 上),您可以在此處指定資料夾名稱。
  • config (Optional[transformers.PretrainedConfig], 預設為 None) — 模型配置。
  • local_files_only (Optional[bool], 預設為 False) — 是否只檢視本地檔案(即不嘗試下載模型)。
  • trust_remote_code (bool, 預設為 False) — 是否允許 Hub 上自定義模型程式碼。此選項應僅在您信任且已閱讀程式碼的倉庫中設定為 True,因為它將在您的本地機器上執行 Hub 上存在的程式碼。
  • revision (Optional[str], 預設為 None) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,因為我們使用基於 Git 的系統在 huggingface.co 上儲存模型和其他工件,因此 revision 可以是 Git 允許的任何識別符號。
  • provider (str, 預設為 "CPUExecutionProvider") — 用於載入模型的 ONNX Runtime 提供程式。有關可能的提供程式,請參閱 https://onnxruntime.ai/docs/execution-providers/
  • providers (Optional[Sequence[str]], 預設為 None) — 用於載入模型的執行提供程式列表。此引數優先於 provider 引數。
  • provider_options (Optional[Dict[str, Any]], 預設為 None) — 與所使用的提供程式對應的提供程式選項字典。有關每個提供程式的可用選項,請參閱:https://onnxruntime.ai/docs/api/c/group___global.html
  • session_options (Optional[onnxruntime.SessionOptions], 預設為 None) — 用於載入模型的 ONNX Runtime 會話選項。
  • use_io_binding (Optional[bool], 預設為 None) — 在推理過程中是否使用 IOBinding,以避免主機和裝置之間或 numpy/torch 張量與 ONNX Runtime ORTValue 之間的記憶體複製。如果執行提供程式是 CUDAExecutionProvider,則預設為 True。對於 [~onnxruntime.ORTModelForCausalLM],在 CPUExecutionProvider 上預設為 True,在所有其他情況下預設為 False
  • kwargs (Dict[str, Any]) — 將傳遞給底層模型載入方法。

解碼器模型引數(ORTModelForCausalLM、ORTModelForSeq2SeqLM、ORTModelForSeq2SeqLM、ORTModelForSpeechSeq2Seq、ORTModelForVision2Seq)

  • use_cache (Optional[bool], 預設為 True) — 是否應使用過去的鍵/值快取。預設為 True

ORTModelForCausalLM 引數

  • use_merged (Optional[bool], 預設為 None) — 是否使用單個 ONNX,該 ONNX 處理不重用和重用過去鍵值的解碼。如果從本地倉庫載入並找到合併的解碼器,此選項預設為 True。當使用 export=True 匯出時,預設為 False。應將此選項設定為 True 以最小化記憶體使用。

返回

ORTModel

已載入的 ORTModel 模型。

從預訓練模型配置例項化預訓練模型。

自然語言處理

以下 ORT 類可用於以下自然語言處理任務。

ORTModelForCausalLM

class optimum.onnxruntime.ORTModelForCausalLM

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None generation_config: typing.Optional[ForwardRef('GenerationConfig')] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

帶有因果語言建模頭的 ONNX 模型,用於 ONNX Runtime 推理。此類別正式支援 bloom、codegen、falcon、gpt2、gpt-bigcode、gpt_neo、gpt_neox、gptj、llama。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: LongTensor attention_mask: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None position_ids: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None **kwargs )

引數

  • input_ids (torch.LongTensor) — 解碼器輸入序列標記在詞彙表中的索引,形狀為 (batch_size, sequence_length)
  • attention_mask (torch.LongTensor) — 避免對填充標記索引執行注意力機制的掩碼,形狀為 (batch_size, sequence_length)。掩碼值在 [0, 1] 中選擇。
  • past_key_values (tuple(tuple(torch.FloatTensor), *可選*, 預設為 None) — 包含用於加速解碼的注意力塊的預計算鍵和值隱藏狀態。該元組的長度為 config.n_layers,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。

ORTModelForCausalLM 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

文字生成示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForCausalLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/gpt2")
>>> model = ORTModelForCausalLM.from_pretrained("optimum/gpt2")

>>> inputs = tokenizer("My name is Arthur and I live in", return_tensors="pt")

>>> gen_tokens = model.generate(**inputs,do_sample=True,temperature=0.9, min_length=20,max_length=20)
>>> tokenizer.batch_decode(gen_tokens)

使用 transformers.pipelines 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForCausalLM

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/gpt2")
>>> model = ORTModelForCausalLM.from_pretrained("optimum/gpt2")
>>> onnx_gen = pipeline("text-generation", model=model, tokenizer=tokenizer)

>>> text = "My name is Arthur and I live in"
>>> gen = onnx_gen(text)

ORTModelForMaskedLM

class optimum.onnxruntime.ORTModelForMaskedLM

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,帶有 MaskedLMOutput 用於掩碼語言建模任務。此類別正式支援 albert、bert、camembert、convbert、data2vec-text、deberta、deberta_v2、distilbert、electra、flaubert、ibert、mobilebert、roberta、roformer、squeezebert、xlm、xlm_roberta。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (形狀為 (batch_size, sequence_length)Union[torch.Tensor, np.ndarray, None],預設為 None) — 輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (形狀為 (batch_size, sequence_length)Union[torch.Tensor, np.ndarray, None],預設為 None) — 避免對填充標記索引執行注意力機制的掩碼。掩碼值在 [0, 1] 中選擇:
  • token_type_ids (形狀為 (batch_size, sequence_length)Union[torch.Tensor, np.ndarray, None],預設為 None) — 片段標記索引,用於指示輸入的第一部分和第二部分。索引在 [0, 1] 中選擇:

ORTModelForMaskedLM 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

特徵提取示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForMaskedLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-uncased-for-fill-mask")
>>> model = ORTModelForMaskedLM.from_pretrained("optimum/bert-base-uncased-for-fill-mask")

>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="np")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 8, 28996]

使用 transformers.pipeline 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForMaskedLM

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-uncased-for-fill-mask")
>>> model = ORTModelForMaskedLM.from_pretrained("optimum/bert-base-uncased-for-fill-mask")
>>> fill_masker = pipeline("fill-mask", model=model, tokenizer=tokenizer)

>>> text = "The capital of France is [MASK]."
>>> pred = fill_masker(text)

ORTModelForSeq2SeqLM

class optimum.onnxruntime.ORTModelForSeq2SeqLM

< >

( *args config: PretrainedConfig = None encoder_session: InferenceSession = None decoder_session: InferenceSession = None decoder_with_past_session: typing.Optional[ForwardRef('InferenceSession')] = None use_io_binding: typing.Optional[bool] = None generation_config: typing.Optional[ForwardRef('GenerationConfig')] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

用於ONNX Runtime推理的序列到序列模型,帶有一個語言建模頭。此類官方支援bart、blenderbot、blenderbot-small、longt5、m2m_100、marian、mbart、mt5、pegasus、t5。

該模型繼承自~onnxruntime.modeling_ort.ORTModelForConditionalGeneration,請檢視其文件以瞭解該庫為其所有模型實現的通用方法(如下載或儲存)。

此類應使用onnxruntime.modeling_ort.ORTModelForConditionalGeneration.from_pretrained方法進行初始化。

forward

< >

( input_ids: LongTensor = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None **kwargs )

引數

  • input_ids (torch.LongTensor) — 輸入序列令牌在詞彙表中的索引,形狀為(batch_size, encoder_sequence_length)
  • attention_mask (torch.LongTensor) — 用於避免對填充令牌索引執行注意力操作的掩碼,形狀為(batch_size, encoder_sequence_length)。掩碼值選擇範圍為[0, 1]
  • decoder_input_ids (torch.LongTensor) — 解碼器輸入序列令牌在詞彙表中的索引,形狀為(batch_size, decoder_sequence_length)
  • encoder_outputs (torch.FloatTensor) — 編碼器last_hidden_state,形狀為(batch_size, encoder_sequence_length, hidden_size)
  • past_key_values (tuple(tuple(torch.FloatTensor), *optional*, defaults to None) — 包含用於加速解碼的注意力塊的預計算鍵和值隱藏狀態。元組的長度為config.n_layers,每個元組包含2個形狀為(batch_size, num_heads, decoder_sequence_length, embed_size_per_head)的張量和2個額外的形狀為(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的張量。

ORTModelForSeq2SeqLM的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

文字生成示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForSeq2SeqLM

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/t5-small")
>>> model = ORTModelForSeq2SeqLM.from_pretrained("optimum/t5-small")

>>> inputs = tokenizer("My name is Eustache and I like to", return_tensors="pt")

>>> gen_tokens = model.generate(**inputs)
>>> outputs = tokenizer.batch_decode(gen_tokens)

使用 transformers.pipeline 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForSeq2SeqLM

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/t5-small")
>>> model = ORTModelForSeq2SeqLM.from_pretrained("optimum/t5-small")
>>> onnx_translation = pipeline("translation_en_to_de", model=model, tokenizer=tokenizer)

>>> text = "My name is Eustache."
>>> pred = onnx_translation(text)

ORTModelForSequenceClassification

class optimum.onnxruntime.ORTModelForSequenceClassification

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,其頂部帶有一個序列分類/迴歸頭(在池化輸出之上有一個線性層),例如用於 GLUE 任務。此類官方支援 albert、bart、bert、camembert、convbert、data2vec-text、deberta、deberta_v2、distilbert、electra、flaubert、ibert、mbart、mobilebert、nystromformer、roberta、roformer、squeezebert、xlm、xlm_roberta。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 詞彙表中輸入序列令牌的索引。可以使用AutoTokenizer獲取索引。詳見PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入ID?
  • attention_mask (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
  • token_type_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 片段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為[0, 1]

ORTModelForSequenceClassification的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

單標籤分類示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForSequenceClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english")
>>> model = ORTModelForSequenceClassification.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2]

使用 transformers.pipelines 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english")
>>> model = ORTModelForSequenceClassification.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english")
>>> onnx_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)

>>> text = "Hello, my dog is cute"
>>> pred = onnx_classifier(text)

使用零樣本分類transformers.pipelines的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/distilbert-base-uncased-mnli")
>>> model = ORTModelForSequenceClassification.from_pretrained("optimum/distilbert-base-uncased-mnli")
>>> onnx_z0 = pipeline("zero-shot-classification", model=model, tokenizer=tokenizer)

>>> sequence_to_classify = "Who are you voting for in 2020?"
>>> candidate_labels = ["Europe", "public health", "politics", "elections"]
>>> pred = onnx_z0(sequence_to_classify, candidate_labels, multi_label=True)

ORTModelForTokenClassification

class optimum.onnxruntime.ORTModelForTokenClassification

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,其頂部帶有一個令牌分類頭(在隱藏狀態輸出之上有一個線性層),例如用於命名實體識別 (NER) 任務。此類官方支援 albert、bert、bloom、camembert、convbert、data2vec-text、deberta、deberta_v2、distilbert、electra、flaubert、gpt2、ibert、mobilebert、roberta、roformer、squeezebert、xlm、xlm_roberta。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 詞彙表中輸入序列令牌的索引。可以使用AutoTokenizer獲取索引。詳見PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入ID?
  • attention_mask (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
  • token_type_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 片段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為[0, 1]

ORTModelForTokenClassification的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

令牌分類示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-NER")
>>> model = ORTModelForTokenClassification.from_pretrained("optimum/bert-base-NER")

>>> inputs = tokenizer("My name is Philipp and I live in Germany.", return_tensors="np")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 12, 9]

使用 transformers.pipelines 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForTokenClassification

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-NER")
>>> model = ORTModelForTokenClassification.from_pretrained("optimum/bert-base-NER")
>>> onnx_ner = pipeline("token-classification", model=model, tokenizer=tokenizer)

>>> text = "My name is Philipp and I live in Germany."
>>> pred = onnx_ner(text)

ORTModelForMultipleChoice

class optimum.onnxruntime.ORTModelForMultipleChoice

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,其頂部帶有一個多項選擇分類頭(在池化輸出之上有一個線性層和一個 softmax),例如用於 RocStories/SWAG 任務。此類官方支援 albert、bert、camembert、convbert、data2vec-text、deberta_v2、distilbert、electra、flaubert、ibert、mobilebert、nystromformer、roberta、roformer、squeezebert、xlm、xlm_roberta。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 詞彙表中輸入序列令牌的索引。可以使用AutoTokenizer獲取索引。詳見PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入ID?
  • attention_mask (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
  • token_type_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 片段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為[0, 1]

ORTModelForMultipleChoice的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

多項選擇示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForMultipleChoice

>>> tokenizer = AutoTokenizer.from_pretrained("ehdwns1516/bert-base-uncased_SWAG")
>>> model = ORTModelForMultipleChoice.from_pretrained("ehdwns1516/bert-base-uncased_SWAG", export=True)

>>> num_choices = 4
>>> first_sentence = ["Members of the procession walk down the street holding small horn brass instruments."] * num_choices
>>> second_sentence = [
...     "A drum line passes by walking down the street playing their instruments.",
...     "A drum line has heard approaching them.",
...     "A drum line arrives and they're outside dancing and asleep.",
...     "A drum line turns the lead singer watches the performance."
... ]
>>> inputs = tokenizer(first_sentence, second_sentence, truncation=True, padding=True)

# Unflatten the inputs values expanding it to the shape [batch_size, num_choices, seq_length]
>>> for k, v in inputs.items():
...     inputs[k] = [v[i: i + num_choices] for i in range(0, len(v), num_choices)]
>>> inputs = dict(inputs.convert_to_tensors(tensor_type="pt"))
>>> outputs = model(**inputs)
>>> logits = outputs.logits

ORTModelForQuestionAnswering

class optimum.onnxruntime.ORTModelForQuestionAnswering

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,帶有用於 SQuAD 等抽取式問答任務的 QuestionAnsweringModelOutput。此類官方支援 albert、bart、bert、camembert、convbert、data2vec-text、deberta、deberta_v2、distilbert、electra、flaubert、gptj、ibert、mbart、mobilebert、nystromformer、roberta、roformer、squeezebert、xlm、xlm_roberta。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 詞彙表中輸入序列令牌的索引。可以使用AutoTokenizer獲取索引。詳見PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入ID?
  • attention_mask (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
  • token_type_ids (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, sequence_length),預設為None) — 片段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為[0, 1]

ORTModelForQuestionAnswering的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

問答示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/roberta-base-squad2")
>>> model = ORTModelForQuestionAnswering.from_pretrained("optimum/roberta-base-squad2")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="np")
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])

>>> outputs = model(**inputs, start_positions=start_positions, end_positions=end_positions)
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits

使用 transformers.pipeline 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForQuestionAnswering

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/roberta-base-squad2")
>>> model = ORTModelForQuestionAnswering.from_pretrained("optimum/roberta-base-squad2")
>>> onnx_qa = pipeline("question-answering", model=model, tokenizer=tokenizer)

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> pred = onnx_qa(question, text)

計算機視覺

以下ORT類可用於以下計算機視覺任務。

ORTModelForImageClassification

class optimum.onnxruntime.ORTModelForImageClassification

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

用於影像分類任務的ONNX模型。此類官方支援beit, convnext, convnextv2, data2vec-vision, deit, dinov2, levit, mobilenet_v1, mobilenet_v2, mobilevit, poolformer, resnet, segformer, swin, swinv2, vit。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( pixel_values: typing.Union[torch.Tensor, numpy.ndarray] return_dict: bool = True **kwargs )

引數

  • pixel_values (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, num_channels, height, width),預設為None) — 當前批次中影像對應的畫素值。畫素值可以透過使用AutoFeatureExtractor從編碼影像中獲取。

ORTModelForImageClassification的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

影像分類示例

>>> import requests
>>> from PIL import Image
>>> from optimum.onnxruntime import ORTModelForImageClassification
>>> from transformers import AutoFeatureExtractor

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> preprocessor = AutoFeatureExtractor.from_pretrained("optimum/vit-base-patch16-224")
>>> model = ORTModelForImageClassification.from_pretrained("optimum/vit-base-patch16-224")

>>> inputs = preprocessor(images=image, return_tensors="np")

>>> outputs = model(**inputs)
>>> logits = outputs.logits

使用 transformers.pipeline 的示例

>>> import requests
>>> from PIL import Image
>>> from transformers import AutoFeatureExtractor, pipeline
>>> from optimum.onnxruntime import ORTModelForImageClassification

>>> preprocessor = AutoFeatureExtractor.from_pretrained("optimum/vit-base-patch16-224")
>>> model = ORTModelForImageClassification.from_pretrained("optimum/vit-base-patch16-224")
>>> onnx_image_classifier = pipeline("image-classification", model=model, feature_extractor=preprocessor)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> pred = onnx_image_classifier(url)

ORTModelForSemanticSegmentation

class optimum.onnxruntime.ORTModelForSemanticSegmentation

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,用於語義分割,其頂部帶有一個全MLP解碼頭,例如用於 ADE20k、CityScapes。此類官方支援maskformer、segformer。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( pixel_values: typing.Union[torch.Tensor, numpy.ndarray] return_dict: bool = True **kwargs )

引數

  • pixel_values (Union[torch.Tensor, np.ndarray, None],形狀為(batch_size, num_channels, height, width),預設為None) — 當前批次中影像對應的畫素值。畫素值可以透過使用AutoFeatureExtractor從編碼影像中獲取。

ORTModelForSemanticSegmentation的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

語義分割示例

>>> import requests
>>> from PIL import Image
>>> from optimum.onnxruntime import ORTModelForSemanticSegmentation
>>> from transformers import AutoFeatureExtractor

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> preprocessor = AutoFeatureExtractor.from_pretrained("optimum/segformer-b0-finetuned-ade-512-512")
>>> model = ORTModelForSemanticSegmentation.from_pretrained("optimum/segformer-b0-finetuned-ade-512-512")

>>> inputs = preprocessor(images=image, return_tensors="np")

>>> outputs = model(**inputs)
>>> logits = outputs.logits

使用 transformers.pipeline 的示例

>>> import requests
>>> from PIL import Image
>>> from transformers import AutoFeatureExtractor, pipeline
>>> from optimum.onnxruntime import ORTModelForSemanticSegmentation

>>> preprocessor = AutoFeatureExtractor.from_pretrained("optimum/segformer-b0-finetuned-ade-512-512")
>>> model = ORTModelForSemanticSegmentation.from_pretrained("optimum/segformer-b0-finetuned-ade-512-512")
>>> onnx_image_segmenter = pipeline("image-segmentation", model=model, feature_extractor=preprocessor)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> pred = onnx_image_segmenter(url)

音訊

以下ORT類可用於以下音訊任務。

ORTModelForAudioClassification

class optimum.onnxruntime.ORTModelForAudioClassification

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,其頂部帶有一個序列分類頭(在池化輸出之上有一個線性層),用於SUPERB關鍵詞識別等任務。此類官方支援audio_spectrogram_transformer, data2vec-audio, hubert, sew, sew-d, unispeech, unispeech_sat, wavlm, wav2vec2, wav2vec2-conformer。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None input_features: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_values (torch.Tensor,形狀為(batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用AutoFeatureExtractor從載入到陣列中的音訊檔案中獲取。

ORTModelForAudioClassification的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

音訊分類示例

>>> from transformers import AutoFeatureExtractor
>>> from optimum.onnxruntime import ORTModelForAudioClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("optimum/hubert-base-superb-ks")
>>> model = ORTModelForAudioClassification.from_pretrained("optimum/hubert-base-superb-ks")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]

使用 transformers.pipeline 的示例

>>> from transformers import AutoFeatureExtractor, pipeline
>>> from optimum.onnxruntime import ORTModelForAudioClassification

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("optimum/hubert-base-superb-ks")
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")

>>> model = ORTModelForAudioClassification.from_pretrained("optimum/hubert-base-superb-ks")
>>> onnx_ac = pipeline("audio-classification", model=model, feature_extractor=feature_extractor)

>>> pred = onnx_ac(dataset[0]["audio"]["array"])

ORTModelForAudioFrameClassification

class optimum.onnxruntime.ORTModelForAudioFrameClassification

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,其頂部帶有一個幀分類頭,用於說話人分離等任務。此類官方支援data2vec-audio, unispeech_sat, wavlm, wav2vec2, wav2vec2-conformer。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_values (torch.Tensor,形狀為(batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用AutoFeatureExtractor從載入到陣列中的音訊檔案中獲取。

ORTModelForAudioFrameClassification的forward方法覆蓋了__call__特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

音訊幀分類示例

>>> from transformers import AutoFeatureExtractor
>>> from optimum.onnxruntime import ORTModelForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("optimum/wav2vec2-base-superb-sd")
>>> model =  ORTModelForAudioFrameClassification.from_pretrained("optimum/wav2vec2-base-superb-sd")

>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()

ORTModelForCTC

class optimum.onnxruntime.ORTModelForCTC

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,頂部帶有用於連線主義時間分類 (CTC) 的語言建模頭。此類別正式支援 data2vec-audio、hubert、sew、sew-d、unispeech、unispeech_sat、wavlm、wav2vec2、wav2vec2-conformer。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_values (torch.Tensor of shape (batch_size, sequence_length)) — 輸入原始語音波形浮點值。輸入值可以使用 AutoFeatureExtractor 從載入到陣列中的音訊檔案獲取。

ORTModelForCTC forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

CTC 示例

>>> from transformers import AutoProcessor, HubertForCTC
>>> from optimum.onnxruntime import ORTModelForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("optimum/hubert-large-ls960-ft")
>>> model = ORTModelForCTC.from_pretrained("optimum/hubert-large-ls960-ft")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> transcription = processor.batch_decode(predicted_ids)

ORTModelForSpeechSeq2Seq

class optimum.onnxruntime.ORTModelForSpeechSeq2Seq

< >

( *args **kwargs )

用於 ONNX Runtime 推理的語音序列到序列模型,頂部帶有語言建模頭。此類正式支援 whisper、speech_to_text。

該模型繼承自~onnxruntime.modeling_ort.ORTModelForConditionalGeneration,請檢視其文件以瞭解該庫為其所有模型實現的通用方法(如下載或儲存)。

此類應使用onnxruntime.modeling_ort.ORTModelForConditionalGeneration.from_pretrained方法進行初始化。

forward

< >

( input_features: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None cache_position: typing.Optional[torch.Tensor] = None **kwargs )

引數

  • input_features (torch.FloatTensor) — 從原始語音波形中提取的 Mel 特徵。(batch_size, feature_size, encoder_sequence_length)
  • decoder_input_ids (torch.LongTensor) — 解碼器輸入序列令牌在詞彙表中的索引,形狀為 (batch_size, decoder_sequence_length)
  • encoder_outputs (torch.FloatTensor) — 編碼器 last_hidden_state,形狀為 (batch_size, encoder_sequence_length, hidden_size)
  • past_key_values (tuple(tuple(torch.FloatTensor), *可選*, 預設為 None) — 包含用於加速解碼的注意力塊的預計算鍵和值隱藏狀態。元組的長度為 config.n_layers,每個元組包含兩個形狀為 (batch_size, num_heads, decoder_sequence_length, embed_size_per_head) 的張量和兩個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

ORTModelForSpeechSeq2Seq forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

文字生成示例

>>> from transformers import AutoProcessor
>>> from optimum.onnxruntime import ORTModelForSpeechSeq2Seq
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("optimum/whisper-tiny.en")
>>> model = ORTModelForSpeechSeq2Seq.from_pretrained("optimum/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = processor.feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")

>>> gen_tokens = model.generate(inputs=inputs.input_features)
>>> outputs = processor.tokenizer.batch_decode(gen_tokens)

使用 transformers.pipeline 的示例

>>> from transformers import AutoProcessor, pipeline
>>> from optimum.onnxruntime import ORTModelForSpeechSeq2Seq
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("optimum/whisper-tiny.en")
>>> model = ORTModelForSpeechSeq2Seq.from_pretrained("optimum/whisper-tiny.en")
>>> speech_recognition = pipeline("automatic-speech-recognition", model=model, tokenizer=processor.tokenizer, feature_extractor=processor.feature_extractor)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> pred = speech_recognition(ds[0]["audio"]["array"])

ORTModelForAudioXVector

class optimum.onnxruntime.ORTModelForAudioXVector

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型,頂部帶有用於揚聲器驗證等任務的 XVector 特徵提取頭。此類正式支援 data2vec-audio、unispeech_sat、wavlm、wav2vec2、wav2vec2-conformer。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_values (torch.Tensor of shape (batch_size, sequence_length)) — 輸入原始語音波形浮點值。輸入值可以使用 AutoFeatureExtractor 從載入到陣列中的音訊檔案獲取。

ORTModelForAudioXVector forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

音訊 XVector 示例

>>> from transformers import AutoFeatureExtractor
>>> from optimum.onnxruntime import ORTModelForAudioXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("optimum/wav2vec2-base-superb-sv")
>>> model = ORTModelForAudioXVector.from_pretrained("optimum/wav2vec2-base-superb-sv")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)

多模態

以下 ORT 類可用於以下多模態任務。

ORTModelForVision2Seq

class optimum.onnxruntime.ORTModelForVision2Seq

< >

( *args config: PretrainedConfig = None encoder_session: InferenceSession = None decoder_session: InferenceSession = None decoder_with_past_session: typing.Optional[ForwardRef('InferenceSession')] = None use_io_binding: typing.Optional[bool] = None generation_config: typing.Optional[ForwardRef('GenerationConfig')] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

帶有語言建模頭的 VisionEncoderDecoder 序列到序列模型,用於 ONNX Runtime 推理。此類正式支援 trocr 和 vision-encoder-decoder。

該模型繼承自~onnxruntime.modeling_ort.ORTModelForConditionalGeneration,請檢視其文件以瞭解該庫為其所有模型實現的通用方法(如下載或儲存)。

此類應使用onnxruntime.modeling_ort.ORTModelForConditionalGeneration.from_pretrained方法進行初始化。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None **kwargs )

引數

  • pixel_values (torch.FloatTensor) — 從影像中提取的特徵。此張量應為形狀 (batch_size, num_channels, height, width)
  • decoder_input_ids (torch.LongTensor) — 解碼器輸入序列令牌在詞彙表中的索引,形狀為 (batch_size, decoder_sequence_length)
  • encoder_outputs (torch.FloatTensor) — 編碼器 last_hidden_state,形狀為 (batch_size, encoder_sequence_length, hidden_size)
  • past_key_values (tuple(tuple(torch.FloatTensor), *可選*, 預設為 None) — 包含用於加速解碼的注意力塊的預計算鍵和值隱藏狀態。元組的長度為 config.n_layers,每個元組包含兩個形狀為 (batch_size, num_heads, decoder_sequence_length, embed_size_per_head) 的張量和兩個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

ORTModelForVision2Seq forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

文字生成示例

>>> from transformers import AutoImageProcessor, AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForVision2Seq
>>> from PIL import Image
>>> import requests


>>> processor = AutoImageProcessor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
>>> tokenizer = AutoTokenizer.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
>>> model = ORTModelForVision2Seq.from_pretrained("nlpconnect/vit-gpt2-image-captioning", export=True)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(image, return_tensors="pt")

>>> gen_tokens = model.generate(**inputs)
>>> outputs = tokenizer.batch_decode(gen_tokens, skip_special_tokens=True)

使用 transformers.pipeline 的示例

>>> from transformers import AutoImageProcessor, AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForVision2Seq
>>> from PIL import Image
>>> import requests


>>> processor = AutoImageProcessor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
>>> tokenizer = AutoTokenizer.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
>>> model = ORTModelForVision2Seq.from_pretrained("nlpconnect/vit-gpt2-image-captioning", export=True)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_to_text = pipeline("image-to-text", model=model, tokenizer=tokenizer, feature_extractor=processor, image_processor=processor)
>>> pred = image_to_text(image)

ORTModelForPix2Struct

class optimum.onnxruntime.ORTModelForPix2Struct

< >

( *args config: PretrainedConfig = None encoder_session: InferenceSession = None decoder_session: InferenceSession = None decoder_with_past_session: typing.Optional[ForwardRef('InferenceSession')] = None use_io_binding: typing.Optional[bool] = None generation_config: typing.Optional[ForwardRef('GenerationConfig')] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

用於 ONNX Runtime 推理的 Pix2struct 模型,頂部帶有語言建模頭。此類正式支援 pix2struct。

該模型繼承自~onnxruntime.modeling_ort.ORTModelForConditionalGeneration,請檢視其文件以瞭解該庫為其所有模型實現的通用方法(如下載或儲存)。

此類應使用onnxruntime.modeling_ort.ORTModelForConditionalGeneration.from_pretrained方法進行初始化。

forward

< >

( flattened_patches: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None encoder_outputs: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.Tensor]]] = None **kwargs )

引數

  • flattened_patches (torch.FloatTensor of shape (batch_size, seq_length, hidden_size)) — 扁平化畫素塊。hidden_size 由以下公式獲得:hidden_size = num_channels * patch_size * patch_size。畫素塊的扁平化過程由 Pix2StructProcessor 完成。
  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), 可選) — 用於避免在填充令牌索引上執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 中:
  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), 可選) — 解碼器輸入序列令牌在詞彙表中的索引。Pix2StructText 使用 pad_token_id 作為 decoder_input_ids 生成的起始令牌。如果使用 past_key_values,可選地只需輸入最後的 decoder_input_ids(參見 past_key_values)。
  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), 可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充令牌的張量。預設情況下也將使用因果掩碼。
  • encoder_outputs (tuple(tuple(torch.FloatTensor), 可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions)。形狀為 (batch_size, sequence_length, hidden_size)last_hidden_state 是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。
  • past_key_values (tuple(tuple(torch.FloatTensor), *可選*, 預設為 None) — 包含用於加速解碼的注意力塊的預計算鍵和值隱藏狀態。元組的長度為 config.n_layers,每個元組包含兩個形狀為 (batch_size, num_heads, decoder_sequence_length, embed_size_per_head) 的張量和兩個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

ORTModelForPix2Struct forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

pix2struct 示例

>>> from transformers import AutoProcessor
>>> from optimum.onnxruntime import ORTModelForPix2Struct
>>> from PIL import Image
>>> import requests

>>> processor = AutoProcessor.from_pretrained("google/pix2struct-ai2d-base")
>>> model = ORTModelForPix2Struct.from_pretrained("google/pix2struct-ai2d-base", export=True, use_io_binding=True)

>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> question = "What does the label 15 represent? (1) lava (2) core (3) tunnel (4) ash cloud"
>>> inputs = processor(images=image, text=question, return_tensors="pt")

>>> gen_tokens = model.generate(**inputs)
>>> outputs = processor.batch_decode(gen_tokens, skip_special_tokens=True)

自定義任務

以下 ORT 類可用於以下自定義任務。

ORTModelForCustomTasks

class optimum.onnxruntime.ORTModelForCustomTasks

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

用於任何自定義任務的 ONNX 模型。它可以用於任何可能使用自定義輸入和輸出的單檔案 ONNX 模型的推理加速。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( **model_inputs: typing.Union[torch.Tensor, numpy.ndarray] )

ORTModelForCustomTasks forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

自定義任務示例(例如,一個將 pooler_output 作為輸出的句子變換器)

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForCustomTasks

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")
>>> model = ORTModelForCustomTasks.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")

>>> inputs = tokenizer("I love burritos!", return_tensors="np")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooler_output = outputs.pooler_output

使用 transformers.pipelines 的示例(僅在任務受支援時)

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForCustomTasks

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")
>>> model = ORTModelForCustomTasks.from_pretrained("optimum/sbert-all-MiniLM-L6-with-pooler")
>>> onnx_extractor = pipeline("feature-extraction", model=model, tokenizer=tokenizer)

>>> text = "I love burritos!"
>>> pred = onnx_extractor(text)

ORTModelForFeatureExtraction

class optimum.onnxruntime.ORTModelForFeatureExtraction

< >

( *args config: PretrainedConfig = None session: InferenceSession = None use_io_binding: typing.Optional[bool] = None model_save_dir: typing.Union[str, pathlib.Path, tempfile.TemporaryDirectory, NoneType] = None **kwargs )

ONNX 模型用於特徵提取任務。

此模型繼承自 ORTModel,請檢視其文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

此類別應使用 onnxruntime.modeling_ort.ORTModel.from_pretrained() 方法進行初始化。

forward

< >

( input_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None attention_mask: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None token_type_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None position_ids: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None pixel_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None input_features: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None input_values: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None return_dict: bool = True **kwargs )

引數

  • input_ids (Union[torch.Tensor, np.ndarray, None] of shape (batch_size, sequence_length), 預設為 None) — 詞彙表中輸入序列令牌的索引。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是 input ID?
  • attention_mask (Union[torch.Tensor, np.ndarray, None] of shape (batch_size, sequence_length), 預設為 None) — 用於避免在填充令牌索引上執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 中:
  • token_type_ids (Union[torch.Tensor, np.ndarray, None] of shape (batch_size, sequence_length), 預設為 None) — 片段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇在 [0, 1] 中:

ORTModelForFeatureExtraction forward 方法重寫了 __call__ 特殊方法。

儘管需要在函式內部定義前向傳播的配方,但之後應該呼叫 Module 例項,而不是該例項,因為前者負責執行預處理和後處理步驟,而後者則靜默忽略它們。

特徵提取示例

>>> from transformers import AutoTokenizer
>>> from optimum.onnxruntime import ORTModelForFeatureExtraction
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/all-MiniLM-L6-v2")
>>> model = ORTModelForFeatureExtraction.from_pretrained("optimum/all-MiniLM-L6-v2")

>>> inputs = tokenizer("My name is Philipp and I live in Germany.", return_tensors="np")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> list(last_hidden_state.shape)
[1, 12, 384]

使用 transformers.pipeline 的示例

>>> from transformers import AutoTokenizer, pipeline
>>> from optimum.onnxruntime import ORTModelForFeatureExtraction

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/all-MiniLM-L6-v2")
>>> model = ORTModelForFeatureExtraction.from_pretrained("optimum/all-MiniLM-L6-v2")
>>> onnx_extractor = pipeline("feature-extraction", model=model, tokenizer=tokenizer)

>>> text = "My name is Philipp and I live in Germany."
>>> pred = onnx_extractor(text)

穩定擴散

ORTDiffusionPipeline

class optimum.utils.dummy_diffusers_objects.ORTDiffusionPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTStableDiffusionPipeline

class optimum.utils.dummy_diffusers_objects.ORTStableDiffusionPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTStableDiffusionImg2ImgPipeline

class optimum.utils.dummy_diffusers_objects.ORTStableDiffusionImg2ImgPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTStableDiffusionInpaintPipeline

class optimum.utils.dummy_diffusers_objects.ORTStableDiffusionInpaintPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTStableDiffusionXLPipeline

class optimum.utils.dummy_diffusers_objects.ORTStableDiffusionXLPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTStableDiffusionXLImg2ImgPipeline

class optimum.utils.dummy_diffusers_objects.ORTStableDiffusionXLImg2ImgPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

ORTLatentConsistencyModelPipeline

class optimum.utils.dummy_diffusers_objects.ORTLatentConsistencyModelPipeline

< >

( *args **kwargs )

__call__

( *args **kwargs )

將自身作為函式呼叫。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.