Dockerを使ってPytorchのsec2secサンプルプログラムを動かすまで(M1 MacbookAir)
はじめに
M1 MacbookでDockerを使いPyTorchが動くようになったので、備忘録です。 まだM1チップに対応していないアプリケーションもあり、今後も同様の方法で動作するかはわからないので、変更があれば修正していきたいと思います。
目次
DockerからPythonの起動
Dockerデスクトップをインストールします。インストール方法は過去記事を参照してください。
※2021/3/26にApple Silicon Tech Previewのアップデートが行われたようです。
次に、Pythonのイメージをインストールします。M1チップに対応するPythonのバージョンは3.9
以降ですので、今回はバージョン3.9.2
のPythonイメージをpullしてコンテナをrunさせます。
docker pull python:3.9.2 docker run -i -t --name torchtest python bash
コンテナが無事に起動できたらOK。
root@***:/# python Python 3.9.2 (default, Mar 12 2021, 14:36:23) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
PyTorchの導入
先ほど作成したコンテナの中にPyTorchを導入します。今回はPythonイメージからコンテナをrunしていますので、ついでに、numpy
などもインストールします。
pip install --upgrade pip pip install numpy matplotlib pandas scikit-learn pandas scipy # pytorch pip install torch torchvision
テキストの前処理をしてくれるtorchtext
は、pip install
だと2021/3/27現在でバージョン0.6
がインストールされてしまうので、公式Githubから最新バージョンのtorchtextをcloneします。なお、PyTorchのバージョンが1.8
だと、torchtextは0.9
以上でなければなりません。
apt update apt upgrade -y apt install cmake git clone https://github.com/pytorch/text torchtext cd torchtext git submodule update --init --recursive python setup.py clean install
また、vscode
などのDockerに接続できるエディタを使っていない場合、vim
とless
あたりは必要だと思うので導入します。
apt install -y less vim
一通りインストールできたら、pip list
で各モジュールのバージョンを確認しておきましょう。
PyTorchを実行
インストール関係が全て終了したら、公式チュートリアルを動かしてみます。まだ、Dockerに慣れていないので、原始的な方法でファイルを作成します。
mkdir workdir cd workdir touch test.py vim test.py
ソースコードは以下の公式サイトを参照。
実行します。
python test.py
無事に動きました。epoch=1で実行した結果は以下の通り。公式の結果より悪いですが、epoch数を減らしたからだと思います。
| end of epoch 1 | time: 1038.88s | valid loss 5.80 | valid ppl 331.51 ----------------------------------------------------------------------------------------- ========================================================================================= | End of training | test loss 5.72 | test ppl 305.24 =========================================================================================
まとめと今後について
M1 MacbookでPyTorch on Dockerができるようになりました。今後はPyTorchを使って、自然言語処理のプログラムを作成し、共有していきたいと思います。
参考サイト
※いずれも2021/3/27参照