UbuntuにDockerをインストール!GPUをコンテナから使う方法

UbuntuにDockerをインストール!GPUをコンテナから使う方法

GPUの環境構築では、ソフトウェアのバージョン不一致によるエラーが頻発します。

Dockerを使うことで、このような依存関係のエラーを回避しやすくなります。

この記事では、UbuntuにDockerをインストールする方法から、コンテナからGPUを使う方法まで紹介します。

11/27開催のウェビナーをお知らせ!

目次

環境構築する前の準備

見出し画像

GPUの環境構築では、ソフトウェアのバージョン依存関係によるエラーが頻発します。

環境構築の前に、次の情報を下調べしておくことが重要です。

  • GPUの型番
  • OSの種類・バージョン
  • CUDAのバージョン
  • NVIDIAドライバのバージョン

GPUの型番を確認する

まずGPUの型式を確認しておきます。

GPUの型番には、次のようなものがあります。

NVIDIA RTX A6000
NVIDIA GeForce RTX 4090
NVIDIA A100

OSの種類・バージョンを確認する

お使いのOSのバージョンを確認しておきます。

Ubuntuで以下のコマンドを実行します。

lsb_release -a
Ubuntuバージョン確認

この記事では、Ubuntu 22.04LTSを使用しています。

Windowsをお使いの方は、Ubuntuをインストールする記事をあわせてご覧ください。

CUDAのバージョンを確認する

使用したい機械学習のライブラリに対応するCUDAのバージョンを確認します。

機械学習のライブラリ(フレームワーク)として代表的なものにPyTorchが挙げられます。

PyTorchとCUDAのバージョン関係は、PyTorchの公式サイトから参照できます。

PyTorch
Previous PyTorch Versions Installing previous versions of PyTorch

この記事ではCUDA 12.1を使用しています。

NVIDIAドライバのバージョンを確認する

GPU、OS、CUDAに対応するNVIDIAドライバのバージョンを確認します。

NVIDIAの公式サイトにアクセスします。

NVIDIA
NVIDIA 公式最新ドライバーのダウンロード 最新の NVIDIA 公式ドライバーをダウンロードして、PC ゲーミング体験を向上し、アプリケーションをより速く実行しましょう。

調べておいたGPU、OS、CUDAの情報をもとに、「ドロップダウンリスト」を選択します。

NVIDIAドライバの選定
(出典:https://www.nvidia.co.jp/)

CUDA 12.1をお使いの場合は、「CUDA Toolkit」から12.2もしくは12.4を選択してください。

「探す」をクリックすると対応するNVIDIAドライバのバージョンが表示されます。

NVIDIAドライバのバージョン
(出典:https://www.nvidia.co.jp/)

この記事では、バージョン550のNVIDIAドライバを使用しています。

NVIDIAドライバのインストール

見出し画像

NVIDIAドライバをインストールしていきます。

Ubuntuホストマシンで次のコマンドを実行し、ドライバをインストールします。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-550

install nvidia-driver-550で、バージョン「550」のNVIDIAドライバを指定しています。

ドライバをインストールしたら、OSを再起動します。

sudo reboot

ドライバが正しくインストールできているか確認します。

nvidia-smi
nvidia-smiコマンド

Dockerのインストール

見出し画像

UbuntuホストマシンにDockerをインストールしていきます。

Dockerの公式GPGキーを追加します。

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

DockerのAPT リポジトリを追加します。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Dockerをインストールします。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

現在のユーザーをdockerグループに追加します。

sudo usermod -aG docker $USER

ファイルのパーミッションを変更します。

sudo chmod 666 /var/run/docker.sock 

Dockerデーモンがシステム起動時に自動的に起動するように設定します

sudo systemctl enable docker

現在のシェルセッションをリロードして、変更を有効にします。

newgrp docker

Dockerデーモンを再起動します。

sudo systemctl restart docker

Dockerが正しくインストールされたか確認するために、サンプルのコンテナを実行してみます。

docker run hello-world
Dockerのインストール確認

次のメッセージが表示されたら、Dockerをインストール成功です!
Hello from Docker!
This message shows that your installation appears to be working correctly.

NVIDIA Container Toolkitのインストール

見出し画像

UbuntuホストマシンにNVIDIA Container Toolkitをインストールしていきます。

NVIDIA Container Tooklitを使うと、コンテナ内にNVIDIAドライバをインストールする必要がなくなります。

リポジトリとGPGキーをセットアップします。

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

nvidia-container-toolkitをインストールします。

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

NVIDIAコンテナー ランタイムを認識するように、Docker デーモンを構成します。

sudo nvidia-ctk runtime configure --runtime=docker

config.tomlファイルを編集します。

sudo nano /etc/nvidia-container-runtime/config.toml

次のように書き換えて、保存します。
no-cgroups = false

デフォルトのランタイムを設定した後、Docker デーモンを再起動してインストールを完了します。

sudo systemctl restart docker

DockerコンテナからGPUを認識する

見出し画像

コンテナからGPUが認識できるかをテストします。

サンプルのDockerコンテナを起動します。

docker run -it --rm --runtime=nvidia --gpus all nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04 /bin/bash

コンテナ内からGPUが認識できているか確認をします。

nvidia-smi

コンテナ内からNVIDIA A100 80GB GPUが認識できています。

コンテナにCUDAがインストールされているか確認します。

nvcc -V
CUDAのバージョン

コンテナ内にCUDA 12.1がインストールできています。

PyTorchコンテナでの動作確認

見出し画像

今度はCUDA、Python、PyTorchを含むコンテナを構築してみます。

最終的にコンテナ内のPyTorchからGPUが適切に認識できるかテストします。

Dockerファイルの作成

Dockerファイルを作成して編集します。

nano Dockerfile

次の記述をコピーして、Dockerファイルに貼り付けます。

# ベースイメージ(CUDA)の指定
FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y python3-pip python3-venv git nano

# 作業ディレクトリを設定
WORKDIR /app

# アプリケーションコードをコピー
COPY . /app

# Python仮想環境の作成
RUN python3 -m venv /app/.venv

# 仮想環境をアクティベートするコマンドを.bashrcに追加
RUN echo "source /app/.venv/bin/activate" >> /root/.bashrc

# PyTorchのインストール
RUN /app/.venv/bin/pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121

# コンテナの起動時にbashを実行
CMD ["/bin/bash"]

[Ctrl + S]キーで変更内容を保存し、[Ctrl + X]キーで編集モードから抜けます。

docker-compose.ymlファイルの作成

docker-compose.ymlを使って、Dockerコンテナに関する設定を行います。

docker-compose.ymlを作成して編集します。

nano docker-compose.yml

次の記述をコピーして、docker-compose.ymlファイルに貼り付けます。

services:
  pytorch_container:
    build:
      context: .
      dockerfile: Dockerfile
    image: pytorch_container
    runtime: nvidia
    container_name: pytorch_container
    volumes:
      - .:/app/pytorch_container
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

「Ctrl + S」キーで変更内容を保存し、「Ctrl + X」キーで編集モードから抜けます。

Point

runtime: nvidia コンテナ起動時にnvidia container toolkitを指定
driver: nvidia NVIDIAドライバの指定
count: 1 GPUの枚数の指定
capabilities: [gpu] デバイスにGPUを指定

PyTorchからGPUの認識テスト

Dockerfileからビルドしてコンテナを起動します。

docker compose run pytorch_container

Pythonのインタラクティブモードに入ります。

python
Pythonを起動

Pytorchをインポートします。

import torch

PyTorchからGPUが認識できるか確認します。

torch.cuda.is_available()
PythonからGPUを認識

Trueが返されると適切にGPUが認識できています。

生成AI・LLMのコストでお困りなら

GPUのスペック不足で生成AIの開発が思うように進まないことはありませんか?

そんなときには、高性能なGPUをリーズナブルな価格で使えるGPUクラウドサービスがおすすめです!

GPUSOROBAN
GPUSOROBAN

GPUSOROBANは、生成AI・LLM向けの高速GPUを業界最安級の料金で使用することができます。

インターネット環境さえあれば、クラウド環境のGPUサーバーをすぐに利用可能です。

大規模な設備投資の必要がなく、煩雑なサーバー管理からも解放されます。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
EdgeHUBロゴ

メールマガジン登録

Stable Diffusion・LLM・RAGに関する最新情報をいち早くお届けします。

無料メルマガの配信をご希望の方は、下記フォームよりご登録ください。

    EdgeHUB編集部からのお知らせ

    無料ウェビナーのお知らせ

    11/27ウェビナー

    RAG×日本語LLMの無料オンラインウェビナー第2弾!

    開催日時:
    2024年11月27日(水) 14:00~15:00

    内容:

    • 「LlamaIndex」と「Llama-3.1-Swallow」でRAG環境を構築
    • 生成AI開発の強い味方「GPUSOROBAN」の活用方法

    このウェビナーでは、オープンソース「LlamaIndex」で構築したRAGの使い方や、デモを紹介します。

    生成AIに関心のある方、AI技術をビジネスに活かしたい方は、ぜひこの貴重な機会にご参加ください!

    こんな方におすすめ!

    • 日本語LLMの利用を検討している方
    • AI開発に携わっている方
    • 最新のAI技術やトレンドに興味がある方
    • GPUスペック不足に悩んでいる方

    \簡単1分で申し込み!/

    この記事を書いた人

    EdgeHUBは、NVIDIAクラウドパートナーである株式会社ハイレゾが運営しています。「AIと共にある未来へ繋ぐ」をテーマに、画像生成AI、文章生成AI、動画生成AI、機械学習・LLM、Stable Diffusionなど、最先端の生成AI技術の使い方をわかりやすく紹介します。

    目次