Optimum 文件

匯出函式

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

並獲得增強的文件體驗

開始使用

匯出函式

您可以從 🤗 Optimum 中的兩個框架將模型匯出到 ONNX:PyTorch 和 TensorFlow。每個框架都有一個匯出函式,export_pytorch()export_tensorflow(),但推薦的使用方法是透過主匯出函式 ~optimum.exporters.main_export,它將根據可用的框架負責使用適當的匯出函式,檢查匯出的模型是否有效,並提供擴充套件選項以對匯出的模型執行最佳化。

主要功能

optimum.exporters.onnx.main_export

< >

( model_name_or_path: str output: typing.Union[str, pathlib.Path] task: str = 'auto' opset: typing.Optional[int] = None device: str = 'cpu' dtype: typing.Optional[str] = None fp16: typing.Optional[bool] = False optimize: typing.Optional[str] = None monolith: bool = False no_post_process: bool = False framework: typing.Optional[str] = None atol: typing.Optional[float] = None pad_token_id: typing.Optional[int] = None 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 for_ort: bool = False do_validation: bool = True model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None custom_onnx_configs: typing.Optional[typing.Dict[str, ForwardRef('OnnxConfig')]] = None fn_get_submodels: typing.Optional[typing.Callable] = None use_subprocess: bool = False _variant: str = 'default' library_name: typing.Optional[str] = None legacy: bool = False no_dynamic_axes: bool = False do_constant_folding: bool = True slim: bool = False **kwargs_shapes )

必填引數

  • model_name_or_path (str) — Huggingface.co 上的模型 ID 或磁碟上要匯出的模型儲存庫路徑。示例:model_name_or_path="BAAI/bge-m3"mode_name_or_path="/path/to/model_folder
  • output (Union[str, Path]) — 指示儲存生成的 ONNX 模型的目錄的路徑。

可選引數

  • task (Optional[str], 預設為 None) — 匯出模型所針對的任務。如果未指定,將根據模型自動推斷任務。對於解碼器模型,使用 xxx-with-past 匯出模型時,解碼器中使用過去的鍵值。
  • opset (Optional[int], 預設為 None) — 如果指定,則為匯出模型使用的 ONNX opset 版本。否則,將使用給定模型架構的預設 opset。
  • device (str, 預設為 "cpu") — 用於執行匯出的裝置。預設為“cpu”。
  • fp16 (Optional[bool], 預設為 "False") — 匯出時使用半精度。僅限 PyTorch,需要 device="cuda"
  • dtype (Optional[str], 預設為 None) — 匯出時使用的浮點精度。支援的選項:"fp32" (float32)、"fp16" (float16)、"bf16" (bfloat16)。預設為 "fp32"
  • optimize (Optional[str], 預設為 None) — 允許在匯出期間直接執行 ONNX Runtime 最佳化。其中一些最佳化是 ONNX Runtime 特有的,因此生成的 ONNX 模型無法與其他執行時(如 OpenVINO 或 TensorRT)一起使用。可用選項:"O1", "O2", "O3", "O4"。參考:AutoOptimizationConfig
  • monolith (bool, 預設為 False) — 強制將模型匯出為單個 ONNX 檔案。
  • no_post_process (bool, 預設為 False) — 允許停用對匯出的 ONNX 模型執行的任何預設後處理。
  • framework (Optional[str], 預設為 None) — 用於 ONNX 匯出的框架("pt""tf")。如果未提供,將嘗試自動檢測檢查點的框架。
  • atol (Optional[float], 預設為 None) — 如果指定,則為驗證模型時的絕對差容差。否則,將使用模型的預設 atol。
  • cache_dir (Optional[str], 預設為 None) — 指示儲存快取的路徑。預設情況下將使用 Hugging Face 預設快取路徑。
  • trust_remote_code (bool, 預設為 False) — 允許使用模型儲存庫中託管的自定義程式碼進行建模。此選項僅應在您信任且已閱讀程式碼的儲存庫中設定,因為它將在您的本地機器上執行模型儲存庫中存在的任意程式碼。
  • pad_token_id (Optional[int], 預設為 None) — 某些模型在某些任務中需要此項。如果未提供,將嘗試使用分詞器猜測它。
  • subfolder (str, 預設為 "") — 如果相關檔案位於模型倉庫的子資料夾中(本地或 huggingface.co 上),您可以在此處指定資料夾名稱。
  • revision (str, 預設為 "main") — 修訂版本是要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID。
  • force_download (bool, 預設為 False) — 是否強制(重新)下載模型權重和配置檔案,如果已存在則覆蓋快取版本。
  • local_files_only (Optional[bool], 預設為 False) — 是否僅檢視本地檔案(即不嘗試下載模型)。
  • 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 中)。
  • model_kwargs (Optional[Dict[str, Any]], 預設為 None) — 實驗性用法:在匯出期間傳遞給模型的關鍵字引數。此引數應與 custom_onnx_configs 引數一起使用,例如,當模型輸入/輸出發生更改時(例如,如果傳遞了 model_kwargs={"output_attentions": True})。
  • custom_onnx_configs (Optional[Dict[str, OnnxConfig]], 預設為 None) — 實驗性用法:覆蓋用於給定模型的預設 ONNX 配置。此引數對於希望對匯出進行更精細控制的高階使用者可能很有用。示例請參見此處
  • fn_get_submodels (Optional[Callable], 預設為 None) — 實驗性用法:覆蓋匯出時使用的預設子模型。當匯出需要拆分 ONNX 的自定義架構時(例如編碼器-解碼器),這尤其有用。如果未指定自定義模型,optimum 將嘗試使用給定任務的預設子模型,但不保證成功。
  • use_subprocess (bool, 預設為 False) — 在子程序中進行 ONNX 匯出模型驗證。當在 CUDA 裝置上匯出時,這尤其有用,因為 ORT 在推理會話銷燬時不會釋放記憶體。當設定為 True 時,main_export 呼叫應受 if __name__ == "__main__": 塊的保護。
  • _variant (str, 預設為 default) — 指定要使用的 ONNX 匯出變體。
  • library_name (Optional[str], 預設為 None) — 模型的庫("transformers""diffusers""timm""sentence_transformers")。如果未提供,將嘗試自動檢測檢查點的庫名稱。
  • legacy (bool, 預設為 False) — 停用文字生成模型使用 position_ids 進行批處理生成。此外,允許將僅解碼器模型匯出為三個檔案(不帶 past、帶 past 和合並模型)。此引數是為向後相容性而引入的,將在 Optimum 的未來版本中移除。
  • no_dynamic_axes (bool, 預設為 False) — 如果為 True,則在 ONNX 匯出期間停用動態軸的使用。
  • do_constant_folding (bool, 預設為 True) — PyTorch 特有引數。如果為 True,PyTorch ONNX 匯出將盡可能將常量摺疊到相鄰節點中。
  • slim (bool, 預設為 False) — PyTorch 特有引數。如果為 True,則使用 onnxslim 最佳化 ONNX 模型。
  • **kwargs_shapes (Dict) — 推理期間使用的形狀。此引數允許覆蓋 ONNX 匯出期間使用的預設形狀。

全套 ONNX 匯出函式,從 Hugging Face Hub 上的模型 ID 或本地模型儲存庫匯出。

用法示例

>>> from optimum.exporters.onnx import main_export

>>> main_export("gpt2", output="gpt2_onnx/")

optimum.exporters.onnx.onnx_export_from_model

< >

( model: typing.Union[ForwardRef('PreTrainedModel'), ForwardRef('TFPreTrainedModel'), ForwardRef('DiffusionPipeline')] output: typing.Union[str, pathlib.Path] opset: typing.Optional[int] = None optimize: typing.Optional[str] = None monolith: bool = False no_post_process: bool = False atol: typing.Optional[float] = None do_validation: bool = True model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None custom_onnx_configs: typing.Optional[typing.Dict[str, ForwardRef('OnnxConfig')]] = None fn_get_submodels: typing.Optional[typing.Callable] = None _variant: str = 'default' legacy: bool = False preprocessors: typing.List = None device: str = 'cpu' no_dynamic_axes: bool = False task: typing.Optional[str] = None use_subprocess: bool = False do_constant_folding: bool = True slim: bool = False **kwargs_shapes )

必填引數

  • model (Union["PreTrainedModel", "TFPreTrainedModel"]) — 要匯出為 ONNX 的 PyTorch 或 TensorFlow 模型。
  • output (Union[str, Path]) — 指示儲存生成的 ONNX 模型的目錄的路徑。

可選引數

  • task (Optional[str], 預設為 None) — 匯出模型所針對的任務。如果未指定,將根據模型自動推斷任務。
  • opset (Optional[int], 預設為 None) — 如果指定,則為匯出模型使用的 ONNX opset 版本。否則,將使用給定模型架構的預設 opset。
  • device (str, 預設為 "cpu") — 用於執行匯出的裝置。預設為“cpu”。
  • optimize (Optional[str], 預設為 None) — 允許在匯出期間直接執行 ONNX Runtime 最佳化。其中一些最佳化是 ONNX Runtime 特有的,因此生成的 ONNX 模型無法與其他執行時(如 OpenVINO 或 TensorRT)一起使用。可用選項:"O1", "O2", "O3", "O4"。參考:AutoOptimizationConfig
  • monolith (bool, 預設為 False) — 強制將模型匯出為單個 ONNX 檔案。
  • no_post_process (bool, 預設為 False) — 允許停用對匯出的 ONNX 模型執行的任何預設後處理。
  • atol (Optional[float], 預設為 None) — 如果指定,則為驗證模型時的絕對差容差。否則,將使用模型的預設 atol。
  • model_kwargs (Optional[Dict[str, Any]], 預設為 None) — 實驗性用法:在匯出期間傳遞給模型的關鍵字引數。此引數應與 custom_onnx_configs 引數一起使用,例如,當模型輸入/輸出發生更改時(例如,如果傳遞了 model_kwargs={"output_attentions": True})。
  • custom_onnx_configs (Optional[Dict[str, OnnxConfig]], 預設為 None) — 實驗性用法:覆蓋用於給定模型的預設 ONNX 配置。此引數對於希望對匯出進行更精細控制的高階使用者可能很有用。示例請參見此處
  • fn_get_submodels (Optional[Callable], 預設為 None) — 實驗性用法:覆蓋匯出時使用的預設子模型。當匯出需要拆分 ONNX 的自定義架構時(例如編碼器-解碼器),這尤其有用。如果未指定自定義模型,optimum 將嘗試使用給定任務的預設子模型,但不保證成功。
  • use_subprocess (bool, 預設為 False) — 在子程序中執行 ONNX 匯出模型的驗證。當在 CUDA 裝置上匯出時,這尤其有用,因為 ORT 在推理會話銷燬時不會釋放記憶體。當設定為 True 時,main_export 呼叫應在 if __name__ == "__main__": 塊中進行保護。
  • _variant (str, 預設為 default) — 指定要使用的 ONNX 匯出變體。
  • legacy (bool, 預設為 False) — 停用文字生成模型使用 position_ids 進行批處理生成。此外,允許將僅解碼器模型匯出為三個檔案(不帶 past、帶 past 和合並模型)。此引數是為向後相容性而引入的,將在 Optimum 的未來版本中移除。
  • no_dynamic_axes (bool, defaults to False) — 如果為 True,在 ONNX 匯出期間停用動態軸的使用。
  • do_constant_folding (bool, defaults to True) — PyTorch 特有引數。如果為 True,PyTorch ONNX 匯出將盡可能地將常量摺疊到相鄰節點中。
  • slim (bool, defaults to False) — 使用 onnxslim 最佳化 ONNX 模型。
  • **kwargs_shapes (Dict) — 用於推理的形狀。此引數允許覆蓋 ONNX 匯出期間使用的預設形狀。

全套 ONNX 匯出函式,**從預載入的 PyTorch 或 Tensorflow 模型**匯出。此函式在需要對模型進行修改(例如,在匯出到 ONNX 之前覆蓋前向呼叫)的情況下特別有用。

用法示例

>>> from transformers import AutoModelForCausalLM

>>> model = AutoModelForCausalLM.from_pretrained("gpt2")
>>> # At this point, we could override some submodules, forward methods, weights, etc. from the model.

>>> onnx_export_from_model(model, output="gpt2_onnx/")

optimum.exporters.onnx.export

< >

( model: typing.Union[ForwardRef('PreTrainedModel'), ForwardRef('TFPreTrainedModel'), ForwardRef('ModelMixin')] config: OnnxConfig output: Path opset: typing.Optional[int] = None device: str = 'cpu' input_shapes: typing.Optional[typing.Dict] = None disable_dynamic_axes_fix: typing.Optional[bool] = False dtype: typing.Optional[str] = None no_dynamic_axes: bool = False do_constant_folding: bool = True model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None ) Tuple[List[str], List[str]]

引數

  • model (PreTrainedModelTFPreTrainedModel) — 要匯出的模型。
  • config (OnnxConfig) — 與匯出模型關聯的 ONNX 配置。
  • output (Path) — 儲存匯出 ONNX 模型的目錄。
  • opset (Optional[int], defaults to None) — 要使用的 ONNX 運算子集的版本。
  • device (Optional[str], defaults to "cpu") — ONNX 模型將匯出的裝置。可以是 cpucuda。CUDA 裝置上的匯出僅支援 PyTorch。
  • input_shapes (Optional[Dict], defaults to None) — 如果指定,允許為提供給 ONNX 匯出器的示例輸入使用特定形狀。
  • disable_dynamic_axes_fix (Optional[bool], defaults to False) — 是否停用預設的動態軸修復。
  • dtype (Optional[str], defaults to None) — 將模型輸入重新對映到的資料型別。僅限 PyTorch。僅支援 fp16
  • no_dynamic_axes (bool, defaults to False) — 如果為 True,在 ONNX 匯出期間停用動態軸的使用。
  • do_constant_folding (bool, defaults to True) — PyTorch 特有引數。如果為 True,PyTorch ONNX 匯出將盡可能地將常量摺疊到相鄰節點中。
  • model_kwargs (Optional[Dict[str, Any]], defaults to None) — 實驗性用法:在匯出期間傳遞給模型的關鍵字引數。此引數應與 custom_onnx_config 引數一起使用,例如,當模型輸入/輸出發生更改時(例如,如果傳遞了 model_kwargs={"output_attentions": True})。

返回

Tuple[List[str], List[str]]

一個元組,包含模型輸入的有序列表和 ONNX 配置中的命名輸出。

將 PyTorch 或 TensorFlow 模型匯出到 ONNX 中間表示。

optimum.exporters.onnx.convert.export_pytorch

< >

( model: typing.Union[ForwardRef('PreTrainedModel'), ForwardRef('ModelMixin')] config: OnnxConfig opset: int output: Path device: str = 'cpu' input_shapes: typing.Optional[typing.Dict] = None no_dynamic_axes: bool = False do_constant_folding: bool = True model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None ) Tuple[List[str], List[str]]

引數

  • model (PreTrainedModel) — 要匯出的模型。
  • config (OnnxConfig) — 與匯出模型關聯的 ONNX 配置。
  • opset (int) — 要使用的 ONNX 運算子集的版本。
  • output (Path) — 匯出 ONNX 檔案的儲存路徑。
  • device (str, defaults to "cpu") — ONNX 模型將匯出的裝置。可以是 cpucuda。CUDA 裝置上的匯出僅支援 PyTorch。
  • input_shapes (Optional[Dict], defaults to None) — 如果指定,允許為提供給 ONNX 匯出器的示例輸入使用特定形狀。
  • no_dynamic_axes (bool, defaults to False) — 如果為 True,在 ONNX 匯出期間停用動態軸的使用。
  • do_constant_folding (bool, defaults to True) — PyTorch 特有引數。如果為 True,PyTorch ONNX 匯出將盡可能地將常量摺疊到相鄰節點中。
  • model_kwargs (Optional[Dict[str, Any]], defaults to None) — 實驗性用法:在匯出期間傳遞給模型的關鍵字引數。此引數應與 custom_onnx_config 引數一起使用,例如,當模型輸入/輸出發生更改時(例如,如果傳遞了 model_kwargs={"output_attentions": True})。

返回

Tuple[List[str], List[str]]

一個元組,包含模型輸入的有序列表和 ONNX 配置中的命名輸出。

將 PyTorch 模型匯出到 ONNX 中間表示。

optimum.exporters.onnx.convert.export_tensorflow

< >

( model: TFPreTrainedModel config: OnnxConfig opset: int output: Path ) Tuple[List[str], List[str]]

引數

  • model (TFPreTrainedModel) — 要匯出的模型。
  • config (OnnxConfig) — 與匯出模型關聯的 ONNX 配置。
  • opset (int) — 要使用的 ONNX 運算子集的版本。
  • output (Path) — 儲存匯出 ONNX 模型的目錄。
  • device (Optional[str], defaults to "cpu") — ONNX 模型將匯出的裝置。可以是 cpucuda。CUDA 裝置上的匯出僅支援 PyTorch。

返回

Tuple[List[str], List[str]]

一個元組,包含模型輸入的有序列表和 ONNX 配置中的命名輸出。

將 TensorFlow 模型匯出到 ONNX 中間表示。

實用函式

optimum.exporters.utils.check_dummy_inputs_are_allowed

< >

( model: typing.Union[ForwardRef('PreTrainedModel'), ForwardRef('TFPreTrainedModel'), ForwardRef('ModelMixin')] dummy_input_names: typing.Iterable[str] )

引數

  • model (Union[transformers.PreTrainedModel, transformers.TFPreTrainedModel]) — 模型例項。
  • model_inputs (Iterable[str]) — 模型輸入名稱。

檢查 ONNX 配置中的虛擬輸入是否是 model 允許輸入的子集。

optimum.exporters.onnx.validate_model_outputs

< >

( config: OnnxConfig reference_model: typing.Union[ForwardRef('PreTrainedModel'), ForwardRef('TFPreTrainedModel'), ForwardRef('ModelMixin')] onnx_model: Path onnx_named_outputs: typing.List[str] atol: typing.Optional[float] = None input_shapes: typing.Optional[typing.Dict] = None device: str = 'cpu' use_subprocess: typing.Optional[bool] = True model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None )

引數

  • config (~OnnxConfig — 用於匯出模型的配置。
  • reference_model (~PreTrainedModel~TFPreTrainedModel) — 用於匯出的模型。
  • onnx_model (Path) — 匯出模型的路徑。
  • onnx_named_outputs (List[str]) — 要檢查的輸出名稱。
  • atol (Optional[float], defaults to None) — 參考模型和匯出模型之間輸出差異的絕對容差。
  • input_shapes (Optional[Dict], defaults to None) — 如果指定,允許使用特定形狀來驗證 ONNX 模型。
  • device (str, defaults to "cpu") — ONNX 模型將驗證的裝置。可以是 cpucuda。CUDA 裝置上的驗證僅支援 PyTorch。
  • use_subprocess (Optional[bool], defaults to True) — 在子程序中啟動每個匯出模型的驗證。
  • model_kwargs (Optional[Dict[str, Any]], defaults to None) — 實驗性用法:在匯出和驗證期間傳遞給模型的關鍵字引數。

引發

ValueError

  • ValueError — 如果參考模型和匯出模型之間的輸出形狀或值不匹配。

透過檢查參考模型和匯出模型之間的輸出是否匹配來驗證匯出。

< > 在 GitHub 上更新

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