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

ブログ    

推薦する

安定拡散法を使って超リアルな人間の顔を生成する3つの方法

翻訳者 |ブガッティレビュー | Chonglou他の人はAI画像を使って超リアルな顔を生成できるの...

特徴エンジニアリングとは何ですか?なぜ自動化が必要なのでしょうか?

[51CTO.com クイック翻訳] 今日、人工知能(AI)はますます一般的になり、必要になってき...

ホーキング博士は、人工知能が AI の世界的な商業的発展を止めることはできないと警告しています。これは祝福でしょうか、それとも呪いでしょうか?

水曜日の早朝、著名な物理学者スティーブン・ホーキング教授の家族は声明を発表し、ホーキング教授がイギリ...

マイクロソフトとスタンフォード大学の新アルゴリズムがAIによる人類絶滅のリスクを排除! GPT-4の自己反復、プロセスは制御可能かつ説明可能

「再帰的に自己進化する AI が人間を支配する」という問題に対する解決策はあるのでしょうか? !多く...

第4世代ロボットが発売。Lingdong TechnologyのAMR分野における粘り強さと革新

AGV と比較すると、V-AMR ロボットの利点は、特にビジネス プロセス、倉庫の変革、展開サイクル...

...

ガートナーの調査によると、ジェネレーティブAIは企業にとって新たな大きなリスクとなっている

この調査は、249人の上級企業リスク管理責任者を対象に実施され、2023年第2四半期の最も深刻な5つ...

アリババが自社開発のAIクラスターの詳細を発表:64基のGPU、数百万のカテゴリーのトレーニングを4倍高速化

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

小紅書探索チームが新たな枠組みを提案:大規模モデル蒸留のためのネガティブサンプルの価値を検証

大規模言語モデル (LLM) はさまざまな推論タスクで優れたパフォーマンスを発揮しますが、ブラックボ...

...

ACL'23表彰式は大成功でした!前例のない75件の論文がリストされ、その半分は中国語でした。

ACL 2023 受賞論文が発表されました!合計75件の論文が提出され、6件の賞が選ばれました。優...

...

30年以上前の主張が覆された?大規模モデルは人間レベルのシステム一般化能力を持つ

人間には「類推による学習」能力があることがわかっています。つまり、新しい概念を学習した後、すぐにそれ...