こちら、Kaggleが安定するようになってしまったのか、pip
でライブラリをインストールしてもKernelが止まらず、ライブラリの再読込が不可能になってしまいました
その代わり、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が読み込まれます。
その後、残りのコードを走らせると、新しいライブラリを拾うようになります。
ちなみに、Pytorchの場合は下のコードで読み込まれているバージョンが確認できます。
import torch
print(torch.__version__)
課題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を押して、その先のコードを実行していきましょう。