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

使用 Neo 优化模型性能

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

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

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

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