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 バックエンドとして使用されたときに評価されるため、多少の誤差が生じますが、この記事は少なくともこれらのフレームワークのパフォーマンスについてある程度理解するのに役立ちます。さらに、この記事では、さまざまなバックエンドを使用する場合の比較的客観的な提案をいくつか提供できます。

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

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

ブログ    
ブログ    
ブログ    

推薦する

マインクラフトがAIの街に変身、NPC住民が本物の人間のようにロールプレイ

この立方体の男が、目の前にいる「招かれざる客」の正体について素早く考えている様子を、注意深く見てくだ...

Laiye Technology、RPA専用に設計されたAI機能プラットフォーム「UiBot Mage」をリリース

俊敏性、効率性、コスト管理性に優れたデジタル変革手法として、中国市場に参入後、高い注目と幅広い受け入...

...

Googleは機械学習ベースのDDoS攻撃防御をテスト中

[[412418]] Google Cloud のお客様は、分散型サービス拒否 (DDoS) 保護...

機械学習にはどのような数学的基礎が必要ですか?

[[184240]]ここ数か月間、データサイエンスの世界にチャレンジして、機械学習の技術を使って統...

1 つの記事でポイント クラウドと自動車用 LiDAR の開発を理解しましょう。

01 車載レーザーレーダーのレーザー点群ポイントクラウド技術により、LIDAR イメージングは​​...

製造業における機械学習と人工知能

より高品質の製品をより多く、より低コストで生産することは、製造業の永遠の目標です。スマート製造革命に...

ビッグデータと人工知能のために生まれた新しい職業:アルゴリズム専門家

ビッグデータとは、さまざまな種類のデータから貴重な情報を迅速に取得する能力を指します。これを理解する...

ChatGPT の機能低下が論争を引き起こしています。AIGC アプリケーションは依然として信頼できるのでしょうか?

スタンフォード大学とカリフォルニア大学バークレー校(UCLA)の研究者による新しい研究では、これらの...

エッジ AI ソフトウェア市場は 2030 年までに大幅に成長する見込み

[[414082]]画像ソース: https://pixabay.com/images/id-592...

ファーウェイ、次世代スマート製品戦略と新+AIシリーズ製品を発表

[中国、上海、2019年9月18日] ファーウェイはHUAWEI CONNECT 2019で、Eng...

女性が30時間以上浴室に閉じ込められた。この危機的状況でAIは彼女を危険から救うことができるのか?

[[385476]]一人暮らしはとても幸せですが、それでも不便なこともたくさんあります。カバーニュ...

人工知能が人々を失業させるのは悪いことではありません。それどころか、それは良い役割を果たします。

近年の科学技術の急速な発展に伴い、人工知能の概念が徐々に明確になってきています。特にOTT業界の重要...

人工知能時代の教師の役割の再構築への道

データとアルゴリズムに基づく人工知能技術は、教師の教育活動と専門能力開発を厳格な手順構造の中に簡単に...

...