Amazon Linux で Apache MXNet の使用開始
Ubuntu で Apache MXNet の使用開始

Apache MXNet は、畳み込みニューラルネットワーク (CNN) や長短期メモリネットワーク (LSTM) といった最先端の深層学習モデルをサポートする、効率的かつ柔軟で超高度にスケーラブルな深層学習フレームワークです。 このフレームワークは、学術界に端を発し、複数の一流大学の研究者による共同研究と貢献によって実現したものです。 コンピュータビジョン、スピーチ、言語処理と理解、生成モデル、コンカレントニューラルネットワーク、リカレントニューラルネットワークの処理に優れています。

MXNet を使用すると、大規模なクラウドインフラストラクチャからモバイルおよびコネクテッドデバイスまで幅広いユースケースにおいて、ネットワークを定義、トレーニング、およびデプロイできます。 非常に柔軟な環境が提供され、多くの一般的な言語がサポートされます。命令型および記号型のプログラミング構成が利用できます。 MXNet は非常に軽量でもあります。 これにより、複数の GPU と複数のマシン間で非常に効率的にスケールできます。これは、クラウドで大規模なデータセットをトレーニングする際に有益です。

Amazon Linux および Ubuntu の両方で利用可能な AWS の Deep Learning AMI を起動するだけで、Apache MXNet を AWS で使い始めることができます。

Apache MXNet プロジェクトに貢献する

GitHub で参加する

GitHub プロジェクトページで、サンプルコード、ノートブック、チュートリアルのコンテンツを入手します。

GitHub-Mark-120px-plus
CMU
Sigopt
logo-intel
Nvidia
シンプル

プログラム可能

ネットワーク定義がシンプルで、すでに知っている言語を使用できること

耐久性

移植性

幅広いデバイスおよびプラットフォームでモデルを実行できるようにメモリ効率が良いこと

スケーラブル

 スケーラビリティ

大規模で洗練されたモデルをすばやくトレーニングするために、複数の GPU とホストにスケールできること

Apache MXNet を使うと、命令型言語と記号型言語を混在させることができます。実際、「MXNet」という名前は混在ネットワークという意味の「mixed networks」に由来します。 これは、記号型言語が持つ最適化された実行環境と、反復ループやパラメーターの更新などの命令型言語が持つ柔軟な機能の両方を利用してネットワークレイヤーを操作できることを意味します。 MXNet には、このような性質があるため、深層学習モデルの多層で複雑な性質を持つ作業を容易にする独自の機能を提供します。

import mxnet as mx

a = mx.nd.zeros((100, 50))

b = mx.nd.ones((100, 50))

c = a + b

c += 1

print(c)

 

import mxnet as mx

net = mx.symbol.Variable('data')

net = mx.symbol.FullyConnected(data=net, num_hidden=128)

net = mx.symbol.SoftmaxOutput(data=net)

texec = mx.module.Module(net)

texec.forward(data=c)

texec.backward()

さらに、MXNet は、フレームワークのフロントエンドとして C++、JavaScript、Python、r、Matlab、Julia、Scala、Go などの幅広いプログラミング言語をサポートしています。 これにより、すでに慣れ親しんでいるすべての言語を使用して、すぐに深層学習の実行を開始できます。 バックエンドではコードは常に C++ でコンパイルされるため、フロントエンドで使用する言語に関係なく、一貫したパフォーマンスが得られます。

c-plus-plus-logo-100px
javascript-logo-100px
python-logo-100px
r-logo-100px
Matlab
julia-logo-100px
scala-logo-100px
go-logo-100px

人工知能アプリケーションはますます日常生活の一部となっており、さまざまなデバイスにデプロイできることがますます重要になっています。 これは、エッジにある、ストレージが貴重なモバイルおよびコネクテッドデバイスに AI がデプロイされる場合に特に当てはまります。

Apache MXNet のモデルは、ごく少量のメモリに収めることができます。 たとえば、1000 のレイヤーのネットワークが、4GB 未満のストレージに収まります。 このフレームワークは、プラットフォーム間でも移植可能です。 コアライブラリ (およびすべての依存関係) は、単一の C ソースファイルに収まり、iOS と Android の両方にコンパイルできます。 JavaScript を使用すれば、ブラウザ内でも実行できます。 この柔軟性により、非常に多様なユースケースでモデルをデプロイでき、幅広いユーザーにアプローチできます。

portability-cloud

クラウド

portability-mobile

モバイル

portability-browser

ブラウザ

portability-devices

コネクテッドデバイス

Apache MXNet は、直列のコード内のデータ依存性を解析し、宣言型および命令型の両方の処理を自動的に並列化する動的依存性スケジューラ上に構築されています。 MXNet の最上位に位置するグラフ最適化レイヤーにより、宣言型の実行速度が増加し、メモリを効率的に使用できます。

この自動並列化により、MXNet は非常に効率的にスケールします。 例として、人気のある画像解析アルゴリズムである Inception v3 を EC2 の GPU 対応インスタンスである P2 をスケールさせながらトレーニングして、MXNet の効率性をベンチマークしました。

mxnet-scale-story-1

赤い線は理論上の効率を示し、GPU の数を倍にしたときに速度も倍になります。 MXNet のスループットは、使用された GPU の数にほぼ比例して増加しました。 16 基の GPU の単一インスタンスにおいて、Apache MXNet は 91% の効率を達成できます。

しかし、大規模なネットワークでは、P2 インスタンスのクラスタを複数使用してスケールする必要があります。 このシナリオで同じベンチマークを実行したところ、GPU の数が指数関数的に増加しても効率はわずかに低下するだけでした。

mxnet-scale-story-2

この言葉を鵜呑みにする必要はありません。 クラウドの利点の 1 つは、自分のコードを使って自分で簡単にテストできることです。 ベンチマークを誰でも利用できるように GitHub に公開しました。ここにアクセスして、ベンチマークがどのように動作しているかを確認し、ベンチマークを自分で実行して結果を得ることをお勧めします。 また、AWS CloudFormation テンプレートを使用して、必要なキャパシティーをすばやくスピンアップすることもできます。

AWS Marketplace にアクセスして AWS の Deep Learning AMI を起動するだけで、Apache MXNet を AWS で使い始めることができます。

この AMI は、MXNet の最新の安定ビルドおよびその他の人気の深層学習フレームワークとツールの多くを無償で提供します。 料金は、使用した EC2 の時間に対してのみ発生します。