mlflow.onnx

The mlflow.onnx 模块提供用于以 MLflow 模型格式记录和加载 ONNX 模型的 API。此模块导出具有以下样式的 MLflow 模型

ONNX(原生)格式

这是主要格式,可以作为 ONNX 模型对象加载回来。

mlflow.pyfunc

Produced for use by generic pyfunc-based deployment tools and batch inference.

mlflow.onnx.get_default_conda_env()[source]
返回

调用 save_model()log_model() 生成的 MLflow 模型的默认 Conda 环境。

mlflow.onnx.get_default_pip_requirements()[source]
返回

此格式生成的 MLflow 模型的默认 pip 要求列表。调用 save_model()log_model() 生成的 pip 环境至少包含这些要求。

mlflow.onnx.load_model(model_uri, dst_path=None)[source]

从本地文件或运行中加载 ONNX 模型。

参数
  • model_uri

    The location, in URI format, of the MLflow model, for example

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    有关支持的 URI 方案的更多信息,请参阅 Artifacts 文档

  • dst_path – The local filesystem path to which to download the model artifact. This directory must already exist. If unspecified, a local output path will be created.

返回

一个 ONNX 模型实例。

mlflow.onnx.log_model(onnx_model, artifact_path: str | None = None, conda_env=None, code_paths=None, registered_model_name=None, signature: mlflow.models.signature.ModelSignature = None, input_example: Union[pandas.core.frame.DataFrame, numpy.ndarray, dict, list, csr_matrix, csc_matrix, str, bytes, tuple] = None, await_registration_for=300, pip_requirements=None, extra_pip_requirements=None, onnx_execution_providers=None, onnx_session_options=None, metadata=None, save_as_external_data=True, name: str | None = None, params: dict[str, typing.Any] | None = None, tags: dict[str, typing.Any] | None = None, model_type: str | None = None, step: int = 0, model_id: str | None = None, **kwargs)[source]

将 ONNX 模型记录为当前运行的 MLflow artifact。

参数
  • onnx_model – 要保存的 ONNX 模型。

  • artifact_path – Deprecated. Use name instead.

  • conda_env

    Conda 环境的字典表示形式或 conda 环境 yaml 文件的路径。如果提供,这将描述模型应在其运行的环境。至少,它应该指定 get_default_conda_env() 中包含的依赖项。如果为 None,则会向模型添加一个由 mlflow.models.infer_pip_requirements() 推断的 pip 要求。如果要求推断失败,它将回退到使用 get_default_pip_requirements。来自 conda_env 的 pip 要求将被写入 pip requirements.txt 文件,完整的 conda 环境将被写入 conda.yaml。下面是 conda 环境的示例字典表示形式

    {
        "name": "mlflow-env",
        "channels": ["conda-forge"],
        "dependencies": [
            "python=3.8.15",
            {
                "pip": [
                    "onnx==x.y.z"
                ],
            },
        ],
    }
    

  • code_paths

    A list of local filesystem paths to Python file dependencies (or directories containing file dependencies). These files are prepended to the system path when the model is loaded. Files declared as dependencies for a given model should have relative imports declared from a common root path if multiple files are defined with import dependencies between them to avoid import errors when loading the model.

    For a detailed explanation of code_paths functionality, recommended usage patterns and limitations, see the code_paths usage guide.

  • registered_model_name – 如果提供,则在 registered_model_name 下创建一个模型版本,如果给定名称的注册模型不存在,也会创建该注册模型。

  • signature

    ModelSignature 描述了模型输入和输出 Schema。模型签名可以从具有有效模型输入的​​数据集(例如,省略目标列的训练数据集)和有效模型输出的​​数据集(例如,在训练数据集上生成的模型预测)中推断,例如:

    from mlflow.models import infer_signature
    
    train = df.drop_column("target_label")
    predictions = ...  # compute model predictions
    signature = infer_signature(train, predictions)
    

  • input_example – 一个或多个有效的模型输入实例。输入示例用作要馈送给模型的数据的提示。它将被转换为 Pandas DataFrame,然后使用 Pandas 的面向拆分(split-oriented)格式序列化为 json,或者转换为 numpy 数组,其中示例将通过转换为列表来序列化为 json。字节将进行 base64 编码。当 signature 参数为 None 时,输入示例用于推断模型签名。

  • await_registration_for – 等待模型版本完成创建并处于 READY 状态的秒数。默认情况下,函数等待五分钟。指定 0 或 None 可跳过等待。

  • pip_requirements – 要么是 pip 要求字符串的可迭代对象(例如 ["onnx", "-r requirements.txt", "-c constraints.txt"])或本地文件系统上的 pip 要求文件的字符串路径(例如 "requirements.txt")。如果提供,这将描述模型应在其运行的环境。如果为 None,则默认要求列表由 mlflow.models.infer_pip_requirements() 从当前软件环境中推断。如果要求推断失败,它将回退到使用 get_default_pip_requirements。要求和约束都会被自动解析并分别写入 requirements.txtconstraints.txt 文件,并作为模型的一部分存储。要求也会被写入模型的 conda 环境(conda.yaml)文件的 pip 部分。

  • extra_pip_requirements

    要么是 pip 要求字符串的可迭代对象(例如 ["pandas", "-r requirements.txt", "-c constraints.txt"])或本地文件系统上的 pip 要求文件的字符串路径(例如 "requirements.txt")。如果提供,这将描述附加到根据用户的当前软件环境自动生成的默认 pip 要求集中的其他 pip 要求。要求和约束都会被自动解析并分别写入 requirements.txtconstraints.txt 文件,并作为模型的一部分存储。要求也会被写入模型的 conda 环境(conda.yaml)文件的 pip 部分。

    警告

    以下参数不能同时指定

    • conda_env

    • pip_requirements

    • extra_pip_requirements

    此示例演示了如何使用 pip_requirementsextra_pip_requirements 指定 pip requirements。

  • onnx_execution_providers – 定义 onnxruntime 执行提供程序的字符串列表。默认为示例:[‘CUDAExecutionProvider’, ‘CPUExecutionProvider’] 这优先使用 GPU 而不是 CPU。有关更多说明,请参阅 onnxruntime API:https://runtime.onnx.org.cn/docs/execution-providers/

  • onnx_session_options – 要传递给 onnxruntime.InferenceSession 的选项字典。例如:{ 'graph_optimization_level': 99, 'intra_op_num_threads': 1, 'inter_op_num_threads': 1, 'execution_mode': 'sequential' } ‘execution_mode’ 可以设置为 ‘sequential’ 或 ‘parallel’。有关更多说明,请参阅 onnxruntime API:https://runtime.onnx.org.cn/docs/api/python/api_summary.html#sessionoptions

  • metadata – 传递给模型并存储在 MLmodel 文件中的自定义元数据字典。

  • save_as_external_data – 将张量保存到外部文件。

  • name – 模型名称。

  • params – 要与模型一起记录的参数字典。

  • tags – 要与模型一起记录的标签字典。

  • model_type – 模型的类型。

  • step – 记录模型输出和指标的步骤

  • model_id – 模型的 ID。

  • kwargs – {{ kwargs }}

返回

一个 ModelInfo 实例,其中包含已记录模型的元数据。

mlflow.onnx.save_model(onnx_model, path, conda_env=None, code_paths=None, mlflow_model=None, signature: mlflow.models.signature.ModelSignature = None, input_example: Union[pandas.core.frame.DataFrame, numpy.ndarray, dict, list, csr_matrix, csc_matrix, str, bytes, tuple] = None, pip_requirements=None, extra_pip_requirements=None, onnx_execution_providers=None, onnx_session_options=None, metadata=None, save_as_external_data=True, **kwargs)[source]

将 ONNX 模型保存到本地文件系统上的路径。

参数
  • onnx_model – 要保存的 ONNX 模型。

  • path – 要保存模型的本地路径。

  • conda_env

    Conda 环境的字典表示形式或 conda 环境 yaml 文件的路径。如果提供,这将描述模型应在其运行的环境。至少,它应该指定 get_default_conda_env() 中包含的依赖项。如果为 None,则会向模型添加一个由 mlflow.models.infer_pip_requirements() 推断的 pip 要求。如果要求推断失败,它将回退到使用 get_default_pip_requirements。来自 conda_env 的 pip 要求将被写入 pip requirements.txt 文件,完整的 conda 环境将被写入 conda.yaml。下面是 conda 环境的示例字典表示形式

    {
        "name": "mlflow-env",
        "channels": ["conda-forge"],
        "dependencies": [
            "python=3.8.15",
            {
                "pip": [
                    "onnx==x.y.z"
                ],
            },
        ],
    }
    

  • code_paths

    A list of local filesystem paths to Python file dependencies (or directories containing file dependencies). These files are prepended to the system path when the model is loaded. Files declared as dependencies for a given model should have relative imports declared from a common root path if multiple files are defined with import dependencies between them to avoid import errors when loading the model.

    For a detailed explanation of code_paths functionality, recommended usage patterns and limitations, see the code_paths usage guide.

  • mlflow_model – 要添加此 flavor 的 mlflow.models.Model

  • signature

    ModelSignature 描述了模型输入和输出 Schema。模型签名可以从具有有效模型输入的​​数据集(例如,省略目标列的训练数据集)和有效模型输出的​​数据集(例如,在训练数据集上生成的模型预测)中推断,例如:

    from mlflow.models import infer_signature
    
    train = df.drop_column("target_label")
    predictions = ...  # compute model predictions
    signature = infer_signature(train, predictions)
    

  • input_example – 一个或多个有效的模型输入实例。输入示例用作要馈送给模型的数据的提示。它将被转换为 Pandas DataFrame,然后使用 Pandas 的面向拆分(split-oriented)格式序列化为 json,或者转换为 numpy 数组,其中示例将通过转换为列表来序列化为 json。字节将进行 base64 编码。当 signature 参数为 None 时,输入示例用于推断模型签名。

  • pip_requirements – 要么是 pip 要求字符串的可迭代对象(例如 ["onnx", "-r requirements.txt", "-c constraints.txt"])或本地文件系统上的 pip 要求文件的字符串路径(例如 "requirements.txt")。如果提供,这将描述模型应在其运行的环境。如果为 None,则默认要求列表由 mlflow.models.infer_pip_requirements() 从当前软件环境中推断。如果要求推断失败,它将回退到使用 get_default_pip_requirements。要求和约束都会被自动解析并分别写入 requirements.txtconstraints.txt 文件,并作为模型的一部分存储。要求也会被写入模型的 conda 环境(conda.yaml)文件的 pip 部分。

  • extra_pip_requirements

    要么是 pip 要求字符串的可迭代对象(例如 ["pandas", "-r requirements.txt", "-c constraints.txt"])或本地文件系统上的 pip 要求文件的字符串路径(例如 "requirements.txt")。如果提供,这将描述附加到根据用户的当前软件环境自动生成的默认 pip 要求集中的其他 pip 要求。要求和约束都会被自动解析并分别写入 requirements.txtconstraints.txt 文件,并作为模型的一部分存储。要求也会被写入模型的 conda 环境(conda.yaml)文件的 pip 部分。

    警告

    以下参数不能同时指定

    • conda_env

    • pip_requirements

    • extra_pip_requirements

    此示例演示了如何使用 pip_requirementsextra_pip_requirements 指定 pip requirements。

  • onnx_execution_providers – 定义 onnxruntime 执行提供程序的字符串列表。默认为示例:['CUDAExecutionProvider', 'CPUExecutionProvider'] 这优先使用 GPU 而不是 CPU。有关更多说明,请参阅 onnxruntime API:https://runtime.onnx.org.cn/docs/execution-providers/

  • onnx_session_options – 要传递给 onnxruntime.InferenceSession 的选项字典。例如:{ 'graph_optimization_level': 99, 'intra_op_num_threads': 1, 'inter_op_num_threads': 1, 'execution_mode': 'sequential' } ‘execution_mode’ 可以设置为 ‘sequential’ 或 ‘parallel’。有关更多说明,请参阅 onnxruntime API:https://runtime.onnx.org.cn/docs/api/python/api_summary.html#sessionoptions

  • metadata – 传递给模型并存储在 MLmodel 文件中的自定义元数据字典。

  • save_as_external_data – 将张量保存到外部文件。

  • kwargs – {{ kwargs }}