PyTorch はオープンソースの深層学習フレームワークであり、機械学習モデルの開発や本番環境へのデプロイを容易にします。PyTorch では、開発者は本番ステージでパフォーマンスを犠牲にすることなく、プロトタイプステージでモデルの実行を迅速に繰り返すことができます。PyTorch の TorchScript を使用することで、開発者は、即座に計算を行うことで開発を容易にする eager モードと、計算グラフを作成することで本番環境での効率的な実行を実現する graph モードの間をシームレスに移行できます。PyTorch は動的計算グラフをサポートしているため、直感的に作業できてデバッグを簡単に行える柔軟な構造を備えています。また、PyTorch では分散型トレーニング、Python との密接な統合、ツールとライブラリの充実したエコシステムも提供しており、この点で研究者やエンジニアに人気があります。
Amazon SageMaker を使用して AWS で PyTorch の使用を開始できます。このサービスは、フルマネージド型の機械学習サービスで、PyTorch モデルを簡単かつコスト効率よく、そして大規模に構築、トレーニング、デプロイできます。インフラストラクチャを自分で管理する場合は、AWS 深層学習 AMI または AWS Deep Learning Containers を使用できます。この 2 つには PyTorch が事前にインストールされているため、機械学習のカスタム環境をすばやくデプロイできます。
利点
使いやすい
Python との密接な統合により、モデルを簡単に開発およびデバッグできます。モデルは、PyTorch のモデル提供ライブラリである TorchServe を使用して本番環境に簡単にデプロイできます。TorchScript を使用して、一括モード (反復モデル開発に使用) とグラフモード (モデルの構築後に効率的なトレーニングに使用) を簡単に切り替えることができます。
高いパフォーマンスを発揮するように構築
強力な GPU インスタンスのクラスター、耐障害性と伸縮性を備えた TorchElastic などのライブラリを利用する分散型のトレーニングバックエンドを使用してモデルをすばやくトレーニングすることで、迅速に反復し、モデルを市場に投入するまでの時間を短縮できます。
充実したエコシステム
torchvision、torchaudio、torchtext、torchelastic、torch_xla などのツールとモデルで構成される充実したエコシステムによって PyTorch を拡張し、コンピュータビジョン、自然言語処理、プライバシーを保護した ML、モデルの解釈可能性などでの開発をサポートします。
仕組み
AWS では PyTorch 向けのオープンソースを提供
TorchServe
TorchServe は、PyTorch 向けのオープンソースのモデル提供フレームワークで、カスタムコードを記述しなくても、トレーニング済みの PyTorch モデルを簡単かつ効率的に、大規模にデプロイできます。TorchServe は軽量かつ低レイテンシーであるため、モデルをデプロイしてパフォーマンスの高い推論を実現できます。オブジェクト検出、テキスト分類など、最も一般的なアプリケーション向けのデフォルトのハンドラーが用意されているため、モデルをデプロイするときにカスタムコードを記述する必要がありません。TorchServe には、マルチモデル配信、A/B テスト用のモデルのバージョン管理、モニタリング用のメトリクス、アプリケーション統合用の RESTful エンドポイントなどの強力な機能が備わっているため、研究段階から本番にモデルを一気に進めることができます。TorchServe では、Amazon SageMaker、Kubernetes、Amazon EKS、Amazon EC2 などのさまざまな機械学習環境をサポートしています。TorchServe の使用を開始するには、ドキュメントやブログの投稿をご覧ください。
TorchElastic Controller for Kubernetes
TorchElastic は、可用性に基づいてコンピューティングリソースを動的にスケールすることが重要な大規模な深層学習モデルをトレーニングするためのライブラリです。TorchElastic では、伸縮自在かつ耐障害性の高い方法でトレーニングできるため、アーキテクチャのサイズが大きくなったり、複雑さが増したりしても、機械学習モデルを本番環境にすばやくデプロイしたり、モデルの探索に最新のアプローチを利用したりできます。Kubernetes 向け TorchElastic Controller は、TorchElastic のトレーニングに必要なポッドとサービスのライフサイクルを自動的に管理する TorchElastic 向けのネイティブ Kubernetes 実装です。必要なコンピューティングリソースの一部を使用してトレーニングジョブを開始し、後で他のリソースが利用できるようになったら、ジョブをいったん停止して再開しなくても、動的にスケールできます。また、ノードの障害やリクラメーションが原因で交換されたノードからジョブを回復することができます。Kubernetes 向け TorchElastic Controller を使用すると、アイドル状態のクラスターリソースとトレーニングを Amazon EC2 スポットインスタンスに制限することで、分散トレーニングの時間とコストを削減できます。Kubernetes クラスターで TorchElastic Controller の使用を開始するには、チュートリアルをご覧ください。
お客様の声
Toyota Research Institute Advanced Development, Inc.(TRI-AD) では人工知能を応用して、将来、より安全で利用しやすく、より環境に優しい車を Toyota で製造することを目指しています。TRI-AD では Amazon EC2 P3 インスタンスで PyTorch を使用することで、ML モデルのトレーニング時間を数日から数時間に短縮しました。「当社では、コンピュータビジョンモデルを絶えず最適化し、改善しています。このモデルは、自動運転によってすべての人に安全な移動を実現するという TRI-AD の使命にとって不可欠なものです。当社のモデルは AWS で PyTorch を使用してトレーニングしていますが、今まで、PyTorch にはモデル提供フレームワークがありませんでした。このため、PyTorch モデルを当社の車両やクラウドサーバーにデプロイするためのソフトウェアを作成したり、維持したりするために大量のエンジニアリング作業が必要でした。TorchServe が提供されるようになったことで、AWS と PyTorch コミュニティによって正式にサポートされ、維持される高性能の軽量モデルサーバーを利用できるようになりました」と TRI-AD の機械学習ツールリードである Yusuke Yachide 氏は述べています。
Matroid は、動画映像の物体やイベントを検出するコンピュータビジョンソフトウェアを開発している会社で、AWS とオンプレミスの環境で PyTorch を使用して機械学習モデルを開発しており、その数は急速に増えています。モデルは、モデルを異なる形式に変換する必要があるカスタムのモデルサーバーを使用してデプロイされており、時間と手間がかかっています。TorchServe により、Matroid では、信頼できる唯一の情報源の役割も果たし、簡単に共有および管理できる 1 つの提供可能ファイルを使用してモデルのデプロイを簡素化できます。
Pinterest には、30 億個の画像と、それらの画像を関連付ける 180 億件の関連付けがあります。同社では、これらの画像をコンテキスト化し、パーソナライズされたユーザーエクスペリエンスを実現するために PyTorch の深層学習モデルを開発しました。Pinterest では Amazon EC2 P3 インスタンスを使用して、モデルのトレーニング速度を上げ、低レイテンシーの推論によってインタラクティブなユーザーエクスペリエンスを提供しています。続きをお読みください。
ブログと記事
ブログ: Deploying PyTorch models for inference at scale using TorchServe
2020 年 4 月
Shashank Prasanna、Manoj Rao
ブログ: Cinnamon AI saves 70% on ML model training costs with Amazon SageMaker Managed Spot Training
2020 年 1 月
Sundar Ranganathan 氏、Yoshitaka Haribara 氏
記事: ディズニーは深層学習を使用して、コンテンツ世界を分類
2019 年 12 月
The Wired
記事: Pinterest が AI を使用して想像力をとらえる方法
2018 年 11 月
The Wired
ブログ: トヨタ・リサーチ・インスティテュート、AWS の深層学習により安全性が高い自動運転車を世界規模で急速展開
2018 年 6 月
Geoff Murase