この記事では、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 を使用する方法を示しています。 畳み込みネットワーク全体のアーキテクチャは次のとおりです。
上記のコードは、ネットワーク オーバーレイ全体で使用されるレイヤーを明確に定義しています。 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
エポックあたりのトレーニング速度に関しては、TensorFlow は MXNet よりもわずかに高速です。 精度/収束速度に関しては、最初の 25 エポックでは CNTK がわずかにリードしていますが、50 エポック以降では他のフレームワークが同様の精度に達するのに対し、CNTK はわずかに低下しています。 テスト 2: MNIST と CNN
このテストでは、トレーニング時間の点では TensorFlow が明らかに優れていますが、精度/収束速度の点ではすべてのフレームワークが同様の特性を持っています。 テスト3: MNIST&MLP
MNIST データセットを使用した標準的なニューラル ネットワーク テストでは、CNTK、TensorFlow、Theano は同様のスコア (2.5 ~ 2.7 秒/エポック) を達成しましたが、MXNet では 1.4 秒/エポックしかかかりませんでした。さらに、MXNet は精度/収束速度においてもわずかな優位性を持っています。 テスト4: MNIST&RNN
トレーニング時間に関しては、CNTK と MXNet のパフォーマンスは同等 (162 ~ 164 秒/エポック) ですが、TensorFlow は 179 秒/エポック、Theano は大幅に時間がかかります。 テスト5: BABI & RNN
このテストでは MXNet は使用されません。TensorFlow と Theano は、各エポックで CNTK の 2 倍以上の速度です。
結論 上記の結果から、すべてのディープラーニング フレームワークには独自の専門分野があり、必ずしも他のフレームワークよりも優れているフレームワークはないことがわかります。 CNTK は RNN ユースケースの Keras バックエンドとして使用でき、TensorFlow は CNN に使用できます。MXNet はパフォーマンスの面で大きな可能性を示していますが、すべての Keras 機能をサポートするにはまだ長い道のりがあります。オープンソース コミュニティでは、これらのフレームワークは、パフォーマンスの向上と製品への容易な導入を実現するために、継続的に拡張および強化されています。これらのディープラーニング フレームワークを本番環境で使用することを検討する場合、パフォーマンスが最も重要になります。ほとんどの場合、導入の容易さや、実稼働の機械学習モデルの管理に役立つその他の補助ツールも考慮する必要があります。 ***、すべてのフレームワークのパフォーマンスは Keras バックエンドとして使用されたときに評価されるため、多少の誤差が生じますが、この記事は少なくともこれらのフレームワークのパフォーマンスについてある程度理解するのに役立ちます。さらに、この記事では、さまざまなバックエンドを使用する場合の比較的客観的な提案をいくつか提供できます。 |
<<: 機械学習の問題を解決する一般的な方法があります!これを読んでください
>>: クラウドコンピューティングのディープラーニングプラットフォームを構築し実践する唯一の方法
ImageNet の精度は常にモデルのパフォーマンスを評価するための主要な指標であり、ディープラーニ...
11月26日の英国デイリーメール紙によると、スペースXとテスラのCEOであるマスク氏は、人間の知能の...
有名な数学者テレンス・タオ氏はここ数か月、ChatGPTやGPT-4などのAIツールを使用して数学の...
1. 概要大規模言語モデル (LLM) の急速な発展に伴い、LLM が人工知能業界の発展に与える影...
レノボ・エンタープライズ・テクノロジー・グループは12月8日、「レノボ・インテリジェント・トランスフ...
[[251878]]数日前、もう一つの非常に興味深い広告が私の注意を引きました。それはトルコのテクノ...
[[219586]] 1990年代初頭、ウィチタ州立大学の物理学教授エリザベス・バーマンが量子物理...
[[393467]]この記事はWeChatの公開アカウント「Shu Shixiong」から転載したも...
代数多様体とその方程式。代数幾何学は、一方では方程式の研究である代数学、他方では図形の研究である幾何...