0 / 0
Go back to the English version of the documentation
部署覆盖为 ONNX 格式的模型
Last updated: 2024年12月19日
部署覆盖为 ONNX 格式的模型

您可以部署和推理以 PyTorch 或 Tensorflow 等不同模型格式保存并转换为开放神经网络交换(ONNX)格式的机器学习模型。 ONNX 是一种表示深度学习模型的开源格式。 开发人员可以使用 ONNX 格式在 PyTorch 或 TensorFlow, 等框架中训练模型,然后将其导出到另一个具有不同性能特征的环境中运行。 ONNX 格式提供了一个功能强大的解决方案,可将 maching 学习模型转换为 ONNX 格式,并使用 ONNX 运行时执行推理。

将模型转换为 ONNX 运行时的优势

将模型转换为 ONNX 运行时具有多种优势,尤其是在机器学习和深度学习应用中。 将模型转换为 ONNX 运行时的一些优势如下:

  • 跨平台兼容性 :ONNX 提供了表示机器学习模型的标准格式,这使得在 PyTorch 或 Tensorflow 等不同框架间部署模型变得更加容易。 您可以在一个框架中训练模型,然后将其部署到另一个支持 ONNX 运行时的框架中。

  • 提高性能 :ONNX 运行时通过应用各种针对硬件和软件的优化(如图形优化)来优化推理模型。 此外,它还支持在 CPU 和 GPU 等不同硬件上执行,确保有效利用资源。

  • 互操作性 :ONNX 提供了在一个框架中训练 PyTorch, TensorFlow, 和 scikit-learn 等模型,然后将其输出到另一个环境中运行的方法,从而简化了工作流程。 它打破了不同深度学习框架之间的壁垒,让开发人员能够利用不同库的优势,而不会被锁定在单一的生态系统中。

支持的转换框架

您可以将使用以下框架的机器学习模型转换为 ONNX 格式:

  1. PyTorch
  2. TensorFlow

将 PyTorch 模型转换为 ONNX 格式

请按照以下步骤将 PyTorch 中训练好的模型转换为 ONNX 格式:

  1. 导入库 :首先导入必要的库,如用于运行模型的 onnxruntime 、用于 PyTorch 功能的 torch 以及应用程序所需的其他库。

  2. 创建或下载 PyTorch 模型您可以使用自己的数据集创建 PyTorch 模型,也可以使用外部开源模型库(如 Hugging Face)提供的模型。

  3. 将 PyTorch 模型转换为 ONNX 格式 :将 PyTorch 模型转换为 ONNX 格式:

    a. 准备模型使用 model.eval() 函数确保 PyTorch 模型处于评估模式。 您可能需要一个虚拟输入张量来匹配模型的形状。

    b. 导出模型使用 torch.onnx.export 函数将模型转换为 ONNX 格式。

  4. 验证转换 :转换模型后,使用 onnx 库验证模型是否按预期运行。

将 TensorFlow 模型转换为 ONNX 格式

请按照以下步骤将 TensorFlow 模型转换为 ONNX 格式:

  1. 导入库 :首先导入必要的库,如 tf2onnx 以方便将 TensorFlow 模型转换为 ONNX,以及应用所需的其他库。

  2. 下载 TensorFlow 模型 :您必须下载外部创建的 TensorFlow 模型和用于训练模型的数据。

  3. 将 TensorFlow 模型转换为 ONNX 格式 :使用 tf2onnx.convert 命令将以 SavedModel 格式创建的 TensorFlow 模型转换为 ONNX 格式。 如果要转换 TensorFlow Lite 模型,请使用 --tflite 标志而不是 --saved-model 标志。

  4. 验证转换 :转换模型后,使用 onnx 库验证模型是否按预期运行。

其他注意事项

以下是将 TensorFlow 模型转换为 ONNX 格式的一些额外注意事项:

  • 动态轴 :动态轴可用于模型处理输入形状的变化,如动态批量大小或序列长度,这对在输入尺寸可能变化的应用中部署模型非常有用。 如果模型要处理可变的输入大小,如动态批量大小或序列长度,则使用动态轴。

    动态轴还可以减少内存开销,因为它们可以与多个输入和输出一起使用,动态地进行调整,而无需重新导出模型。 您可以在 PyTorch 或 TensorFlow 中导出模型时指定动态轴。

  • 操作集版本 :ONNX 的操作集版本决定了模型支持的操作集及其规格。 这是模型转换和部署过程中的一个关键因素。

    不同的 ONNX 运行时和框架支持特定的 opset 版本。 旧版本的 opset 可能缺少新版本中的功能或优化。 模型的 opset 版本与 ONNX 运行时不兼容会导致推理过程中出现错误。 您必须确保目标运行时支持您选择的 ONNX 操作集版本。

部署转换为 ONNX 格式的模型

使用 onnxruntime_opset_19 软件规范来部署转换为 ONNX 格式的机器学习模型。 更多信息,请参阅支持的软件规格

要从用户界面部署转换为 ONNX 格式的模型,请按照以下步骤操作:

  1. 在部署空间中,转到 " 资产 "选项卡。

  2. 在资产列表中找到模型,单击菜单图标菜单图标,然后选择部署

  3. 为您的模型选择部署类型。 可选择在线部署或批量部署选项。

  4. 输入部署的名称,并可选择输入服务名称、描述和标记。

    注:
    • 使用 "服务名称 "字段指定部署的名称,而不是部署 ID。
    • 服务名称在名称空间内必须是唯一的。
    • 服务名称必须只包含这些字符: a-z,0-9,_],长度不得超过 36 个字符。
    • 在定期使用自定义基础模型的工作流中,考虑在每次部署时为模型分配相同的服务名称。 这样,在删除并重新部署模型后,就可以在代码中继续使用相同的端点。

  5. 为您的机型选择硬件规格。

  6. 为您的机型选择配置和软件规格。

  7. 单击创建

测试模型

请按照以下步骤测试转换为 ONNX 格式的已部署模型:

  1. 在部署空间中,打开 " 部署 "选项卡并单击部署名称。
  2. 单击 "测试 "选项卡输入提示文本,并从部署的资产中获取响应。
  3. 根据您部署的资产类型,以下列格式之一输入测试数据:
    • 文本 :输入文本输入数据,生成文本块作为输出。
    • 文本 :输入文本输入数据,生成文本流作为输出。
    • JSON :输入 JSON 输入数据,生成 JSON 格式的输出。
  4. 单击 " 生成" ,根据提示获取结果。

样本笔记本

以下示例笔记本演示了如何使用 Python 客户端库部署从 PyTorch 或 TensorFlow 转换为 ONNX 格式的机器学习模型:

样本笔记本
Notebook 框架 描述
将 ONNX 神经网络从固定轴转换为动态轴,并与 watsonx 一起使用 ONNX 设置环境
创建并导出基本 ONNX 模型
将模型从固定轴转换为动态轴
持久保存转换后的 ONNX 模型
部署并对 ONNX 模型进行评分
清理
总结和下一步工作
用 watsonx 使用从 PyTorch 转换而来的 ONNX 模型 ONNX 使用数据集创建 PyTorch 模型。
将 PyTorch 模型转换为 ONNX 格式 将转换后的模型保存在
Watson Machine Learning资源库中。
使用客户端库部署在线评分模型。
使用客户机库对样本记录进行评分。
使用从 TensorFlow 转换而来的 ONNX 模型,用 watsonx 识别手写数字 ONNX 下载外部训练的 TensorFlow 模型和数据集。
将 TensorFlow 模型转换为 ONNX 格式 将转换后的模型保存在
Watson Machine Learning资源库中。
使用客户端库部署在线评分模型。
使用客户机库对样本记录进行评分。

父主题: 部署机器学习资产

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more