UbuntuでのGPUディープラーニング環境の構築【Ubuntu 16.04 LTS対応】:機械学習&ディープラーニング環境構築入門(2/4 ページ)
GPUを活用したTensorFlowやChainerによるディープラーニングを実践するための環境をUbuntu上に構築する際の選択ポイントと手順を説明する。
1. PCとOS環境の準備
まずは、GPU付きのPC*1を入手しよう。
*1 ちなみに筆者の場合は、「NVIDIA GeForce GTX 1060」というお手頃価格のGPUが乗ったゲーミングPCをサイコムで購入して本稿の手順で環境構築した後、本稿を執筆のために、Azure Virtual Machines(VM)の東日本リージョンでGPUが使えるNV6インスタンス(※執筆時点で1時間ごと161.16円課金)を使用してその構築方法を再検証した。そのため、本稿で執筆のGPUは「NVIDIA Tesla M60」となっている。
1.1. Ubuntuとデスクトップ環境
次に、Ubuntu関連の準備を行おう。すでにUbuntuをインストール済みの方は、次の1.2節までジャンプしても構わないが、本稿の前提条件としてどのような構成になっているのかの参考にするために、軽く流し読みしてほしい。
1.1.1. Ubuntu 最新LTSバージョン
冒頭での説明のとおり、本稿ではUbuntuを使用する。対象のUbuntuのバージョンは、執筆時点で最新LTS*2のUbuntu 16.04 LTS(Xenial)*3である。
*2 「LTS」とは「Long Term Support(長期サポート)」のことである。LTS以外のバージョンとしては、(執筆時点で)Ubuntu 17.04やUbuntu 17.10などがリリースされている。しかし、特にLTS以外の最新バージョンは、各ライブラリが正式にサポートしていなかったりする可能性が高いので、採用する際には注意してほしい。UbuntuのOSは、基本的に最新のLTSバージョンを選択するのがお勧めだ(※ちなみに、次期LTSはUbuntu 18.04 LTSとなっており、2018年4月26日にリリース予定だ)。ただしLTSバージョンリリース直後は、NVIDIAのドライバーやCUDA Toolkit(詳細後述)がまだ対応していない可能性もある。特に、最新のCUDA Toolkitの対応状況は確認した方がよい。ちなみに、nvidia-dockerを使ってDockerコンテナーごとにUbuntuのバージョンを切り替えることは可能なので、CUDA Toolkitが対応していなくても、最低限、NVIDIAのドライバーさえ対応していれば、LTS以外のUbuntuを選択しても何とかなるだろう(※実際に筆者の手元のPCではUbuntu 17.04を使っており、何も問題は起きていない)。
*3 Ubuntuの各バージョンはコード名(Code Name)で呼ばれる場合があり、本稿で使用しているバージョン16.04 LTSはXenial Xerusもしくは短くXenialと呼ばれている。コード名については「公式サイト:DevelopmentCodeNames - Ubuntu Wiki」を参照してほしい。
UbuntuにはDesktop版とServer版があり、Server版にはグラフィック関連機能がインストールされていないという違いがある。基本的にはDesktop版(もしくはその一種であるXubuntuなど)をインストールした方が便利だ。
Ubuntu Desktop版のインストール方法については説明を割愛するので、必要に応じて公式チュートリアルなど別のリソースに当たってほしい。
なお本稿では、あえてUbuntu Server版をインストールし、後からXubuntuというデスクトップ環境を追加インストールした。クラウド上のVMのUbuntuはServer版になっていたりするのだが、そういった環境へのインストール手順でも本稿の内容を適用できるようにするためだ。次節では、「Server版もしくはXubuntuデスクトップ環境がインストールされていない場合」という想定で、デスクトップ環境のインストール方法を説明する。
1.1.2. デスクトップ環境
「デスクトップ環境は不要」と言う人もいるだろうが、データサイエンス向きのコーディング環境であるJupyter Notebookを手元で使いたいなどの理由から、本稿ではUbuntuのデスクトップ環境をインストールして使用している。
Ubuntuではさまざまなデスクトップ環境が利用できるが、本稿では、純正のUbuntuディストリビューションのDesktop版パッケージに含まれるUnity(現LTSの場合。次期LTSではGNOME)ではなく、派生のXubuntuディストリビューションに含まれるXfceデスクトップ環境を使用する。Xfceは、軽量・高速でシンプルなUI(ユーザーインターフェース)に定評があり、後述のX2Goとも相性がよいのでお勧めだ。
それでは、インストール済みのUbuntuにXfceデスクトップ環境を追加インストールしよう。これには、以下の各コマンドを順に実行してほしい。
$ sudo apt update
$ sudo apt -y upgrade
-yオプションは、問い合わせがあった場合は全て「y」(=Yes)と答えるオプションなので、自動でYesと返答したくない場合は省略してほしい(本稿のコマンドは全てこのルールで記述している)。
aptコマンドはapt-getコマンドと同じである。Ubuntu 14.04からaptコマンドの利用が推奨されている。本稿では全てaptコマンドを使用している。
$ sudo apt -y purge ubuntu-desktop
$ sudo apt -y purge --autoremove unity
Unityデスクトップ環境を残したい場合は、この手順をスキップしてほしい。本稿の手順どおりにUbuntu Serverをインストールした場合、この作業は不要。
$ sudo apt -y install xubuntu-desktop
ソフトウェア数が多いので実行にはネットワーク速度やハードウェア性能などにもよるが10分ほど時間がかかる。XubuntuでUbuntu OSをインストールした場合、この作業は不要。
xfce4パッケージのみをインストールすることも可能だが、デスクトップ上の各種アプリケーションもインストールした方が操作するうえでは便利なので、本稿ではXubuntuディストリビューションのアプリケーション群も含めてXfceデスクトップ環境をインストールしている。
$ sudo reboot
以上の手順が完了してOSが再起動されると、図1のようなGUIでログインする画面が表示されるはずだ(※ちなみに、手元のPCではなく、クラウド上の仮想マシンなどに対してSSHからコマンド実行している場合は、後述のX2Goのインストールを済ませてからでないとGUIで操作できないので注意してほしい)。
GUIではなくCUIを使いたい場合や、その逆の場合もあるだろう。以下のショートカットキーでGUI←→CUIを切り替えられるので覚えておくと便利だ。
- CUIに切り替える: [Ctrl]+[Alt]+[F1]キー
- GUIに切り替える: [Alt]+[F7]キー
1.1.3. Ubuntuの日本語化
Ubuntuの言語が日本語ではない場合は、ここで日本語に設定してもよい。
具体的にはCUIもしくはターミナルに切り替えて、以下のようにコマンドを実行してほしい。
$ sudo apt -y install \
fonts-takao \
language-pack-ja \
fcitx fcitx-mozc
$ sudo update-locale \
LANG=ja_JP.UTF-8 \
LANGUAGE="ja_JP:ja"
$ sudo im-config -n fcitx
$ sudo reboot
Mozc(モズク)はGoogle日本語入力で、Fcitx(ファイティクス)はIME用のフレームワーク。
リスト1.5のコマンド実行で日本語設定は済んでいる。より細かい設定や調整は、GUIから行うとよい。具体的には、デスクトップ画面にログインして、左上にある[アプリケーション]メニューの[設定]−[言語サポート]を実行してダイアログを表示すればよい(※管理者権限で起動しないと、エラーが発生する場合がある。そのような場合は、ターミナルでsudo gnome-language-selectorというコマンドで起動してほしい)。ダイアログ表示前に[言語サポートが完全にはインストールされていません]というメッセージボックスが表示された場合は、[インストール]を選択すればよい。
1.2. リモート接続用サーバー
日常使いのメインのPCとディープラーニング用のPCを分けて使用したいというケースが多いのではないだろうか。筆者の場合も、リモートのメインPC(Windows)のターミナルでSSH接続したり、リモートデスクトップ接続でデスクトップ環境を触ったりしている。このようなリモート接続が必要だという方は、SSHやリモートデスクトップ接続のサーバーをここでインストールしておこう。
1.2.1. SSHサーバー
OpenSSHサーバーがインストールされていない場合は、ここではOpenSSH Server(openssh-server)をインストールする(リスト1.6)。
$ sudo apt -y install openssh-server
インストール後に、クライアントからSSH接続すると、「接続を続行するか?」と聞かれるのでyesと入力して[Enter]キーを押し、次にパスワードを入力すると接続が完了し、各種コマンドが実行できるようになる(図3)。
1.2.2. リモートデスクトップ接続サーバー
Xfceデスクトップ環境をインストール済みの場合は、リモートデスクトップ接続もできるようにしておこう。これには、X2Goサーバー*4をインストールするとよい。
*4 現16.04 LTSの場合は、X2Goを使った方がよい。X2Go以外には、Windowsのリモートデスクトップ接続で使われて定評のあるリモート・デスクトップ・プロトコル(RDP)を用いたxrdpもあり、こちらの方が人気もあり、よく使われている。しかし、xrdpの日本語対応がv0.9以降となっており、xrdp 0.9はUbuntu 16.10以降で正式対応という制約があるため、現時点ではX2Goを使うのがベターであると判断した。ちなみに次期18.04 LTSではxrdpを選択した方がより良いだろう。よって18.04 LTSが登場して各ライブラリが対応した時点で、本稿の説明も書き換える予定だ。
X2Goのインストール方法はリスト1.7のとおり。
$ sudo apt-add-repository -y ppa:x2go/stable
$ sudo apt update
$ sudo apt -y install x2goserver x2goserver-xsession
1.2.3. リモートデスクトップ接続クライアント
以上でリモートデスクトップ接続サーバーの準備は整った。次に、クライアントから接続できるようにしよう。これには、X2Goクライアントをインストールする。
上記のリンク先から自分のOS(Windows/macOS/Linux)に合ったものをダウンロード、インストールして起動し、メニューバーから[Session]−[New Session]を選択する。表示されたダイアログ(図4)に対して、以下のようにセッション設定を入力して[OK]ボタンをクリックすれば完了だ。
- [Session]タブ:
- [Session Name]欄: 任意のセッション名。本稿では「ディープラーニング環境」。
- [Host]: Ubuntuのホスト名もしくはIPアドレス。例えば「192.168.0.2」。
- [Login]: Ubuntuのユーザー名。
- [SSH Port]: 既定値の22のまま。
- [Session Type]: XFCEに値を変更(デスクトップ環境がXfceの場合)。
- [Media]タブ: 音声サポートが不要であれば[Enable sound support]のチェックを外し、クライアント側での印刷サポートが不要であれば[Client side printing support]のチェックを外す。
- [Shared folders]: クライアント側のフォルダーを共有フォルダーとして、Ubuntu側にマウントさせている場合は、ここでフォルダーを追加する。
あとは、X2Goクライアント上でセッションを選択して、ログインするユーザー名とパスワードを入力して[OK]ボタンをクリックすれば、リモートデスクトップ接続が実現する。ログイン前に「ホストキーを信頼するか?」という旨のメッセージボックスが表示された場合は[Yes]ボタンをクリックする。
初めてXfceデスクトップにログインしたときには、Xfceパネル(=システム全体の[アプリケーション]メニューなど)をセットアップする方法を質問されるので、基本的には[デフォルト設定を使用する]ボタンをクリックすればよい。ちなみに、本稿で使用しているXfceパネルと異なる外観になる可能性がある。本稿と同じにするには、左上にある[アプリケーション]メニューの[設定]−[Xfce パネルスイッチ]から表示されるダイアログで「Xubuntu Modern」を選択して適用すればよい。
他にもインストールしておきたいソフトウェアはあるが、取りあえずOSを操作・管理するのに必要十分なものはそろったので、次にNVIDIA GPU関連のインストールや設定を行っていこう。Python開発環境系のソフトウェアインストールについては後述する。
Copyright© Digital Advantage Corp. All Rights Reserved.