2018年07月20日

Google開発のビルドツール「Bazel」のインストールと使いかた

「TensorFlow」をソースからインストールする場合、ビルドツールとしてGoogleが開発した「Bazel」を使用する必要があります。
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
posted by hatakazu at 21:03| Comment(0) | Linuxとか | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください