• 追加された行はこの色です。
  • 削除された行はこの色です。
*はじめに [#r8261ce7]

Mac Pro (2010 Mid)にGeForce GTX 1080を積んで、TensorFlowを動かすまでのメモです。

macOSではGeForce GTX 1080がまだサポートされていないので、UbuntuをインストールしてUbuntu上で動かします。

現在、TensorFlow 1.4, CUDA 9.0, cuDNN 7.0がリリースされていますが、この組み合わせでは動かなかったので、TensorFlow 1.3, CUDA 8.0, cuDNN 6.0の組み合わせで動かしています。

この記事の内容は、次の環境で確認しました。
-Ubuntu 17.10
-CUDA 8.0
-cuDNN 6.0
-TensorFlow 1.3


*用意したもの [#k794b74f]

-ASUS TURBO-GTX1080-8G
-Mini PCIe 6 pin to PCIe 6 pinケーブル
-PCIe 6 pin x 2 to PCIe 8 pinケーブル
-2TB 3.5inch SATA HDD
-16GB USBメモリー

HDDの容量はもっと小さくても構いません。
USBメモリーの容量は16GB以上必要です。


*Ubuntuインストール用USBメモリーを作成する [#z697fa7f]

次のページを参考にしました。
-[[OS X El CapitanとUbuntu 16.04 LTSのデュアルブート環境を構築する:http://ottan.xyz/el-capitan-ubuntu-dual-boot-4020/]]

+Ubuntu 16.04 LTSをダウンロードします。
+ディスクユーティリティを使って、USBメモリーを、MS-DOS (FAT)、GUIDパーティションで消去します。
+diskutilコマンドで、USBメモリーのデバイスを調べます。
#geshi(sh){{
$ diskutil list
}}
+調べたデバイスをアンマウントします。(これはデバイスが /dev/disk2 の時の例です。)
#geshi(sh){{
$ diskutil unmountDisk /dev/disk2
}}
+ダウンロードしたUbuntuのISOイメージをコピーします。
#geshi(sh){{
$ sudo dd if=ubuntu-16.04-desktop-amd64.iso of=/dev/rdisk2 bs=1m
}}


*Ubuntu用のHDDを用意する [#c5af21ac]

+macOSをシャットダウンし、HDDを増設します。
+macOSを起動し、ディスクユーティリティで増設したHDDを、MS-DOS (FAT)、GUIDパーティションで消去します。

スワップ領域を作りたい場合は2パーティションにすればいいと思いますが、今回のMac Proは32GBのメモリーを積んでいるので、スワップ領域はなしにしました。


*ブート・マネージャーを準備する [#bd50f679]

BootCampはUbuntuをサポートしていません。
そこで、rEFIndというブート・マネージャーを使います。

+rEFIndをダウンロードし、展開する。
+macOSをシャットダウンし、Command+Rを押しながら起動する。
+リカバリー・モードで起動したら、ターミナルを起動し、rEFIndを展開したフォルダーに移動する。
+rEFIndをインストールする。
#geshi(sh){{
# ./refind-install
}}
+macOSを再起動する。


*Ubuntuをインストールする [#kaf52356]

+Ubuntuインストール用のUSBメモリーを接続する。
+macOSをシャットダウンし、Optionを押しながら起動する。
+「EFI Boot」を選択する。
+「Try Ubuntu without installing」を選択し、USBメモリーからUbuntuを起動する。
+起動したUbuntuのデスクトップにある「Install Ubuntu 16.04 LTS」をダブルクリックする。


*Ubuntuをアップデートする [#p5669200]

最新版にアップデートします。

+「システム環境設定」の「ソフトウェアとアップグレード」の「アップデート」にあるUbuntuの新バージョンの通知を「全ての新バージョン」に変更する。
+ アップデートする
#geshi(sh){{
$ sudo apt update
$ sudo do-release-upgrade
$ sudo shutdown -r
$ sudo do-release-upgrade -d
$ sudo shutdown -r
}}


*UbuntuにSSHをインストールする [#o92c5b93]

リモートで作業できるように、sshdをインストールします。

+sshをインストールする。
#geshi(sh){{
$ sudo apt-get install openssh-server
}}
+sshが自動で起動するように設定する。
#geshi(sh){{
$ sudo systemctl enable ssh.service
}}
+ Ubuntuを再起動してリモートからsshでログインできるか確認する。

セキュリティのことを考えると、インターネットから見える環境では、rootでのログインはできないようにしておくべきです。


*UbuntuにNvidiaのドライバーをインストールする [#d92792ae]

次のページを参考にしました。
-[[Ubuntu14.04 LTS にGTX1080 をセットアップしたメモ:http://qiita.com/salty-vanilla/items/8ff76cd634f0640b77c7]]

+インストールの準備をする。
#geshi(sh){{
$ sudo add-apt-repository ppa:xorg-edgers/ppa
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
}}
+最新版のドライバーを調べる。
#geshi(sh){{
$ sudo apt-cache search 'nvidia-[0-9]+$'
}}
+最新版のドライバーをインストールする。
#geshi(sh){{
$ sudo apt-get install nvidia-378
$ sudo apt-get install nvidia-384
$ sudo apt-get install mesa-common-dev
$ sudo apt-get install freeglut3-dev
}}

このときは、最新版が378でした。
最新版を入れようとしたけど入らなかったので、384にしました。



*Mac ProにASUS TURBO-GTX1080-8Gを装着する [#nd42f38d]

Mac Pro (Mid 2010) には、GPU用の電源として、Mini PCIe 6pinのソケットが2つ付いています。
PCIe 6 pinケーブルは75 Wまでしか供給できません。

そこで、PCIe 6 pinケーブル2本をまとめてPCIe 8 pinに変換してくれるケーブルを使います。
PCIe 8 pinは150Wまで供給できます。

PCIeソケットから75W共有できるので、Mac Pro (Mid 2010)は全部で225Wまで供給できます。

GeForce GTX 1080を搭載したビデオカードはたくさん出ていますが、その多くがPCIe 8pin x 2やPCIe 8 pin + PCIe 6 pinだったりします。

ASUS TURBO-GTX1080-8Gは、最大消費電力が225Wで、かつ、補助電源がPCIe 8 pin 1本のみなので、Mac Pro (Mid 2010)でも使うことができます。

+Ubuntuをシャットダウンする。
+Mac Proから現在のビデオカードを外す
+Mini PCIe 6 pin to PCIe 6 pinケーブルを空いているソケットに接続する。
+2本のPCIe 6 pinケーブルをPCIe 6 pin x 2 to PCIe 8 pinケーブルに接続する。
+PICe 8 pinケーブルをASUS TURBO-GTX1080-8Gに接続する。
+ASUS TURBO-GTX1080-8GをMac Proに装着する。
+Ubuntuを起動し、画面が表示されることを確認する



*UbuntuにCuda 8.0をインストールする [#k3a0713c]

次のページを参考にしました。
-[[Ubuntu 16.04へのCUDAインストール方法:http://qiita.com/yukoba/items/3692f1cb677b2383c983]]

+Ubuntuを起動する。
+Cudaをダウンロードする(Linux, x86_64, Ubuntu, 16.04, dev(local)を選択して、Downloadボタンからリンクを取得します)。
パッチもダウンロードします。
#geshi(sh){{
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb
}}
+Cudaをインストールする。
#geshi(sh){{
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
$ sudo apt-get install cuda-8-0
}}
+.bashrcに以下の2行を追加する。
#geshi(txt){{
export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"
}}
+Ubuntuを再起動する。
#geshi(sh){{
$ sudo reboot
}}
+ログインして、動作確認する。
#geshi(sh){{
$ nvidia-smi
}}




*CuDNN 5.1をインストールする [#x1650804]
*cuDNN 6.0をインストールする [#x1650804]

+NvidiaのAccelerated Computing Developer Programにメンバー登録する。
+cuDNN v5.1 library for Linuxをダウンロードする。
+cuDNN v6.0 library for Linuxをダウンロードする。
+ダウンロードしたファイルを展開してインストールする。
#geshi(sh){{
$ tar zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ tar zxvf cudnn-8.0-linux-x64-v6.0.tgz
$ sudo cp -a cuda/lib64/* /usr/local/lib/
$ sudo cp -a cuda/include/* /usr/local/include/
$ sudo ldconfig
$ rm -R -f cuda cudnn-8.0-linux-x64-v5.1.tgz
$ rm -R -f cuda cudnn-8.0-linux-x64-v6.0.tgz
}}
+LightDMを止めるために、/etc/default/grub の12行目を以下のように変更する。


*LightDMを止める [#c044428a]
ディスプレイ・マネージャーのLightDMが動いているとGPUパワーを使ってしまうので、LightDMを止めます。
+/etc/default/grub の12行目を以下のように変更する。
#geshi(txt){{
GRUB_CMDLINE_LINUX="systemd.unit=multi-user.target"
}}
+設定を反映させて、Ubuntuを再起動する
#geshi(sh){{
$ sudo update-grub
$ sudo reboot
}}

画面が出なくなってしまったので、ここからは全てsshでリモート・ログインして作業します。


*TensorFlow r0.12をインストールする [#k1298b5e]

*TensorFlow 1.3をインストールする [#k1298b5e]

次のページを参考にしました。
-[[Download and Setup:https://www.tensorflow.org/get_started/os_setup]] - TensorFlow
-[[Installing TensorFlow on Ubuntu:https://www.tensorflow.org/install/install_linux]] - TensorFlow

+Pip3をインストールする。
TensorFlow 1.3.0 GPU版のURLは次のページで調べました。
-[[tensorflow-gpu 1.3.0:https://pypi.python.org/pypi/tensorflow-gpu/1.3.0]] - Python

+libcuptiをインストールする。
#geshi(sh){{
$ sudo apt-get install python3-pip python3-dev
$ pip3 install tensorflow-gpu
$ sudo apt-get install libcupti-dev
}}
+Virtualenvをインストールする。
+pip3とpython3とvirtualenvをインストールする。
#geshi(sh){{
$ sudo apt-get install python3-pip python3-dev python3-virtualenv
$ virtualenv --system-site-packages ~/tensorflow
$ sudo apt-get install python3-pip python3-dev python-virtualenv
}}
+Virtualenvをアクティベートする。
+virtualenvの環境を ~/tensorflow に構築する。
#geshi(sh){{
$ virtualenv --system-site-packages -p python3 ~/tensorflow
}}
+virtualenvをアクティベートする。
#geshi(sh){{
$ source ~/tensorflow/bin/activate
}}
+TensorFlow 1.3のGPU版をインストールする。
#geshi(sh){{
(tensor flow)$ pip3 install --upgrade https://pypi.python.org/packages/b8/16/14fbe414f2b3c39c5d01521e38e7aaec384f8fbf26eec021d247345260c3/tensorflow_gpu-1.3.0-cp36-cp36m-manylinux1_x86_64.whl#md5=7b694289e1fc977a47cd89f2876d3528
}}
+TensorFlowの動作を確認する。
#geshi(sh){{
(tensorflow) $ python3
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
}}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS