使用 Neo 优化模型性能 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Neo 优化模型性能

Neo 是 Amazon SageMaker 的一项功能,使机器学习模型训练一次即可在云和边缘站点中的任何位置运行。

如果您是 SageMaker Neo 的第一个用户,我们建议您查看Edge 设备入门以获取有关如何编译和部署到边缘设备的分步说明。

什么是 SageMaker Neo?

通常,优化机器学习模型以在多个平台上进行推理是困难的,因为开发人员需要针对每个平台的特定硬件和软件配置手动优化模型。如果您想要针对指定工作负载获得最佳性能,则需要了解硬件架构、指令集、内存访问模式和输入数据形状以及其他因素。对于传统软件开发,编译器和分析器简化了流程。对于机器学习,大多数工具特定于框架或硬件。这需要您手动完成不可靠的非生产性试错流程。

Neo 基于 Ambarella、ARM、Intel、Nvidia、NXP、Qualcomm、Texas Instruments 和 Xilinx 自动优化 Gluon、Keras、MXNet、PyTorch、TensorFlow、TensorFlow-Lite 和 ONNX 模型。Neo 已通过跨框架的 Model Zoo 中可用的计算机视觉模型进行了测试。SageMaker Neo 支持两个主要平台的编译和部署:云实例(包括 Inferentia)和边缘设备。

有关可部署到的支持框架和云实例类型的更多信息,请参阅支持的实例类型和框架构适用于云实例。

有关受支持的框架、边缘设备、操作系统、芯片架构和 SageMaker Neo 测试的边缘设备的常见机器学习模型的更多信息,请参阅支持的框架、设备、系统和架构对边缘设备的。

工作方式

Neo 包含一个编译器和一个运行时。首先,Neo 编译 API 读取从不同框架导出的模型。它将框架特定的功能和操作转换为与框架无关的中间表示形式。接着,它会执行一系列优化。然后,它为优化操作生成二进制代码,将代码写入共享对象库,然后将模型定义和参数保存到单独的文件中。Neo 还为加载和执行所编译模型的各个平台提供运行时。

您可以通过 SageMaker 控制台创建 Neo 编译作业,Amazon Command Line Interface(Amazon CLI)、Python 笔记本或 SageMaker SDK。有关如何编译模型的信息,请参阅使用 Neo 编译模型. 使用几个 CLI 命令、一次 API 调用或者几次单击,您可以为所选平台转换模型。您可以将模型部署到 SageMaker 终端节点或Amazon IoT Greengrass快速设备。

Neo 可以使用 FP32 或量化为 INT8 或 FP16 位宽度的参数来优化模型。

Neo 示例笔记本

有关使用 SageMaker Neo 训练、编译、优化和部署机器学习模型以进行推理的示例笔记本,请参阅:

有关如何在 SageMaker 中运行这些示例笔记本的说明,请参阅示例笔记本. 如果您需要有关创建笔记本实例来运行这些示例的说明,请参阅使用 Amazon SageMaker 笔记本实例. 要导航到笔记本实例中的相关示例,请选择Amazon SageMaker 示例选项卡来查看所有 SageMaker 示例的列表。要打开笔记本,请选择其 Use (使用) 选项卡,然后选择 Create copy (创建副本)