Open1

技術tips 環境系

fujisanfujisan

Windows 10 homeでUbuntu+docker+GPU+VScode

普段はWindowsのゲーミングPCで別SSDを使ってLinuxブート + Macで開発してましたが、windowsで完結すると色々楽だなと感じてきたのと(特にファン制御やCPUGPU電圧下げるなどして静かに動作)、WSL2&GPU&Dockerが普通にできるようになったらしいので試します。

WSL導入 & GPU向けの環境構築は以下参照
https://qiita.com/ksasaki/items/ee864abd74f95fea1efa

※Windows on Dockerは動作するが、デフォルトでwindowsシャットダウン時にエラーダイアログが多発するので、wls2内のDockerを使います

# コンテナ作成 
docker image build --network host -t python/tensorflow ./.devcontainer/

# gpu有効で 
docker run -v $PWD:/home/workspace --network host --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --gpus all --rm -it python/tensorflow

Dockerfile

FROM nvcr.io/nvidia/tensorflow:20.12-tf2-py3
WORKDIR /home/workspace

# install python
#RUN apt-get update
COPY requirements.txt ${PWD}
#RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# ユーザーを作成
ARG DOCKER_UID=1000
ARG DOCKER_USER=xxxx
ARG DOCKER_PASSWORD=xxxx
RUN useradd -m --uid ${DOCKER_UID} --groups sudo ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd

# 作成したユーザーに切り替える
USER ${DOCKER_USER}

遭遇したエラー

resolv.confが期待どおりに機能し始めた後の私のワンライナー:(WSL2のシャットダウン後も)
sudo rm /etc/resolv.conf && sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' && sudo chattr +i /etc/resolv.conf
  • vscodeからのdevcontainer.json+dockerでgpuが有効にできなかったので、wsl上でdocker runすることに
  • 全体的にパフォーマンスはネイティブubuntuの方が良い。別ドライブのbootに戻すか・・? windowsだとCPU・ネットワーク速度・GPUメモリ2GB使用される、メモリの処理が変など問題は多い
  • Docker利用なので再現は簡単なのが良いところか