カテゴリー: ai-camera

  • 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」ボタンをクリックして削除します。