Amazon Web Services ブログ
Category: Apache MXNet on AWS
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 MoreApache 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 MoreONNX 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 MoreAWS、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 MoreAWS が 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 MoreAmazon EMR での Apache MXNet および Apache Spark を使用した分散推論
このブログでは、Amazon EMR で Apache MXNet (incubating) および Apache Spark を使用して大規模なデータセットで分散オフライン推論を実行する方法を説明します。オフライン推論がどのように役立つのか、課題となる理由、および、Amazon EMR で MXNet と Spark を活用して課題を解決する方法を説明します。 大規模データセットでの分散推論 – ニーズと課題 ディープラーニングモデルのトレーニングの後、新しいデータ上で推論を実行して活用します。推論は、不正検出など、その場でのフィードバックが必要なタスクでリアルタイムに実行できます。これは通常オンライン推論と呼ばれています。または、事前計算が役立つ場合は、推論をオフラインで実行できます。オフライン推論のよくあるユースケースは、ユーザーの製品スコアのソートやランク付けを必要とする推奨システムなど、レイテンシー要件が低いサービスです。これらのケースでは、推奨はオフライン推論を使用して事前計算されます。結果は低レイテンシーストレージに保存され、必要に応じて、推奨がストレージから引き出されます。オフライン推論の別のユースケースは、最新モデルから生成された予測による履歴データのバックフィリングです。仮の例として、新聞でこの設定を使用して、人物識別モデルから予測された人物の名前でアーカイブされた写真をバックフィルできます。また、分散推論を使用して、歴史的なデータで新しいモデルをテストし、本番稼働用にデプロイする前により良い結果を生み出すかどうかを確認できます。 通常、分散推論は数百万以上のレコードがあるような大規模なデータセットで実行されます。妥当な時間内にそのような巨大なデータセットを処理するには、ディープラーニングの機能をセットアップされたマシンクラスターが必要です。分散クラスターでは、データ分割、バッチ処理、タスクの並列化を使用した高いスループット処理ができます。ただし、ディープラーニングデータ処理クラスターをセットアップするには課題もあります。 クラスターのセットアップと管理: ノードのセットアップとモニタリング、高い可用性の維持、ソフトウェアパッケージのデプロイと設定など。 リソースとジョブの管理: ジョブのスケジューリングと追跡、データ分割とジョブの障害への対処。 ディープラーニングのセットアップ: ディープラーニングタスクのデプロイ、設定、および実行。 次に、このブログの投稿では、Amazon EMR で MXNet および Spark を使用してこれらの課題に対処する方法を示します。
Read MoreAmazon EMR で GPU インスタンスタイプを持つディープラーニングフレームワークを実行
AWS は Apache MXNet と Amazon EMR での新世代 GPU インスタンスタイプのサポートについて発表いたします。これにより、機械学習ワークフローおよびビッグデータ処理とともに分散ディープニューラルネットワークの実行が可能になります。さらに、GPU ハードウェアにより、EMR クラスター上でカスタムディープラーニングライブラリをインストールおよび実行できます。ディープラーニングフレームワークの使用を通じて、自動運転車から人工知能 (AI)、個人化されたヘルスケア、コンピュータビジョンまで、さまざまなユースケースに対応する新しいツールキットを入手できます。 Amazon EMR は、Apache Spark、Apache Hive、Presto、Apache HBase、Apache Flink などのフレームワークとともに、Amazon S3 で大量のデータを簡単かつ迅速に、コスト効率の高い方法で処理できるマネージド型 Hadoop フレームワークを提供します。ログの分析、ウェブインデックス作成、データ変換 (ETL)、財務分析、科学シミュレーション、リアルタイム処理、バイオインフォマティクスを含む、数多くのビッグデータのユースケースに低コストで対応し、確実かつ安全に処理できます。 EMR には、スケーラブルな機械学習ワークロードを実行可能にしてきた長い歴史があります。2013 年には、Apache Hadoop MapReduce を使用した分散型機械学習ワークロードの実行を支援するため、Apache Mahout のサポートが追加されました。2014 年には、お客様は Apache Spark を利用して (2015 年に公式サポートを追加)、Spark ML で利用できるさまざまなオープンソース機械学習ライブラリを使用して、スケーラブルな機械学習パイプラインを簡単に構築し始めました。 当社は過去 2 年間に、Jupyter ノートブックの簡単なインストールのための Apache Zeppelin ノートブックのサポート、およびデータサイエンティストが機械学習モデルを簡単かつ迅速に開発、トレーニングし、本番稼働に移行するための Apache Livy のサポートを追加しました。EMR の 1 秒あたりの請求と […]
Read More自律走行車の構築 パート 4: 自動運転の車で Apache MXNet と行動クローニングを使用
自律走行シリーズ 1 回目のブログでは、Donkey カーの構築と Amazon EC2 インスタンスでパイロットサーバーをデプロイしました。そして、2 回目のブログでは Donkey カーの運転を学び、Donkey カーが自律走行を学びました。3 回目のブログでは AWS IoT を使用して Donkey カーから AWS にテレメトリをストリーミングするプロセスをご紹介しました。 今回のブログでは、カーの運転を有効にするディープラーニングについて詳しく見ることにします。また、畳み込みニューラルネットワーク (CNN) を使用した行動クローニングの概念についても説明します。CNN は「前方には道がありますか、それともトラフィックコーンがありますか?」といったような、カーに対する質問に答えるなど、コンピュータビジョンタスクにおける最先端のモデリング技術として現れたものです。 1) AWS 自律走行車を構築し re:Invent の Robocar Rally でレースに参加 2) 自律走行車の構築 パート 2: 自律走行車の運転 3) 自律走行車の構築 パート 3: 自律走行車の接続 4) 自律走行車の構築 パート 4: 自動運転の車で Apache MXNet と行動クローニングを使用 P2 で Donkey のトレーニングデータをセットアップ トレーニングの実行方法の詳細については、すでにシリーズ 2 回目のブログで説明しました。主なステップとコマンドを簡単に復習しておきましょう。 Pi からデータを […]
Read MoreApache MXNet で ONNX をサポート
AWS は ONNX-MXNet の利用開始を発表しました。これは Open Neural Network Exchange (ONNX) ディープラーニングモデルを Apache MXNet にインポートするためのオープンソース Python パッケージです。MXNet は充実した機能を備えたスケーラブルなディープラーニングフレームワークで、Python、Scala、R といった人気の言語に対し API を提供します。MXNet で ONNX 形式をサポートすることで、開発者は PyTorch、Microsoft Cognitive Toolkit、Caffe2 など、他のフレームワークを使用してモデルを構築したりトレーニングすることができます。また、高度に最適化されたスケーラブルなエンジンの MXNet を使用した推論に対し、こうしたモデルを MXNet にインポートすることもできます。 AWS が ONNX 形式に貢献できることを大変喜ばしく思っています。Facebook、Microsoft、そしてディープラーニングコミュニティと協力し、ディープラーニングのユーザーが利用しやすい便利なものにすべく、ONNX の開発に取り組みます。 ONNX とは ONNX はディープラーニングモデルをエンコードするためのオープンソース形式です。ONNX はニューラルネットワークの計算グラフ、グラフ内で使用される演算子の広範なリストの形式を定義します。拡大中のフレームワークリスト、ハードウェアベンダー、ディープラーニングの開発を手掛ける開発者などにサポートされている ONNX は、容易にフレームワーク間を移動し、目の前の課題に最適なフレームワークを選別することができます。 クイックスタート 今回は ONNX-MXNet を使用して MXNet に ONNX-MXNet をインポートする方法、そして推論用にインポートしたモデルを使用する方法をご紹介します。これにより、MXNet の最適化した実行エンジンのメリットを活用することができます。 ステップ 1: インストール まず、ONNX […]
Read MoreApache MXNet バージョン 0.12 で Extends Gluon 機能を拡大、最先端の研究をサポート
先週、Apache MXNet コミュニティが MXNet バージョン 0.12 をリリースしました。このバージョンの主な機能は NVIDIA Volta GPU と Sparse Tensor のサポートです。同リリースには Gluon プログラミングインターフェイスの新機能がいくつも含まれています。こうした機能は特にディープラーニングモデルにおける最先端のリサーチを実装しやすくします。 変分ドロップアウトは、オーバーフィッティングをリカレントニューラルネットワーク (RNN) に移行するために使うドロップアウト技術を効率的に適用できるようにします。 畳み込み RNN、Long short-term memory (LSTM)、Gated Recurrent Unit (GRU) セルは、時間ベースのシーケンスと空間ディメンションの両方を示すデータセットのモデリングを可能にします。 7 つの新しい損失関数、エクスポート機能、トレーナー機能の強化 変分ドロップアウト (VariationalDropoutCell) は最近のリサーチを足掛かりにして、RNN のオーバーフィッティングを移行させる新たなツールを提供しています。これは「リカレントニューラルネットワークのグランデッドアプリケーションの推論 (“A Theoretically Grounded Application of Recurrent Neural Networks”)」と「RNNDrop: ASR における RNN の新しいアプローチ (“RNNDrop: A Novel Approach for RNNs in ASR”)」を基盤にしています。オーバーフィッティングは、モデルがトレーニングデータセットに近すぎた状態でフィットしていることで発生するモデリングエラーです。そのため、新しいデータまたはテストデータセットが表れた場合に予測精度が低下してしまいます。ドロップアウトはランダムにモデルパラメータをゼロにするモデリング技術です。そのため、トレーニング中にモデルが必要以上に 1 […]
Read More