デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理を基礎からやり直す

VirtualBoxにUbuntu16.04 LTS と TensorFlow をインストール

はじめに

日本語形態素解析システム「JUMAN++」をインストールするために、久しぶりにVirtualBoxUbuntuを使ったのですが、各システムのバージョンも古くなってきているので新規にインストールし直します。
以前書いた下記の記事(2016年3月27日)を基にインストールをしたのですが、バージョンが新しくなって記事内容があわなくなってきたので書き直しました。 yaju3d.hatenablog.jp

環境

VirtualBoxUbuntu(64bit)をインストール

下記サイトを参考にVirtualBoxUbuntu 16.04 LTSをインストールしました。 サイトとの違いとして、メモリは2048MByte、仮想ハードドライブサイズは20GByteにしています。 qiita.com 仮想ハードドライブサイズは後で変更することが出来ますが、面倒なので最初からそれなりの大きさにしておきましょう。 qiita.com

画面サイズは1024x768になっています。

インストール時のエラー

Ubuntu(64bit)を入れようとするとPCによっては下記のエラーが出ます。 「This kerner requures an X86-64 CPU, but only detected an i686 CPU」 これはVirtualBoxUbuntu 32bit用に64bit版をインストールしようとしたためです。 何故、VirtualBoxUbuntu 64bit用がリストに表示されないのかというと、PCのBIOSの仮想化機能が有効になっていないためです。有効にするためには、BIOSの設定(Lenovoでは再起動時にF1キーを押す等)で、Security→Vitualizationを「Enabled」にして保存後に再起動する必要があります

Guest Additionsのインストール

Guest Additionsは、ビデオ性能の向上、共有フォルダ、クリップボード共有等の機能を提供するVirtualBoxの追加コンポーネントです。
Guest Additionsインストール前だとUbuntu 16.04のディスプレイ解像度は2種類だけですが、インストール後だと任意の解像度に変更できます。

VirtualBoxのメニューのデバイスにある「Guest Additions CD イメージの挿入」をクリックします。インストールが成功したら、Ubuntu 16.04を再起動します。

Ubuntu 16.04: VirtualBox上のUbuntu 16.04にGuest Additionsをインストールする - Narrow Escape

クリップボードの共有

Ubuntuのインストールが完了したら、VirtualBoxメニューのデバイスの「クリップボードの共有」を双方向にしておくとWindowsクリップボードを貼り付け出来たりして便利です。また、「ドラッグ&ドロップ」も同様に双方向にするといいでしょう

ターミナルの起動

先ずはWindowsコマンドプロンプトのようなのを起動する必要があります。
Ubuntuの左横のパネルメニューから「コンピューターとオンラインリソースの検索」をクリックします。
検索ボックスで「terminal」を入力すると「端末」(ターミナル)が出てきますのでクリックします。

pipのインストール

ターミナルが起動したら、最初に「pip」をインストールして下さい。
pipとは、Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムです。RubyRubyGemsPerlCPANWindowsのNuGetといったところです。
ターミナル上で下記のコマンドを入力します。

$ sudo apt-get install python-pip
$ pip install --upgrade pip

※$より前の部分は自分の環境では「yaju@yaju-VirtualBox:~$」です。これはインストール環境によって変わります。説明する上で便宜上省略しています。

Python数値計算環境「Anaconda」のLinux版をインストール

AnacondaとはPython数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです。 Anacondaをインストールをすると、NumPy,SciPy,matplotlib、scikit-learn等のパッケージがインストールされます。

Ubuntu上のWebブラウザ「FireFox」で下記サイトからAnaconda for Linux PYTHON 3.5 LINUX 64-BITをダウンロードしてください。ファイルの保存先は「ダウンロード」にしました。 https://www.continuum.io/downloads

※Python2.7ではなくPython3.5にしたのは、サイト「http://learningtensorflow.com/lesson1/」を参考にしたためです。

ターミナル上で「bash 」と入力したら、Ubuntuの左横のパネルメニューから「ファイル」からダウンロードフォルダにある「Anaconda3-4.2.0-Linux-x86_64.sh」をドラッグ&ドロップしました。引用符は付いたままでもいいかも知れませんが、一応消しました。

$ bash /home/yaju/ダウンロード/Anaconda3-4.2.0-Linux-x86_64.sh

AnacondaのTensorflow用環境を作成

Anacondaのインストールが終わったら、一旦ターミナルを閉じて下さい。
これはTensorflow用環境を作成する際に使用する「conda」コマンドがまだ有効になっていないためです。

Tensorflow用環境を作成するため、ターミナル上で下記のコマンドを入力します。
名前は「tensorenv」にしました。envは環境(environment)の略称

$ conda create --name=tensorenv python=3.5

環境が作成されていきます、途中のProceedの確認は「y」を入力します。

The following NEW packages will be INSTALLED:

    openssl:    1.0.2j-0     
    pip:        9.0.1-py35_0 
    python:     3.5.2-0      
    readline:   6.2-2        
    setuptools: 27.2.0-py35_0
    sqlite:     3.13.0-0     
    tk:         8.5.18-0     
    wheel:      0.29.0-py35_0
    xz:         5.2.2-0      
    zlib:       1.2.8-3      

Proceed ([y]/n)? y

Fetching packages ...
pip-9.0.1-py35 100% |################################| Time: 0:00:02 742.12 kB/s
Extracting packages ...
[      COMPLETE      ]|###################################################| 100%
Linking packages ...
[      COMPLETE      ]|###################################################| 100%
#
# To activate this environment, use:
# > source activate tensorenv
#
# To deactivate this environment, use:
# > source deactivate tensorenv
#

以下のコマンドで作った環境の一覧を表示できます。

$ conda info -e

Using Anaconda Cloud api site https://api.anaconda.org
# conda environments:
#
tensorenv                /home/yaju/anaconda3/envs/tensorenv
root                  *  /home/yaju/anaconda3

作成した環境を有効にするには下記のコマンドを入力します。

$ source activate tensorenv

これで先頭に「(tensorenv)」が付くようになります。

(tensorenv)$

ちなみに作成した環境から戻るには下記のコマンドを入力します。

(tensorenv)$ source deactivate

TensorFlowのインストール

TensorFlowには、「CPU only」と「GPU enabled」の2種類が用意されています。今回は「CPU only」版をインストールします。
ファイル名はPython35にしているので「tensorflow-(version No)-cp35」となります。ちなみにPython27は「cp27」です。
バージョンは現時点(2016/11/27)で最新の「0.11.0」を入れます。
入力が長いのでクリップボードにコピーして貼り付ければいいです。

参照:https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html

(tensorenv)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp35-cp35m-linux_x86_64.whl

Building wheels for collected packages: numpy あたりで10分程度かかりました。

Collecting tensorflow==0.11.0 from https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp35-cp35m-linux_x86_64.whl
  Downloading https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp35-cp35m-linux_x86_64.whl (39.8MB)
    100% |████████████████████████████████| 39.8MB 9.8kB/s 
Requirement already up-to-date: wheel>=0.26 in ./anaconda3/envs/tensorenv/lib/python3.5/site-packages (from tensorflow==0.11.0)
Collecting protobuf==3.0.0 (from tensorflow==0.11.0)
  Downloading protobuf-3.0.0-py2.py3-none-any.whl (342kB)
    100% |████████████████████████████████| 348kB 258kB/s 
Collecting six>=1.10.0 (from tensorflow==0.11.0)
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting numpy>=1.11.0 (from tensorflow==0.11.0)
  Downloading numpy-1.11.2-cp35-cp35m-manylinux1_x86_64.whl (15.6MB)
    100% |████████████████████████████████| 15.6MB 22kB/s 
Collecting setuptools (from protobuf==3.0.0->tensorflow==0.11.0)
  Downloading setuptools-29.0.1-py2.py3-none-any.whl (472kB)
    100% |████████████████████████████████| 481kB 290kB/s 
Installing collected packages: setuptools, six, protobuf, numpy, tensorflow
  Found existing installation: setuptools 27.2.0

TensorFlowのインストールエラー

途中で下記のエラーが発生してインストールが止まります。

Cannot remove entries from nonexistent file /home/yaju/anaconda3/envs/tensorenv/lib/python3.5/site-packages/easy-install.pth

パッケージの依存関係のコンフリクトが原因のようで、下記サイトの「2. pip で setuptools を TensorFlow と互換性があるものに upgrade する」で対応します。※下記サイトは、mac版です。
datalove.hatenadiary.jp

よって、下記コマンドを入力して再インストールします。

(tensorenv)$ pip install --upgrade -I setuptools
Collecting setuptools
  Using cached setuptools-29.0.1-py2.py3-none-any.whl
Installing collected packages: setuptools
Successfully installed setuptools-29.0.1

(tensorenv)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp35-cp35m-linux_x86_64.whl
 ︙
Successfully installed numpy-1.11.2 protobuf-3.0.0 six-1.10.0 tensorflow-0.11.0

TensorFlowの動作確認

バージョンが表示されればインストール成功です。

(tensorenv)$python -c "import tensorflow; print(tensorflow.__version__);"

0.11.0

最後に

これでやっとTensorFlowを始められます。

これ以降は下記サイトを参考にして下さい。Web上の実行環境である「Jupyter Notebook」はAnacondaと同時にインストールされています。
yaju3d.hatenablog.jp