15 ポイント 投稿者 xguru 2021-12-20 | 1件のコメント | WhatsAppで共有
  • 一般には 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件のコメント

 
xguru 2021-12-20

2019/2020年に出ていた話と比較してみるのも面白いです。