Keras と PyTorch は確かに最も初心者に優しいディープラーニング フレームワークであり、アーキテクチャを記述するシンプルな言語のように機能し、どのレイヤーで何を使用するかをフレームワークに指示します。これにより、静的計算グラフの設計、各テンソルの次元と内容の個別の定義など、多くの抽象的な作業が削減されます。 しかし、どのフレームワークが優れているのでしょうか? もちろん、開発者や研究者によって好みや意見は異なります。この記事では、抽象化とパフォーマンスの観点から PyTorch と Keras を比較し、2 つのフレームワークのすべての事前トレーニング済みモデルを再現して比較する新しいベンチマークを紹介します。 Keras と PyTorch のベンチマーク プロジェクトでは、MIT の博士課程の学生 Curtis G. Northcutt が 34 個の事前トレーニング済みモデルを再現しました。このベンチマークは、Keras と PyTorch を組み合わせて 1 つのフレームワークに統合することで、2 つのフレームワークを比較し、さまざまなモデルにどちらのフレームワークが適しているかを知ることができます。たとえば、プロジェクト作成者は、ResNet アーキテクチャ モデルでは Keras よりも PyTorch の方が適しており、Inception アーキテクチャ モデルでは PyTorch よりも Keras の方が適していると述べています。 Keras と PyTorch ベンチマーク プロジェクト: https://github.com/cgnorthcutt/benchmarking-keras-pytorch 1. 2つの主要フレームワークのパフォーマンスと使いやすさ Keras は TensorFlow の高度にカプセル化されたバージョンであるため、抽象化のレベルが非常に高く、多くの API の詳細が隠されています。 PyTorch は TensorFlow の静的計算グラフよりも使いやすいですが、Keras では全体的に詳細が隠されています。パフォーマンスに関しては、実際には各フレームワークで多くの最適化が行われており、その違いはあまり明白ではなく、主な選択基準にはなりません。 1. 使いやすさ Keras は、一般的に使用されるディープラーニングのレイヤーと操作を便利なビルディング ブロックにカプセル化し、ビルディング ブロックのように複雑なモデルを構築する、より高レベルのフレームワークです。開発者や研究者は、ディープラーニングの複雑さを考慮する必要がありません。 PyTorch は比較的低レベルの実験環境を提供し、ユーザーがカスタム レイヤーを記述したり、数値最適化タスクを探索したりする自由度を高めます。たとえば、PyTorch 1.0 では、コンパイル ツール torch.jit に、Python のサブ言語である Torch Script という言語が含まれています。開発者はこれを使用して、モデルをさらに最適化できます。 単純な畳み込みネットワークを定義すると、両方の使いやすさがわかります。
上記のように、Keras はこのように定義されています。多くの場合、操作はパラメータとして API に埋め込まれているため、コードは非常に簡潔になります。以下はPyTorchの定義方法です。一般的にはクラスとインスタンスを通じて定義され、特定の操作の多くの次元のパラメータを定義する必要があります。
Keras は PyTorch よりも使いやすいように感じますが、両者の違いは大きくなく、どちらもモデルがより便利に記述されることが期待されます。 2. パフォーマンス さまざまなフレームワークのパフォーマンスを比較する実験は数多くあり、PyTorch のトレーニング速度が Keras よりも速いことが示されています。次の 2 つのグラフは、さまざまなハードウェアおよびモデル タイプでのさまざまなフレームワークのパフォーマンスを示しています。 次の 2 つの図も、PyTorch および Keras フレームワークでのさまざまなモデルのパフォーマンスを示しています。これら 18 年間のテストはどちらも、PyTorch が Keras よりもわずかに高速であることを示しています。 これら 2 つの比較の詳細については、以下を参照してください。
2. Keras と PyTorch ベンチマーク さて、事前学習済みモデルの観点から見ると、異なるフレームワーク上での同じモデルの検証セットの精度はどの程度でしょうか。このプロジェクトでは、著者は 2 つのフレームワークを使用して合計 34 の事前学習済みモデルを再現し、すべての事前学習済みモデルの検証精度を示しました。したがって、このプロジェクトは比較の基盤としてだけでなく、学習リソースとしても使用できます。クラシック モデル コードを直接学習するより良い方法があるでしょうか? 1. 事前トレーニング済みのモデルはすでに再現可能ではないのですか? PyTorch ではこのように動作します。しかし、Keras ユーザーの中には、再現が非常に難しいと感じる人もいます。遭遇する問題は、次の 3 つのカテゴリに分けられます。
これらの問題は実際に存在し、元の GitHub プロジェクトでは各問題へのリンクが提供されています。プロジェクト作成者の目標の 1 つは、Keras の事前トレーニング済みモデルの再現可能なベンチマークを作成することで、上記の問題の一部に対処することです。解決策は、Keras で実行する必要がある次の 3 つの側面に分けることができます。推論中にバッチを回避する。 これは非常に遅く、一度に 1 つの例を実行しますが、各モデルに対して再現可能な出力が得られます。 次のモデルがロードされるときに前のモデルから何もメモリに保持されないようにするには、モデルをローカル関数またはステートメントでのみ実行します。 2. 事前学習済みモデルの再現結果 以下は、Keras と PyTorch の「実際の」検証セットの精度の表です (macOS 10.11.6、Linux Debian 9、Ubuntu 18.04 で検証済み)。 3. 複製方法 まず、50,000 枚の画像を含む ImageNet 2012 検証セットをダウンロードする必要があります。 ILSVRC2012_img_val.tar のダウンロードが完了したら、次のコマンド ラインを実行して検証セットを前処理/抽出します。
ImageNet 検証セットの各例の上位 5 つの予測が推定されました。次のコマンドラインを実行すると、これらの事前計算された結果が直接使用され、Keras および PyTorch ベンチマークが数秒で再現されます。
Keras と PyTorch のそれぞれの推論出力は、事前に計算されたデータを使用せずに再現できます。 Keras での推論には長い時間 (5 ~ 10 時間) がかかります。これは、フォワード パスが一度に 1 つの例ごとに計算され、ベクトル計算が回避されるためです。同じ精度を確実に再現したい場合、これがこれまでに見つかった最良の方法です。 PyTorch での推論は非常に高速です (1 時間未満)。再現するコードは次のとおりです。
GPU の使用状況、バッチ サイズ、出力ストレージ ディレクトリなどを制御できます。コマンドライン オプションを表示するには、-h フラグを付けて実行します。 記事を読んで、どちらが好きになりましたか? オリジナルリンク: http://l7.curtisnorthcutt.com/towards-reproducibility-benchmarking-keras-pytorch [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: AIエンジニアの年収はわずか50万元程度で、年間100万元を稼ぐには長年の経験が必要です。
>>: 自分に最適なオープンソース フレームワークを選択するにはどうすればよいでしょうか?
Forrester は、2025 年までの市場規模をより現実的に把握するために、AI ソフトウェア...
この記事では、パーソナライズされた連合学習に関する 3 つの記事を厳選して詳細に分析します。従来の機...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
センサーフュージョンは、自動運転車の重要な技術の 1 つです。これは、すべての自動運転車のエンジニア...
バブル ソートは、計算時間が O(n^2) のコンピュータ ソート方法です。ヒープ ソートやクイック...
近年、人工知能技術は急速に発展し、ますます多くの分野でその急速な発展の勢いと大きな可能性を発揮してい...
世界経済フォーラムが最近発表した報告書によると、2025年までに世界の仕事の半分はロボットによって行...
海外メディアは、情報分析プロバイダーRELXの新しいレポートによると、回答者の95%が人工知能の人材...
[[396336]] China.com 4月25日ニュース このほど、国家標準「情報セキュリティ...
1. 機械学習をスキルとして扱うソフトウェア エンジニアとして、私たちは常に学習し、進化するフレーム...