この記事では、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 バックエンドとして使用されたときに評価されるため、多少の誤差が生じますが、この記事は少なくともこれらのフレームワークのパフォーマンスについてある程度理解するのに役立ちます。さらに、この記事では、さまざまなバックエンドを使用する場合の比較的客観的な提案をいくつか提供できます。 |
<<: 機械学習の問題を解決する一般的な方法があります!これを読んでください
>>: クラウドコンピューティングのディープラーニングプラットフォームを構築し実践する唯一の方法
この立方体の男が、目の前にいる「招かれざる客」の正体について素早く考えている様子を、注意深く見てくだ...
俊敏性、効率性、コスト管理性に優れたデジタル変革手法として、中国市場に参入後、高い注目と幅広い受け入...
[[412418]] Google Cloud のお客様は、分散型サービス拒否 (DDoS) 保護...
[[184240]]ここ数か月間、データサイエンスの世界にチャレンジして、機械学習の技術を使って統...
01 車載レーザーレーダーのレーザー点群ポイントクラウド技術により、LIDAR イメージングは...
より高品質の製品をより多く、より低コストで生産することは、製造業の永遠の目標です。スマート製造革命に...
ビッグデータとは、さまざまな種類のデータから貴重な情報を迅速に取得する能力を指します。これを理解する...
スタンフォード大学とカリフォルニア大学バークレー校(UCLA)の研究者による新しい研究では、これらの...
[[414082]]画像ソース: https://pixabay.com/images/id-592...
[中国、上海、2019年9月18日] ファーウェイはHUAWEI CONNECT 2019で、Eng...
[[385476]]一人暮らしはとても幸せですが、それでも不便なこともたくさんあります。カバーニュ...
近年の科学技術の急速な発展に伴い、人工知能の概念が徐々に明確になってきています。特にOTT業界の重要...
データとアルゴリズムに基づく人工知能技術は、教師の教育活動と専門能力開発を厳格な手順構造の中に簡単に...