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 の過去と現在を分析

推薦する

上海に初のAI野菜市場が上陸。Alipayスキャンコード登録により、手をスワイプしてコードをスキャンするだけでドアが開く

[[250311]] 「顔スキャン」ではなく「手のひらスキャン」で、あなたの家のすぐそばに「AI野菜...

アルゴリズムを使って従業員を解雇する人工知能は、労働者の新たなリーダーになったのだろうか?

最近、外国メディアのゲームワールドオブザーバーは、ロシアのオンライン決済サービス企業エクソラがアルゴ...

不動産の持続可能な開発を推進する4つのテクノロジートレンド

不動産業界は、エネルギー需要の 22% を占めていることから、変化する環境の中で持続可能性を確保する...

AIデータサービス業界は「認知戦争」に突入。なぜYunce Dataは業界No.1の座を維持しているのか?

新しいインフラストラクチャにより、AI の実装が加速され、その背後にある「糧」である AI データ ...

調査によると、2024年は「AIメガネ」市場元年となる

AppleのVision Proヘッドセットは2024年第1四半期に発売される予定だが、業界の専門家...

...

快手AIハッカソンは「AIの名の下に」みんなの幸福を向上させるために終了しました

最近、快手の内部インキュベーターである快手幸福実験室が主催した第2回ハッカソン「AIの名において」の...

動物や人間には学習の臨界期があり、ディープニューラルネットワークにも臨界期がある。

[[409851]] 0 はじめにこの記事で議論されている問題は、ICLR 2019の記事「CRI...

効果的なITセキュリティにとってAIと機械学習がますます重要になる理由

セキュリティ専門家の観点から見ると、現在、AI と機械学習を導入する必要性が高まっています。彼らは、...

トランスフォーマーの層が 2 層未満で、注意ブロックのみの場合、GPT-3: 問題を起こそうとしていますか?

過去 2 年間にわたり、Transformer アーキテクチャに基づいて開発された大規模言語モデルは...

...

...

...

AI は世界を変える。e コマースのビジネス シナリオで顔認識をどのように活用するのでしょうか?

【51CTO.comオリジナル記事】 1. 概要今日、コンピュータービジョンとディープラーニングの...

人工知能時代の到来により、代替が難しい仕事はどれでしょうか?

現在、人類社会は人工知能の時代に入り、人工知能技術は生活のあらゆる分野で実証され、人類社会の継続的な...