LoginSignup
1
0

LinuxでDockerを使いこなす:機械学習の環境構築マニュアル

Last updated at Posted at 2024-02-12

Linux上でDockerを使用して機械学習の環境構築を行ったので、備忘録を兼ねて書きました。

とりあえずLinuxで機械学習したいけど上手く動かなくて困っているという方におすすめの記事です!

Dockerとは

Dockerは、アプリケーションを開発、配布、実行するためのプラットフォームです。細かい説明は省きますが、Dockerを使用することで、アプリケーションを簡単に他の環境に移したり、一貫性のある環境で開発やテストを行うことが可能になります。

この記事ではDockerというサービスを利用して、Linux上に自分でカスタムした仮想環境のLinuxを置く、すなわち環境構築を行う方法が説明されています。

LinuxにDockerをインストールする方法

以下の公式サイトの「リポジトリを利用したインストール」通りに入れればokです

更に、Dockerのコマンドをsudo権限なしで使えるようにするために以下のコマンドを実行します。

sudo usermod -aG docker <your-username>

このコマンドの実行によって、your-usernameというユーザーをdockerグループに追加し、そのユーザーがsudoを使わずにDockerの機能を使えるようになります。

また、自分のyour-usernameが分からない場合はwhoamiコマンドをシェルに入力すれば確認できます。

機械学習の環境構築をする時にチェックすべき所

Dockerの話に詳しく入る前の知識として、機械学習の環境構築をする時にチェックすべき所があります。
それは自分が入れるべきCUDAとPytorchのバージョンをしっかりと特定することです。

ここの互換性がなければ機械学習モデルは上手く動きませんし、逆にここさえ上手く合っていれば修正は簡単です。

もう少し詳しくお話しすると、GPUとCUDAの互換性とCUDAとPytorchの互換性の2つがクリアしていればOKです。バージョンの探し方については以下の記事で詳しく書きましたので参考にして下さい。

機械学習の環境構築ガイド!CUDAとPyTorchのバージョンが合わないエラーからの脱出

実例を通したDockerでの環境構築

さて前節まででDockerのインストールが完了し、自分が入れたいCUDAとPytorchのバージョンが特定できたはずです。

ここからは実際にDocker上で環境構築を行なっていきます。まず、以下のDocker Hubのサイトから自分がインストールしたいLinuxを探します。

このページには様々なバージョンのCUDAとPytorchが搭載されたLinuxファイルが配布されています。

今回はCUDA=11.1, pytorh==1.8.0のバージョンをダウンロードしたいとして話を進めます。
image.png

先ほどのサイトからCUDA=11.1, pytorh==1.8.0に合うtagを発見し、そのフォルダを自分のローカルフォルダにダウンロードします。
これを行うためには、上の写真の右側にあるdocker pull pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtimeをshellに入力してあげれば大丈夫です。

これによってローカルにダウンロードが完了しました。ここでダウンロードされたものはDockerイメージと呼ばれるものなのですが、ここから更にDockerコンテナを作成します。

用語の解説として、Dockerイメージは家の設計図、Dockerコンテナは実際に建てられた家みたいなものです。
実際のプログラムを実行する環境はDockerコンテナで、それを作るための設計書がDockerイメージです。Dockerイメージからは複数のDockerコンテナを作ったり、逆に作ったDockerコンテナを少し改造してDockerイメージとして保存することもできます。

話を戻して、次のステップとしてDockerイメージからDockerコンテナを作成します。
基本的には次のコマンドで作成できます。
docker run -it <イメージ名:タグ名> bash
コンテナ名は自分で自由に付けられる名前です。

しかし実際にDockerコンテナを作成する場合は以下のようなコマンドになります。
docker run --gpus all --shm-size <size> -it --name <コンテナ名> --mount type=bind,source=<place-of-model>.,target=/workspace pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime bash

これを実行することで、contena_youという名前のDockerコンテナが完成します。
それぞれの意味を以下に解説します。

--gpus all: このオプションは、Dockerがホストマシンの全てのGPUにアクセスできるようにします。これは、コンテナ内でGPUを利用するために必要です。

--shm-size <size>: コンテナの共有メモリ(SHM)のサイズをsizeに設定します。例えば--shm-size 20gならば20GBが共有メモリとなります。共有メモリは、プロセス間通信(IPC)に使われるメモリのことで、データサイエンスや機械学習のタスクで大きなデータセットを扱う場合に重要になることがよくあります。

--name <コンテナ名>: このオプションでコンテナに名前を割り当てます。<コンテナ名>には、コンテナを識別するための任意の名前を入れます。

--mount type=bind,source=<place-of-model>,target=/workspace: これは、ホストマシンの特定のディレクトリ(今回はplace-of-modelに指定)をコンテナ内の/workspaceディレクトリにマウント(バインド)します。この方法で、ホストマシン上のファイルやディレクトリをコンテナ内で直接使うことができます。

以上で、環境構築は完成しました。後はこのDockerコンテナ内で通常通りpythonファイルなどを実行することで機械学習モデルを動かすことができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0