Apple Silicon MacでDockerを使ったPytorch環境を構築|設定ファイルを公開
Apple Silicon(M1/M2/M3/…)MacでDockerを使ったPyTorch環境を構築する方法を解説します。私が使っている設定ファイルも公開しますので、環境構築に役立ててください。
docker-compseでJupyter notebook環境を立ち上げる
Apple SiliconでJupyter notebookを動かすためのdockerイメージを作成しました。
以下は、私が利用しているイメージの作成手順になります。
docker上からは、いまのところmps(apple siliconのGPU)にはアクセスできないみたいです。GPUを使いたい場合には、miniconda環境などを利用することになるかと思います。
PyTorch(Dockerイメージ)にインストールするライブラリ
私の環境でインストールしているライブラリは以下になります。これら以外は、都度notebookからインストールする形式にして、docker imageが小さめになるようにしています。
- miniforge(python)
- pytorch(torchvision, torchaudio)
- numpy
- pandas
- matplotlib
- jupter notebook
これで、約1.65GBのイメージなります。
設定ファイル
設定ファイルは以下の3つになります
Dockerfile
Dockerの設定ファイルです。環境の構築方法が書かれていますrequirements.txt
Pythonにインストールするライブラリ一覧です。Dockerfile経由で利用します。必要なライブラリはここに記述しておきます。docker-compose.yaml
Docker composeの設定ファイルで、docker-compose
を使って起動・終了させるために必要となります。
それぞれ、内容は以下の通りです。
Dockerfile
Dockerイメージを作成するための設定ファイルです
FROM condaforge/miniforge3:latest
RUN apt update && \
apt install -y build-essential
COPY requirements.txt /tmp
RUN pip install -r /tmp/requirements.txt
RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
RUN mkdir /home/work
EXPOSE 8888
CMD ["jupyter", "notebook", \
"--port=8888", \
"--ip=0.0.0.0", \
"--allow-root", \
"--no-browser", \
"--NotebookApp.token=''", \
"--NotebookApp.notebook_dir='/home/work'"]
requirements.txt
torch関連以外でインポートするpythonのライブラリはこちらに記述しました。
numpy
pandas
matplotlib
jupyter
docker-compose.yml
docker-compose.yamlは、必要最低限の記述になります。
version: "3"
services:
python:
build : ./
shm_size: '2gb'
ports:
- "8888:8888"
volumes:
- "./:/home/work"
使い方
上記のファイルを同じフォルダに格納しておきます。コマンド実行前には、3つのファイルが存在するフォルダにcd
コマンドで移動しておきます。
起動
起動はターミナル上から行います。具体的には、以下のコマンドをコマンドラインに入力します。
docker-compose up -d
起動が終了したらWebブラウザで以下のアドレスにアクセルすれば、jupyter notebookが立ち上がります。
localhost:8888
終了
終了は以下のコマンドになります。以下のコマンドをコマンドラインに入力します。
docker-compose down
まとめ
私が使っているPython+PyTorch環境のためのDockerfile、requirements.txt, docker-compose.yamlと、起動・終了方法について解説しました。
Macでdockerを使ってjupyter notebook環境を作ろうと考えている方の参考になれば幸いです。
docker上からはmps(apple siliconのGPU)にはアクセスできないみたいです。mpsを使いたい場合は、直接macos上でコード実行する必要があります。