DockerによるPyTorch実行環境構築:前提編

環境構築

はじめまして、しもつきです。
初投稿ということで、技術紹介などをする際にガンガン使うことになるDockerによる実行環境構築のいろは解説していこうかと思います。
想定読者さんとしてはAI初学者さんで、DockerでPyTorch実行環境を構築できるようになることを目指して、わかりやすいように要点をまとめていきたいと思います。
全部を1記事にまとめてもよかったのですが、長くなって読みづらくなりそうでしたので、三部に分けて投稿します。

それでは、三部作の第一弾、以下よりどうぞ。

そもそもDockerって?

Dockerを噛み砕いて説明すると「Dockerは、コンテナ化技術を利用してアプリケーションの実行環境を手軽に構築し、配布することができるプラットフォーム」です。

情報系の分野ではあるあるかと思いますが、何かしらのシステムなりを作ろう・動かしてみようと思った際には、そのシステムに適した環境を構築する必要があります。
そしてその環境構築には、えてして結構な手間暇がかかってしまうことが本っっっ当に多いです。
Dockerは、そうした環境構築にかかる手間暇を大幅に削減してくれるだけでなく、システムごとの環境管理が非常に楽にしてくれるため、エンジニアの方にはほぼ万人に習得をオススメできるものだと個人的には思っています。
最先端のAI手法をガンガン試していきたいという方には特に

そんな大変便利なDockerの仕組みなどですが、それを説明しだすと本当に長くなってしまうので、そこは詳細に解説してくださっている先人の方々に譲ります。
例えば、仕組みのイメージをつかむのに以下の記事などは個人的にオススメで、目を通しておくといいでしょう。

Dockerを使う上で準備するべきこと

結論としては、主に以下の3つをインストールしておくことを勧めます。(一つは必須)

  • Docker本体(必須
  • NVIDIA container toolkit
  • docker-compose

以下、それぞれの簡単な解説とインストールコマンドを紹介していきます。

※私が試している環境はUbuntu20.04です。Linux系なら大筋は変わらないと思いますが、バージョンの違いなどの影響で多少エラーがでてしまうこともあるかもしれませんので、その際はご容赦ください。

Docker本体

まずDocker本体についてです。
Dockerを使うというのですから、当然Docker本体をインストールしないとお話になりません。
そしてインストール方法ですが、基本的に以下の記事で詳しく解説してくださっている流れに沿って、ここではまとめておきます。

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install docker-ce

Dockerのインストール自体はこれで完了です。
念のため、以下のコマンドでdockerサービスがアクティブになっていることを確認すれば、問題なくインストールされたかどうかがわかります。

sudo systemctl status docker

# 出力サンプルが以下(「Active: active」になっていればOK)
docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-04-04 15:41:42 JST; 3 weeks 0 days ago
TriggeredBy:  docker.socket
       Docs: https://docs.docker.com
   Main PID: 1622 (dockerd)
      Tasks: 28
     Memory: 2.0G
     CGroup: /system.slice/docker.service
             └─1622 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

インストールに必要なのはここまでなのですが、Dockerの使い勝手を改善するために、以下のコマンドを実行しておくと少し幸せになれます。

sudo usermod -aG docker ${USER}
su - ${USER}

このコマンドが行っていることは「実行ユーザをdockerグループに追加」です。
Dockerを使うには「docker」コマンドを用いるのですが、このコマンドを実行するにはrootあるいはdocker-ceインストール時に作成されるdockerグループに属しているユーザのみしか実行できません。
そのため、上記コマンドを行わない限り、「docker」コマンドを実行したいときは「sudo」しなければならず、少々手間になります。

NVIDIA container toolkit

次にNVIDIA container toolkitをインストールします。
これは、Dockerのコンテナ内でGPUを使っていくためのものなので、必ず必要というものではないですが、AI用環境構築向けにDockerを使っていきたいなら必須級です。
また、dockerのバージョンによって、実はインストールすべきものが変わってきたりもするのですが、最新のdockerを入れていれば以下の手順で問題ないでしょう。

まず、前提条件として、ホスト側にNVIDIAドライバがインストールされている必要があります。
自由に環境管理できるDockerですが、ドライバ系はホスト側のものを継承するためです。
とは言えGPUを積んだPC/サーバなら、NVIDIAドライバは真っ先にいれるべきものなので、インストールされていないということはほぼないとは思います。
もしされていない場合は下記コマンドでインストールをしておきましょう。

sudo apt update -y
sudo apt install -y ubuntu-drivers-common
driver=$(ubuntu-drivers devices | grep recommended | awk '{print $3}')
sudo apt install -y --no-install-recommends $driver

# ドライバをインストールできたら再起動すること
# 再起動後「nvidia-smi」で表示がうまくいってればOK

NVIDIAドライバがインストールできていれば、下記コマンドでNVIDIA container toolkitをインストールしていきましょう。

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

これでインストールは完了です。
ちゃんとインストールされたかの確認は、以下のコマンドで行うことができます。

nvidia-container-cli info

# 出力サンプル(以下みたいなのがでてればOK)
NVRM version:   545.29.06
CUDA version:   12.3

# 他にもGPU情報など色々とでてきますがここでは省略

docker-compose

最後に、docker-composeをインストールします。
これもNVIDIA container toolkitと同様にdockerを使う上で必須というではないです。

ただ、いれておくとdockerがより扱いやすくなりますので、個人的にはインストールをオススメします。
というのも、docker-composeなしでdockerを実行する際は「docker」コマンドに様々なオプションをつけなければならない場面が多々あり、結果的に実行コマンドが煩雑にがちです。docker-composeを使えば、そういったオプション設定が「docker-compose.yaml」という設定ファイル一つでまとめられ、オプションの管理や他の人への共有が非常に楽になります。

それでは本題のインストール方法ですが、以下のコマンドでインストールすることができます。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v

# 最後のコマンドの出力サンプル(バージョンが確認できたらOK)
Docker Compose version v2.27.0

※1行目の「v2.27.0」の部分は、下記docker-composeの公式リポジトリのReleaseから好きに選ぶ(基本的には最新でいいと思います。2024/4/28時点では2.27.0が最新)

これで所望のバージョンのdocker-composeがインストールされます。

以上のインストールができれば、dockerを使う上で一通りの準備が整ったと言えるでしょう。
この記事は、説明をここまでとしたいと思います。
実際のdocker/docker-composeの使い方やサンプルなどに関しては、また別の記事にてまとめます。

それでは。

コメント

タイトルとURLをコピーしました