はじめに
とある機会があってkaggleの勉強をしよう!となり、せっかくならローカルでもできるように環境構築をしようとしたのですが、ドン詰まりしたので環境構築までの経緯を備忘録として書いておこうと思います。
こういった文章を書くのは初めてで、しかもこの機会にDockerを使いはじめたペーペーなので、読みづらかったら我慢して読んでください。間違いがあったらぜひ指摘してくださると幸いです。
自分の環境
- MacOS Sonoma 14.0(Apple M2チップ)
- Docker Desktop 4.25.0
注:2023/10/27時点のものなので、kaggleのDockerイメージがM2MacのGPUやarm64に対応したら最適なやり方は変わってくると思います。
手順
1. まずDockerのインストール、設定
DockerのDLサイトからDocker Desktopをインストール。今回はM2 MacなのでAppleチップのものを選びました。
次に公式の推奨にもある通り、Rosetta 2をインストールするために下記コマンドをterminalに打ってください。今回のDockerイメージのアーキテクチャはx86-64なので、arm64で動かすために必要です。
$ softwareupdate --install-rosetta
つぎにDockerの設定をします。インストール後各種アカウント設定をしたら、Dockerのアプリから右上の歯車を押して設定を開き、
- General > Use Rosetta for x86/amd64 emulation on Apple Siliconをチェック
- Resource > Memory Limit を24GB(最大)に設定(デフォルトは8GB)
をしてApply & Restart
以上で設定は終了です。
2. kaggleのDockerイメージのダウンロード
kaggleの公式GithubからPythonのDockerFileをgit cloneします。
$ git clone https://github.com/Kaggle/docker-python
次にREADME.mdに従ってcloneしてきたリポジトリに移動、./buildコマンドでDockerイメージをビルドします。このDockerイメージはM2MacのGPUにおそらく対応していない?ので--gpuはつけないほうがいいです。(僕は何度もやって失敗しました。)
$ cd docker-python
$ ./build
2時間弱ぐらいかかります。
$ docker images で確認すると...
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kaggle/python-build latest 88ced0ac5df0 12 hours ago 20.9GB
gcr.io/kaggle-images/go-renderizer latest 127ffc5f1590 2 years ago 962MB
ちゃんと入ってますね。
イメージを作れたのでコンテナを起動します。
$ docker run --rm --platform linux/amd64 -v /Users/USERNAME/kaggle:/kaggle -it kaggle/python-build /bin/bash
各種オプション説明
- --platform linux/amd64
Intelイメージ(amd64)をM2Mac(arm64)で動かすためのもの。 - -v /Users/USERNAME/kaggle:/kaggle
ローカル(/Users/USERNAME/kaggle)のフォルダをコンテナ下フォルダ(/kaggle)と共有するためのもの。この場合コンテナ下にkaggleフォルダが作られます。
$ docker ps でコンテナが起動しているか確認できます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9038c400659 kaggle/python-build "/entrypoint.sh /bin…" 16 seconds ago Up 16 seconds 8080/tcp zealous_jones
起動完了!
3. VSCode のDev Containersでひらく
最後に自分はVSCodeで編集したかったので、VSCodeで開くための設定をします。
まず拡張機能 Dev Containersをインストールします。
インストールしたら左のテレビみたいなアイコンからDev Containersのページを開き、先ほど作成したcontainerにattachします。(このときコンテナ起動したterminal(VSCodeのterminalでも)を閉じないようにしてください。閉じるとコンテナも終了します。)
コンテナ内に入ったら、JupyterとPythonの拡張機能をインストールします。これによって、ノートブックでコンテナのPythonカーネルを選べるようになります。
.pyファイルを編集するときはcommand+shift+p→インタプリターを選択すればインテリセンスが機能します。
以上で環境構築は終わりです。お疲れ様でした。
おまけ
コンテナ起動のコマンドが長いので、下のようにエイリアスを作っておくと便利です。
alias drk='docker run --rm --platform linux/amd64 -v /Users/USERNAME/kaggle:/kaggle -it kaggle/python-build /bin/bash'
最後に
最初は気軽にMacでkaggleの環境作っておきたいなーぐらいの気持ちだったのにえらい目に遭いました。GPU版をビルドしようとしたら6時間以上かかった上にエラー吐いたり、ビルドが終わってもarm64だからか起動に失敗したり....。何度もDockerをリセットしました。M2チップほんま...
未来にはAppleSilicon向けのkaggleイメージができてると嬉しいな(怒)
はじめにでも述べましたが、何か間違いがあったり、より良い方法があれば教えていただけると嬉しいです。
ありがとうございました。