Amazon Elastic Inference添加支持PyTorch机器学习模型

AWS现在让用户可以在机器学习服务Amazon SageMaker以及运算服务Amazon EC2中,以Amazon Elastic Inference服务运用PyTorch模型进行预测,而由于Elastic Inference可让用户附加适当的GPU计算资源,不仅能够用GPU加速预测工作,付出的成本也低于使用独立GPU执行实例。

PyTorch是脸书在2018年底发布的深度学习框架,由于其采用动态运图像运算(Dynamic Computational Graph),因此可让开发者简单地运用指令式程序设计方法,以Python开发深度学习模型,AWS提到,使用PyTorch这类框架开发深度学习应用程序,预测阶段可占全部计算资源的90%。

要为执行预测工作,选择适当的执行实例规格并不简单,因为深度学习模型需要不同数量的GPU、CPU和内存资源。使用独立GPU执行实例通常过于浪费,虽然速度很快,但因为独立GPU执行实例通常为模型训练工作设计,而大多数预测工作通常都只会是单一输入,即便是尖峰负载也不会用上所有GPU容量,因此可能会造成资源浪费。

Amazon Elastic Inference可让用户在SageMaker和EC2执行实例,附上适当的GPU资源来加速预测工作。因此用户可以选择应用程序需要的CPU和内存规格的执行实例,并且额外附加适当的GPU容量,以更有效的方式使用资源,并且降低预测成本。Amazon Elastic Inference服务之前只支持TensorFlow和Apache MXNet框架,而现在还额外多支持PyTorch。

要把PyTorch用在Elastic Inference中,必需要把模型先转换成TorchScript格式。TorchScript是可将PyTorch程序代码转换成串行化与优化模型的方法,AWS表示,因为PyTorch使用动态运图像运算大幅简化模型开发的过程,但是这种方法同时也增加模型部署的困难,在生产环境中,模型以静态图(Static Graph)表示较佳,不只使模型可以在非Python环境中使用,而且还可以优化其性能和内存使用量。

TorchScript便可编译PyTorch模型,使其以非Python的方式表示,能在各种环境中执行,TorchScript也会对模型进行即时(Just-In-Time)图优化,使编译过的模型比起原本的PyTorch模型性能还要好。

AWS比较附加Elastic Inference、独立GPU与纯CPU三类型执行实例的延迟与成本。CPU执行实例性能较差,预测延迟最长。独立GPU执行实例的预测性能则最好,速度约是CPU执行实例的7倍。而有使用Elastic Inference的CPU执行实例,因为获得GPU的加速,虽然预测速度仍然比独立GPU执行实例慢,但是比纯CPU执行实例快了近3倍。

而在成本上,纯CPU执行实例的每次预测成本最高,AWS解释,虽然CPU执行实例每小时的成本最低,但因为每次预测的时间较长,反使得单次成本较高,而每次预测价格最低的则是Elastic Inference,还可灵活地分离主机实体和推理加速硬件,组合出最适合应用程序的计算资源。