PyTorch on Azure で PyTorch 1.2 を完全サポート

2019年8月28日 に投稿済み

Principal Program Manager, Machine Learning Platform

PyTorch コミュニティの皆様、PyTorch 1.2 (英語) がリリースされましたね! Azure では昨年秋に、オープン ソースの AI に対する取り組みの一環で、フル サポートの主要トレーニング フレームワークの 1 つとして PyTorch を採用しました。PyTorch は多数のマイクロソフト製 AI プラットフォーム サービスでサポートされており、マイクロソフトの開発者は PyTorch コミュニティに参加して、コード ベースの重要な改善に協力させていただいています。この記事では、Azure で PyTorch 1.2 を使用できるさまざまな手段をご紹介し、PyTorch モデルのトレーニングから運用環境への展開を支援する取り組みについて取り上げます。

Azure 上の PyTorch 1.2

PyTorch on Azure はすぐに使用を開始でき、PyTorch モデルのトレーニングとデプロイに最適です。PyTorch 1.2 は以下の Azure サービスに統合されているため、最新の機能をご利用になれます。

PyTorch から運用環境へ

PyTorch は、モデルを構築しトレーニングするための、人気の高いオープン ソースのディープ ラーニング フレームワークです。GPU のパワーを活用してトレーニングを高速化する設計となっていて、Python と緊密に統合されています。利用も簡単です。ただ、トレーニング済みのモデルを運用環境にデプロイするのは難しく、長年にわたってお客様の悩みの種となっていました。運用環境では、パフォーマンスやマルチスレッドに関する条件があるため、コア計算に Python を使用するのは適切ではない場合があります。この課題に対処するため、PyTorch コミュニティと連携し、PyTorch のトレーニング済みモデルを運用環境で簡単に使えるよう改善しました。

PyTorch の JIT コンパイラは、トレースまたは TorchScript のいずれかを使用して、またはその両方を組み合わせて、モデルを eager モードから graph モードに移行します。その後の ONNX へのエクスポートには PyTorch の組み込み機能を使用することをお勧めします。ONNX (英語) は Open Neural Network Exchange の略で、これは機械学習モデルを表すためのオープン標準フォーマットです。ONNX 形式のモデルは ONNX Runtime (英語) を使用して推論を実行します。この ONNX Runtime は、運用スケールの機械学習ワークロードに対応した推論エンジンです。オープン ソースであり、クロス プラットフォームに対応し、高度に最適化されています。また、C++ で記述されており、Linux、Windows、Mac で動作します。バイナリ サイズが小さいので、幅広いターゲット デバイス、ターゲット環境に適しています。Intel と NVIDIA (英語) のアクセラレータと統合されているため、CPU、GPU、VPU で高速化されます。

PyTorch と ONNX Runtime を使用したトレーニングと運用環境

PyTorch 1.2 においては、ONNX エクスポート機能の強化に尽力しました。

  • Mask R-CNN、Faster R-CNN、SSD といったオブジェクト検出とセグメンテーション モデルをはじめとする PyTorch モデルの広範なサポート
  • 可変長の入力で動作するモデルのサポート
  • ONNX 推論エンジンのさまざまなバージョンで実行できるモデルのエクスポート
  • 定数畳み込みを用いたモデルの最適化
  • PyTorch モデルの ONNX へのエクスポートから ONNX Runtime での推論の実行までのエンドツーエンドのチュートリアル (英語)

ONNX Runtime.を使用すれば、独自の PyTorch モデルをさまざまな運用環境にデプロイできます。詳細は、以下のリンクからご確認ください。

次のステップ

PyTorch のこれからの進化と改良がとても楽しみです。PyTorch コミュニティをサポートし、協力できることを誇りに思っています。PyTorch 1.2 は現在 Azure で提供中です。無料試用版をぜひお試しください

PyTorch on Azure をご利用になった感想をお待ちしています。