1
1

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.

WSL2(Ubuntu) + Dockerの環境を構築してkaggle公式のコンテナを動かす

Last updated at Posted at 2023-09-20

概要

kaggleコンペのstarter notebookで使われているkeras-cvがwindows10で動かなかったので、必要にせまられてWSL2のUbuntu環境を構築することにした。また、せっかくなのでDocker Engineをインストールしてkaggle公式イメージを使えるようにした。その時の作業メモを残しておく。

PC環境

このPCに、WSL2(Ubuntu) + Docker環境を構築する。

項目
OS Windows10 Pro 22H2
CPU Core i5-13500
OSメモリ 96 GB
GPU GeForce RTX 2080 Ti

準備

Windowsターミナルのインストール

公式サイトにしたがって、Windowsターミナルをインストールする。
必須ツールではないが、タブ操作でPowershellやWSLのubuntuを起動できるので便利。

Windowsターミナルのインストールをクリック
Windowsターミナル

Microsoft Storeアプリの取得
Microsoft Storeアプリから取得

入手
入手

インストールが完了したら開く
起動

次のWSLインストール作業以降、このWindowsターミナルを利用する。

環境構築

WSL2のインストール

公式サイトにしたがってWSL2をインストールする。

PowerShell上で以下のコマンドを実行する。必要な一式が自動でインストールされる

wsl --install

インストールが完了したらシステムを再起動する
インストール

再起動するとUbuntuのインストールが自動で開始される。途中、作成するユーザーアカウントの入力を求められる。
Ubuntu

これでUbuntuのインストールは完了。
インストールしたUbuntuは、Windowsターミナルのタブから起動することができる
Ubuntu

Ubuntuのリソース設定変更

Ubuntuに割り当てられるメモリサイズはデフォルトでホスト(Windows)の半分らしい。必要に応じて、設定ファイルを作成してリソース設定を変更する。私はこちらを参考にした。

.wslconfigファイルの作成場所(Windows側)

C:\Users\[ユーザ名]\.wslconfig

設定例:メモリを80GB割り当て

[wsl2]
memory=80GB

設定ファイルの内容を反映させるため、PowerShell上でwslをシャットダウンする

wsl --shutdown

メモリが80GBに増えたことを確認

topコマンド

なお、メモリ以外のリソース設定も変更できる。こちらが参考になる。

Docker Engineインストール

公式DocにそってDocker Engineをインストールする。
私は、公式DocのInstall using the Apt repository の内容をそのまま実行した。

DockerのAptリポジトリをセット

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update 

Dockerパッケージのインストール

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

インストール完了後、hello-worldコンテナを起動して動作確認を行う。

sudo docker run hello-world

あと、sudoをつけずにdockerコマンドを実行できるよう、dockerグループにユーザ追加を行う。

# sudo usermod -aG docker $USER
sudo usermod -aG docker <ユーザ名>

NVIDIA Container Toolkitのインストール

コンテナの中でNvidia GPUを利用するため、NVIDIA Container Toolkitをインストールする。

公式ガイドにしたがって、Installing with Aptの内容をそのまま実行する。

リポジトリの設定

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/stable/deb/nvidia-container-toolkit.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 \
  && \
    sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

NVIDIA Container Toolkitパッケージのインストール

sudo apt-get install -y nvidia-container-toolkit

Dockerイメージの取得

githubを参考に、kaggle公式イメージを取得する。

# gpuのイメージ取得コマンド
docker pull gcr.io/kaggle-gpu-images/python

# cpu onlyのイメージ取得コマンド
docker pull kaggle/python

リポジトリにイメージが登録されたことを確認する

docker images
docker images

動作確認

コンテナを作成し、動作確認を行う。

# コマンド例
docker run -it --gpus all -h "kgl_gpu1" --rm -p 80:8888 -v /mnt/c/work:/mnt/work --name kgl_gpu1 gcr.io/kaggle-gpu-images/python /bin/bash
# -i:対話形式で操作できるようにする
# -t:疑似tty端末を割り当てる
# --gpus:コンテナ内で利用するgpuデバイスを指定
# -h:コンテナのホスト名の指定
# --rm:終了時にコンテナを削除
# -p:ポートフォワードの設定(不要かも)。 <ホスト側ポート>:<コンテナ側ポート>
# -v:ディスクのマウント設定 <ホスト側ディレクトリ>:<コンテナ内マウントポイント>。複数指定も可能
# --name:起動するコンテナーに名前を付ける(省略すると、適当な名前がつくっぽい)

コンテナ内でnvidia-smiコマンドを実行し、gpuが認識されていることを確認する
nvidia-smi

おしまい。

参考

Windowsターミナル

WSL2

WSLのUbuntuリソース設定

Docker

NVIDIA Container Toolkit

ほかにも参考にしたサイトがいくつかあったが、忘れてしまった。思い出したら追記するつもり。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?