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万元を稼ぐには長年の経験が必要です。
>>: 自分に最適なオープンソース フレームワークを選択するにはどうすればよいでしょうか?
AI描画で有名なStability AIが、ついにAI生成動画の分野に参入した。今週の火曜日、Sta...
一見退屈で冷淡なアルゴリズムは、継続的な反復とアップグレードを経て、外界を認識でき、人間の意思決定を...
[[205201]] 9月26日、北京市内の中学校で、顔認証システムで本人確認がされた受験者が模擬試...
過去数か月間、私たちは大規模言語モデル (LLM) が高品質のテキストを生成し、幅広い言語タスクを解...
2019年を振り返ると、無人商用車にとっては着陸の兆しがなく、資金調達がますます困難になり、最悪の...
[[384924]]今日は、ナレッジ グラフに関する記事を書いています。これは、ナレッジ グラフに...
ソラの登場はAI界全体に熱狂を巻き起こしたが、ルカンは例外だった。 OpenAI による Sora ...
人工知能は、人間による情報の統合、データの分析、機械の助けを借りた洞察の獲得のプロセスを再構築し、人...
TensorFlow.js がリリースされた後、以前にトレーニングしたターゲット/顔検出モデルと顔...
2017年杭州雲奇大会が11日、杭州で開催されました。8年前のアリババクラウド開発者会議から8年後...
検索エンジンは一般的に、各 Web ページに対して一連の情報フィンガープリントが計算されるという考え...
[[226981]]ディープラーニングアルゴリズムの台頭と普及により、人工知能の分野、特にコンピュー...
近年、大規模な事前トレーニング済み言語モデル (PLM) により、さまざまな NLP タスクのパフォ...
しかし、メディアで大いに宣伝された後、人々は AlphaGo が Deep Blue と同じレベルに...