PyTorch vs. TensorFlow、ディープラーニングフレームワークはどっちを使うべきか問題【2019-2020年】:AI・機械学習のツール&ライブラリ(1/2 ページ)
2大フレームワークであるTensorFlow/PyTorch(一部でKeras/Chainerも)に対して検索トレンドや研究論文数などでの比較を行い、「現状はどういう状況で、今後はどうなりそうか」について、筆者独自の考察を加え、他の記事における考察を引用する。
※本稿には新バージョンがあります。2021年に向けてのアップデート記事(2020年12月16日公開)はこちらです。
本稿は、ディープラーニング(深層学習)に関心があるビジネスマンから、これから始めてみたいというエンジニア、既に取り組んでいる実務経験者まで、幅広い人に向けて書いた。よって、初歩的な内容も含めつつ説明していくのでご了承いただきたい。
ディープラーニングを実装する場合、フルスクラッチでゼロからコードを書くのは非効率なため、専用のライブラリ/フレームワークが用いられるのが一般的だ。ディープラーニングが流行してから直近4年ほどの間に、次々と新しいフレームワークが登場した。現在、主要なものを挙げると、
- TensorFlow: 2015年登場、Google製。一番有名で、特に産業界で人気
- PyTorch: 2016年登場、Facebook製。この中では新興だが、特に研究分野で人気急上昇中
- Keras: 2015年登場、作者がGoogle社員。使いやすくて簡単
- Chainer: 2015年登場、日本のPreferred Networks製。現在、デファクトスタンダードな手法「Define-by-Run(実行しながら定義する)」を生み出した
などがある(※機械学習の分野にまで広げるとscikit-learnなどもあるが、今回は深層学習に絞る)。ちなみに、いずれもオープンソースである。
2018年〜2019年の約2年間で、これらのフレームワークの勢力図が大きく塗り変わっている。今はTensorFlowとPyTorchでデッドヒートを繰り広げている状態で、つい先日の2019年10月1日にTensorFlow 2.0が正式リリースされたことを受けて、この勢力図が将来どう変化するかに注目が集まっている。
そこで本稿では、この2大フレームワークについて、海外で公開された最新の比較記事などから引用しつつ、日本社会にいる一日本人の視点で比較結果を説明し、さらなる議論に発展させたい。
本稿では幾つかの比較(検索トレンド、研究論文での活用数、パフォーマンス)を紹介していく。特に注目してほしいのが、2番目の研究分野での比較なので、そこはぜひ一読してほしい。まずは準備運動として、ざっくりと「Googleトレンド」で検索エンジン上での比較を見てみよう。
検索エンジンでのトレンド比較
検索トレンドの比較では、上記4つのフレームワークのトレンド推移を比較することとする。比較期間は、2018年1月1日〜2019年10月25日である。
なお、検索トレンドを比較することに関しては、「真の人気を反映しているとは一概に言えないよね」という疑心が筆者自身の中にもあるのだが、「折れ線グラフの向きで、成長傾向か衰退傾向かは、ある程度判別できる」と考えているので、本稿でも紹介することにした。あくまで「検索エンジン」という特殊なプラットフォーム上でのトレンド比較なので、「どれが一番人気か」を判断する際には、その分を割り引いて捉えてほしい。
まずは、日本から見てみよう。
日本
ぱっと目につくのは青い線のTensorFlowである。一番左端の2018年1月〜2018年6月あたりまで上昇しているが、それ以降、少しずつ下降を続けている。
一方で、黄色い線のKerasは、一番左端から右端に向けて緩やかに上昇を続けている。
圧倒的に大きく上昇しているのがPyTorchである。一番左端では大差を付けられて4位だったのが、今やTensorFlowやKerasに追いつきつつある。
逆にChainerについては、一番左端から右端に向けて下降を続けており、TensorFlowよりも下げ幅が大きくなっている。
筆者による評価コメントは、世界、アメリカ合衆国、中国も見てから行う。次に、世界(全ての国)を見てみよう。
世界
世界で見ると、日本よりも大きな変化ではないが、
- TensorFlow: やや下降傾向
- Keras: 緩やかに上昇傾向
- PyTorch: 一番大きく上昇傾向
- Chainer: 下降傾向
にある点は一致している。日本ではChainerの存在感もそこそこ大きいが、世界で見ると(日本人として残念ではあるが)小さいようだ。
最初に書いたとおり、順位は(真の人気を表しているとはいえないかもしれないものの、参考値として言及するのならば)、図2ではKerasが一番人気である。
世界全体だと、やはりぼやけた結果になるようである。ITやAIの主導権は、現時点では、シリコンバレーのあるアメリカ合衆国にあるだろう。
アメリカ合衆国
各フレームワークの上昇/下降の傾向は先ほどと同じなので説明を割愛する。
順位は、産業で活用されているTensorFlowが依然として高く、それに急上昇中のPyTorchが追いつき、追い抜きそうな雰囲気になってきている。
AI分野でアメリカを追い越す勢いなのが中国である。
中国
こちらも各フレームワークの上昇/下降の傾向はほぼ同じであるが、Kerasについてもやや下降傾向になっているところが少し異なる。
中国は変化が激しい。順位は、大きく落ち込むTensorFlowを、大きく飛躍するPyTorchが追い抜く寸前である。研究分野で広がるPyTorchが、産業分野にもすぐに適用されるぐらい、変化への対応力が高いのだろう(と筆者は考えている)。
検索トレンドに関する考察
これらの結果は、この2年間ほど日本で情報収集を続けている筆者の直感とも一致するものである。
研究分野でのPyTorchの圧倒的人気
直近1年間でよく聞いたのは、「研究分野ではPyTorchが圧倒的な採用率になってきている」(その証拠提示は後ほど)といううわさだった。
TensorFlow 2.0登場のインパクト
そんなPyTorch人気急上昇の状況を変えるためにも、TensorFlowは、2.0の正式リリースを急いでいた(と筆者は認識している)。
TensorFlow 2.0では、TensorFlowの中にKerasが統合され(参考:「スタンドアロンKerasとtf.kerasの違い」)、そのKerasが標準的な実装方法となった(参考:「新機能の概要」)。よって2.0時代の現在は、TensorFlowとKerasは同じものを指す可能性があり、比較対象として並べるのは微妙になってきている。各フレームワーク間の競争が激化した結果、今やPyTorchとTensorFlow/Keras(tf.keras)は、どちらも同じような機能性を備えるようになってきており(詳細後述)、単純に機能性を比較するだけでは将来の人気動向を推測できなくなっている。その点については、次の「研究分野での比較」を踏まえてさらに深く考察していきたい。
各フレームワークの学習機会
「PyTorchが急成長している」と言っても、日本/米国/中国などAI分野の主要国では「TensorFlowの勢いもまだまだ根強い」と言える。その理由として、日本の東京に住む筆者の視点で述べると、グーグル社(Google)自身がよく機械学習の公式イベントを頻繁に開いており、また公認のユーザーグループ「TFUG(TensorFlow User Group Tokyo)」の勉強会活動も活発であるため、日本においてはTensorFlowを学べる場が多いことが挙げられるだろう。従って、TensorFlow/Kerasがある程度の人気を維持しているのは、筆者にとって想像どおりだった。
一方のPyTorchについては、フェイスブック社(Facebook)が日本で公式イベントを開いておらず、公的なPyTorchのユーザーグループが存在する(もしくは育っている)わけではなく(※2019年10月28日時点の筆者の認識)、産業界で既に社会人として働くエンジニアやデータサイエンティストが学んだり情報共有したりする機会が少ない(と筆者自身は感じている)。それゆえ、フレームワーク利用者総数で比較すると、依然としてTensorFlow/Kerasの方が多くなる傾向にあるのではないかと考えている。ちなみに、2019年10月10日に米国サンフランシスコでカンファレンス「PyTorch Developer Conference 2019」が開催されたので、こういった大型イベントが日本でも開催されることに期待したい。
今回は比較対象から外しているChainerについても、せっかくなので簡単に言及しておこう。PFN社(Preferred Networks)主催の大型公式イベントがあるわけではないが、マイクロソフト社(Microsoft)と共同で設立したコミュニティー「DLLAB(DEEP LEARNING LAB)」による大型イベントが開催されており、また公認のユーザーグループ「chug(Chainer User Group)」の勉強会活動も活発である。ただし、TensorFlowと比べると、Chainer初学者向けの入門セッションが少なく、勉強会も少人数かつ土日開催のケースが多くて(休日はしっかりと休みたい筆者にとっては)参加しづらいところがあるなど、学べる機会が少なく感じるのがちょっと残念だ。筆者自身は、書籍や勉強会でChainerRLを使った強化学習を学んで実践してみた経験はあるが、特に日本のロボット産業界などではChainerが継続的に使われていくだろうと予測しており、今後の発展に期待したい。また、「ディープラーニング入門」というChainer公式の日本語チュートリアルが分かりやすいと人気があるので、これからディープラーニングを学びたい人は「そのチュートリアル+Chainer」から始めるというのも悪くない選択肢だろう。
さて、次に「研究分野での比較」に入りたい。
研究分野でのトレンド比較
通常、研究論文でのフレームワーク活用数を調べるのは大変だと思うが、人工知能&機械学習分野での研究内容を民主化する目的のメディア「The Gradient」で2019年10月10日に公開された「The State of Machine Learning Frameworks in 2019」という記事がグラフと考察をまとめている。この記事はHorace He氏が執筆したもので、そのグラフを表示するためのWebアプリがGitHub上で公開されている。本稿ではそのWebアプリで生成したグラフをダウンロードしたものを引用しながら、研究分野でのトレンド比較を行っていく。比較期間は、主に2017年〜2019年である(※厳密な月日についてはグラフからは不明なのでご了承いただきたい)。
なお、このグラフで比較可能なのは、
という9個のトップ研究カンファレンスにおける論文リソースである(※よって、全ての研究論文を調査したわけではなく、標本に偏りが存在する可能性はあるので注意してほしい)。
まずは、全論文リソースから作ったグラフを見てみよう。
TensorFlow/PyTorch使用時のPyTorchの割合
図5のグラフは、TensorFlowもしくはPyTorchのいずれかを使用している論文だけに絞って、PyTorchの方を利用した論文の割合を時系列で示したものである(※それ以外のフレームワークの使用については調査対象外)。
図5 研究分野でのフレームワーク比較: TensorFlow/PyTorch使用時のPyTorchの割合(対象:全論文リソース)
※注意: NeurIPS 2019は不完全なデータをスクレーピングしたものである。具体的には、再現性チャレンジワークショップにおける約1400本の承認論文のうち、論文掲載サイト「arXiv.org」へのリンクがある520本分が対象となっている。
ぱっと見て、きれいな直線でPyTorchが急成長しているのが分かる。2017年中期ではほぼゼロだった使用率が、その2年後の2019年中期ではほぼ75%にまで成長している。しかもどの論文リソースでもほとんど同じ傾向である。
これが意味するのは、研究分野においては「2018年中にPyTorchがTensorFlowを逆転し、2019年中に完全に勢力図を塗り替えた」ということだ。このグラフは、筆者が何度も聞いてきた「研究分野ではPyTorchが圧倒的な採用率になってきている」といううわさが真実であることを確定させる「証拠」と言ってよいだろう。
論文数
Copyright© Digital Advantage Corp. All Rights Reserved.