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://runtime.onnx.org.cn/docs/execution-providers/
  • providers (Optional[Sequence[str]], 默认为 None) — 用于加载模型的执行提供程序列表。此参数优先于 provider 参数。
  • provider_options (Optional[Dict[str, Any]], 默认为 None) — 与所使用的提供程序对应的提供程序选项字典。有关每个提供程序的可用选项,请参阅:https://runtime.onnx.org.cn/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 上更新