プログラミング言語 仮想化 技術 開発環境

理想のpython開発環境を作る:pytorchを使う

2023年5月6日

1.簡単なpython環境を作る
2.jupyterをVS Codeで使う
3.Githubと連携
4.Dockerfileで自前の環境構築
5.tensorflowを使う
6.pytorchを使う(今ココ)

書籍の環境構築は書籍に譲るとして、自前で何かしたいときの対応をしてみる。
(pytorch派なのでtensorflowは一旦捨て置く)
あとvscodeのnotebookが微妙に使いづらいのでここでなんとかしてみる。

公式のコンテナイメージを使う。

先述のDockerFileよりは軽量化。

Dockerfile

#公式のdockerイメージをベースにする。
FROM nvidia/cuda:11.8.0-devel-ubuntu20.04 as base

#apt-get中にタイムゾーンの設定を聞かれる・・・
ENV EBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

SHELL ["/bin/bash", "-c"]
RUN apt update && apt upgrade -y
RUN apt-get update && apt-get install -y \
        python3 \
        python3-pip \
        bzip2 \
    #    ca-certificates \
    #    cmake \
    #    ffmpeg \
        git \
    #    libboost-all-dev \
    #    libglib2.0-0 \
    #    libjpeg-dev \
    #    libpq-dev \
    #    libsdl2-dev \
    #    libsm6 \
    #    libxext6 \
    #    libxrender1 \
    #    mercurial \
    #    subversion \
        sudo \
    #   swig \
        wget \
    #    xorg-dev \
    #    xvfb \
        vim \
        zip \
        zlib1g-dev \
    #    build-essential \
    #    cuda-command-line-tools-${CUDA/./-} \
    #    libcublas-${CUDA/./-} \
    #    cuda-nvrtc-${CUDA/./-} \
    #    libcufft-${CUDA/./-} \
    #    libcurand-${CUDA/./-} \
    #    libcusolver-${CUDA/./-} \
    #    libcusparse-${CUDA/./-} \
        curl \
    #    libcudnn8=${CUDNN}+cuda${CUDA} \
    #    libfreetype6-dev \
    #    libhdf5-serial-dev \
    #    libzmq3-dev \
    #    pkg-config \
    #    software-properties-common \
        unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# For CUDA profiling, TensorFlow requires CUPTI.
ARG USERNAME=dev-user
ARG GROUPNAME=dev-user
ARG UID=1000
ARG GID=1000
ARG PASSWORD=dev-user

#追加したユーザでsudoを使えるようにする
RUN groupadd -g $GID $GROUPNAME && \
    useradd -m -s /bin/bash -u $UID -g $GID $USERNAME  && \
    adduser dev-user sudo && \
    echo $USERNAME:$PASSWORD | chpasswd && \
    echo "$USERNAME   ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

#rootのパスワードがわからないのでパスワードを変更
RUN echo "root:root" | chpasswd

RUN pip install --upgrade pip
RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

一番最後のpip installは公式イメージのバージョンと合わせたものに対応したコマンドにしてます。

cudaが使えているか?の確認

dev-user@6a842f00a638:/workspaces/pytorch$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True

OKOK。

GPUを使うときは公式イメージを持ってくるのが一番手っ取り早そうですね。
Tensorflowは知らん。(雑)

jupyter labをブラウザで使う

requirements.txtにjupyterlabを入れるだけ。

##### Core scientific packages
matplotlib
numpy
pandas
scipy

##### Machine Learning packages
scikit-learn

xgboost

##### Image manipulation
Pillow
graphviz
opencv-python

tqdm
ipywidgets
jupyterlab

vscodeのターミナルでコマンドを実行

dev-user@6a842f00a638:/workspaces/pytorch$ python3 -m jupyter lab

~中略~

[C 2023-05-18 12:36:57.765 ServerApp] 
    
    To access the server, open this file in a browser:
        file:///home/dev-user/.local/share/jupyter/runtime/jpserver-1414-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/lab?token=d3598fb73df65b88d9a572bfee7ec4f069a4378a3d301714
        http://127.0.0.1:8888/lab?token=d3598fb73df65b88d9a572bfee7ec4f069a4378a3d301714

最後に出てくるアドレスにアクセスするとjupyter labが起動できる。

こっちでも実行できる。

ちなみに、「jupyter lab」を「jupyter notebook」にすると、notebook環境が使えます。
ipywidgetsはjupyter labだとうまく使えなかったので、notebookを使いました。

-プログラミング言語, 仮想化, 技術, 開発環境
-, ,