kaggle docker-pythonとGCPによる環境構築で無限にハマりポイントがあったので列挙する

この記事は何?

タイトルの通り、kaggle docker-pythonのイメージを用いてGCPインスタンスで環境構築したい方向けに、自分がハマった注意点を箇条書きにしたものです。この記事を見て、環境構築に苦しむ1人でも多くの方のお役に立てれば幸いです。

注意:2020年8月頃の検証で分かった事実を列挙しているため、現在の仕様と食い違っている箇所がある場合があります。あらかじめご承知おきください。

ブートディスクの容量について

- デフォルトだと10GBになっていますが、kaggleのdocker image自体だけで18GBあるのと、コンペのデータセットやら学習した重みの保存やらを合わせると500GBくらいは確保しておいた方が安全なのではないでしょうか。後から「No space left on disk」系のエラーで怒られて新たにVMインスタンスを作成し直すのも時間と手間がかかる操作なので、始めから余裕を持った容量を選択しておきましょう。

Linux OSイメージの選択について

- CentOS8が個人的なお勧めです。他にも後述するOSもいろいろ試したのですが、全て行き詰まってしまいインスタンスの作り直しを何度もする羽目になってしまいました。ちなみに、GPU付きインスタンスを2つ以上立てるのはGCPから拒否されることが多いようなので、削除→作り直しという面倒なステップを毎回踏むことになります…

上手くいかなかったOSとその理由

- Container-Optimizes OS (COS)

    - 下記のURLの通りCUDAのドライバーをインストールしようとしたところ、「cos-extensions: command not found」になってしまい、先に進めなかった。

https://cloud.google.com/container-optimized-os/docs/how-to/run-gpus

 

他にも、「Ubuntu 18.04 LTS」「Red Hat Enterprise Linux (RHEL) 7」「Deep Learning on Linux」などを試しましたがCUDA周りのインストール作業でつまづいてしまった記憶があります(メモを詳細に取っていませんでした。。。また時間があれば再検証したい)。

その他

- Kaggle docker pythonGPU版をrunするとき、URLに書いてある--runtime nvidiaはdeprecatedな書き方のようです。代わりに--gpus allを指定すると動きました。

- kaggle-pythonイメージのビルド中に「CondaHTTPError: HTTP 503 SERVICE UNAVAILABLE: BACK-END SERVER IS AT CAPACITY」というエラーが出る現象がありました。読んで字の如くで、この時はAnacondaのサーバーが数時間単位で落ちており、ビルドコマンドを繰り返してもどうしようもない状況でした。解決策としては諦めて寝る/明日やり直す、くらいしかないだろうと思います。。。

- 普通のシャットダウンのノリでdockerコンテナ内で exit コマンドを叩くと、せっかく作ったコンテナが消滅するという恐ろしいことになります。。。コンテナから抜ける時はCtrl+p -> Ctrl+qで起動したまま抜けるという癖をつけることをお勧めします。