3大ニューラルネットワークから、TensorFlow、MXNet、CNTK、Theanoの4つのフレームワークをテストして比較します。

3大ニューラルネットワークから、TensorFlow、MXNet、CNTK、Theanoの4つのフレームワークをテストして比較します。

この記事では、TensorFlow、CNTK、MXNet、Theano など、Keras でサポートされている主流のディープラーニング フレームワークのパフォーマンスを比較します。著者は、同じモデルと異なる Keras バックエンドを使用して、さまざまなタイプのタスクでさまざまなフレームワークのパフォーマンスをテストしたいと考えています。この記事では、5 つのタスクを通じて MLP、CNN、RNN モデルをテストします。Synced は実験を紹介するだけでなく、Keras (TensorFlow バックエンド) を使用して MNIST データセットで CNN を実行します。

データ サイエンスとディープラーニングにおける Keras の人気にまだ疑問がある場合は、すべての主要なクラウド プラットフォームとディープラーニング フレームワークにわたる Keras のサポートを考慮してください。現在、Keras の公式バージョンは、Google の TensorFlow、Microsoft の CNTK、モントリオール大学の Theano をすでにサポートしています。さらに、AWS は昨年、Keras が Apache MXNet をサポートすることを発表しており、先月リリースされた MXNet 0.11 では、Core ML と Keras v1.2 のサポートが追加されました。ただし、現時点では MXNet は最新バージョン 2.0.5 ではなく、Keras v1.2.2 のみをサポートしているようです。

Keras でサポートされている任意のバックエンドを使用してモデルをデプロイできますが、開発者とソリューション アーキテクトは、さまざまなディープラーニング ライブラリの高レベル API である Keras が、各ライブラリによって提供されるすべての基本的なパラメータの微調整を本質的にサポートしているわけではないことを理解する必要があります。したがって、バックエンド フレームワークによって提供されるすべてのパラメーターを微調整する場合は、Keras を使用する代わりに、ディープラーニング フレームワークを直接使用する必要があります。もちろん、Keras やディープラーニング フレームワークにさまざまなツールが追加されるにつれて、この状況は改善されるでしょう。しかし、現時点では、Keras は依然としてディープラーニング開発の初期段階に非常に適しており、データ サイエンティストやアルゴリズム エンジニアが複雑なディープラーニング モデルを迅速に構築してテストするための強力なツールを提供する優れたツールです。

Synced は、バックエンドとして TensorFlow を使用して Keras のテストも試みました。モデル全体の構築は非常に簡単で、初心者でもネットワーク全体のアーキテクチャを簡単に理解できることがわかりました。 TensorFlow を直接使用して畳み込みニューラル ネットワークを構築する場合と比較すると、Keras を高レベル API として使用し、TensorFlow をバックエンドとして使用する方がはるかに簡単です。後で、Keras のコードとコメントを GitHub プロジェクトにアップロードします。次の図は、トレーニングを初期化するためにバックエンドとして TensorFlow を使用する方法を示しています。

畳み込みネットワーク全体のアーキテクチャは次のとおりです。

  1. モデル = シーケンシャル()
  2. モデルを追加します(Conv2D(32, kernel_size=(3, 3),
  3. アクティベーション = 'relu'
  4. 入力形状=入力形状))
  5. モデルを追加します(Conv2D(64, (3, 3), activation= 'relu' ))
  6. モデルを追加します(MaxPooling2D(pool_size=(2, 2)))
  7. model.add (ドロップアウト(0.25))
  8. モデルを追加します(Flatten())
  9. model.add (Dense(128, activation= 'relu' ))
  10. model.add(ドロップアウト(0.5))
  11. model.add (密度(num_classes, activation= 'softmax' ))

上記のコードは、ネットワーク オーバーレイ全体で使用されるレイヤーを明確に定義しています。 Sequential は、シーケンシャル モデル、つまり複数のネットワーク レイヤーの線形スタックを表します。順次モデルを構築した後、入力層から順にさまざまな層を追加して、ネットワーク全体を構築できます。上記のアーキテクチャでは、まず、畳み込みカーネル サイズが 3*3 で、活性化関数が ReLU である 2D 畳み込み層 Conv2D を使用します。ここで、最初のパラメーター 32 は畳み込みカーネルの数を表します。さらに、畳み込みネットワークは MaxPooling2D プーリング層も使用します。ここで、pool_size=(2,2) は 2 方向 (垂直と水平) のダウンサンプリング係数です。Dropout 層は、パラメータが更新されるたびに 0.25 の確率で入力ニューロンをランダムに切断します。Dense 層は完全に接続された層です。Flatten 層は入力を「平坦化」します。つまり、多次元入力を 1 次元に変換します。これは、畳み込み層から完全に接続された層への移行でよく使用されます。上記はアーキテクチャの基本レベルです。より詳細なコードとコメントについては、Synced GitHub プロジェクトを確認してください。

以下はJasmeet Bhatia氏のレビューの詳細です。

Keras バックエンド フレームワークのパフォーマンス テスト

Keras を使用すると、開発者はさまざまなディープラーニング フレームワークを Keras バックエンドとして使用した場合の相対的なパフォーマンスを迅速にテストすることもできます。 Keras 構成ファイルには、バックエンドとして使用するディープラーニング フレームワークを決定するパラメーターがあるため、同じモデルを構築して、さまざまなディープラーニング フレームワーク (TensorFlow、CNTK、Theano など) で直接実行できます。 MXNet に関しては、現在 Keras ver1.2.2 のみをサポートしているため、コードにいくつかの変更を加えるだけで済みます。もちろん、このモデルは、さまざまなディープラーニング フレームワークのさまざまなライブラリに応じて微調整して、パフォーマンスを向上させることができますが、Keras はこれらの基本ライブラリ間のパフォーマンスを比較する良い機会を提供します。

Keras でサポートされているバックエンド フレームワークの相対的なパフォーマンスを比較した記事はいくつかありますが、その比較は比較的早い段階で行われ、主にバックエンドとして TensorFlow と Theano を比較していました。そのため、この記事では、最新バージョンの Keras とディープラーニング フレームワークに基づいて、より大規模な比較を行います。

まず、テストに使用される構成を見てみましょう。すべてのパフォーマンス テストは、Nvidia Tesla K80 GPU を使用した Azure NC6 VM で実行されました。使用された VM イメージは、Ubuntu 上の Azure DSVM (データ サイエンス仮想マシン) でした。 Keras、TensorFlow、Theano、MXNet などのデータ サイエンス ツールがプリインストールされています。テストでは、すべてのパッケージが最新バージョンになっていますが、MXNet は Keras 1.2.2 のみをサポートしているため、古いバージョンが使用されます。

構成

各ディープラーニング フレームワークには異なる依存関係があるため、テストは次の 3 つの構成で実行されました。

パフォーマンステスト

さまざまな DL フレームワークのパフォーマンスを比較するために、以下で説明する 5 つの異なるテスト モデルを使用しました。特定のフレームワークが特別な扱いを受けないようにするため、すべてのモデルは GitHub Keras/examples リポジトリで管理されているモデルから取得されます。

モデルソースコードアドレス: https://github.com/fchollet/keras/tree/master/examples

テストコードは著者の GitHub プロジェクトにあります: https://github.com/jasmeetsb/deep-learning-keras-projects

注: MXNet は最新バージョンの Keras をサポートしていないため、MXNet が参加していないテストが 2 つあります。MXNet をバックエンドとして使用してモデルを実行するには、多くのコード調整が必要です。他の 3 つのテストで MXNet をバックエンドとして使用する場合も、主に Keras の新しいバージョンで一部の関数の名前が変更されたため、若干の調整が必要でした。

テスト 1: CIFAR-10 と CNN

  • 学習モデルの種類: 畳み込みニューラルネットワーク (CNN)
  • データセット/タスク: CIFAR-10 小規模画像データセット
  • 目標: 画像を10のカテゴリに分類する

エポックあたりのトレーニング速度に関しては、TensorFlow は MXNet よりもわずかに高速です。

精度/収束速度に関しては、最初の 25 エポックでは CNTK がわずかにリードしていますが、50 エポック以降では他のフレームワークが同様の精度に達するのに対し、CNTK はわずかに低下しています。

テスト 2: MNIST と CNN

  • 学習モデルの種類: CNN
  • データセット/タスク: MNIST 手書き数字データセット
  • 目的: 画像を手書き数字の10のカテゴリに分類する

このテストでは、トレーニング時間の点では TensorFlow が明らかに優れていますが、精度/収束速度の点ではすべてのフレームワークが同様の特性を持っています。

テスト3: MNIST&MLP

  • 学習モデルの種類: 多層パーセプトロン/ディープニューラルネットワーク
  • データセット/タスク: MNIST 手書き数字データセット
  • 目的: 画像を手書き数字の10のカテゴリに分類する

MNIST データセットを使用した標準的なニューラル ネットワーク テストでは、CNTK、TensorFlow、Theano は同様のスコア (2.5 ~ 2.7 秒/エポック) を達成しましたが、MXNet では 1.4 秒/エポックしかかかりませんでした。さらに、MXNet は精度/収束速度においてもわずかな優位性を持っています。

テスト4: MNIST&RNN

  • 学習モデルの種類: 階層型リカレントニューラルネットワーク (HRNN)
  • データセット/タスク: MNIST 手書き数字データセット
  • 目的: 画像を手書き数字の10のカテゴリに分類する

トレーニング時間に関しては、CNTK と MXNet のパフォーマンスは同等 (162 ~ 164 秒/エポック) ですが、TensorFlow は 179 秒/エポック、Theano は大幅に時間がかかります。

テスト5: BABI & RNN

  • 学習モデルの種類: リカレントニューラルネットワーク (RNN)
  • データセット/タスク: bAbi プロジェクト (https://research.fb.com/downloads/babi/)
  • 目的: ストーリーと質問に基づいて 2 つのリカレント ニューラル ネットワークをそれぞれトレーニングし、結合されたベクトルが一連の bAbi タスクに回答できるようにします。

このテストでは MXNet は使用されません。TensorFlow と Theano は、各エポックで CNTK の 2 倍以上の速度です。

  • TensorFlow は CNN テストでは非常に優れたパフォーマンスを発揮しますが、RNN テストではそれほど優れたパフォーマンスを発揮しません。
  • CNTK は、Babi RNN および MNIST RNN テストでは TensorFlow や Theano よりもはるかに優れたパフォーマンスを発揮しますが、CNN テストでは TensorFlow よりもわずかに劣ります。
  • MXNet は、RNN テストでは CNTK や TensorFlow よりもわずかに優れたパフォーマンスを発揮し、MLP ではすべてのフレームワークよりも優れたパフォーマンスを発揮します。ただし、MXNet は Keras v2 関数をサポートしていないため、コードを修正せずに直接テストすることができず、若干の偏差が生じる可能性があります。
  • Theano は、ディープ ニューラル ネットワーク (MLP) では TensorFlow や CNTK よりもわずかに優れています。

結論

上記の結果から、すべてのディープラーニング フレームワークには独自の専門分野があり、必ずしも他のフレームワークよりも優れているフレームワークはないことがわかります。 CNTK は RNN ユースケースの Keras バックエンドとして使用でき、TensorFlow は CNN に使用できます。MXNet はパフォーマンスの面で大きな可能性を示していますが、すべての Keras 機能をサポートするにはまだ長い道のりがあります。オープンソース コミュニティでは、これらのフレームワークは、パフォーマンスの向上と製品への容易な導入を実現するために、継続的に拡張および強化されています。これらのディープラーニング フレームワークを本番環境で使用することを検討する場合、パフォーマンスが最も重要になります。ほとんどの場合、導入の容易さや、実稼働の機械学習モデルの管理に役立つその他の補助ツールも考慮する必要があります。 ***、すべてのフレームワークのパフォーマンスは Keras バックエンドとして使用されたときに評価されるため、多少の誤差が生じますが、この記事は少なくともこれらのフレームワークのパフォーマンスについてある程度理解するのに役立ちます。さらに、この記事では、さまざまなバックエンドを使用する場合の比較的客観的な提案をいくつか提供できます。

<<:  機械学習の問題を解決する一般的な方法があります!これを読んでください

>>:  クラウドコンピューティングのディープラーニングプラットフォームを構築し実践する唯一の方法

ブログ    

推薦する

パフォーマンスが20%向上しました! USTCの「状態シーケンス周波数領域予測」手法:学習サンプル効率の最大化の特徴

強化学習 (RL) アルゴリズムのトレーニング プロセスでは、サポートとして環境との相互作用のサンプ...

人工知能の登場により、私たちは仕事を維持できるのでしょうか?

週末にニュースを見て衝撃を受けました。Google は最近、同社が開発したロボット (AI) システ...

...

2022年のディープラーニングの5つのトレンド

ディープラーニングは、データから段階的に優れた高度な洞察を抽出するために複数の処理層を活用する人工ニ...

...

スポーツ業界における5つの重要なAI応用分野

データサイエンスと人工知能がスポーツ分析に導入されることは当たり前のことになりました。そして、テクノ...

企業はどのように AI を活用してビジネスの成長を促進できるのでしょうか?

人工知能 (AI) の導入によって得られる潜在的な利益を考えると、企業は傍観者でいるわけにはいきませ...

マイクロソフト、NvidiaとIntelに対抗する2つのカスタムAIチップをリリース

マイクロソフトは最近、シアトルで開催されたIgniteカンファレンスで2つのAIチップをリリースした...

MITの新しい研究によると、機械学習ではフェイクニュースを検知できない

MITの研究者らが発表した2つの新しい論文は、現在の機械学習モデルがフェイクニュース報道を区別する能...

Transformer BEV を使用して自動運転の極端な状況を解決するにはどうすればよいでしょうか?

実際のアプリケーションでは、自動運転システムはさまざまな複雑なシナリオ、特にコーナーケース(極端な状...

ビル・ゲイツ:この伝染病は[諸刃の剣]であり、人工知能はエイズとCOVID-19を治すと期待されています!

序文:科学技術界の頂点に立つビル・ゲイツ氏は、2015年にTEDで「今後数十年のうちに、核戦争よりも...

スポーツイベントではロボットが人間に取って代わるのでしょうか?

スポーツにロボットを導入することは、器用な移動、リアルタイムのモーション制御、経路計画などの最新ロボ...

Google の大きな動き!検索結果からAIが生成したスパムをクリーンアップします

3月6日火曜日(米国時間)、Googleは、検索結果に蔓延するAI生成のスパムを排除し、ユーザーが検...

Huang が H100 を「ブースト」: NVIDIA が大規模モデル アクセラレーション パッケージを発表、Llama2 推論速度が 2 倍に

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

スタンフォード大学の「バーチャルタウン」がオープンソース化:25人のAIエージェントが「ウエストワールド」に登場

「ウエストワールド」を見たことがある友人は、このドラマの舞台が未来の世界、巨大なハイテクな大人向けテ...