PyTorch と TensorFlow のどちらが優れていますか?最前線の開発者の声

PyTorch と TensorFlow のどちらが優れていますか?最前線の開発者の声

Theano、TensorFlow、Torch、MXNetから最近人気のPyTorchなど、ディープラーニングフレームワーク間の比較は常に注目を集めるホットな話題です。しかし、実際にユーザーがどう感じているかご存知ですか?最近、Reddit ユーザーの cjmcmurtrie が「PyTorch vs. TensorFlow」というタイトルのディスカッション スレッドを投稿し、これら 2 つの人気フレームワークの利点を理解したいと考えていました。

[[184501]]

最初の投稿は次の通りです:

Torch7 から TensorFlow にはまだ移行していません。 TensorFlow をいろいろ試してみましたが、Torch7 の方が直感的だと感じました (まだ十分に試していないだけでしょうか)。私も PyTorch を少し試してみたので、まずはそれがどのように動作するか確認してみることにしました。

PyTorch を数週間使用した後、少なくとも私が興味を持っているプロジェクトに関しては、今すぐに TensorFlow に移行する必要はないと思います。 PyTorch でカスタム モジュールを書くのは非常に簡単です。そして、その動的なグラフ構築により、これまで実装するために夜遅くまで起きていなければならなかったこと(または待機リストに載っていたこと)に対して、多くの新しいアイデアが生まれました。 PyTorch は機械学習開発者にとって素晴らしいツールセットだと思います。また、TensorFlow のコミュニティ リソースの方がはるかに強力であることもわかっていますが、コードを書き直したり、既存のアーキテクチャのチュートリアルを読んだりするのではなく、まったく新しいプロジェクトを開発したい場合、コミュニティはあまり役に立たない可能性があります。

この Reddit の投稿が公開された後、多くの機械学習の研究者や開発者の注目を集め、彼らはこの投稿をフォローして自分たちのアイデアや経験について語りました (PyTorch や TensorFlow だけでなく、他のツールについても議論されました)。

以下は、私たちが改良した点の一部です。元の投稿をご覧ください: https://redd.it/5w3q74

テンソルフロー

利点:

  • 同等のグラフのコンパイルははるかに高速で、数分ではなく数秒で完了します。しかし、CI スイートに多くの機能を追加するにはまだ十分な速度ではありませんが、トレーニングを開始するのに長く待つ必要はありません。

  • Lasagne から TensorFlow に移行した後、tf.layers と tf.contrib.layers の高レベル機能が気に入りました。これらは、テンソルを受け入れてテンソルを返す機能的な API であるため、「生の」TensorFlow との統合が容易です。レイヤーを書く手間をかけずに、通常のテンソル演算を実行できます。

  • 私たちが使用するモデルでは、TensorFlow は Theano よりもわずかに高速です (20% ~ 30%)。最初に使用したときは、ほぼ同じパフォーマンスが見られ、許容範囲内だと思いましたが、その後、TensorFlow パフォーマンス ガイドを読んで NCHW に切り替え、バッチ正規化を組み込んだところ、すべてがはるかに高速に実行されました。 Theano 自体はあまり速くないようです...

  • 開発者のフィードバックのスピードについて: 私は TF の問題領域でいくつか些細な質問をしましたが、TF 開発者は通常 1 日か 2 日以内に返信してくれました。

  • さらに、ツールもかなり優れています。 TensorBoard は、タイムライン/トレース ツールと同様に非常に優れています。しかし、新しく追加されたtfdbgはまだ試していません。

  • TensorFlow は分散を考慮して設計されているため、非常に大規模なプロジェクトを実行する必要がある場合は、TensorFlow がおそらく最適な選択肢です。

欠点:

  • TensorFlow の API はばかげています。あらゆる段階で車輪の再発明をしており、開発者は多くの不必要な新しい概念を学習する必要があります。しかし、開発者サミットでは、この状況は改善していることが示され、TensorFlow Servin と Cloud ML を併用することで生産性が向上します。

  • 実際には iOS への展開は困難です。

  • 私は Keras や Tensorflow には取り組んでいませんが、それらの「問題」ログやいくつかのユーザー グループを確認したところ、これらのフレームワークはユーザー数が多いという理由だけで、このような個人的な注目を集めていないようです。

パイトーチ

利点:

  • 軽量です。

  • 現在は Python です。

  • 計算を明示的に制御できます。コードを「助ける」ほど賢くしたり、スピードアップしようとするコンパイラは存在しません。実際、ほとんどのコンパイラはデバッグ中に多くの問題を引き起こします。

  • GPU カーネル呼び出しの上にいくつかの (解釈可能な) 抽象化レイヤーのみを有効にし、これがまさに高パフォーマンスを保証します。

  • 個人的な好みかもしれませんが、私は抽象的なものに対してある種の強迫性障害を感じます。大変な仕事をしなければならないときはいつも緊張します。自分の将来が明らかになると、逃れられない耐え難い痛みを感じるからです。この感覚は、内部で比較的単純なことが起きているはずのほとんどの場合に特に強くなります。

  • デバッグは、特定のコード内の特定の行で失敗するため(大きな Graph オブジェクトや生成された Graph オブジェクトを使用する sess.run() から離れた場所ではなく)、より簡単になります。スタック トレースは、「バグを見つけよう!」という垂直スクロール ゲームをプレイするのに 3 つの画面を埋め尽くすほどの大きさにはなりません。

  • コンパイル時間はありません。 Theano ユーザーがこれをどう処理するのか理解できません。もっと忍耐強くならなければなりません。

  • 勾配を直接操作できるため、明らかにいくつかのことがより簡単かつ自然になります (バックプロパゲーション中の勾配クリッピングや、最近の Shake Shake reg コマンドのようなさまざまな「壊れたバックプロパゲーション」のアイデアなど。実際、 stop_gradient を使用してソリューションをハックできると思います)。

  • 動的グラフィックスのサポートは、後から考えたものではなく、トップダウンの原則に基づいて根本から設計されました。そして、大規模な NLP やニューラル モジュール ネットワークなどの、より動的なグラフも登場するでしょう。

  • コードをインデントしたり肥大化させたりする明示的なセッション オブジェクトはありません。

  • 正しく行われる抽象化は、生の numpy -> テンソル (ただし、GPU 上の生の numpy はおそらくディープラーニングについて何も知りません!) -> 変数 (ディープラーニングについて知っている)、およびモジュールや Optim などです。

  • 動的計算により多くのことが容易になります。たとえば、seq2seq + attention ニューラル変換は keras + tf では実装が難しいですが、PyTorch では簡単に実行できます。

  • 標準の PyThon ツールを使用できるため、デバッグが簡単になります。

  • PyTorch を使用するとカスタム実装が容易になるため、アルゴリズムに集中する時間を増やすことができ、多くの場合、パフォーマンスの大幅な向上につながります。

  • マルチ GPU をシンプルでわかりやすいものにします。

  • Torch-vision を使用すると、画像の読み込みと変換が簡単になります。

  • PyTorch は拡張機能を提供します。一般的に、機能強化の実装にはそれほど多くのリソースが必要ではなく、RL に呼び出す組み込み関数がいくつかあると便利です。

  • 私が遭遇したバグや問題は、PyTorch チームによってすぐに対処され、通常はその日のうちに修正されるか、回避策や問題追跡ツールが提供されました。

  • PyTorch はすぐに使用でき、私の現在のプロジェクトでは、単一 GPU のトレーニング時間は theano+lasagne よりも 100% 高速です。私はテストしましたが、CIFAR100 で 100% 正確に実行すると、(最も単純なケースでは) 5 分/エポックから 2.5 分/エポックになり、場合によっては 2 分/エポック (つまり、2 倍の速さ) まで短縮されます。

欠点:

  • PyTorch の API は少し荒い感じがしますが、いくつかの制限があります。標準的なタスク (ResNet または VGG を実装する) を実行するだけであれば問題はないと思いますが、私が行うことはすべて少し奇妙なので、常に意見の相違がありました。

  • PyTorch に関する私の最大の「不満」は、基本的に、ニューラル ネットワーク API に関して「物事が自分の望むようにレイアウトされていない」ということです。具体的には、私は Lasagne の「レイヤー」パラダイムが本当に気に入っていますが、少し批判的に考えてみると、このパラダイムは動的グラフ フレームワークには特に適していないという結論に至ります。

  • PyTorch はデプロイメント用に設計されておらず、開発チームも PyTorch に重点を置いていないようです (この点については私が間違っている可能性もありますが、フォーラムの投稿でこれを見たような気がします)。ウェブサイトやドロイド アプリに何かを配置する練習をしたいのですが、他のフレームワークがこれを適切にサポートするかどうかわかりません。

<<:  人工知能はプログラムを記述するためにコードを「盗む」ほど賢いが、プログラマーは職を失うことを心配する必要はない

>>:  Google Brain のディープラーニングと TensorFlow の過去と現在を分析

ブログ    
ブログ    

推薦する

...

人工知能技術の発展の概要

[[352219]]人工知能は、コンピュータサイエンス業界のトップテクノロジーの一つとして、1956...

KuaishouとNVIDIAが提携し、業界最先端のGPUコンピューティングインフラストラクチャを展開

1日あたり2億人以上のアクティブユーザーを抱える快手には、130億本以上の短編動画が蓄積されており、...

Wolfram言語の父: ChatGPT は何ができるのか?

写真ChatGPT は非常に人気が高まり、人間の働き方や考え方さえも変え始めています。それを十分に理...

OpenAI、開発者向けGPTチャットボットAPIのメジャーアップデートを発表、価格を値下げ

6月14日、OpenAIは大規模言語モデルAPI(GPT-4およびgpt-3.5-turboを含む)...

...

音声認識:将来の人間とコンピュータの相互作用の破壊と変化

Audi A8L を運転しているとき、簡単な言葉を発するだけで、旅に必要なものがすべて手に入ると想像...

...

...

...

McKinsey AI Notes: 19 の業界における 400 を超える人工知能の使用事例を解読すると、1 兆ドルの価値はどこにあるのか?

[[229251]]最近、マッキンゼーは、人工知能が分析技術の年間価値の40%を占め、毎年3.5兆...

ロボットシェフはトマト入りスクランブルエッグ9品を試食した後、味覚マップを描いた。

5月7日のZhidongxiによると、英国ケンブリッジ大学の研究者らは最近、シェフの調理過程を模倣...

ビッグデータと人工知能のデュアルエンジンが企業のデジタル変革を推進

[51CTO.comより引用] デジタル時代において、ビッグデータと人工知能は企業のビジネス成長を推...

...