Amazon Web Services ブログ

Category: Apache MXNet on AWS

複数の GPU に対する深層学習トレーニングをスケーリングするためのハイパーパラメーターの調整の重要性

複数の GPU による並列プロセスは、深層モデルのトレーニングのスケーリングを行う上で重要なステップです。トレーニングを繰り返すたびに、一般的に、ミニバッチと呼ばれるデータセットの小さなサブセットがプロセスされます。単一の GPU が使用可能の場合、それぞれのトレーニングの繰り返しにおけるミニバッチの処理は、この GPU により取り扱われます。複数の GPU でトレーニングするとき、ミニバッチはプロセスの負荷を均等に分散するために使用可能な GPU 全体に分割されます。各 GPU を完全に使用するためには、各追加 GPU でミニバッチのサイズを直線的に増大させる必要があります。ミニバッチのサイズは、トレーニング速度に影響を与えるだけではなく、トレーニングされるモデルの質にも影響を与えます。ミニバッチのサイズが大きくなると、他のハイパーパラメーターを微調整して、類似するモデルの質でより高速なトレーニングができるようにすることが重要です。 Gluon によるマルチ GPU と分散トレーニング 最新の真相学習モデルにより必要な広範なデータの量により、複数の GPU と分散マシンにスケーリングすることで、調査と本番稼働のための大幅な時間節約となる可能性があります。Amazon SageMaker や Amazon Elastic Compute Cloud (Amazon EC2) のようなサービスでは、数百 GPU の分散トレーニングをセットアップすることは、痛みのないだけでなく、正確な使用量に対して支払うだけで非常に経済的で、高価で十分に活用されていないハードウェアフリートを維持する必要はありません。 Apache MXNet は、柔軟でより効率的な深層学習プラットフォームです。 これは、複数のホストにわたるマルチ GPU と分散トレーニングに特に適しています。Apache MXNet の Gluon ライブラリは、深層学習のための明確で正確、さらにシンプルな API を提供します。gluon による複数の GPU のトレーニングおよび複数のマシンによる分散トレーニングに関するチュートリアルでは、マルチ GPU と分散トレーニングの容易なセットアップをデモンストレーションします。 トレーニングのハイパーパラメーター トレーニングのハイパーパラメーターは、勾配降下法によっては学習できないが、最終的なモデル品質に影響を与えるすべてのパラメーターを構成します。これらのパラメーターは、学習速度およびモメンタムなどの最適化パラメーター、ランダムなカラーシフト量などの増強パラメーター、および他の学習以外のパラメーターを含みます。 MXNet Gluon API は、すべての […]

Read More

Apache MXNet (Incubating) が Keras 2 のサポートを追加

Keras および Apache MXNet (Incubating) のオープンソースプロジェクトへの参画者のおかげで、Keras-MXNet 深層学習のバックエンドが現在利用可能です。Keras は Python で書かれた高水準なニューラルネットワーク API です。CNN および RNN のプロトタイピングを素早く簡単に作成することで知られています。 Keras の開発者は、現在、畳み込みニューラルネットワーク (CNN) のトレーニングおよび再帰型ニューラルネットワーク (RNN) の分散トレーニング向けのハイパフォーマンスな MXNet 深層学習エンジンを使用することができます。コードを数行更新すると、Keras の開発者は、MXNet のマルチ GPU の分散トレーニング機能を使用して、トレーニングスピードを速めることができます。MXNet モデルを保存できることは、このリリースのもう一つの注目すべき機能です。Keras での設計、Keras-MXNet によるトレーニング、本番環境のインターフェイスの実行が大規模な MXNet で可能です。 Keras 2 および MXNet の分散トレーニング この記事では、Keras-MXNet のインストール方法と CNN および RNN のトレーニング方法の説明をします。以前、他の深層学習エンジンで分散トレーニングを実施したことがある場合は、退屈で難しいかもしれません。それでは、Keras-MXNet について内容を見ていきましょう。 インストールは数ステップだけです。 AWS 深層学習 AMI のデプロイ Keras-MXNet のインストール Keras-MXNet の設定 1. AWS […]

Read More

Apache MXNet で事前にトレーニングを受けたモデルを使用する

このブログ記事では、Apache MXNet で事前トレーニングを受けたモデルの使用方法について解説します。複数モデルを試してみようと思われた理由は? 最高の精度をもったモデルを選ばないのはなぜでしょう? この記事の後半で説明するように、同じデータセット上でこれらのモデルがトレーニングを受け最高の精度を得るために最適化されたとしても、個々のイメージではその動作にわずかながら違いが生じます。また、予測速度も変動する可能性があります。これは多くのアプリケーションにとって重大な要素です。事前にトレーニングされたモデルをいくつか試すことで、自分のビジネス課題を解決するのに最適なモデルを見つけることができます。 まず、Apache の MXNet モデルズーから、3 つのイメージ分類モデルをダウンロードしてみましょう。 VGG-16 (研究報告)、ImageNet Large Scale Visual Recognition Challenge (ImageNet 大規模ビジュアルリコグニッションチャレンジ) における 2014 年度の分類最優秀モデル。 Inception v3 (研究報告)、GoogleNet の発展、オブジェクト検査での 2014 年度最優秀モデル。 ResNet-152 (研究報告)、複数カテゴリにおける 2015 度最優秀モデル。 各モデルについて次に示す 2 種類のファイルをダウンロードする必要があります。 ニューラルネットワークの JSON 定義を含むシンボルファイル: レイヤー、接続、アクティベーション機能など。 全接続加重、バイアスの値を保存する加重ファイルで別名パラメーター。トレーニングフェーズ中にネットワークにより習得。 # MacOS users can easily install ‘wget’ with Homebrew: ‘brew install wget’ !wget http://data.dmlc.ml/models/imagenet/vgg/vgg16-symbol.json -O […]

Read More

Apache MXNet Model Server が規模に応じたモデルサービングのために最適化されたコンテナイメージを追加

AWS は、本番ユースケースのためのモデルサービングのデプロイメントを効率化する Apache MXNet Model Server (MMS) v0.3 をリリースしました。このリリースには、GPU および CPU 上の深層学習ワークロード用に最適化された事前構築済みのコンテナイメージが含まれています。これによって、エンジニアはスケーラブルなサービングインフラストラクチャをセットアップできるようになります。Apache MXNet Model Server (MMS) と、規模に応じて深層学習モデルを提供する方法の詳細については、この先をお読みください! Apache MXNet Model Server (MMS) とは? MMS は、オープンソースのモデルサービングフレームワークで、規模に応じて深層学習モデルをデプロイするタスクをシンプル化するように設計されています。以下は MMS の主な利点の一部です。 MXNet と ONNX のニューラルネットワークモデルを単一のモデルアーカイブにパッケージ化するためのツール。これは、モデルを提供するために必要なアーティファクトのすべてをカプセル化します。 モデルアーカイブにパッケージ化されたカスタムコードを使用して推論実行パイプラインの各ステップをカスタマイズする機能。これは、初期化、前処理、および後処理の上書きを可能にします。 事前設定されたサービングスタック (REST API エンドポイントを含む) と推論エンジン。 スケーラブルなモデルサービングのために事前構築および最適化されたコンテナイメージ。 サービスとエンドポイントを監視するためのリアルタイムの運用メトリクス。 このブログ記事では、コンテナを使用して MMS を本番環境にデプロイする方法、クラスターを監視する方法、およびターゲットの需要に応じてスケールする方法を見て行きます。 コンテナでの MMS の実行 スケーラブルな本番用スタックのセットアップに進む前に、コンテナで MMS を実行する方法を確認しましょう。これを理解しておくことは、スケーラブルな本番クラスターのより複雑なセットアップについて考察するときに役立ちます。 この新リリースでは、事前構築され、最適化された MMS コンテナイメージが Docker Hub に発行されます。これらのイメージは、CPU ホスト […]

Read More

Model Server for Apache MXNet、ONNX サポートと Amazon CloudWatch の組み込みを開始

AWS は、大規模な予測を行うための深層学習モデルをパッケージ化してサービスを提供するオープンソースライブラリである Model Server for Apache MXNet (MMS) のバージョン 0.2 をリリースしました。それにより、Open Neural Network Exchange (ONNX) 形式でモデルを提供し、ダッシュボードとアラームを作成できる Amazon CloudWatch に直接、運用メトリックを公開できるようになります。 MMS とは? MMS は、大規模の推論のための深層学習モデルの展開を簡素化するオープンソースライブラリです。MMS は、次の機能を備えています。 モデルアーティファクトを単一のモデルアーカイブにパッケージ化するためのツール。アーカーブはモデルを提供するために必要なすべてのアーティファクトをカプセル化します。 モデルアーカイブにパッケージ化されたカスタムコードを使用して、推論の実行パイプラインの各段階をカスタマイズする機能。 REST API エンドポイントと推論エンジンを含む、事前構成されたサービススタック。 スケーラブルなモデルの提供のために、MMS、MXNet、および nginx を含む Docker イメージ。 MMS およびエンドポイントを監視するためのリアルタイム運営メトリックス。 事前構成された Docker イメージである PyPI (Python Package Index) パッケージから、または Model Server GitHub リポジトリから直接、MMS をインストールできます。 ONNX モデルサービスの開始 ONNX は、複数の深層学習フレームワークの間の相互運用性を可能にします。MMS バージョン 0.2 […]

Read More

NNPACK ライブラリを使用した Apache MXNet の高速化

Apache MXNet は、ディープラーニングネットワークをビルドし、トレーニングし、再利用するために開発者が利用できるオープンソースライブラリです。このブログ投稿では、NNPACK ライブラリを使用して推論を高速化する方法を説明します。確かに、GPU 推論が利用できない場合、NNPACK を Apache MXNet に追加することは、インスタンスからより大きなパフォーマンスを引き出すための簡単なオプションかもしれません。常にそうですが、「かかる労力は異なる場合があり」、常に自分自身でテストを実行する必要があります。 開始する前に、トレーニングと推論の基礎の一部を確認していきましょう。 トレーニング トレーニングとは、ニューラルネットワークがデータセット内の各サンプルに対して正しいラベルを正しく予測する方法を学習するステップです。1 回に 1 個のバッチ (通常 32〜256 サンプル) ずつ、データセットがネットワークに送出され、バックプロパゲーションアルゴリズムを利用して、重みづけを調整することにより、エラー数の合計が最小限に抑えられます。 完全なデータセットを調べることをエポックと呼びます。大規模ネットワークは、可能な限り高い精度を達成するために、何百ものエポックに対してトレーニングする場合があります。これには数日から数週間かかることもあります。強力な並列処理能力を備えた GPU を使用することで、最も強力な CPU に比べてさえも、トレーニング時間を大幅に短縮することができます。 推論 推論とは、実際にトレーニングされたネットワークを使用して新しいデータサンプルを予測するステップです。Amazon Rekognition のように単一の画像内のオブジェクトを識別しようとする場合など、一度に 1 つのサンプルを予測することや複数のユーザーからの要求を処理するときに、複数のサンプルを同時に予測することなどが可能です。 もちろん、GPU は推論でも同様に効率的です。しかし、多くのシステムは、コスト、消費電力、またはフォームファクタの制約のために GPU に対応できません。したがって、CPU ベースの推論では、高速で実行できることが依然として重要なトピックになっています。ここでは NNPACK ライブラリが Apache MXNet で CPU 推論を高速化するのに役立つため、NNPACK ライブラリが、が採用されます。 NNPACK ライブラリ NNPACK は、GitHub で利用できるオープンソースライブラリです。どのように役立つのでしょうか?コンボリューションニュートラルネットワークについてお読みいただいていることでしょう。これらのネットワークは、コンボリューションとプーリングを適用して入力画像内の機能を検出する複数のレイヤーからビルドされています。 この投稿では実際の理論には触れませんが、NNPACK が高度に最適化される方法でこれらのオペレーション (および行列の乗算のような他のオペレーション) を実施しているとだけ申しておきましょう。基礎理論にご興味があるようでしたら、この Reddit の投稿で著者が述べた研究論文を参照してください。 NNPACK […]

Read More

Apache MXNet 用のモデルサーバーのご紹介

今週初めに、AWS はディープラーニングモデルを提供する Apache MXNet の上に構築されるオープンソースのコンポーネントである、Apache MXNet 用のモデルサーバーの提供開始を発表しました。Apache MXNet は、機械学習のための使いやすく簡潔な API を備えた、高速でスケーラブルなトレーニングおよび推論フレームワークです。Apache MXNet 用のモデルサーバーにより、エンジニアは MXNet モデルを簡単、迅速、大規模に提供することができます。 Apache MXNet 用のモデルサーバーとは Apache MXNet (MMS) 用のモデルサーバーは、推論のディープラーニングモデルを大規模なデプロイするタスクを簡略化するために設計された、オープンソースのコンポーネントです。推論のモデルをデプロイすることは、ささいなタスクではありません。さまざまなモデルアーティファクトの収集、提供スタックのセットアップ、ディープラーニングフレームワークの初期化と設定、エンドポイントの公開、リアルタイムメトリクスの出力、カスタム前処理および後処理コードの実行をはじめ、数多くのエンジニアリングタスクがあります。各タスクが必要以上に複雑にならないこともありますが、モデルのデプロイに関連する全体的な労力は、デプロイプロセスが時間のかかる面倒なものとなる要因として十分です。 MMS により、AWS はディープラーニングモデルのデプロイプロセスを大幅に簡略化する、Apache MXNet 用のオープンソースのエンジニアリングツールセットを提供します。モデルのデプロイに MMS を使用することにより得られる主要な機能を以下に示します。 MXNet モデルを提供するために必要なすべてをカプセル化する単一の「モデルアーカイブ」にすべてのモデルアーティファクトをパッケージ化し、エクスポートするためのツール。 HTTP 推論エンドポイント、MXNet ベースのエンジンを含むサービススタックの自動セットアップ。このすべては、ホストする特定のモデルに対して自動的に設定されます。 スケーラブルなモデルの提供用に NGINX、MXNet、および MMS で設定された、事前設定済みの Docker イメージ。 モデルの初期化から、前処理と推論を経てモデルの出力の後処理に至る、推論実行パイプラインの各ステップをカスタマイズする機能。 レイテンシー、リソース使用率、エラーを含む、推論サービスとエンドポイントをモニタリングするリアルタイムのオペレーションメトリクス。 Java、JavaScript、C# など一般的なスタックのクライアントコードの簡単な統合と自動生成を可能にする、OpenAPI 仕様のサポート。 MMS は PyPi パッケージを通じて、またはモデルサーバーの GitHub レポジトリから直接利用でき、Mac および Linux で実行されます。スケーラブルな本稼働のユースケースでは、MMS GitHub […]

Read More

ONNX 1.0 の提供開始を発表

アマゾン ウェブ サービス (AWS)、Facebook、Microsoft は Open Neural Network Exchange (ONNX) 形式が本稼働環境で使用できるようになったことを発表しました。 ディープラーニングモデルのオープンスタンダード形式である ONNX は、Apache MXNet、Caffe2、Microsoft Cognitive Toolkit、PyTorch といったディープラーニングフレームワーク間での相互運用を可能にします。ONNX 1.0 は、ユーザーがフレームワーク間でディープラーニングモデルを移動できるようにし、本番稼働環境に取り入れやすくします。たとえば、開発者は PyTorch のようなフレームワークを使用して洗練されたコンピュータビジョンモデルを構築し、Microsoft Cognitive Toolkit または Apache MXNet を使用し推論で実行することができます。 ONNX の初回リリースは 9 月だったので、我々はこの成長とコミュニティサポートの勢いやその関与をたのもしく思いながら観察しています。Qualcomm、Huawei、Intel などを含む数々のハードウェアパートナーが各社のハードウェアプラットフォームで ONNX 形式をサポートしていることを発表しており、ユーザーが異なるハードウェアプラットフォームでモデルを実行しやすくしています。新機能のコードやサポートに貢献して下さったコミュニティの皆さんに、この場を借りて感謝申し上げます。 開発者が最新のリサーチにアクセスし最先端モデルを本稼働アプリケーションと統合できるようにするため、今後も ONNX の進化において ONNX パートナーやコミュニティと協力していきます。 関連の発表 Facebook – ONNX V1 をリリース Microsoft – ONNX 1.0 – AI のオープンエコシステムを発表 今回のブログの投稿者について Sukwon […]

Read More

AWS、Apache MXNet の ディープラーニングエンジンのマイルストーンである 1.0 のリリースに対し新しいモデル提供機能の追加を含む貢献

AWS は Apache MXNet ディープラーニングエンジンのマイルストーンとなる 1.0 のリリースへの貢献と、MXNet 向けの新しいモデル提供機能の導入を発表しました。これらの新機能により、(1) ディープラーニングモデルのトレーニングとデプロイが簡素化され、(2) 最先端のパフォーマンス強化の実装が可能になり、また (3) ディープラーニングフレームワーク間の相互運用性が簡単になります。 このブログ記事では、本日導入された主な機能それぞれの開始方法を説明します。 シンプルで使用が容易 Apache MXNet 向けモデルサーバー: モデルサーバーは、わずか数行のコードを使用するだけで、ディープラーニングモデルを数秒でパッケージ化、実行、提供します。これにより API エンドポイント経由でインターネットを使用してアクセスすることができます。その後、アプリケーションからこのエンドポイントを呼び出して予測を行うことができます。また、モデルサーバーには 10 個の事前トレーニング済みモデルを備えた model zoo が含まれています。モデルを自分でトレーニングする必要はなく、簡単にデプロイできます。モデルサーバーによって、ウェブ、モバイル、IoT アプリケーション内への AI 機能のデプロイが簡素化されます。 Apache MXNet 向けモデルサーバーの使用を開始するには、以下のコマンドを使用してライブラリをインストールします。 pip install mxnet-model-server モデルサーバーのライブラリには、SqueezeNet v1.1 オブジェクト分類モデルが含まれています。次のコマンドを使用して SqueezeNet モデルの提供を開始できます。 mxnet-model-server –models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model モデルサーバーの詳細とソースコード、リファレンスサンプル、チュートリアルの表示方法については、こちらを参照してください。 アドバンスドインデックス作成: 1.0 リリースには、アドバンスドインデックス作成機能が含まれています。これにより、Python NumPy ライブラリ内の ndarray 配列オブジェクトクラスの既存の知識を活用して、より直感的な方法でテンソル演算を実行できます。この機能によりより効率的な方法でインデックスにアクセスできるため、開発者の時間と手間を節約できます。以下は、MXNet の新しいアドバンスドインデックス作成機能の例です。 整数のリストをインデックスとしてサポート: x = nd.array([[1, 2], […]

Read More

AWS が Apache MXNet のマイルストーン 1.0 リリースに貢献、モデル提供機能を追加

Dr. Matt Wood による投稿 AWS は MXNet 向けの新しいモデル提供機能の導入を含む、Apache MXNet ディープラーニングエンジンのマイルストーンとなる 1.0 のリリースへの協力について発表しました。MXNet の新機能は、ユーザーにとって次のような利点があります。 1) MXNet は使用が簡単: MXNet 向けモデルサーバーは AWS が導入した新機能であり、わずか数行のコードを使用するだけで、ディープラーニングモデルを数秒でパッケージ化、実行、提供します。これにより API エンドポイント経由でインターネットを使用してアクセスすることができるため、アプリケーションに簡単に統合することができます。また、1.0 リリースには、詳細なインデックス作成機能が含まれています。これにより、ユーザーはより直観的な方法でマトリックス操作を実行できます。 Model Serving により予測のための API エンドポイントのセットアップが可能に: わずか数行のコードで予測機能を実行してアプリケーションに統合するための API エンドポイントの設定タスクを要約し、開発者の時間と労力を減らします。Docker コンテナベースのデプロイモデルを通じて、Python ベースのディープラーニングフレームワークと本稼働システム間の壁を克服します。 MXNet 用の配列オペレーションの用の高度なインデックス作成: 開発者が MXNet で強力な配列オペレーションを利用できるよう、より直感的になりました。NumPy/SciPy 配列の既存の知識を利用して、高度なインデックス作成機能を使用できます。たとえば、MXNet NDArray および Numpy ndarray をインデックスとしてサポートします (例: a[mx.nd.array([1,2], dtype = ‘int32’])。 2) MXNet は高速: 1.0 リリースには、トレーニングと推論のパフォーマンスを最適化する、最新鋭の機能が実装されています。グラデーション圧縮により、ユーザーは集束率または正確さを失うことなく、コンピューティングノード間の通信の帯域幅を減らすことで、最大 5 […]

Read More