2大フレームワークであるTensorFlow/PyTorchに対して検索トレンドや研究論文数、Kaggle実用数などでの比較を行う。総括として「どちらを使うべきか」について筆者なりの考察を加える。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本稿は、【2019-2020年】版、【2021年】版と続けているシリーズの、2022年に向けた、そのアップデート記事となる。
ディープラーニング(深層学習)を実装する場合、専用のライブラリ/フレームワークを用いるのが一般的だ。現在、主要なものを挙げると、
などがある(※機械学習の分野にまで広げるとscikit-learnなどもあるが、今回は深層学習に絞る)。いずれもオープンソースである。
2022年1月現在も、主にTensorFlow/KerasとPyTorchがシェアを競っている状況である。その状況の傾向は1年前とあまり変わらないものの、変化のスピードが緩やかになってきた結果が出ているので本稿で解説したい。
本稿ではTensorFlowとPyTorchという2大フレームワークにおける幾つかの比較(検索トレンド、研究論文での活用数、Kaggleでの実用数)をコンパクトに紹介していく。
まず前提として、この2大フレームワークの特色を押さえておきたい。とはいえ、それぞれの特色は、以下のようにここ数年間、あまり変わっていない。
これらの特色に合わせた“すみ分け”が確立しているので、研究分野の指標として「研究論文での活用数」、実用面での指標として「Kaggleでの実用数」のグラフを提示する。その前に、より一般的な傾向の指標として「検索トレンド」の比較グラフを見ておこう。
検索トレンドの比較では、TensorFlowとPyTorchのトレンド推移を比較する(※JAXを含めてもよかったが、「ジャクソンビル国際空港(JAX)」などの別単語があるために正確にトレンドを追いづらいので省いた)。比較期間は、2019年1月1日〜2022年1月10日である。記事がよりシンプルになるよう「世界」に絞って解説する。日本独自の特色などがある場合は、文章で簡単に言及することとする。
なお、検索トレンドを比較することに関しては、「真の人気を反映しているとは一概に言えないよね」という疑心が筆者自身の中にもあるのだが、「折れ線グラフの向きで、成長傾向か衰退傾向かは、ある程度判別できる」と考えているので、本稿でも紹介することにした。あくまで「検索エンジン」という特殊なプラットフォーム上でのトレンド比較なので、「どれが一番人気か」を判断する際には、その分を割り引いて捉えてほしい。
青い線がTensorFlowで、赤い線がPyTorchである。2018年ごろはTensorFlowが高い検索シェアを占めていたが、その差は徐々に縮まって2021年2月時点(TensorFlow:44.5、PyTorch:43.5)でほぼ差がなくなり、5月時点(TensorFlow:47.5、PyTorch:48.8)でPyTorchがTensorFlowを逆転して抜き、2021年12月時点(TensorFlow:38、PyTorch:43.4)ではPyTorchがややリードしているものの、そこまで差は広がらずに混戦状況が続いている。
2018〜2019年はPyTorchが圧倒的な上昇を見せたが、2020年以降はその伸びが弱まり横ばいが続いている(50ポイント前後)。
一方で、TensorFlowは2019〜2020年に大きく下落したが(約80→50ポイント前後)、2021年はその下げが鈍化してきたように見える(約50→40ポイント前後)。
2022年1月現在の予想では、2022年末まで同じ傾向が続くのであれば、PyTorchがあまり上昇できず、TensorFlowは下落をさらに鈍化させるということになり、青い線と赤い線がたびたび絡み合う混戦が続きそうである。
なお日本や米国においては、「世界」よりも少し早く2020年に入ってから両者の差がほぼなくなり、2020年中はTensorFlowとPyTorchともに少し下げ、2021年以降はややPyTorchがわずかにリードするものの、青い線と赤い線が常に絡み合う混戦状況で横ばいとなっている。
通常、研究論文でのフレームワーク活用数を調べるのは大変だ。本シリーズの過去記事ではHorace He氏のWebアプリで生成したグラフを使ってきたが、(2022年1月現在で)残念ながら2021年の学会分のデータは更新されていないようなので、使用できなかった。代わりに、「Papers With Code : Trends」が提供する「フレームワーク別の論文実装数のグラフ」を引用して、研究分野でのトレンドを比較する。比較期間は、2017年12月1日〜2021年12月31日である。
図2のグラフは、厳密にはTensorFlowとPyTorchだけでなく、JAXとMXNetも含めているので注意してほしい。2大フレームワーク以外では、「NumPyライクに自由に実装できるJAXの人気が、特に研究コミュニティーで高まっている」という情報があるので(参考:「PyTorch vs TensorFlow in 2022」)、図2のグラフに含めてみたが、JAXが約1%、MXNetが約0%と非常に小さいシェア率で、やはりまだまだ比較できるほどにはなっていないようである。
ここでは、4つのフレームワークにおけるシェア率のうち、TensorFlowとPyTorchのシェア率比較に絞って説明する。JAXとMXNetは、100%を占める領域への影響は軽微だと思うので、無視することにした。
オレンジ色の領域がTensorFlowで、赤い領域がPyTorchである。2017年12月時点(TensorFlow:58%、PyTorch:42%)ではTensorFlowの方が高い論文実装シェアを占めていたが、その差は徐々に縮まって2019年3月時点(TensorFlow:46%、PyTorch:52%)でPyTorchがTensorFlowを逆転して抜き、2021年3月(TensorFlow:19%、PyTorch:80%)以降ではPyTorchが80%以上と大きくリードしたまま落ち着いてきている。
年月 | TensorFlow(T) | Tの増減 | PyTorch(P) | Pの増減 | P-Tの差 | 差の増減 |
---|---|---|---|---|---|---|
2017年12月 | 58% | - | 42% | - | -16 | - |
2018年12月 | 53% | −5 | 46% | +4 | -7 | +9 |
2019年12月 | 36% | −17 | 63% | +17 | 27 | +34 |
2020年12月 | 23% | −13 | 76% | +13 | 53 | +26 |
2021年12月 | 15% | −8 | 84% | +8 | 69 | +16 |
表2 TensorFlowとPyTorchの増減表 |
「研究方面はPyTorchがほぼ制圧した」と言えると思うが、PyTorchのシェア率が高まるにつれて、シェア率の増加ペースは当然ながら鈍化してきている(表1の[差の増減]列を参照)。年末には6ポイント増えて90%程度になるぐらいのペースに見える。実際に2022年末までに、PyTorchが90%以上にまでシェア率を高められるかどうかが注目ポイントとなるだろう。
研究分野に続いて、実用/実践面での活用数を比較してみよう。
Kaggleなどのデータサイエンス/機械学習のコンペティションは、「研究しやすいかではなく、いかに効率的に実用できるか」という視点でフレームワークが選択されている、と本稿では想定している。Kaggleでは2017年から毎年、Kaggle参加者にアンケートを取っており、2021年版のアンケート結果レポート『State of Data Science and Machine Learning 2021』が公開されているので、その中から「フレームワークの利用率」のグラフを図3に引用する。
Copyright© Digital Advantage Corp. All Rights Reserved.