2020年05月17日

コンピュータ囲碁プログラム「GLOBIS-AQZ」をソースからビルドする - Ubuntu編

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 Home 64bit) + 1TB 5400rpm HDD (Ubuntu 18.04 LTS 日本語 Remix)
--

2. 「AQ」インストールの準備とソースコードの取得
「GLOBIS-AQZ」は「AQ」のバージョンとしては「v4.0.0」ということになり、「AQ」GitHubレポジトリでソースコードが公開されています。
このソースコードをLinuxでビルドするための要件は、「AQ」GitHubレポジトリの日本語の説明によれば、以下のとおりです。

--
5-1. Linux

Requirements
・gcc
・make
・CUDA Toolkit 10.x
・TensorRT 7.0.0

Makefile内のCUDA・TensorRTのインクルードパス・ライブラリパスを確認し、makeしてください。
make
--

これから「AQ」をソースコードからビルドするにあたっては、あらかじめ「「Ubuntu 18.04 LTS 日本語 Remix」に「CUDA 10.0」+「TensorRT 7.0.0」をインストールする」の記述のとおりに「CUDA 10.0」+「TensorRT 7.0.0」環境が構築されていることを前提としています。
この手順にしたがって「CUDA」をインストールした場合、最終的には「CUDA」関連ライブラリは以下のように配置されています。

・Ubuntu 18.04 LTS 日本語 Remix
・CUDA 10.0 -> /usr/local/cuda-10.0
・cuDNN 7.6.5 -> /usr/lcoal/cuda-10.0
・NCCL 2.6.5 -> /usr/local/nccl-2.6
・TensorRT 7.0.0 -> /usr/local/TensorRT-7.0.0

ここまでの準備が終わったら、ホームディレクトリ直下の「~/AQ」ディレクトリにインストールすることにして、「AQ」のソースコードを取得します。

$ cd
$ git clone https://github.com/ymgaq/AQ AQ


これで、「~/AQ」に「AQ」のソースコードが取得され、ビルド作業をすすめる準備がととのいました。

3. 「AQ」のインストール
hatakazuは「CUDA」環境を構築するにあたってdebパッケージを使ってないので、「ubuntu 18.04 LTS」に標準的なdebパッケージを使ってインストールした場合とくらべると、「CUDA」関連ライブラリのインストール場所が異なっている部分があります。
そこで、「Makefile内のCUDA・TensorRTのインクルードパス・ライブラリパスを確認し、makeしてください。」という指示にしたがって、「AQ」ディレクトリにある「Makefile」を編集します。
ようは「CUDA」および「TensorRT」のインクルードパスを「-I」接頭辞をつけて、「CUDA」および「TensorRT」のライブラリパスを「-L」接頭辞をつけて、そして「cudart」「nvparsers」「nvonnxparser」「nvinfer」各ライブラリを「-l」接頭辞をつけて指定してやればいいわけなので、Linux用のパス指定部分を以下のように変更しました。
# TensorRT
LDFLAGS += -L/usr/local/cuda-10.0/lib64 -L/usr/local/TensorRT-7.0.0/lib -lpthread -lcudart -lnvinfer -lnvonnxparser -lnvparsers
INCLUDES += -I/usr/local/cuda-10.0/include -I/usr/local/TensorRT-7.0.0/include
OUTFILE = AQ


「Makefile」ファイルの編集がおわったら、ビルド作業にすすみます。
$ cd AQ
$ make


ビルド処理は問題なく完了し、「~/AQ」ディレクトリのなかに実行バイナリ「AQ」が生成しています。

4. 「AQ」の設定
以上の作業が完了したら、「~/AQ」ディレクトリにGTP思考エンジンの実行ファイル「AQ」と、設定ファイル「config.txt」が置かれている状態になります。
このあとは「コンピュータ囲碁プログラム「GLOBIS-AQZ」のインストールと使いかた - Ubuntu編」のLinux用バイナリ配布ファイルを利用するときとまったくおなじように、「config.txt」を編集して「AQ」の設定をおこない、「GoGui」や「Sabaki」などGTP対応囲碁GUIへの登録作業をすすめればO.K.です。

5. 問題点
じっさいには、「AQ」を上記手順にしたがってソースコードからビルドしたあと「GoGui」や「Sabaki」と連携させて呼び出そうとすると、「building engine ... UFFParser: Could not open /home/username/AQ/engine/model_jp.uff」というエラーが発生して起動できません。
これは、「AQ」GitHubレポジトリの日本語の説明の以下の部分に書かれている「UFF(Universal File Format)形式のファイル」が見つからない、といっているわけです。
3-2. エンジンファイルの生成

初回起動時に、UFF(Universal File Format)形式のファイルからお手持ちの環境に最適化されたネットワークエンジンを生成します。
このエンジン生成には数分程度かかることがあります。
シリアライズ化されたエンジンファイルがengineフォルダに保存されるので、2回目以降はすぐに起動します。


ほんらいは「AQ」ディレクトリのなかの「engine」ディレクトリに、元になる中国ルール用「model_cn.uff」ファイルおよび日本ルール用「model_jp.uff」ファイルが格納されており、設定内容によってそれぞれ中国ルール用「model_cn.engine」エンジンファイルおよび日本ルール用「model_jp.engine」エンジンファイルを、初回起動時に生成する仕組みになっています。
しかし、現在「AQ」GitHubレポジトリからダウンロードできるソースコードには、これらのUFF形式ファイルがふくまれていません。
なのでhatakazuは、Linux用バイナル配布ファイルを解凍して、そこからこのUFFファイル二つ(中国ルール用「model_cn.uff」および日本ルール用「model_jp.uff」)を抜き出して、「~/AQ/engine」ディレクトリにコピーしました。
それから再度呼び出してみると、今度は「~/AQ/engine」ディレクトリにエンジンファイル(中国ルール用「model_cn.engine」および日本ルール用「model_jp.engine」)が生成され、正常に起動することが確認できました。
posted by hatakazu at 20:47| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください