2022年のPyTorchとTensorFlowの比較
(assemblyai.com)-
一般には TensorFlow は産業向け、PyTorch は研究向けと言われるが、これは古い情報に基づく話
-
実用的な観点では、通常は次の3つの比較に帰着する
→ モデルの可用性 : 公開利用できるモデルがどれだけ多いか
→ デプロイインフラ : どれだけ効率よくデプロイできるか
→ エコシステム : 多様な環境/ハードウェアへの対応
Model Availability
-
PyTorch、TensorFlow ともに公式モデルリポジトリを持っている
-
HuggingFace
→ PyTorch でしか使えないものが 85%、独占ではないモデルも 50% は利用可能。全体の 16% だけが TensorFlow で利用可能(うち 8% のみが TF 専用)
→ 人気上位 30 モデルでは、すべてが PyTorch で利用可能だが、TensorFlow ではそのうち 18 個しか利用できない
- 研究論文
→ 毎年投稿される論文における PyTorch の利用率は継続的に増加
→ 2017年の 7% から始まり、2021年にはほぼ 80% に到達
→ TensorFlow 1 の扱いづらさのため、PyTorch が多く選ばれた
→ こうした難しさは 2019年に出た TensorFlow 2 でかなり改善されたが、すでに PyTorch が研究中心の地位を確立
→ 2018年に TensorFlow を使っていた研究者の 55% が 2019年に PyTorch へ移行
→ 2018年に PyTorch を使っていた研究者の 85% は 2019年も PyTorch を利用
- Papers With Code のデータによると
→ TensorFlow は継続的に減少し、PyTorch や他のフレームワークの利用が増加中
→ TensorFlow 2 のリリース後もこの傾向は継続。TF1 で経験した難しさを覆すには力不足
-
結論として、モデル可用性の面では PyTorch が市場を支配
-
そのほかの例外
→ GoogleAI は TensorFlow を主に使っていたが、Google Brain は JAX/Flax を使用
→ DeepMind も JAX を導入し、JAX 向けニューラルネットワークライブラリの Haiku も開発(JAX 向け Sonnet)
→ JAX : Google が別途作ったフレームワーク。研究分野で人気を集めつつある
Deployment
- TensorFlow は当初からデプロイ志向のアプリケーションに最適化されていた
→ TensorFlow Serving、TensorFlow Lite などにより、クラウド/サーバー/モバイル/IoT デバイスなどへ無理なくデプロイ可能
- PyTorch はデプロイの観点でかなり出遅れていたが、この数年で差を縮めるために取り組んできた
→ TorchServe と PyTorch Live
- 結論として、現時点ではデプロイの観点では TensorFlow のほうが優れている
→ 特に TFLite をローカル環境や Coral デバイスで使える点は、他の産業でも重要
→ PyTorch Live はモバイルに特化しており、TorchServe はまだ初期段階
Ecosystems
- PyTorch
→ 公式の PyTorch Hub があり、Audio/Vision/NLP など多様なモデルを備える
→ SpeechBrain : 公式オープンソース音声ツールキットで、ASR/話者認識/認証 など多くの機能を持つ
→ Fast.ai をはじめ、さまざまなツールやライブラリがある
→ TorchElastic : AWS+Facebook の協業プロジェクト
→ TorchX : 高速な機械学習の開発・デプロイ向けライブラリ
→ PyTorch Lightning : Keras of PyTorch
- TensorFlow
→ 公式の TensorFlow Hub : BERT を含む多様なモデル
→ Model Garden : SOTA(State-of-the-ART) モデル向けソースコードリポジトリ
→ TensorFlow Extended(TFX) : モデルデプロイのための E2E プラットフォーム
→ Vertex AI : Google Cloud の統合機械学習プラットフォーム
→ Media Pipe : 顔認識、手のトラッキング、物体認識などの機能を作る機械学習パイプラインを構築する、マルチモーダル・クロスプラットフォームのフレームワーク
→ Coral : ローカル AI を内蔵した製品(IoT)を支援するために作られたツールキット
→ TensorFlow.js : 機械学習のための JavaScript ライブラリ
→ TensorFlow Cloud : ローカル開発環境を Google Cloud に接続
→ Colab : クラウドベースのノートブック環境(Jupyter に類似)
→ Playground : ニューラルネットワークの基礎理解に適した教育ツール
→ Datasets : Google が定期的に公開するデータセットを保存(PyTorch ユーザーも利用可能)
- 結論として、エコシステムでは TensorFlow のほうが優れている
→ これまで Google が多く投資してきた
→ Google Cloud との接続や Coral デバイスへの移植のしやすさなど、一部の分野ではより優秀
では、どちらを使うべきか?
- その業界にいるなら、どのインダストリーに属しているかによって選択は変わり得る(原文に簡単に選ぶためのフローチャートあり)
→ 産業環境でディープラーニングを使うなら、すでに TensorFlow を使っていることが多く、そのままでよい
→ TorchServe があるため PyTorch も検討の余地はある
→ モバイルなら PyTorch Live、音声/動画入力なら TensorFlow を
→ IoT で AI を使うなら TensorFlow Lite + Coral
- 研究者なら?
→ すでにおそらく PyTorch を使っているはずで、そのままでよい
→ 例外として強化学習をやるなら TensorFlow を検討
→ TensorFlow を使いたくないなら JAX も一度検討に値する
→ 何を選ぶにせよ、2022年は JAX に注目すべき
- 教授なら?
→ 教育課程の目標によって異なり得る
→ 実務ですぐ機械学習を使えるエンジニアを育成したいなら TensorFlow
→ ディープラーニングとディープラーニングモデルを理解させたいなら PyTorch
- キャリアチェンジをするなら?
→ PyTorch / TensorFlow のどちらも良い選択肢
→ より使いやすいほうを選ぶこと
→ 特定のフレームワークに縛られないなら、業界標準として使われる TensorFlow のほうがよい
→ 求人・転職の面では TensorFlow のほうが有利だった
- 趣味でディープラーニングをするなら?
→ 何をしたいかによるが、基本的には PyTorch がよい
- ディープラーニングの完全な初心者なら?
→ Keras から始めることを推奨
→ Python ネイティブに近い環境を求めるなら PyTorch、特に PyTorch Lightning
1件のコメント
2019/2020年に出ていた話と比較してみるのも面白いです。
機械学習フレームワークの現在 [2019] https://ja.news.hada.io/topic?id=696
機械学習の専門家たちが予見する2020年のAIの方向性 https://ja.news.hada.io/topic?id=1213
AIを独学し、Googleに入社した研究者インタビュー https://ja.news.hada.io/topic?id=1347
TensorFlowエコシステム: 機械学習の開発からデプロイまで https://ja.news.hada.io/topic?id=1757
Googleが作った機械学習短期集中コース with TensorFlow [韓国語] https://ja.news.hada.io/topic?id=1052