1.人工知能/機械学習用のフレームワークは何を選ぶべきか?
・AI開発用のフレームワークは群雄割拠時代から2強時代になり選択肢は大きく2つ
・主に産業界で使われ一日の長があるTensorFlowと学術界で勢いに乗っているPyTorch
・初心者は勝ち馬に乗る or 学習コストを下げられるものを選択する事が望ましい
2.TensorFlowとPyTorchの比較
人工知能/機械学習の開発する際は通常、フレームワーク(ライブラリやツール群をまとめて迅速な開発をしやすくしたもの)を使って開発する事になります。
初学者の場合は、フレームワークを使わずに、作りながら学ぶ系の学習本を片手に一通りを自分で実装してみて原理を理解するやり方も良い方法と思いますが、学習完了後、それなりの規模の開発を行う際はやはりフレームワークの使い方を習得しないと厳しくなります。
人工知能関係のフレームワークは栄枯盛衰が激しく、現在も激しい主導権争いが展開されているので、歴史的な経緯や最新の事情なども含めて、判断基準に使えそうな情報をまとめておきます。
2021年1月追記)AppleがM1プロセッサ向けに最適化したTensorFlowを提供したのでAppleはTensorFlow陣営に行くかもしれません。
アイキャッチ画像のクレジットはPhoto by Elijah Hail on Unsplash
人工知能開発用のフレームワークは群雄割拠時代から2強時代への移行期であり、2020年11月現在、私が感じている2大フレームワークの現状イメージは下記です。
TensorFlow | PyTorch |
・Google ・主に産業界で優勢 ・一日の長がある |
・FaceBook + Google以外 ・主に学術界で優勢 ・日の出の勢いがある |
機能的な違いは多少はありますが、いずれは同じような機能が実装されるでしょうから機能で選ぶよりは、「どちらが勝ち馬と思うか?」または「最終的にやりたい事はどちらが簡単に出来そうか?」で選んだ方が良いのかな、と思います。
歴史的な経緯も書いておくと、群雄割拠時代はTensorFlowが頭1つ抜けているイメージだったのですが、様々なフレームワークの開発中止が表明されていくなか、徐々に有力なベンダーや研究所がPyTorchへの支持を表明しはじめて今に至る感じです。
PyTorchが支持を集めた理由は「作って、動かして、試す」と言うサイクルをTensorFlowより素早く行えた事が要因の1つではありますが「他にも色々とあった」との事で、当初TensorFlowを支持していた人達もPyTorchに鞍替えしており、逆の流れはなさそうに感じています。
Googleが人工知能研究で業界のトップランナーなのは、間違いないと思いますが、Google AI内のプロジェクトでもTensorFlow用とPyTorch用の両方のモデルを公開してくれる場合があるのと、PyTorchの開発にGoogleのエンジニアも関わっていたりするので、実はGoogle内でも個々のエンジニア/リサーチャーレベルだとTensorFlowにコダワリはないのかな、と感じる時もあります。
ただし、GoogleはPixelスマートフォンなど、ハードウェアも開発しているので、Mediapipeなどのモバイル上で実行するための仕組みや、TPUなどのアクセラレータ、IoTの有効活用についてはTensorFlowの方が充実しています。
切磋琢磨しながら2大フレームワーク体勢が続いていくのか、もしくはどちらかがどちらかを飲みこんで統一を果たすのかは2020年時点ではまだわかりません。上記の主観的な情報を元に、貴方自身の清き一票を貴方の判断で投じてください。
また、その他のフレームワークも、「そのフレームワークを選ぶ理由が明確にある」のであれば、それを使う事は全然アリだと思います。例えば、会社で使っているとか、身近に詳しく教えてくれるエキスパートがいるなど、学習コストを下げられるものがベターです。
初心者のうちは「勝ち馬に乗る」 or 「学習コストを下げられるものを選択」し、余裕が出きたら自分のコダワリや好みを追及していく事が効率が良いと思います。
最初に自分のコダワリや好みを追及していくと、結果的にとても回り道になってしまう危険性もあるのであまりオススメできません。