仮想Python環境

TensorFlowライブラリおよびその他のライブラリは仮想環境をOSにインストールしたうえで導入することが望ましいです。これは、例えれば、テーブルの上にテーブルクロスを敷いてその上で食事や作業をすることに似ていて、テーブルクロスを敷くことによって直接にテーブルを傷つけたり汚したりすることを避けることができます。もしテーブルクロスがひどく汚れた場合は別のテーブルクロスと交換することで、また新たに綺麗な環境を整えることができます。2枚のテーブルクロスを左右に敷けば、それぞれの作業ごとにテーブルクロスを交換できます。これと同じように、仮想環境にインストールしたライブラリ等は、その仮想環境を削除すれば、OS側のシステムに影響を与えることなく綺麗に削除することができます。

 
TensorFlowを用いる際にPythonの仮想環境を用意する場合、主に3つの選択肢があります。

 

  • virtualenv
  • Anaconda または Miniconda
  • Docker(コンテナ)
  •  
    1. virtualenv

    TensorFlowは仮想環境としてvirtualenvの使用を標準としています。virtualenvはコマンドラインベースのUIです。個人的には仕組みが明確なので安心感はありますが、機械学習分野では対象とする処理ごとにライブラリが独自に発表されているので、ライブラリの一覧からインストールする等の作業が面倒に思います。

     

     
    2. Anaconda または Miniconda

    AnacondaおよびMinicondaはGUIベースのPython仮想環境です。アプリケーションのデータサイズが大きいのでインストールに躊躇いますが、必要最小限のデータサイズに絞ってあるMinicondaを選択すればディスク容量を無駄に占有せずに済みます。TensorFlowを使う場合はAnacondaではなくMinicondaで十分です。私がAnacondaもしくはMinicondaが最も適切だと思うのは、Unix,Mac,Windowsいずれの環境でも使えることが理由です。virtualenvはUnix,Macでは使えますが、Windowsでは使えません。AnacondaまたはMinicondaを使っていれば環境によらず同じ手順で作業を行えます。なお、AnacondaはJupyter Notebookを標準的に使えるようになっており、書いたコードをデバッグしながら動かすことが容易に可能です。

    弱点は、Anacondaに搭載されているパッケージインストーラーがデフォルトで持っているパッケージ(例:TensorFlow)のバージョンが少し古いことです。TensorFlow release 1.8が出ている時点でAnacondaのパッケージインストーラーはrelease 1.0をインストールしようとします。ですので、パッケージインストーラーでインストールした後、自身で「pip install –upgrade hogehoge」のようにpipに–upgradeオプションを付けてアップグレードする必要があります。

     

     
    3. Docker

    Dockerも仮想環境ですが、上記2つと大きく異なる点は「コンテナ」と呼ばれるパッケージ化された仮想環境であることです。コンテナとしてパッケージ化された仮想環境はデータとみなして気軽に配布したり受け取ったりできます。この特徴を生かしたサービスとして、GPU生産メーカーとして知られるnVIDIAが運営する「nVIDIA GPU Cloud」です。我々のマシンにDockerコンテナ化されたPython仮想環境を持っておき、nVIDIAのサービスとリンクしておくことで、nVIDIA側が常に最新の開発環境にアップデートしてくれます。