宗教戦争はテクノロジーの土台となっています。 さまざまなオペレーティング システム、クラウド プロバイダー、またはディープ ラーニング フレームワークの長所と短所についての議論であるかどうかにかかわらず、ビールを数杯飲むと、事実は脇に追いやられ、人々は自分のテクノロジが聖杯であるかのように戦い始めます。
IDE についての際限のない話について考えてみてください。 VisualStudio を好む人もいれば、IntelliJ を使用する人もいれば、Vim のような単純な古いエディターを使用する人もいます。 お気に入りのテキスト エディターがあなたの性格について何と言うかについて、終わりのない議論があり、もちろん半分皮肉なことです。
同様の戦争が PyTorch と TensorFlow の周りで燃え上がっているようです。 どちらの陣営にも多くの支持者がいます。 そして、どちらの陣営も、お気に入りの深層学習フレームワークが最適である理由を示唆する良い議論をしています。
3 月の TNW バレンシアのチケットを手に入れましょう!
ハイテクの心臓部が地中海の中心部にやってくる
そうは言っても、データはかなり単純な真実を語っています。 TensorFlow は、現時点で最も普及しているディープ ラーニング フレームワークです。 毎月、PyTorch のほぼ 2 倍の数の質問が StackOverflow に寄せられます。
一方、TensorFlow は 2018 年頃から成長していません。PyTorch は、この投稿が公開される日まで着実に勢いを増していました。
完全を期すために、下の図には Keras も含めました。 TensorFlow とほぼ同時期にリリースされました。 しかし、お分かりのように、近年はそれが台無しになっています。 これについての簡単な説明は、Keras は少し単純化されており、ほとんどの深層学習の実践者が持つ要求に対して遅すぎるということです。
TensorFlow の StackOverflow トラフィックは急速に減少しているわけではないかもしれませんが、それでも減少しています。 そして、特に Python の世界では、この減少が今後数年間でより顕著になると信じるに足る理由があります。
PyTorch はより Pythonic に感じます
Google によって開発された TensorFlow は、2015 年後半にディープ ラーニング パーティーに登場した最初のフレームワークの 1 つだった可能性があります。しかし、最初のバージョンは、多くのソフトウェアの最初のバージョンがそうであるように、使用するのがかなり面倒でした。
そのため、Meta は TensorFlow とほぼ同じ機能を提供する手段として PyTorch の開発を開始しましたが、使いやすくしています。
TensorFlow の背後にいる人々はすぐにこれに注目し、TensorFlow 2.0 で PyTorch の最も人気のある機能の多くを採用しました。
経験則としては、PyTorch が TensorFlow で行うことは何でもできるということです。 コードを書くのに 2 倍の労力がかかるだけです。 それほど直感的ではなく、今日でも非常にPythonicではありません。
一方、PyTorch は、Python の使用を楽しんでいる場合、非常に自然に使用できます。
PyTorch にはより多くの利用可能なモデルがあります
多くの企業や学術機関には、大規模なモデルを構築するために必要な大規模な計算能力がありません。 ただし、機械学習に関してはサイズが重要です。 モデルが大きいほど、そのパフォーマンスは印象的です。
HuggingFace を使用すると、エンジニアはトレーニングおよび調整された大規模なモデルを使用して、わずか数行のコードでパイプラインに組み込むことができます。 ただし、これらのモデルの驚異的な 85% は PyTorch でのみ使用できます。 HuggingFace モデルの約 8% のみが TensorFlow 専用です。 残りは両方のフレームワークで利用できます。
つまり、大規模なモデルを使用する予定がある場合は、TensorFlow を使用しないか、コンピューティング リソースに多額の投資をして独自のモデルをトレーニングすることをお勧めします。
PyTorch は学生や研究に適しています
PyTorch は、学界でより高く評価されているという評判があります。 これは不当ではありません。 研究論文の 4 分の 3 が PyTorch を使用しています。 TensorFlow の使用を開始した研究者の間でさえ (それがディープ ラーニングの当事者に早くから到達したことを思い出してください)、大多数は現在 PyTorch に移行しています。
Google は AI 研究に非常に大きな足跡を残しており、主に TensorFlow を使用しているにもかかわらず、これらの傾向は驚くべきものであり、持続しています。
これについておそらくもっと驚くべきことは、研究が教育に影響を与え、したがって学生が何を学ぶかを定義するということです. PyTorch を使用して論文の大部分を公開した教授は、講義で PyTorch を使用する傾向が強くなります。 彼らは、PyTorch に関する質問を教えたり答えたりするのがより快適になっただけではありません。 彼らはまた、その成功に関してより強い信念を持っているかもしれません.
したがって、大学生は TensorFlow よりも PyTorch についてより多くの洞察を得ることができます。 そして、今日の大学生が明日の労働者であることを考えると、おそらくこの傾向がどこに向かっているのか推測できます…
PyTorch のエコシステムは急速に成長しました
結局のところ、ソフトウェア フレームワークは、エコシステムのプレーヤーである場合にのみ重要です。 PyTorch と TensorFlow はどちらも、HuggingFace 以外のトレーニング済みモデルのリポジトリ、データ管理システム、障害防止メカニズムなどを含む、かなり発展したエコシステムを持っています。
現時点で、TensorFlow のエコシステムは PyTorch よりもわずかに発達していることは言うまでもありません。 ただし、PyTorch はパーティーに遅れて登場し、過去数年間でかなりの数のユーザーが増加したことを覚えておいてください。 したがって、PyTorch のエコシステムはやがて TensorFlow のエコシステムを超える可能性があると予想できます。
TensorFlow には優れたデプロイ インフラストラクチャがあります
TensorFlow のコーディングは面倒かもしれませんが、いったん作成すると、PyTorch よりもデプロイがはるかに簡単になります。 TensorFlow Serving や TensorFlow Lite などのツールを使用すると、クラウド、サーバー、モバイル、IoT デバイスへのデプロイを簡単に行うことができます。
一方、PyTorch はデプロイ ツールのリリースが非常に遅いことで知られています。 そうは言っても、最近では TensorFlow とのギャップを急速に縮めています。
現時点で予測するのは困難ですが、今後数年で PyTorch が TensorFlow のデプロイ インフラストラクチャに匹敵するか、それを超える可能性さえあります。
TensorFlow のコードは、デプロイ後にフレームワークを切り替えるのにコストがかかるため、おそらくしばらくは残るでしょう。 ただし、新しい深層学習アプリケーションが PyTorch で作成およびデプロイされることがますます増えることは十分に考えられます。
TensorFlow は Python のすべてではありません
TensorFlow は死んでいません。 かつてほどの人気はありません。
この主な理由は、機械学習に Python を使用している多くの人々が PyTorch に切り替えていることです。
しかし、機械学習用の言語は Python だけではありません。 これは機械学習の OG であり、TensorFlow の開発者がそのサポートを Python に集中させた唯一の理由です。
最近では、JavaScript、Java、および C++ で TensorFlow を使用できます。 コミュニティは、Julia、Rust、Scala、Haskell などの他の言語のサポートの開発も開始しています。
一方、PyTorch は Python を非常に中心としています。 C++ API はありますが、TensorFlow が提供する他の言語のサポートの半分ではありません。
PyTorch が Python 内で TensorFlow を追い越すことはかなり考えられます。 一方、TensorFlow は、その印象的なエコシステム、展開機能、および他の言語のサポートを備えており、ディープ ラーニングの重要なプレーヤーであり続けるでしょう。
次のプロジェクトで TensorFlow と PyTorch のどちらを選択するかは、Python がどれだけ好きかによって決まります。
この記事は Ari Joury によって書かれ、もともと Medium で公開されました。 ここで読むことができます。