发布于: Oct 10, 2022
在大多数情况下,高达九成的机器学习应用开发与运行开支源自推理阶段;换句话说,我们需要一套性能强大、经济高效的机器学习推理基础设施。之所以存在如此明确的区分,是因为构建与训练作业在执行频繁方面相对更低,您只需要在构建与训练期间支付成本;但端点实例却一直在运行,意味着推理设施将持续产生运营成本。因此,能否选择正确的托管方式与实例类型将对机器学习项目的总体成本产生决定性的影响。
在模型部署方面,从用例出发逆推需求最为重要。您预计的运行频率如何?是否要求应用程序处理实时流量,并对客户做出实时响应?您是否针对同一用例面向不同数据子集训练出多套模型?您的预计流量会产生波动吗?您的用例对于推理延迟是否敏感?
Amazon SageMaker 为每一种情况提供了对应的托管选项。如果您的推理数据为批量交付,则 Amazon SageMaker 是一种理想的高成本效益方式,可随时启动及撤销全托管基础设施以实现灵活的预测能力。如果您已经针对同一用例训练出多套模型,则多模端点能够为按用户或其他细分条件训练而成的机器学习模型带来更优运营成本。关于更多详细信息,请参阅使用 Amazon SageMaker 多模端点节约推理成本。
在确定了模型的托管方式之后,大家还需要通过 确定适当的实例类型与集群大小。您可以在活动端点上启用自动规模伸缩功能,也可以禁用自动规模伸缩,借此避免过度配置或为非必要容量支付额外费用。另外需要注意的是,在 GPU 上具有最高训练效率的算法,也许无法在 GPU 实例上获得最好的推理计算效果。总而言之,负载测试已经成为确定最经济解决方案当中的一项最佳实践。以下流程图,对整个决策过程做出了总结。
Amazon SageMaker 为各个实例家族提供更多细分选项,确保您能够从中选择最适合推理的通用型实例、计算优化型实例以及 GPU 驱动型实例。各个家族还针对不同的应用场景做出优化,当然其中某些实例类型可能并不适用于运行推理作业。例如,Amazon Inf1 实例强调高吞吐量与低延迟,且能够实现云端运行状态下的最低单次推理成本。G4 实例则属于单次推理成本最低的 GPU 型实例,能够带来更高性能、更低延迟与理想的推理成本。而 P3 实例专门针对训练作业进行优化,在设计中充分考虑到大型分布式训练任务的需求,因此虽然能以最快速度完成训练,但其资源却无法在推理作业中得到充分发挥。
另一种重要的推理成本降低方式是使用 Elastic Inference,它能够将推理作业成本降低达75%。考虑到诸多具体因素与影响变量,我们往往很难准确判断最适合的实例类型与资源规模。例如,对于较大的模型,CPU 上的严重推理延迟可能无法满足在线类应用场景的需求;成熟的 GPU 实例虽然速度更快,但可能难以提供符合要求的成本预期。另外,内存与 CPU 等资源对于应用程序整体性能的影响,可能比推理本身更为重要。借助 Elastic Inference,您可以将适当数量的 CPU 推理加速资源挂载至任意 Amazon 计算实例之上。这项功能适用于 Amazon SageMaker notebook 实例与端点,能够为内置算法及深度学习环境提供加速增强。以此为基础,您可以更轻松地为自己的实际应用选择最具性价比的实例选项。例如 ml.c5.large 实例加 eia1.medium 加速选项的组合在使用成本方面比 ml.p2.xlarge 低约75%,但性能差距却仅为10%到15%。关于更多详细信息,请参阅 Amazon Elastic Inference – GPU 支持型深度学习推理加速方案。
再有,您也可以要必要时使用 Auto Scaling for Amazon SageMaker,自动向端点添加或删除容量或加速实例。在这项功能的帮助下,您的终端端点可以根据实际负载(由策略中预定义的 Amazon CloudWatch 指标及目标值确定)对实例数量自动进行增加或减少,保证管理员不必持续监控推理负载与响应结果、并手动更改端点配置。关于更多详细信息,请参阅 Amazon Auto Scaling。
相关文章