M1搭載Macの環境を汚さずにDeep Learningしたい!(Docker, PyTorch, TensorFlow, VSCode, Jupyter)


DockerでDeep Learningしたいが、、、

せっかく新しく買ったM1搭載Macなのだから、環境はできるだけ汚さずに開発したいなぁ、という方は少なくないと思われます。

環境をクリーンに保つ方法の一つがDockerですけれども、
Deep Learningに必要なPyTorchTensorFlowを両方利用できるいいarm64用Dockerイメージが見つからなかったので、なければ作れということで、作ってみました。

(PyTorchのビルドは何の苦労もなくできましたが、TensorFlowのビルドが辛いこと辛いこと、、、ビルドを開始して数時間経過後にエラーやらOut of Memoryやらが発生してその原因を特定してという苦行を何回繰り返したことか・・・)

現状、PyTorch 1.6/1.9とTensorFlow 2.3/2.6が使えます。(2021/11/07現在)

動作確認を兼ねて、このDockerイメージを使ってQiita記事の内容に合ったタイトルを数秒で10個くらい提案してくれるAIを作ったりしています。

作ったarm64 Deep Learning用Dockerイメージ

特徴:

  • 次の2つのバージョンの組み合わせが利用可能です。
    • PyTorch 1.6.0とTensorFlow 2.3.0
    • PyTorch 1.9.0とTensorFlow 2.6.0 (🎉 2021/11/07追加)
  • ARM社による高速計算ライブラリArm Compute libraryArm Optimized Routinesを利用するようビルドしていますので、遅くはないはずです(要ベンチマーク)。

pullの仕方:

docker pull sonoisa/deep-learning-coding:pytorch1.9.0_tensorflow2.6.0

docker pull sonoisa/deep-learning-coding:pytorch1.6.0_tensorflow2.3.0

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)をダウンロードしてインストールします。

2. Visual Studio CodeとRemote-Containers機能拡張のインストール

  • M1搭載Mac用のVisual Studio Codeのインストール方法:

    1. https://code.visualstudio.com からダウンロードします。
  • Remote-Containers機能拡張のインストール方法:

    1. VSCodeのメニューの「Code」→「Preferences」→「Extensions」を選びます。
    2. Extensionsの検索フィールドで「remote-containers」を検索すると、Remote-Containers機能拡張が出てきます。
    3. 「Install」ボタンを押し、インストールします。

3. プロジェクトテンプレートをダウンロードして解凍

次のzipファイルをダウンロードして解凍します。
フォルダ名を適宜変更してください。

4. VSCode Remote-Containersでプロジェクトを開く

  1. Visual Studio Codeの左下にある"><"のようなアイコンをクリックします。
  2. 「Remote-Containers: Open Folder in Container...」を選択します。
  3. 上記のプロジェクトを選択します。上記のDeep Learning用Dockerイメージのダウンロードとイメージのビルドが始まりますので少し待ちます。
  4. Dockerコンテナの起動後に、利用するpythonを選択せよという警告が表示されたら"~/python3-venv/bin/python"を選択します。

これで開発環境の起動完了です。

JupyterLabを利用したい場合は、メニューの「Terminal」から「New Terminal」を選び、次のコマンドを実行し、表示されたURLをホスト側のブラウザで開けば利用できます。

jupyter lab