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,還可靈活地分離主機實體和推理加速硬體,組合出最適合應用程式的運算資源。


Advertisement

更多 iThome相關內容