使用WSL2(Ubuntu)+ Docker来构建环境,并运行kaggle官方容器

简要概括

因为在kaggle竞赛的入门笔记本中使用的keras-cv无法在Windows 10上运行,所以我决定搭建WSL2的Ubuntu环境以满足需求。另外,我也安装了Docker Engine,并且配置了kaggle官方镜像的使用。现在我将留下当时的操作记录。

個人電腦設置

在这台电脑上,搭建WSL2(Ubuntu)+Docker环境。

項目値OSWindows10 Pro 22H2CPUCore i5-13500OSメモリ96 GBGPUGeForce RTX 2080 Ti

准备

安装Windows终端

按照官方网站的指示,安装Windows终端。
虽然不是必要的工具,但可以通过选项卡操作启动Powershell和WSL的Ubuntu,非常方便。

Windowsターミナル
Microsoft Storeアプリから取得
入手
起動

从安装WSL开始,之后将使用这个Windows终端。

创建环境

安装WSL2

根据官方网站的指南安装WSL2。

在PowerShell上运行以下命令,将自动安装所需的一组组件。

wsl --install
インストール
Ubuntu
Ubuntu

Ubuntu资源配置更改

据说,Ubuntu默认会分配给内存的大小是主机(Windows)的一半。根据需要,可以创建配置文件并更改资源设置。我参考了这篇文章。

(Windows端)创建.wslconfig文件的位置

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

设置示例:分配80GB内存

[wsl2]
memory=80GB

为了反映设置文件的内容,使用PowerShell在wsl上关闭它。

wsl --shutdown

确认内存已增加到80GB。

topコマンド

另外,除了内存之外,还可以更改其他资源的设置。这里可以作为参考。

安装Docker Engine

按照官方文档的指示安装Docker Engine。
我根据官方文档中“使用Apt仓库安装”的内容进行了完全相同的操作。

设置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

此外,我們可以將使用者添加到 Docker 群組,以便無需使用 sudo 命令就能執行 Docker 命令。

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

安装NVIDIA容器工具包

为了在容器中使用Nvidia GPU,需要安装NVIDIA容器工具包。

按照官方指南,直接按照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容器工具包的软件包。

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

结束了。

请参考

Windows 终端

    • Windows ターミナルをインストールしてセットアップを開始する

 

    https://learn.microsoft.com/ja-jp/windows/terminal/install

WSL2-雲端原生不兼容層次

    • WSL を使用して Windows に Linux をインストールする方法

 

    https://learn.microsoft.com/ja-jp/windows/wsl/install

WSL中的Ubuntu资源配置

    • WSL2/Ubuntu/Raspberry Piでのメモリ不足を解消する

 

    • https://zenn.dev/karaage0703/articles/d38e17bd6efbaa

WSL2の2つの設定ファイル「.wslconfig」と「wsl.conf」
https://ascii.jp/elem/000/004/044/4044122/2/

Docker: Docker

    • Install Docker Engine on Ubuntu

 

    • https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

よく使うDockerコマンド
https://qiita.com/noralife/items/18301143c20cc5172c56

【Docker】Dockerでホストのディレクトリをマウントする
https://qiita.com/Yarimizu14/items/52f4859027165a805630

NVIDIA 容器工具包 (NVIDIA

Installing the NVIDIA Container Toolkit
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

NVIDIA Container Toolkit (NVIDIA Docker) は何をしてくれるか
https://qiita.com/tkusumi/items/f275f0737fb5b261a868

除了这个参考网站之外,我还有几个,但是我忘记了。一旦我回想起来,我会补充说明的。

广告
将在 10 秒后关闭
bannerAds