4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M2Macで公式Dockerを用いたkaggle用Python環境構築(VSCodeで)

Posted at

はじめに

とある機会があって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で動かすために必要です。

terminal
$  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します。

terminal
$ git clone https://github.com/Kaggle/docker-python

次にREADME.mdに従ってcloneしてきたリポジトリに移動、./buildコマンドでDockerイメージをビルドします。このDockerイメージはM2MacのGPUにおそらく対応していない?ので--gpuはつけないほうがいいです。(僕は何度もやって失敗しました。)

terminal
$ cd docker-python
$ ./build

2時間弱ぐらいかかります。
$ docker images で確認すると...

terminal
$ 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

ちゃんと入ってますね。
イメージを作れたのでコンテナを起動します。

terminal
$ 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 でコンテナが起動しているか確認できます。

terminal
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をインストールします。
DevContainer.png

インストールしたら左のテレビみたいなアイコンからDev Containersのページを開き、先ほど作成したcontainerにattachします。(このときコンテナ起動したterminal(VSCodeのterminalでも)を閉じないようにしてください。閉じるとコンテナも終了します。)

attach.png

コンテナ内に入ったら、JupyterとPythonの拡張機能をインストールします。これによって、ノートブックでコンテナのPythonカーネルを選べるようになります。
スクリーンショット 2023-10-28 14.32.08.png
.pyファイルを編集するときはcommand+shift+p→インタプリターを選択すればインテリセンスが機能します。
以上で環境構築は終わりです。お疲れ様でした。

おまけ

コンテナ起動のコマンドが長いので、下のようにエイリアスを作っておくと便利です。

.zshrc
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イメージができてると嬉しいな(怒)
はじめにでも述べましたが、何か間違いがあったり、より良い方法があれば教えていただけると嬉しいです。
ありがとうございました。

参考にしたサイト

4
10
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
4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?