😀

GCPでのKaggleコンテナ開始方法

2023/01/25に公開

はじめに

ディスク利用料削減のため、コンペのたびにコンテナを削除しているので、自分用メモとして記載する。
GCPに限らず、UbuntuでKaggleコンテナを動かす際には参考になると思われる。

想定環境

  • クラウドサービス: GCP
  • マシンタイプ: n1-highmem-2
  • GPU: 1 x NVIDIA T4
  • イメージ: ubuntu-2204-jammy-v20221018
  • ディスク種類: 標準永続ディスク
  • ディスク容量: 200GB

コンテナイメージが80GB程度?と非常に大きいため、ディスク容量はできるだけ大きめのものを使用した方がよい。
コンテナイメージの取得に4時間ほどかかるので注意する。

手順

コマンドはすべてadminで実行する。

$ sudo su

NVIDIAドライバのインストール

# wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
# dpkg -i cuda-keyring_1.0-1_all.deb
# apt-get update
# apt-get -y install cuda

参考記事

Dockerのインストール

# apt-get remove docker docker-engine docker.io
# apt-get update
# apt-get install \
  apt-transport-https \
  ca-certificates \
  curl \
  software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
# apt-get update
# apt-get install docker-ce

参考記事

NVIDIA container toolkit

# distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# apt update
# apt install nvidia-docker2

参考記事

コンテナイメージの取得

4時間ほどかかるので注意する。

# git clone https://github.com/Kaggle/docker-python.git
# cd docker-python
# ./build -g

コンテナ起動

マルチプロセス処理をすることを想定してshm-sizeを大きめに設定している。

# docker run -itd \
  --gpus all \
  --shm-size 512m \
  -p 8888:8888 \
  -v /root/workspace:/home \
  --name kaggle \
  -h kaggle \
  kaggle/python-gpu-build:latest \
  jupyter lab --ip=0.0.0.0 --allow-root --no-browser --NotebookApp.token=''

起動時にKaggleコンテナが起動する設定

# crontab -e

開かれたファイルの最下部に以下を追加する。

@reboot docker start kaggle

SSHポートフォワーディング

GCP CLIセットアップ後、ローカルで以下のコマンドを実行する。

$ gcloud compute ssh <instancename> -- -N -f -L 8888:localhost:8888

ローカルのブラウザでhttp://localhost:8888にアクセスするとJupyter labの画面が表示される。

Discussion