ちょっと目をそらしている間にChainer開発会社自身の深層学習フレームワークを自社製Chainerから、順次、Facebookが開発、オープンソースとなったPyTorchに移行するとのこと。
自身の環境では、最新版が使えなかったTensorFlow/kerasから最新版が使えたChainerを使うべく、開発環境を作ってみたのですが、この流れに乗るのは、必然かということで、とりあえず、PyTorchの開発環境だけでも作ってみようかなと。
ついては、コンテナ型仮想化Dockerを使ってFacebook発で今やオープンソースの機械学習、ニューラルネットワーク、ディープラーニング(深層学習)などのフレームワークPyTorchの開発環境をpipで作ってみました。
と言っても、とりあえず、パッケージとしては、torchをインストールするだけですが。
pipには、pytorch (1.0.2)もあるようですが、簡易説明もなく、インストールできないようなのでtorchを使うことに。
Sunsetting Python 2にあるようにPython 2系は、2020/01/01を以てサポート終了しているので当然、Python 3系を使います。
ちなみに今回、検証に使っているパソコンのGPUは、Intel HD Graphics 510というオンボードのもので主流らしきNVIDIA製ではないのでCPUで動かしてみます。
少なくとも現時点では、UbuntuやCentOSならEE/Enterprise版も使える模様、DebianはやFedoraはCE版のみ、自身はDebianをメインとしており、今のところOSを乗り換える気もないのでCE版をインストールしました。
OS、プラットフォームごとに詳述されているCE版のインストールは、スムースに完了しました。
ホスト側の一般ユーザーでsudoなしでdockerコマンドを実行したい場合には、Dockerインストール時に作成されるdockerグループにユーザーを追加しておきます。
NVDIA GPUのないマシンでCPUで動かしたいと思っている自身は、とりあえず、こんな感じにしてみました。
なぜか、pip installを書くとうまくいかなかったのでコンテナを作ってからtorchとnotebookをpip install、コンテナをcommitしてそこまでの環境を保存することにしました。
ちなみにDockerイメージには、公式としてマーキングされてはいないようですが、ここら辺からするとpytorch/pytorchが、公式っぽい?
自身は、勉強がてら、最小構成から順次進めてみたいタイプなのでいちから作ってみています。
コンテナ内でGUIアプリを起動するための準備xhostコマンドについては、後述しますが、端末上で先のDockerfileのあるディレクトリにいることを確認し、docker buildでコンテナからイメージを作成します。
docker imagesなどでイメージwebzoit:pytorchが作成されていることを確認、docker runでGUI絡みでホストとコンテナ側の/tmp/.X11-unix/をマウントしつつ、作成されたイメージを使ってコンテナを起動します。
whichコマンドやpip3 listコマンドなどでDockerfileに書いたパッケージが入っていることを確認できます。
公式ガイドにあるようにやってみるとエラーはありません。
というわけでtorchをインストールしただけでpytorchを使える基本的な環境ができました。
今回もChainerで開発環境を整えた時と同様にCLIベースのディストリビューションイメージ(今回はubuntu)でホスト環境のモニタを使ってコンテナ内のGUIアプリを起動させることにしました。
よって、前述のようにコンテナを起動していれば、この場合、コンテナ内のFirefoxがホスト(今回は、dynabook)のディスプレイを使って起動します。