LoginSignup
2
0

More than 5 years have passed since last update.

fastai 1.0をKaggleで動かすためにしたこと

Last updated at Posted at 2018-10-13

:warning: こちら、Kaggleが安定するようになってしまったのか、pipでライブラリをインストールしてもKernelが止まらず、ライブラリの再読込が不可能になってしまいました:warning:

その代わり、Kaggle/docker-python#340のコメント によると、pip installが動くように開発中のようです。fast.aiの新しいコースが近々始まるのもあって、そちらはfastai 1.0を使うことになると思うので、近い内に改善されそうです。

以下、メモ目的で残しておきますが、ほぼ意味のない記事です。

fastai 1.0をGoogle Colaboratoryで動かすためにしたこと - Qiita

に続き、Kaggleで動かせるか試してみました。
ちょっと(だいぶ?)ハックですが、動くには動きました。

課題1: もともと古いfastai(0.7)が入っていること(2018年10月13日以前)

こちらはアップグレードすれば大丈夫でした。

!pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html
!pip install -U fastai

なお、この問題は2018年10月13日にKaggle Kernelの元になっているDockerイメージが更新されたそう(GitHubのコメント)なので既に自然解決しています。

ただし、以下の課題2の内容は発生しますので、そちらの対応は必要です。

課題2: Pytorchのバージョンが古いこと

fastai 1.0は新しいだけあって、正式リリース前のPytorch 1.0に依存しています。
fastaiのGitHub README にも書いてありますが、Nightlyビルドを入れる必要があります。

!pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html

こちらはPytorch 1.0が標準でKaggleのKernelに入れば良いのですが、既存のコードのことを考えると結構時間がかかるのではないかな、と思います。

課題3: ライブラリのバージョンを変えても読み込まれない

課題2の延長なのですがKaggleのKernelは既にPytorch 0.4.1をロードしてしまっているので、そのまま機械学習をさせようとしても、Pytorchの後方互換でない部分でコケます。

上記インストール時に90%ぐらいの確率で下の警告が表示され、Kernelがリスタートされます。その副作用で自動的に新しいPytorch 1.0が読み込まれます。

kaggle_kernel_restart.png

その後、残りのコードを走らせると、新しいライブラリを拾うようになります。
ちなみに、Pytorchの場合は下のコードで読み込まれているバージョンが確認できます。

import torch
print(torch.__version__)

kaggle_pytorch.png

課題4: CUDA 9.0でないと遅い

こちらは論理的な理由はわかっていないのですが、PytorchはCUDAを内蔵しているので、いろいろなCUDAのバージョンを試したのですが、どうもCUDA 9.0でないと遅い模様です。

先程のインストールコード:

!pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html   # <- cu90 でないとGPUコードが遅い

結論

!pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html

を最初の方で実行して、課題2のKernel Restartingが表示されたら、OKを押して、その先のコードを実行していきましょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0