TensorFlow、PyTorch、JAX: どのディープ ラーニング フレームワークが最適ですか?
翻訳者 | Zhu Xianzhong
査読者 | インクの色
ディープラーニングは、日々さまざまな形で私たちの生活に影響を与えています。 Siri、Alexa、ユーザーの音声コマンドに基づく携帯電話のリアルタイム翻訳アプリ、またはスマート トラクター、倉庫ロボット、自動運転車を駆動するコンピューター ビジョン テクノロジーなど、毎月新たな進歩がもたらされているようです。これらの深層学習アプリケーションのほとんどは、TensorFlow、PyTorch、JAX の 3 つのフレームワークで作成されています。
それでは、どの深層学習フレームワークを使用すべきでしょうか?この記事では、TensorFlow、PyTorch、JAX の高レベルの比較を実行します。私たちの目標は、コミュニティのサポートや使いやすさなどの要素をもちろん考慮しながら、それぞれの強みを発揮するアプリの種類についてのアイデアを提供することです。
TensorFlow を使用する必要がありますか?
「IBMを買ったからといって解雇された人はいない」は、1970年代から1980年代のコンピューター業界のスローガンでした。今世紀初頭、TensorFlow を使用した深層学習についても同じことが当てはまりました。しかし、誰もが知っているように、1990 年代に入るまでに、IBM は「後回し」になっていました。では、TensorFlow は、2015 年の最初のリリースから 7 年が経過した現在、そして今後の新たな 10 年においても競争力を維持しているのでしょうか? ############確かに。 TensorFlow は常に静止しているわけではありません。まず、TensorFlow 1.x は非 Python 的な方法で静的グラフを構築しますが、TensorFlow 2.x では、操作を即座に評価するために、eager モードを使用してモデルを構築することもできるため、PyTorch に似たものになります。 TensorFlow は、高レベルでは開発を容易にする Keras を提供し、最下位レベルでは速度を向上させる XLA (Accelerated Linear Algebra、加速線形代数) 最適化コンパイラを提供します。 XLA は、GPU のパフォーマンスを向上させる上で魔法のような役割を果たします。これは、Google の TPU (Tensor Processing Unit) の能力を活用する主要な方法であり、大規模なモデルのトレーニングに比類のないパフォーマンスを提供します。
第二に、TensorFlow は、可能な限りすべての機能に優れるよう長年にわたって努力してきました。たとえば、成熟したプラットフォーム上で、明確に定義された反復可能な方法でモデルを提供したいと考えていますか? TensorFlow を提供する準備ができています。モデルのデプロイメントを Web、スマートフォンなどの低電力コンピューティング、またはモノのインターネットなどのリソースに制約のあるデバイスに再配置したいですか?現時点では、TensorFlow.js と TensorFlow Lite は両方とも非常に成熟しています。
Google が本番環境のデプロイメントの実行に依然として 100% TensorFlow を使用していることを考慮すると、TensorFlow がユーザーの規模のニーズを満たすことができることは明らかです。
しかし、最近のプロジェクトには無視できない要素も確かにあります。つまり、プロジェクトを TensorFlow 1.x から TensorFlow 2.x にアップグレードすることは、実際には非常に残酷です。新しいバージョンで適切に動作するようにコードを更新するのに必要な労力を考慮して、単純にコードを PyTorch フレームワークに移植することを決定する企業もあります。さらに、TensorFlow は科学研究分野でも勢いを失い、数年前から PyTorch が提供する柔軟性を好むようになり、研究論文での TensorFlow の使用は継続的に減少しています。
さらに、「ケラス事件」は何の役割も果たしませんでした。 Keras は 2 年前に TensorFlow ディストリビューションに統合されましたが、最近、独自のリリース計画を持つ別のライブラリに戻されました。もちろん、Keras を除外することが開発者の日常生活に影響を与えることはありませんが、フレームワークの小規模な更新バージョンにこのような劇的な変更が加えられることは、プログラマーの間で TensorFlow フレームワークを使用する自信を呼び起こすものではありません。
そうは言っても、TensorFlow は確かに信頼できるフレームワークであり、広範な深層学習エコシステムを備えており、ユーザーは TensorFlow 上であらゆる規模のアプリケーションやモデルを構築できます。そうすれば、多くの良い企業と協力できるでしょう。しかし、今日では TensorFlow が第一の選択肢ではないかもしれません。
PyTorch を使用する必要がありますか?
PyTorch はもはや TensorFlow に続く「新興企業」ではありませんが、現在では深層学習の分野で主要な勢力となっており、おそらく主に研究に使用されていますが、実稼働アプリケーションでも使用されることが増えています。 TensorFlow と PyTorch の開発では、eager モードがデフォルトのアプローチになりつつあり、PyTorch の autograd によって提供される、より Python 的なアプローチが静的グラフとの戦いに勝利しているようです。TensorFlow とは異なり、変数 API がバージョン 0.4 で非推奨になって以来、PyTorch のコア コードは大きな停止を経験していません。以前は、変数には自動的に生成されたテンソルが必要でしたが、現在はすべてがテンソルです。しかし、どこにでも間違いがないわけではありません。たとえば、PyTorch を使用して複数の GPU 間でトレーニングを行っている場合、DataParallel と新しい DistributedDataParaller の違いに遭遇した可能性があります。常に DistributedDataParallel を使用する必要がありますが、DataParaller の使用に特に問題はありません。
PyTorch は、XLA/TPU サポートの点で常に TensorFlow や JAX に後れを取っていましたが、2022 年の時点で状況は大きく改善されました。 PyTorch は、TPU 仮想マシンへのアクセス、レガシー TPU ノードのサポート、およびコード変更を必要とせずに CPU、GPU、または TPU 上で実行されるコードの単純なコマンド ライン デプロイメントのサポートをサポートするようになりました。 PyTorch によって頻繁に作成される定型コードの一部を扱いたくない場合は、トレーニング ループを書き直す代わりに実際の作業に集中できる、Pytorche Lightning のような高レベルの拡張機能を利用できます。一方で、PyTorch Mobile の開発は続けられていますが、TensorFlow Lite よりもはるかに成熟していません。
実稼働側では、PyTorch を Kubeflow などのフレームワークに依存しないプラットフォームと統合できるようになり、TorchServe プロジェクトはスケーリング、メトリクス、バッチ推論などのデプロイメントの詳細を処理し、すべて PyTorch によって維持されます。開発者自身 MLOps のすべての利点を小さなパッケージで利用できます。一方、PyTorch はスケーリングをサポートしていますか?問題ない! Meta は何年も実稼働環境で PyTorch を実行しているため、PyTorch が大規模なワークロードを処理できないと言っている人は嘘をついています。それにもかかわらず、特に多数の GPU または TPU を必要とする非常に負荷の高いトレーニングに関しては、PyTorch が JAX ほどユーザーフレンドリーではない可能性がある状況があります。
最後に、人々が言及したくない厄介な問題がまだあります。ここ数年の PyTorch の人気は、Hugging Face の Transformers ライブラリの成功とほぼ切り離すことができません。はい、Transformers は TensorFlow と JAX もサポートするようになりましたが、元々は PyTorch プロジェクトであり、今でもフレームワークと緊密に統合されています。 Transformer アーキテクチャの台頭、研究に対する PyTorch の柔軟性、そして Hugging Face のモデル センターを通じてリリースから数日または数時間以内に非常に多くの新しいモデルを導入できる機能を考えると、なぜ PyTorch がこれらの分野で人気があるのかは簡単にわかります。
JAX を使用する必要がありますか?
TensorFlow に興味がない場合は、Google が他のサービスを提供している可能性があります。 JAX は、Google によって構築、保守、使用されている深層学習フレームワークですが、Google の公式製品ではありません。ただし、過去 1 年ほどの Google/DeepMind の論文や製品リリースに注目すると、Google の研究の多くが JAX に移行していることに気づくでしょう。つまり、JAX は Google の「公式」製品ではありませんが、Google 研究者が限界を押し広げるために使用しているものです。
JAX とは正確には何ですか? JAX について考える簡単な方法は、「魔法の杖」を使って Python 関数を魔法のようにベクトル化し、これらすべての関数の導関数の計算を処理できる、NumPy の GPU/TPU アクセラレーション バージョンを想像してください。最後に、コードをフェッチして XLA (Accelerated Linear Algebra) コンパイラー用に最適化するためのジャストインタイム (JIT: Just-In-Time) コンポーネントが提供され、それによって TensorFlow と PyTorch のパフォーマンスが大幅に向上します。現在、一部のコードは、実際の最適化作業を行わなくても、JAX で再実装するだけで 4 ~ 5 倍高速に実行されます。
JAX が NumPy レベルで動作することを考慮すると、JAX コードは TensorFlow/Keras (または PyTorch) よりもはるかに低いレベルで記述されます。幸いなことに、JAX の周囲には小規模ながら成長を続けるエコシステムがあり、ある程度の拡張が行われています。ニューラル ネットワーク ライブラリを使用しますか?もちろん。その中には、Google の Flax や DeepMind (同じく Google) の Haiku も含まれます。さらに、Optax はオプティマイザーのあらゆるニーズに対応し、PIX は画像処理などに利用できます。 Flax のようなものを使用すると、ニューラル ネットワークの構築は比較的簡単に習得できるようになります。まだいくつかの厄介な問題があることに注意してください。たとえば、経験豊富な人々は、JAX が他の多くのフレームワークとは異なる乱数の処理方法についてよく話します。
それでは、すべてを JAX に変換して、この最先端のテクノロジーを活用すべきでしょうか?この質問は人によって異なります。このアプローチは、トレーニングに多くのリソースを必要とする大規模なモデルを詳しく調べる場合にお勧めします。さらに、決定論的トレーニングのための JAX や、数千の TPU ポッドを必要とするその他のプロジェクトに興味がある場合は、試してみる価値があります。
まとめ
それでは、結論は何でしょうか?どの深層学習フレームワークを使用する必要がありますか?残念ながら、この質問に対する単一の答えはありません。すべては、取り組んでいる問題の種類、処理するモデルの展開を計画している規模、さらには扱っているコンピューティング プラットフォームによって異なります。
ただし、テキストと画像の分野で作業しており、これらのモデルを実稼働環境にデプロイすることを目的とした小規模から中規模の研究を行っている場合は、おそらく PyTorch が最適です。現時点での選択。最近のバージョンから判断すると、この種のアプリケーション領域のスイートスポットに当てはまります。
低コンピューティング デバイスのすべてのパフォーマンスが必要な場合は、TensorFlow と非常に堅牢な TensorFlow Lite パッケージを使用することをお勧めします。最後に、数百億、数千億、またはそれ以上のパラメーターを含むトレーニング モデルを検討しており、主に研究目的でモデルをトレーニングしている場合は、JAX を試してみる時期が来ているかもしれません。
元のリンク: https://www.infoworld.com/article/3670114/tensorflow-pytorch-and-jax-choosing -a-deep-learning-framework.html
翻訳者紹介
Zhu Xianzhong、51CTOコミュニティ編集者、51CTOエキスパートブロガー、講師、濰坊市の大学コンピュータ教師であり、フリーランスプログラミングの分野のベテラン。
以上がTensorFlow、PyTorch、JAX: どのディープ ラーニング フレームワークが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









エディター | Radish Skin 2021 年の強力な AlphaFold2 のリリース以来、科学者はタンパク質構造予測モデルを使用して、細胞内のさまざまなタンパク質構造をマッピングし、薬剤を発見し、既知のあらゆるタンパク質相互作用の「宇宙地図」を描いてきました。ちょうど今、Google DeepMind が AlphaFold3 モデルをリリースしました。このモデルは、タンパク質、核酸、小分子、イオン、修飾残基を含む複合体の結合構造予測を実行できます。 AlphaFold3 の精度は、これまでの多くの専用ツール (タンパク質-リガンド相互作用、タンパク質-核酸相互作用、抗体-抗原予測) と比較して大幅に向上しました。これは、単一の統合された深層学習フレームワーク内で、次のことを達成できることを示しています。

Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

編集者 | 大根の皮 タンパク質の機能を理解し、分子治療を開発するには、タンパク質が作用する細胞の種類を特定し、タンパク質間の相互作用を分析する必要があります。しかし、生物学的状況を超えたタンパク質相互作用のモデル化は、既存のアルゴリズムにとって依然として困難です。最新の研究では、ハーバード大学医学部の研究者らが、状況を認識したタンパク質表現を生成するための幾何学的な深層学習手法である PINNACLE を開発しました。 PINNACLE は、多臓器単一細胞アトラスを活用して、コンテキスト化されたタンパク質相互作用ネットワークを学習し、24 組織の 156 の細胞型コンテキストから 394,760 個のタンパク質表現を生成します。この研究は「ContextualAImodelsforsingl」の概念に基づいています。

編集者 | KX 分子がどのように相互作用するかを完全に理解できれば、生物学について学ぶことは何もなくなります。なぜなら、私たちが世界をどのように認識するかを含むすべての生物学的現象は、最終的には細胞内での生体分子の挙動と相互作用から生じるからです。最近発売された AlphaFold3 は、タンパク質、核酸、およびそれらのリガンドの配列から直接生体分子複合体の 3D 構造を予測できます。これは、生体分子がどのように相互作用するかについての長期的な探求における大きな進歩を示しています。 AlphaFold3 は、複合体の三次元構造を配列から直接予測する画期的な技術であり、生体分子の相互作用についての洞察を提供します。 1. 生体分子のコード細胞機能を指定する生体分子 (タンパク質や核酸など) の一次元 (1D) 配列。

Go フレームワークの学習には、フレームワークへの過度の依存と柔軟性の制限という 5 つの誤解があります。フレームワークの規則に従わない場合、コードの保守が困難になります。古いライブラリを使用すると、セキュリティと互換性の問題が発生する可能性があります。パッケージを過度に使用すると、コード構造が難読化されます。エラー処理を無視すると、予期しない動作やクラッシュが発生します。
