Amazon Web Services ブログ

Category: Apache MXNet on AWS

Amazon 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 More

Apache 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 More

Apache 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

Apache MXNet リリースに追加された新しい NVIDIA Volta GPU と Sparse Tensor のサポート

Apache MXNet バージョン 0.12 が利用可能になりました。MXNet コミュニティに参加している貢献者の方々との協力により、強化点を追加する新機能の提供を実現することができました。今回のリリースでは、MXNet に 2 つの重要な機能が追加されています。 NVIDIA Volta GPU のサポートにより、ユーザーはトレーニングやニューラルネットワークモデルの推論に掛かる時間を大幅に削減することができます。 Sparse Tensor のサポートにより、ユーザーは保存とコンピューティングを効率的にした方法で Sparse マトリックスを使用しモデルをトレーニングすることができます。 NVIDIA Volta GPU サポートのアーキテクチャ MXNet v0.12 リリースには NVIDIA Volta V100 GPU サポートが追加されています。これにより、ユーザーは畳み込みニューラルネットワークのトレーニングを Pascal GPU に比べて 3.5 倍も速くすることができます。ニューラルネットワークのトレーニングには、数兆にもなる浮動小数点 (FP) 倍数や追加が関係しています。通常、こうした計算には高精度にするため単精度浮動小数点 (FP32) が使われます。けれども、最近の研究結果によると、ユーザーがトレーニングで浮動小数点を半精度 (FP16) にしたデータタイプを使用しても、FP32 データタイプを使用したトレーニングと同じ精度を実現できることが分かっています。 Volta GPU アーキテクチャが Tensor Core を導入しました。各 Tensor Core は 1 時間ごとに 64 fuse-multiply-add […]

Read More

Amazon CloudWatch で GPU 使用率をモニタリング

GPU には何千ものコアがあるため、ディープラーニングには大量のマトリックス乗算と GPU (グラフィックス処理ユニット) により並列化できるベクトルオペレーションが必要です。アマゾン ウェブ サービスでは P2 または P3 インスタンスにサインアップすることが可能です。このようなインスタンスは、大規模なディープニューラルネットワークのデプロイの加速化を強調する MXNet のようなディープラーニングフレームワークの実行に優れています。 データサイエンティストや開発者はネットワークを微調整する場合、適切なバッチサイズを使用できるように GPU 使用率を最適化したいと考えています。今回のブログでは、Amazon CloudWatch メトリクスを使用して GPU とメモリ使用量をモニタリングする方法をご説明します。Amazon マシンイメージ (AMI) では、インスタンスが Amazon Deep Learning AMI を使用することを勧めています。 GPU を有効にしたインスタンスのモニタリングや管理をサポートするために使用されている現在の一般的な方法は、コマンドラインユーティリティの NVIDIA システム管理インターフェイスを利用することです (nvidia-smi)。nvidia-smi の使用により、ユーザーは GPU 使用率、メモリ消費量、ファンの使用量、電力消費量、そして NVIDIA GPU デバイスの温度などの情報をクエリすることができます。 nvidia-smi は NVIDIA 管理ライブラリをベースにしているので (NVML)、C ベースの API ライブラリを使用し、カスタムメトリクスとして Amazon CloudWatch に送信するのと同じデータポイントをキャプチャできます。このライブラリに関する詳細については「リファレンスマニュアル (reference manual)」をご覧ください。このブログではライブラリに Python ラッパーの pyvnml を使用します。 […]

Read More

柔軟性の高いディープラーニングのために簡単に使用できるプログラミングインターフェイス Gluon のご紹介

本日は、AWS と Microsoft が、どのディープラーニングフレームワークを選択するかにかかわらず、すべての開発者向けに機械学習テクノロジーの速度、柔軟性、アクセス性を向上させることを主眼とした新しい仕様を発表しました。この連携による最初の結果が、新しい Gluon インターフェイスです。これはあらゆるスキルレベルの開発者がディープラーニングモデルのプロトタイプ作成、構築、トレーニングを行えるようにする、Apache MXNet のオープンソースライブラリです。このインターフェイスにより、トレーニング速度を犠牲にすることなく、ディープラーニングモデルの作成プロセスを大幅に簡略化できます。 Gluon の 4 つの重要な利点と、それを示すサンプルコードを示します。 (1) シンプルで理解しやすいコード Gluon では、シンプル、明瞭、簡潔なコードを使ってニュートラルネットワークを定義できます。事前定義されたレイヤー、オプティマイザ、イニシャライザを含む、プラグアンドプレイのニュートラルネットワーク構築要素のフルセットを入手できます。これにより、基盤となる複雑な実装詳細の多くが排除されます。次の例では、わずか数行のコードでシンプルなニュートラルネットワークを定義する方法を示しています。 # 最初のステップはモデルの初期化です net = gluon.nn.Sequential() # Then, define your model architecture with net.name_scope(): net.add(gluon.nn.Dense(128, activation=”relu”)) # 最初のレイヤー – 128 ノード net.add(gluon.nn.Dense(64, activation=”relu”)) # 2 番目のレイヤー – 64 ノード net.add(gluon.nn.Dense(num_outputs)) # Output layer 次の図に、ニュートラルネットワークの構造を示します。 詳細については、こちらのウォークスルーに移動して、Gluon ニュートラルネットワーク構成要素を使って multilayer perceptron (MLP) と呼ばれるシンプルなニュートラルネットワークを作成する方法を参照してください。より高度なユースケース向けに、ニュートラルネットワークのパーツをゼロから作成することも簡単です。Gluon […]

Read More