のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

実務やKaggleで使えるPyTorchのライブラリを紹介します!

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

暫くKaggleしかしていなかったせいか、今年のブログ投稿頻度がひどいことになっています(がんばります。。)
それはさておき、本日はKaggleのCompetitonで便利なPyTorchのライブラリを紹介してきます。

昨年は、PyTorchの中でもAlbumentationのライブラリを紹介しました。

共通

Pytorchのモデルが容易になるライブラリ

PyTorchのモデルを書くにはモデルの宣言や変数の使い方、GPU転送などをお作法に従って記載する必要があります。
ただし、毎度毎度同じなので、それを一部ユーザで実装するエコシステムとなるライブラリが開発されています。
なぜか3つもあるので困りものです。

各ライブラリの詳細はこちらの記事を見ていただけるほうが良さそうですので、私からは名前と印象のみ紹介します。
qiita.com

Ignite

最近見ないですが、一時期利用しているユーザが多かった気がします。
github.com

Catalist

KaggleのKernelでよく見るライブラリです。
実装がシンプルでできるのが特徴でしょうか。
github.com

Lightning

最近一番盛り上がっていたライブラリですが、色々お作法通りに書くのが面倒だったのでやめた記憶があります。
github.com

Apex

NVIDIA社が公開しているPyTorchのMixed Precisionを行うためのライブラリです。
Mixed Precisionはfloat16,32での計算を自動的に変換することで、省メモリかつ計算速度が高速になり、精度も維持できるような仕組みです。
画像系の中でもSegmentationのように解像度を落としにくいような処理で応用できます。

github.com

詳しいMixed Precisionの仕組みはこちらに記載されているので一読すると良いと思います。
Introduction to Mixed Precision Training with PyTorch and TensorFlow

NLP

Transformers

BERTが発表され、その後継となるPretrainedモデルが作られてきました。
ただし、BERTは計算時間が必要で、汎用的なマシンでの計算はかなり難しいです。
原因は事前学習と呼ばれるタスクに依存しない文脈を学習させるフェーズが必要で、ここに多くの時間が割かれることになります。

それらの事前学習済のモデルが以下で配布されており、サンプルのコードもあるので、使いやすいでしょう。

github.com

Image Processing

Pretrained Pytorch

Kaggleの画像処理コンペティションでは概ね事前学習済のモデルを利用します。
大体の方はこちらから取得したモデルを使っているのではないでしょうか。
ただ、2018年からモデルの更新がないのでその点は少し心配どころですね。
github.com

EfficientNet-PyTorch

2019年に特に猛威を奮っているEfficientNetと呼ばれるニューラルネットワークアーキテクチャがあります。
その学習済のPytorchモデルは次の箇所から取得できます。
従来までのモデルよりも計算速度が早く、精度が高いのが特徴です。ただし、私の経験ではありますが、それなりにメモリを利用するので容易ではない印象を持っています。
github.com

元論文を見たい方は次を参照ください。
arxiv.org

segmentation-pytorch

Kaggle界隈でよく利用されるSegmentationのライブラリです。
UNetやFPNなどのDecoderや多くのBackboneネットワーク(ResNet, Efficientnetなど)が備わっているため、
Segmentationのコンペティションでは非常に有用であること間違いなしです。

github.com

mmdetection

物体検出系(Object Detection&Instance Segmentation)の最新もモデルや仕組みを提供しているライブラリです。
Open Images Datasetのコンペティションでも多くの参加者が利用しています。
カスタマイズできる余地や設定ファイルのみで学習ができるところが非常におすすめのポイントの一つです。

github.com

Albumentation

言わずもがな、Kaggleの画像処理で最も利用されているライブラリです。
頻繁にアップグレードされており、新しいAugmentationが次々に取り込まれています。

github.com

最後に

Kaggleで利用できるライブラリが多くなってきたなぁといった印象です。
研究や実験だとKerasよりも圧倒的にPyTorchが扱いやすいので、ライブラリが多いのは嬉しい限りです。
お読み頂いた皆さんには有効に活用して効率化していってもらえればと思っています。

では皆さんまたお会いしましょう!