本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 SageMaker Neo 优化模型性能
Neo 是 Amazon SageMaker AI 的一项功能,它使机器学习模型能够训练一次,然后在云端和边缘的任何地方运行。
如果您是首次使用 SageMaker Neo,我们建议您查看 “边缘设备入门” 部分,获取 step-by-step有关如何编译和部署到边缘设备的说明。
什么是 SageMaker Neo?
通常,优化机器学习模型以在多个平台上进行推理很困难,因为开发人员需要针对每个平台的特定硬件和软件配置手动优化模型。如果您想要为给定的工作负载获得最佳性能,需要了解硬件架构、指令集、内存访问模式和输入数据形状及其他因素。对于传统软件开发,编译器和分析器简化了流程。对于机器学习,大多数工具特定于框架或硬件。这迫使您进入不可靠且效率低下的手动 trial-and-error流程。
Neo 会自动优化 Gluon、Keras、 MXNet、、 PyTorch TensorFlow、 TensorFlow-Lite 和 ONNX 模型,以便在基于安霸、ARM、英特尔、英伟达、恩智浦、高通、德州仪器和赛灵思处理器的安卓、Linux和Windows计算机上进行推理。Neo 使用模型动物园中可用的跨框架计算机视觉模型进行了测试。 SageMaker Neo 支持两个主要平台的编译和部署:云实例(包括 Inferentia)和边缘设备。
有关支持的框架和您可以部署到的云实例类型的更多信息,请参阅 支持的实例类型和框架以了解云实例。
有关支持 SageMaker AI Neo 针对边缘设备测试的框架、边缘设备、操作系统、芯片架构和常见机器学习模型的支持的框架、设备、系统和架构更多信息,请参阅边缘设备。
工作方式
Neo 包含一个编译器和一个运行时。首先,Neo 编译 API 读取从不同框架导出的模型。它将框架特定的功能和操作转换为与框架无关的中间表示形式。接着,它会执行一系列优化。然后,它为优化操作生成二进制代码,将代码写入共享对象库,然后将模型定义和参数保存到单独的文件中。Neo 还为加载和执行所编译模型的各个平台提供运行时。
![Neo 在 SageMaker 人工智能中的工作原理。](images/neo/neo_how_it_works.png)
您可以通过 SageMaker AI 控制台、 AWS Command Line Interface (AWS CLI)、Python 笔记本或 A SageMaker I SDK 创建 Neo 编译作业。有关如何编译模型的信息,请参阅。使用 Neo 进行模型编译使用几个 CLI 命令、一次 API 调用或者几次单击,您可以为所选平台转换模型。您可以将模型快速部署到 A SageMaker I 端点或 AWS IoT Greengrass 设备上。
Neo 可以利用参数来优化模型,也可以将参数量化为位宽 INT8 或 FP16位宽。 FP32