Pythonスキルの習得

TensorFlow vs PyTorch – 世界での使用状況と特徴比較 – どちらを使用するべき ?

TensorFlow vs PyTorch - 世界での使用状況と特徴比較 - どちらを使用するべき ?

2022年1月時点、深層学習(ディープラーニング)のフレームワークは

  • TensorFlow
  • PyTorch

の2強時代になっています。

本記事は、

  • これからPythonを使って、「ディープラーニング」の学習をしたい
  • どちらかのフレームワークを使ってきたが、もう一方のフレームワークの方がいいのでは?

と思っている方を対象に、

  • 世界での、各フレームワークの使用状況
  • 各フレームワークの特徴

を把握した上で、どちらの使用がオススメなのか、ご紹介します。

こんにちは、Zero-Cheeseです。

私自身、ディープラーニングに日々携わっており、「TensorFlow、Pytoch」両方のライブラリを使用しています。

使用している経験も踏まえつつ、記事にしました。

各ライブラリの「世間での使用状況」比較

「TensorFlor, PyTorch」の使用状況

各フレームワークが、使用されている状況を、2つのデータより見てみます。

結論:

  • 研究者は、PyTorch
  • ビジネスまで拡大すると、TensorFlowが優勢と推定

論文引用数

研究論文における、フレームワークの使用割合を示したものになります。

引用元:「Paper with Code: Trends

PyTorchが圧勝で、約80%以上のシェアになっています。

Kaggle での使用状況

「Kaggle」は世界最大の、機械学習を競い合うプラットフォームです。

こちらの参加者は、研究者だけでなく、ビジネス(実務)に携わっている者も参加しています。

よってビジネス(実務)的に、どのフレームワークが使われているのか、探るヒントになると思っています。

Kaggleの最新レポート(2021年版)によれば、下記の通りです。

機械学習のフレームワークの使用率になります。

2021 Kaggle Machine Learning & Data Science Survey より引用

結果:

  • TensorFlow:52.6%
  • PyTorch:33.7%

実務者を含めると、TensorFlowが多いと推察されます。

(脱線) データサイエンティストの給料

Kaggleのレポートに興味深いデータがあったので、ご紹介します。

各国別の給料(ドル -中央値-)になります。

アメリカ、凄いです。

日本の2.5倍、年収が多い・・・・

各フレームワークの「性能」比較

結論:

  • 処理速度は、同等

「TensorFlow, PyTorch」パフォーマンス比較

代表的な、「ディープラーニング」のモデルに関して、各フレームワークの性能比較結果になります。

Deep Learning Frameworks Speed Comparison より引用

この結果より

  • TensorFlowとPyTorchは、ほぼ同等
  • (Kerasは、TensorFlowのラッパーという事もあってか、処理速度が遅い傾向)

という結果が得られています。

各フレームワークの特徴

TensorFlowの特徴

Googleが開発し、オープンソースで公開されている、機械学習フレームワークです。

Ver.1とVer.2で大きく特徴が変わっています。

Ver.1の特徴

「Define-and-Run」方式と呼ばれる、「計算グラフを先に宣言してから、データを与えて学習する」方式が採用されていました。

計算グラフを事前に定義してコンパイルしているので、動作速度が速いという、メリットがあります。

一方、デメリットとしては、

  • コードの書き方に、クセがある
  • 計算グラフを柔軟に変更できない
  • エラー発生時、デバッグが大変!!
  • GPU版の環境構築が、かなり大変

といった特徴があります。

この中でも一番大変だったのは、GPU版の環境構築でした!!

GPUのライブラリ、CUDA、cuDNN、TensorFlowのバージョンのいずれかがズレると、途端にエラーが発生しました。

詳細は、最後の雑談で。

Ver. 2の特徴

大きな特徴は、Eager Modeと呼ばれている、「Define-by-Run」方式が標準となりました。

つまり、通常のコードと同じように

  • コード中に 「c = a + b」 と記述すると、この計算グラフの定義と実行が、同時に実施され、結果を得られる

仕様に変更になりました。

その結果、シンプルで分かりやすくなりました。

またその他の特徴として、

  • ver.1では、同じような関数が、違うメソッド名で乱立していましたが、整理されました。
  • Numpyと似たような操作が可能になった。
  • Kerasがライブラリとして取り込まれた。

が挙げられます。

デメリットとしては、以下になります。

  • Ver.1を学習した者にとっては、学習コストが更に増加
  • Ver.1より遅い。(下記表を参照。 Ver違いによる、処理時間の比較をしたものです。)

遅くなってる・・・

PyTorchの特徴

Meta(旧Facebook)の人工知能研究グループAI Research lab(FAIR)により開発が始まった、オープンソースで公開されている、機械学習フレームワークです。

「Define by Run」方式を採用しています。

つまり、重複した記載となってしまいますが、Pythonの通常のコードと同じように

  • コード中に 「c = a + b」 と記述すると、この計算グラフの定義と実行が、同時に実施され、結果を得られる

仕様となります。

他の特徴は、以下になります。

  • Pythonに慣れた方なら、違和感なく始められる。
  • Numpyみたいに記載できる。(TensorFlow Ver2は同じく記載できます。)
  • CPU、GPU、どちらで処理するかを、臨機応変にコードに記載できる。(TensorFlow ver.2は、同じく簡単になりました。)
  • ほとんどの研究者はPyTorchを使用しているため、最新の情報が入手しやすい。

「Preferrd Networks(日本の会社)」が開発した、「Chainer」というフレームワークもありました。

このChainerこそ、「define-by-run」方式を先駆けで採用したフレームワークでした。

PyTorchの開発にも、大きな影響を与えています。

現在は開発は修了しており、「Preferrd Networks」自身も、PyTorchに移行しています。

「TensorFlow, Pytorch」どちらを選択するべきか?

これらの結果より、TensorFlow, PyTorch 、甲乙つけがたい状況です。

よって、つまらない結論で恐縮ですが

  • 職場で採用している、フレームワークを使ってみる
  • 周囲で使用している、フレームワークを使ってみる
  • 試してみて、自分に合うフレームワークを使ってみる

でいいと思います。

ただ、最先端をウォッチングしたい方は、

  • PyTorch

がオススメです。

既に記した通り、研究者はPyTorchを好んでおり、研究結果をGItHubに公開する事がよくあります。

PyTorchのインストール方法を、下記記事にてご紹介しています。

【入門】PyTorchのインストール方法 - Mac, Windows, Ubuntu - GPU版インストールも、あわせて紹介
【入門】PyTorchのインストール方法 - Mac, Windows, Ubuntu - GPU版インストールも、あわせて紹介PyTorchのインストール方法を解説した記事です。紹介したOSは、Windows、Mac、Ubuntuです。GPUを使用するための、注意点も併せて、ご紹介しました。...

雑談

ここからは、「TensorFlow ver.1」と格闘して、最終的に「PyTorch」に乗り換えた、筆者の経験談になります。

私は昔は、TensorFlow(ver.1)を使用していました。

理由は、最先端を走っているGoogleが開発したフレームワークだったからです。

きっと、流行るだろう!!

時期的には、TensorFlowのVer.1が、世の中に出現した頃の話になります。

当時は、TensorFlowのGPU版とCPU版が、別ライブラリとなっており、対応OSもUbuntu、(Mac版は、まだ無かったと記憶)という状態でした。

しかも、ソースファイルをDLしてきて、コンパイルして環境構築していた時代になります。

環境構築が、本当に大変でした。

エラーだらけ!!

ちなみに、GPUは奮発して「GTX1080」を購入。
(当時は、「高っ!!」と思ってました。昨今のGPUを見てると、金銭感覚がマヒしてきております・・)

自作PCで、ディープラーニングをやり初めました。

環境構築には、下記を全部併せる必要があります

  • OSのバージョン
  • TensorFlowのバージョン
  • CUDAのバージョン
  • cuDNNのバージョン
  • GPUドライバのバージョン

問題は、これら全部合っているはずなのに、エラーが発生する!!

インストールしては消しての繰り返しを、何回、やった事か・・ ホント・・・・・・

またドライバとか、TensorFlowのバージョンが変わるたびに、これらの作業が全て必要になりました。地獄・・・

そんなある日、「PyTorch」に浮気してみました。

本当に、「簡単!」と思ったのを覚えています。

PyTorchには、

  • CPU版、GPU版の違いはない
  • CUDA、cuDNN等の機能も入っている!!
  • 準備するのはGPUのドライバ位

なによりも、コードが本当に書きやすい!!

当時のTensorFLowは、

  • デバッグが本当に大変で、
  • どこでミスをしているのか、全然わからず・・・
  • 大量の時間と、大量のストレスが発生していました。

それがPyTorchを使ってみると、Numpyみたいに直感的に使えるわ、何よりデバッグがいい!!

後発なのに、研究者の方に急速に広がった理由を、痛感しました。

(筆者は、Chainerを使った事がなく、PyTorchはその影響を受けて開発したので、Chainerもそうだったかもしれません。)

それ移行、PyTorchに完全に乗り換えてしまいました。

TensorFlowもVer.2になり、この雑談で記載した弱点は、解消されています。

2022年1月時点、私の使用状況ですが、

TensorFlowは、Ver.2になって使いやすくなりましたが、過去の記憶が強く、必要がないと使用しない状況になっています。

まるで、トラウマ(笑)

雑談まで含めて、最後まで読んで頂いた方々、本当にありがとうございました。

もし、「ディープラーニングのメカニズムが知りたい」という方は、下記記事が参考になります。

ディープラーニングとは ? イメージでわかりやすく仕組みを解説
ディープラーニングとは ? イメージでわかりやすく仕組みを解説 世間で騒がれているけど、ディープラーニングって何? AI(人工知能)とどう違うの!? 筆者 今回は、「とある女性がプロ...

また、「ディープラーニング用に自作PCを組みたい」という方は、こちらが参考になります。

ディープラーニング 自作PC に必要なスペックと注意点、おすすめパーツのご紹介
ディープラーニング 自作PC に必要なスペックと注意点、おすすめパーツのご紹介ディープラーニング用の自作PCとして、必要なスペック、注意点、オススメのパーツを紹介した記事です。...