
昨今のAIブームの影響を受けて、機械学習を学ぼうとしている方も多数いらっしゃると思います。今日は機械学習のライブラリの一つであるPytorchについて、その概要とほかのフレームワークと比べた際のメリットデメリットなどを紹介できればと思います。
Pytorchとは?
Pytorch(読み方:パイトーチ)とは、FacebookのAI Research Labで開発されたpythonの機械学習ライブラリの一つになります。様々な機械学習のプロジェクトで使われているライブラリであり、tensorflowと並んで非常に人気のあるライブラリになります。
Pytorchのメリットは?
機械学習を学ぶ上で、Pytorchのようなライブラリを使うことは今やマストだと思います。では数ある機械学習ライブラリの中で、Pytorchを選ぶとどのようなメリットがあるのでしょうか?Pytorchを採用するメリットとしては以下のようなものがあると思います。
- コードが直感的に書きやすい
- コミュニティが大きい
- デバッグがしやすい
コードが直感的が書きやすい
Pytorchは比較的直感的にコードを書くことができます。動的計算グラフ(Define-by-run)という方式を採用しているため、複雑なモデルの定義などを容易に行えたり、デバッグなども簡単に行うことができます。またPytorchのなかで使われるTensorの操作もpythonの別モジュールであるnumpyライクで非常に操作しやすいのも特徴です。低レベルな実装から、高次な関数を利用したシンプルな実装まで幅広く行うことができます。
コミュニティが大きい
Pytorchはアカデミックな界隈で非常に人気のあるライブラリで、コミュニティが非常に大きいです。そのため、最新のモデルやLOSS関数の実装などが、Pytorchなどで公開されていたりしますので、SOTA(State of Arch:最新の最も性能の良い手法のこと)のモデルやテクニックなどをすぐに自分のリポジトリなどに移植して試すことも可能です。何かしらのエラーに躓いた時なども、大体世の中のエンジニアたちが解決してくれていることが多いです。
デバッグがしやすい
機械学習のライブラリでは、デバッグなどがしにくいライブラリもあったりします。ただPytorchは前述したとおり、動的計算グラフを採用しているおかげで、通常のPythonのようにデバッグをすることができるのも大きなメリットだと考えます。
Pytorchのデメリットは?
逆にPytochのデメリットは何なのでしょうか?個人的には以下なのかなと思っています。
- 日本語のドキュメントが少ない
- デプロイ周りのサポートが相対的に少ない
日本語のドキュメントが少ない
語学が堪能な方にはもはやデメリットではなんでもないですが、日本語のドキュメントがあまりない時があります。ただ、最近は増えてきていますし、翻訳精度も高いと思いますので、そこまでのデメリットでもないように思えます。
デプロイ周りのサポートが相対的に少ない
Pytorchは研究界隈では非常に強いですが、一方でプロダクト向けのデプロイ周りはTensorflowなどの比べると相対的に弱いといわれています。ただ相対的に弱いだけで、ツールなどは存在しており、デプロイできないわけではないので、製品開発向けに使っているところも多いかと思います。
Pytorch vs Tensorflow
よく機械学習ライブラリの選定時にはPytorchとTensorflowが上がると思います。正直どっちを使うか悩む方も多いと思います。どちらを採用するのが良いのでしょうか?両方とも使用した経験のある私からすると、以下のような印象かなと思います。
コードの書きやすさ
ここにはそこまでの大差はないと考えています。どちらも低レベル実装、高次API、関数を兼ね備えているからです。ただテンソルの操作などはnumpyとの親和性も考慮するとPytorchのほうにわずかながら軍配が上がるかと思います。
デバッグのしやすさ
デバッグのしやすさは圧倒的にPytorchのやりやすいです。Tensorflowの場合、少しデバッグ時に癖があるので、慣れるまで結構時間がかかります。Pytorchであれば普通のpythonのデバッグと何ら変わりないので、容易に問題を特定することができます。
エコシステム・デプロイ
ここに関してはTensorflowに軍配が上がります。
コミュニティ
最近のGoogleの検索トレンドを見てみると、Pytochが逆転をし始めています。

またPaper with codeのトレンドグラフを見るとPytorchが圧倒的です(これはアカデミック界隈の統計だからだと思いますが)。

以前はTensorflowのほうが、全体でみるとシェアが高かったのですが、後発のPytochが追い上げて、今や抜き去るような勢いなのかと思います。最新の研究とかの公開実装などがPytorchなことを考慮すると、コミュニティはややPytorchに軍配があがるのかもしれません。とはいえTensorflowも非常に大きなコミュニティだと思いますので、僅差だと考えます。
結局どっちがいいのか?
個人的には特に理由がないのであればPytorchが良いのではと考えます。特に初学者に対しては圧倒的にPytorchのほうが学習コストが低いと考えます。ただ実際の製品開発で、エッジデバイスやWeb向けの機械学習プロダクトを作りたい場合には、デプロイ面を考慮してTensorflowを採用するのが良いのかもしれません。
Pytorchの始め方
以下の記事の中で、Pytorchのインストール方法を解説しています。WSLやdockerの導入もまとめて解説していますので、よろしければご参照ください。
まとめ
Pytorchが何か?についてメリットデメリットも含めて解説しました。機械学習に興味のある人はぜひ導入してみてください。
