Docker コンテナーで CUDA 対応 PyTorch を Conda でインストールする方法
前提条件
- Docker がインストールされていること
- NVIDIA GPU があること
- NVIDIA Container Toolkit がインストールされていること
手順
- Dockerfile を作成する
FROM nvidia/cuda:11.0-base
RUN apt-get update && apt-get install -y wget
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
RUN bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda
ENV PATH="/miniconda/bin:$PATH"
WORKDIR /app
COPY requirements.txt .
RUN conda install -c pytorch -y torch torchvision cudnn
COPY . .
- Docker イメージをビルドする
docker build -t pytorch-cuda .
- コンテナーを実行する
docker run -it --rm -p 8888:8888 pytorch-cuda
このコマンドは、pytorch-cuda
イメージからコンテナーを実行し、ポート 8888 をホストマシン上のポート 8888 にマップします。これにより、Jupyter Notebook などをコンテナー内で実行できるようになります。
- Jupyter Notebook を起動する
コンテナー内にいる場合は、次のコマンドを使用して Jupyter Notebook を起動できます。
jupyter notebook
ブラウザで http://localhost:8888
にアクセスすると、Jupyter Notebook インターフェースが表示されます。
- PyTorch を使用する
Jupyter Notebook で、以下のコードを使用して PyTorch が CUDA を認識していることを確認できます。
import torch
print(torch.cuda.is_available())
このコードが True
を返した場合、PyTorch は CUDA を認識しており、GPU を使用して計算を実行できます。
- このチュートリアルでは、NVIDIA CUDA 11.0 を使用しています。使用する CUDA バージョンに合わせて Dockerfile を更新する必要があります。
pytorch-cuda
イメージは、独自のイメージを作成するための出発点として使用できます。
FROM nvidia/cuda:11.0-base
RUN apt-get update && apt-get install -y wget
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
RUN bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda
ENV PATH="/miniconda/bin:$PATH"
WORKDIR /app
COPY requirements.txt .
RUN conda install -c pytorch -y torch torchvision cudnn
COPY . .
requirements.txt
torch
torchvision
cudnn
import torch
print(torch.cuda.is_available())
このコードは、以下のことを行います。
nvidia/cuda:11.0-base
イメージをベースとして、新しい Docker イメージを作成します。- イメージ内に Anaconda をインストールします。
requirements.txt
ファイルに指定されている PyTorch、Torchvision、および cudnn パッケージを Conda でインストールします。- プロジェクトのコードをイメージにコピーします。
torch.cuda.is_available()
関数を使用して、PyTorch が CUDA を認識していることを確認します。
このコードをカスタマイズして、ニーズに合わせて調整することができます。
NVIDIA は、NGC (NVIDIA GPU Cloud) として知られるコンテナーレジストリを運営しており、事前構築された CUDA 対応 PyTorch イメージを提供しています。これらのイメージを使用すると、自分で Dockerfile を作成する必要がなく、時間を節約できます。
NGC イメージを使用するには、次のコマンドを実行します。
docker run -it --rm nvidia/pytorch:latest
このコマンドは、最新の CUDA 対応 PyTorch イメージからコンテナーを実行します。
Docker Hub イメージを使用する
Docker Hub には、CUDA 対応 PyTorch を含むさまざまなユーザー作成イメージが用意されています。これらのイメージを使用すると、独自の Dockerfile を作成する必要がなく、他のユーザーの作業を活用できます。
docker run -it --rm pytorch/pytorch:1.7.1-cuda11.1
このコマンドは、PyTorch 1.7.1 と CUDA 11.1 を含む Docker Hub イメージからコンテナーを実行します。
カスタム Dockerfile を作成する
カスタム Dockerfile を作成するには、上記の基本的な Dockerfile を出発点として使用し、必要な変更を加えます。
最適な方法を選択する
使用する方法は、ニーズと要件によって異なります。
- 迅速かつ簡単な方法が必要な場合は、NVIDIA NGC イメージまたは Docker Hub イメージを使用します。
- 独自のニーズに合わせて調整された環境が必要な場合は、カスタム Dockerfile を作成します。
python-3.x docker anaconda