CUDA対応Jupyter notebookが動くドッカーを作る

CUDA対応Jupyter notebookが動くドッカーを作る

NVIDIA RTX3060 12GB NVIDIA RTX4080Super 16GBなどが対応しています。)

WindowsPCでDocker構築
一連の作業はWindowsPC上に作成したLinux( Ubuntu) OS上で行います。
Dockerを構築すれば、よりスムーズに運びます。
演算に使用するGPU(グラフィックカード)は、最低でもNVIDIA RTX3060 12GB程度が必要です。
もうちょっと頑張ってNVIDIA RTX4080Super 16GBなら更に良い。
金欠病の方(私も含めて)じゃんぱら辺りで中古を探せば、RTX3060 12GB ¥35,000程度 RTX4080Super 16GB ¥140,000程度で入手出来ます。
先にWindows10環境でグラボが使えるようにNVIDIAのサイトからWindowsドライバーを探して
インストールして使えるようにしておきます。
Windows11の場合
Win11では、wslがドッカー内に統合されているので最初の手順がWin10と異なります。
概要はDockerDesktopをインストールする過程でwslのセットアップもされるようです。
セットアップが完了したら、まず、DockerDesktopが起動しているかを確認後、Win11のスタートメニ
ューを開き「WSL_Settings」->「wslの起動」でUbuntuがスタートします。
スタートしたら下記のWin10の説明の(3)から同じ説明になります。
Windows11上のc:User/UserNameは、Ubutu上では/mnt/c/User/UserNameになりますので
WindowsのUser/UserName/Mydockerと共有を図るには、Ubuntu上でドッカーイメージを作る場合
/mnt/c/User/UserName/MyDocker/にDockerfileを置いてbuldコマンド、docker runコマンドを実行
するようにします。



Widows10の場合
(1) WSLとUbuntuのインストール
 ●「WSL」とディストリビューション「Ubuntu」インストールします。
      管理者権限でpowershellを起動し

> wsl --install -d Ubuntu-24.04

       でインストール出来ます。
       確認は以下のコマンドで行います。

> wsl --list --verbose
  NAME                   STATE           VERSION
* Ubuntu                 Running         2

(2) Docker desktopをインストール
  ●【ダウンロード】Docker desktopは以下からダウンロードを行い解凍して実行インストールします。
        https://www.docker.com/products/docker-desktop
        インストールしたら動作しているか確認します。

> wsl    #Ubuntuが起動してカーするが$に変わる。


(3) Ubuntu用のNVIDIAグラフィックドライバーをインストールします。(ここからUbuntu上)

sudo apt update && sudo apt upgrade
sudo apt install docker.io curl
sudo apt search nvidia-driver
sudo apt install nvidia-driver-570
sudo reboot


以下のコマンドを実行してGPUが正しく認識されているか確認します。

nvidia-smi


(4) ドッカーを構築する
  デスクトップにある「docker desktop」のアイコンをクリックして起動しておきます。

 
● CUDAイメージをPull
    PyTorchのバージョンに対応するCUDAバージョンのイメージをPullする(12.7)
    一番近いバージョン12.6.0 (RTX 3060 12GB RTX4080Super 16GB共同じ)

docker pull nvcr.io/nvidia/cuda:12.6.0-devel-ubuntu22.04

  ● Dockerfileを作成する。
    TeraPadなどのテキストエディターを使って「Dockerfile」を作成します。
    先にインストールしたCUDAイメージを元に、作業に必要なアプリケーションをインストー
    ルする指示書になります。
    実際に必要なアプリケーションはこれ等の他にも沢山ありますが、いっぺんに欲張ってイ
    ンストール指示を出すと、インストール時何らかのエラー等で停止する事があります。
    そこで、とりあえず必要最低限なものをこのDockerfile方式で先にインストールしておきそ
    れ以上の追加インストールは、後でコンテナを起動し、Jupyter notebookを使って確認し
    ながらインストールして行きます。
    すべてが上手く運んだら、後で再度Dockerfileを書き直してDocker imageを作り直しても
    良いです。
    Dockerfileの保存場所は、作業スペース内になります。
    作業スペースは自分で作成して下さい。
    例えば、C:ユーザー名/MyDocker
    MyDockerのフォルダーは仮想のUbuntuでは/workspaceに割り当てられます。

    Dockerfileには拡張子を付けません。
    テキストエディターで作成した「Dockerfile.txt」をMyDockerフォルダーに保存し、「名前を
    変更」で拡張子「.txt」を削除して下さい

Dockerfile

FROM nvcr.io/nvidia/cuda:12.6.0-base-ubuntu22.04
RUN apt-get update && apt-get install -y python3-pip
RUN apt-get -qq -y install curl zip unzip
# Install git
RUN apt-get update && apt-get install -y git
# wgetをインストール
RUN apt-get update && apt-get install -y wget
RUN python3 -m pip install tqdm
RUN python3 -m pip install --upgrade pip \
    && python3 -m pip install --no-cache-dir \
    torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
RUN python3 -m pip install --no-cache-dir ultralytics
RUN python3 -m pip install --no-cache-dir jupyter
RUN apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /usr/local/src/*

 
 ● ドッカーをビルドする。
       今回の例では、イメージ名を「cnn」にしました。
       名前は、何でもOKです。

cd MyDocker
docker build -t cnn .


(5) ドッカーを起動する。
   ドッカーを起動します。
   下記のコマンドを実行起動させるとブラウザで「localhost:8888」と入力してenterーキーを押
   すとPython の編集環境の「Jupyter notebook」が起動します。
   最初「workspace」フォルダーをクリックしてその場所で新規プロジェクトを開始して下さい。
   WindowsPC側では、Ubuntuの/workspaceはc/Users/name/Mydockerになります。
   「name」は自身のユーザー名です。

   /mnt/f/data:/data この例では、PCのF:ドライブのdataフォルダーを仮想Ubuntu環境の/data
   にマントしています。
   つまり、Ubuntu環境から/dataにアクセスすれば実際のPC上のF;dataにアクセス出来ます。
   自分の環境に合わせて下さい。
   尚、ドライブレターF;は小文字fにするのが決まりです。

docker run --rm -it --gpus all --ipc=host -v /mnt/c/Users/name/MyDocker:/workspace \
 -v /mnt/f/data:/data -p 8888:8888 cnn jupyter notebook --allow-root --no-browser \
--ip 0.0.0.0 --NotebookApp.token=''


(6) その他必要最低限のドッカー操作コマンド
 ● 特定のコンテナを停止する。

docker ps -a     #稼働中のコンテナを表示させる
CONTAINER ID   IMAGE          COMMAND  CREATED  STATUS  PORTS                                         NAMES
351bef306b41   cnn

docker stop 351bef306b41   #または docker stop cnn

  ● ドッカーイメージの削除
  ドッカーイメージを削除して作り直す場合には、上記の方法でコンテナを削除した後、PC
  のデスクトップにある「docker desktop」で「images」アイコンをクリックを表示させ
  削除したいイメージを選択して「Delete」ボタンをクリックして削除します。