使用 Neo 优化模型性能 - Amazon SageMaker

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

使用 Neo 优化模型性能

Neo SageMaker 是 Amazon 的一项功能,它使机器学习模型能够训练一次,然后在云端和边缘的任何地方运行。

如果您是首次使用 SageMaker Neo,我们建议您查看 “边缘设备入门” 部分,获取 step-by-step 有关如何编译和部署到边缘设备的说明。

什么是 SageMaker Neo?

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

Neo 会自动优化 Gluon、Keras MXNet、 PyTorch、 TensorFlow、、、 TensorFlow-Lite 以及基于安霸、英特尔、英伟达、高通、德州仪器和赛灵思处理器的安卓ARM、Linux 和 Windows 机器上的推理ONNX模型。NXPNeo 使用模型动物园中可用的跨框架计算机视觉模型进行了测试。 SageMaker Neo 支持两个主要平台的编译和部署:云实例(包括 Inferentia)和边缘设备。

有关支持的框架和您可以部署到的云实例类型的更多信息,请参阅 支持的实例类型和框架以了解云实例。

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

工作方式

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

Neo 是如何运作的 SageMaker。

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

Neo 可以利用参数来优化模型,也可以将参数量化为位宽INT8或FP16位宽。FP32