hatakazuが動かしたいと思っているコンピュータ囲碁プログラム「AQ」と「PhoenixGo」も、「TensorFlow」フレームワークにもとづいているので、ソースから「Bazel」を使ってビルドすることになっています。
そういうわけで、あらかじめ「Bazel」をインストールしておくことにしました。
Bazel: プロジェクトページ、GitHubレポジトリ、インストール手順
ここでは、「Ubuntu 18.04 LTS 日本語 Remix」に「Bazel」をインストールする方法と、基本的な使いかたについて記述していきます。
1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。
--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Ubuntu 18.04 LTS 日本語 Remix
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD (Windows10) + 1TB 5400rpm HDD (Ubuntu18.04)
--
「Bazel」を動かすために必要になるライブラリを、あらかじめインストールしておきます。
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
なお、「Bazel」の動作には「JDK 8」が要求されますが、「Bazel」標準インストールパッケージには必要な「JDK」ライブラリがふくまれています。
そのため、「JDK 8」がインストールされているかどうか、互換性のあるバージョンかどうか、などを気にする必要はありません。
2. 「Bazel」インストールファイルのダウンロード
「Bazel」をインストールするには、いくつかの方法がありますが、ここでは推奨されているバイナリからのインストールをおこないます。
「Bazel」の最新バージョンは「0.15.0」ですが、「Bazel」の場合はバージョンが完全に上位互換にはなってないようで、過去のバージョンでしかビルドできないというケースもよくあるそうです。
そのため、ここでは「PhoenixGo」GitHubレポジトリにて動作確認ずみとされている、「0.11.1」をインストールすることにします。
「「Bazel」GitHubレポジトリ」から「Releases」へすすみ、「0.11.1」ページをひらきます。
そこで、64bit Linux用の「bazel-0.11.1-installer-linux-x86_64.sh」をクリックして、該当するインストールスクリプト「bazel-0.11.1-installer-linux-x86_64.sh」をダウンロードします。
3. 「Bazel」のインストール
ファイルをダウンロードしたディレクトリへ移動し、ダウンロードしたファイルに実行権限を付与したうえで、コマンドラインから実行します。
そのさい、「Install Bazel on Ubunt」ページで推奨されているとおり、「--user」フラグをつけてユーザ環境へインストールするものとします。
$ chmod +x bazel-0.11.1-installer-linux-x86_64.sh
$ ./bazel-0.11.1-installer-linux-x86_64.sh --user
インストールが完了したら、「~/.bashrc」に以下の行を追加します。
export PATH="$PATH:$HOME/bin"
いったんターミナルを閉じてからあらためて開き(もしくは「$ source ~/.bashrc」コマンドを実行)、以下のコマンドを実行して、「Bazel」のバージョンが正しく表示されることを確認します。
$ bazel version
Build label: 0.11.1
.....
4. 「Bazel」によるビルド方法
基本的には、以下のコマンドによって、ビルドプロセスを走らせます。
$ bazel build
「--config=opt (-march=native by default)」「--config=monolithic」「--config=cuda」など、必要におうじてオプションを指定します。
おなじソースツリー内で、たとえばGPUバージョンとCPUバージョンなどの設定を切りかえる場合、「$ bazel clean」を実行してから「$ bazel build」へすすむ必要があります。
「Bazel」がビルド作業にもちいるRAM容量を限定するために、「--local_resources 2048,.5,1.0」などのオプションを指定することもできます。
・Build Tutorial - C++
・C++ and Bazel
・User Manual
「GCC 5」以降のシステムでGPU対応「TensorFlow」をソースからインストールする場合など、「bazel build --config=opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --config=cuda」などのように、「--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"」を追加してビルドする必要があります。
これによって、「GCC 5」以降でパッケージをビルドするさいに、古いABIを使う「GCC 4」でビルドされたバイナリとの互換性をたもつことができます。
5. 「Bazel」のアンインストール
Bazelをアンインストールするには、「~/.bazel」「~/.bazelrc」「~/.cache/bazel」を手動で削除します。
$ rm -rf ~/.bazel
$ rm -rf ~/.bazelrc
$ rm -rf ~/.cache/bazel
「~/bin」に「~/.bazel/bin/bazel」へのショートカットを作成した場合は、これも手動で削除します。
$ rm ~/bin/bazel
参考ウェブページ一覧表(順不同)
https://www.tensorflow.org/install/install_sources