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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

...

GoogleはAIの訓練のために何億人ものアメリカ人のオンラインデータを盗んだとして集団訴訟に直面している

7月13日、新たな訴訟で、Googleがチャットボット「バード」などの人工知能(AI)製品のトレーニ...

人工知能と機械学習の違いと影響は何ですか?

人工知能と機械学習は、意思決定を行うコンピューターが部署や課全体に取って代わる世界を思い起こさせます...

...

生成 AI は現在の DevOps および SRE 作業システムをどのようにサポートしますか?

こんにちは、ルガです。今日は、人工知能エコシステムの中核技術である「生成型人工知能」を意味する GA...

マスク氏とクック氏は秘密協定を結んだのか?アップルは「アップル税」でテスラに数百万ドルの節約をもたらす

ビッグデータダイジェスト制作著者: カレブ周知のとおり、Apple の App Store のポリシ...

...

...

人工知能はディープラーニング技術を使用して先進運転支援システム(ADAS)を強化します

翻訳者 |李睿レビュー | Chonglou人工知能と機械学習は、ディープラーニング技術の力を活用し...

既存のビッグデータ技術を使用して機械学習プラットフォームを構築する方法

[[210160]]機械はどのように学習するのでしょうか?人間の脳は継続的に経験を蓄積する能力があり...

年次レビュー:人工知能業界は2021年後半に突入

[[443324]] 2015年に人工知能が普及して以来、人工知能業界は7年間の発展を経て後半期に突...