DockerでDeep Learningしたいが、、、
せっかく新しく買ったM1搭載Macなのだから、環境はできるだけ汚さずに開発したいなぁ、という方は少なくないと思われます。
環境をクリーンに保つ方法の一つがDockerですけれども、
Deep Learningに必要なPyTorchとTensorFlowを両方利用できるいいarm64用Dockerイメージが見つからなかったので、なければ作れということで、作ってみました。
(PyTorchのビルドは何の苦労もなくできましたが、TensorFlowのビルドが辛いこと辛いこと、、、ビルドを開始して数時間経過後にエラーやらOut of Memoryやらが発生してその原因を特定してという苦行を何回繰り返したことか・・・)
現状、PyTorch 1.6/1.12とTensorFlow 2.3/2.9が使えます。(2022/08/03現在)
動作確認を兼ねて、このDockerイメージを使ってQiita記事の内容に合ったタイトルを数秒で10個くらい提案してくれるAIを作ったりしています。
作ったarm64 Deep Learning用Dockerイメージ
特徴:
- 次の2つのバージョンの組み合わせが利用可能です。
- PyTorch 1.6.0とTensorFlow 2.3.0
- PyTorch 1.12.0とTensorFlow 2.9.1 (🎉 2022/08/03追加)
以前公開していたPyTorch 1.9とTensorFlow 2.6.0のものは挙動が怪しいという報告を受け、非公開に変えました。
pullの仕方:
docker pull sonoisa/deep-learning-coding:pytorch1.12.0_tensorflow2.9.1
や
docker pull sonoisa/deep-learning-coding:pytorch1.6.0_tensorflow2.3.0
- DockerHub: https://hub.docker.com/r/sonoisa/deep-learning-coding
- 自分でイメージをビルドする方法(MacBook Pro M1 16GBで4〜5時間、MacBook Pro M1 Max 64GBで2時間かかりました)
VSCode Remote-ContainersでDeep Learningしよう
Dockerで作った環境で開発するなら、Visual Studio CodeのRemote-Containers機能拡張を使って開発する方が便利ですよね。
上記のDeep Learning用Dockerイメージを使った開発プロジェクトのテンプレートも合わせて作りました。以下、使い方です。
1. M1搭載Mac用Dockerのインストール
Intel x86_64用ではなく、Apple Silicon(M1)用をインストールするようにご注意ください。
次のサイトからDocker Desktop for Apple Silicon(2021/03/22時点ではRC1)をダウンロードしてインストールします。
- Apple Silicon Tech Preview: https://docs.docker.com/docker-for-mac/apple-m1/
2. Visual Studio CodeとRemote-Containers機能拡張のインストール
-
M1搭載Mac用のVisual Studio Codeのインストール方法:
- https://code.visualstudio.com からダウンロードします。
-
Remote-Containers機能拡張のインストール方法:
- VSCodeのメニューの「Code」→「Preferences」→「Extensions」を選びます。
- Extensionsの検索フィールドで「remote-containers」を検索すると、Remote-Containers機能拡張が出てきます。
- 「Install」ボタンを押し、インストールします。
3. プロジェクトテンプレートをダウンロードして解凍
次のzipファイルをダウンロードして解凍します。
フォルダ名を適宜変更してください。
- プロジェクトテンプレート(zip): https://github.com/sonoisa/arm64-vscode-deep-learning-project-template/archive/refs/heads/main.zip
4. VSCode Remote-Containersでプロジェクトを開く
- Visual Studio Codeの左下にある"><"のようなアイコンをクリックします。
- 「Remote-Containers: Open Folder in Container...」を選択します。
- 上記のプロジェクトを選択します。上記のDeep Learning用Dockerイメージのダウンロードとイメージのビルドが始まりますので少し待ちます。
- Dockerコンテナの起動後に、利用するpythonを選択せよという警告が表示されたら"~/python3-venv/bin/python"を選択します。
これで開発環境の起動完了です。
JupyterLabを利用したい場合は、メニューの「Terminal」から「New Terminal」を選び、次のコマンドを実行し、表示されたURLをホスト側のブラウザで開けば利用できます。
jupyter lab