2021年09月05日

高市早苗さんにがんばってほしい(自民党総裁選挙へむけて)

けっきょく菅義偉首相(自民党総裁)は自民党総裁選挙への出馬を断念、これまでの前提が白紙撤回されてまったく条件が変わってしまったいま、ポスト菅をめぐる動きは完全にあらたな局面にはいった。
そんななか、岸田文雄前政調会長、河野太郎行政改革担当相、石破茂元幹事長といった名前が踊り、菅さん続投を前提にいったんは出馬を取りやめた下村博文政調会長、竹下派の将来を背負う茂木敏充外相らの名前も取りざたされているが、不思議なことに早くから出馬を表明してフルスペック総裁選実施への流れをつくった高市早苗(ウェブサイト)前総務相についてはほとんど情報が出てきてなかった。
高市さんが派閥に所属してないため、立候補に必要な推薦人の確保すらむずかしいのではという懸念から泡沫候補あつかいされていたという事情もあれば、高市さんの国家観が非常に保守的なので、注目度があがってほしくないというメディア側の都合によるところもあった、ということのようだ。
しかし、ここへきて安倍晋三前首相が高市さん支持を表明、細田派幹部に働きかけることで党内最大派閥の動向に一石を投じることになった。
細田派には下村さんが所属している関係もあってかんたんに無派閥の高市さん支持で一致できるとは思えないし、現政権のコロナウイルス対応に対する批判が高まる非常に厳しい情勢のなかで衆議院解散総選挙をむかえることになる各議員の思惑もからんで、そもそも派閥で拘束をかけることじたいそぐわない「国民受けする選挙の顔」選びのための総裁選になるのではとの見とおしも語られている。
とはいえ、高市さんはこの安倍さんからのサポートによって「細田派の協力をえて推薦人二十人確保」の最低ラインはクリアできるだろうし、情勢によっては「細田派が高市支持で結束、麻生派も合流」までありうる。
その情勢とは、高市さんこそが全国的な知名度を上げて「国民受けする選挙の顔」として認められることであり、それによって自民党内で「このひとをかつげば衆院選で有利になる」と思われる空気が醸成されることだ。
高市さんは世間的には右翼というレッテルを貼られることがおおいらしいが、ぼくはこれまでの高市さんの発言のなかに、確固たる国家観と国の将来を見すえた力強い政策の組み合わせを見ている。
安倍さんのアベノミクス路線を継承し、さらにその積み残した課題を仕上げるために勉強を重ねてきたという高市さんならではの、右翼どころか保守本流どまんなかの正統的な政治思想だと感じる。
その意味で今回の自民党総裁選挙では高市早苗さんにがんばってほしい、広い範囲の有権者に受けいれられるようメッセージを発して支持基盤を拡大し、それによって各議員が高市さん支持のインセンティブを感じるところまで自民党内の空気を変えてほしいと願っている。

Hanadaプラス
【わが政権構想】中国に日本の技術を盗まれないために|高市早苗
【わが政権構想】新型コロナ対策、私ならこうする|高市早苗
【わが政権構想】日本経済強靭化計画|高市早苗

SSL Forum「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 全五回
サナエノミクスで大豊作!「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 第1回「経済~コロナショックからのV字回復に向けて、対策と補償、これまでとこれから」
サナエノミクスで大豊作!「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 第2回「地方創成~地域経済の立て直し~(前)」
サナエノミクスで大豊作!「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 第3回「地方創生~地域経済の立て直し~(後)」
美しく、強く、成長する国、SMART NIPPON「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 第4回「経済的安全保障」
美しく、強く、成長する国、SMART NIPPON「afterコロナの日本経済と政治」~飯田泰之が高市早苗に迫る~ 第5回「国際社会と日本」【最終回】

最近の発言など
・YouTube動画「【DHC】2021/9/2(木) 有本香×竹田恒泰×高市早苗【虎ノ門ニュース】
・YouTube動画「2021年8月17日(火)コメンテーター有本香 (ゲスト:自由民主党 衆議院議員 高市早苗)【飯田浩司のOK! Cozy up!】
posted by hatakazu at 15:57| Comment(0) | 政治とか経済とか | 更新情報をチェックする

2020年09月20日

羽生善治九段が竜王戦挑戦権を獲得

将棋の話。
昨日9月19日、羽生善治九段が第33期竜王戦挑戦者決定三番勝負第三局で丸山忠久九段に勝利、通算成績を二勝一敗として豊島将之竜王への挑戦権を獲得しました。

竜王戦中継plus : 羽生九段が挑戦権獲得
竜王戦中継plus : 終局直後の様子
竜王戦中継plus : 記者会見
竜王戦中継plus : 七番勝負の日程

現在までのタイトル獲得99期を誇る羽生九段、タイトル通算100期というまさに空前絶後の大記録をかけて、第33期竜王戦七番勝負への登場となりました。
藤井二冠の活躍で注目が集まる将棋界ですが、hatakazuは世代が近いこともあって、ずっと羽生さんを応援しています。
昨日の将棋も、内容はよくわからないながらも、とくに後半はずっと中継を見ていました。
豊島竜王との七番勝負はきびしい戦いになるでしょうが、日本中の注目を集めるなかタイトル通算100期を達成するのも羽生さんらしければ、自分らしい戦いで全力を尽くしたが届かずというのもまた羽生さんらしい、という気がしています。
羽生さんがなにを成しとげたかというよりは、羽生さんの生きかた、考えかた、勝負にのぞむ姿勢、そういったものを見届けたいという感覚に近いでしょうか。
いずれにしても、将棋のことはよくわからないhatakazuなので、10月9日に開幕する竜王戦を虚心に楽しみたいと思っています。
posted by hatakazu at 09:35| Comment(0) | 気になるニュース | 更新情報をチェックする

2020年06月02日

「Ubuntu 20.04 LTS 日本語 Remix」に「CUDA 10.0」+「TensorRT 7.0.0」をインストールする

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Ubuntu 20.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 20.04 LTS 日本語 Remix)
--

2. 構築すべき「CUDA」環境
Ubuntu 18.04用のファイルを使ってUbuntu 20.04上に「CUDA 10.0」+「TensorRT 7.0.0」環境を構築する。

・Ubuntu 20.04 LTS
・CUDA 10.0
・cuDNN 7.6.5
・NCCL 2.6.4
・TensorRT 7.0.0

3. NVIDIA製GPU「GeForce MX150」ドライバのインストール
今回作業するコンピュータはNVIDIA製GPU「GeForce MX150」を搭載しているので、まずはこのGPUに対応する最新のドライバをインストールします。
じっさいの作業はむずかしくありませんが、基本的な考えかたを学ぶうえで、「Ubuntu 16.04 LTSにNVIDIA製ドライバーをインストールする3つの方法」がたいへん参考になりました。
「Ubuntu 20.04 LTS 日本語 Remix」で「GeForce MX150」用ドライバをインストールするには、「ソフトウェアとアップデート」を起動し、「追加のドライバー」タブを開きます。
すこし時間がかかって、使用できるドライバの一覧が表示されます。
型式が「NVIDIA Corporation: GP108M [GeForce MX150]」と表示されているのを確認して、いくつか選択肢が示されたら基本的に最新のものを選択します。
2020年6月2日現在の最新バージョンは「440」なので、「NVIDIA driver metapackageをnvidia-driver-440から使用します(プロプライエタリ、検証済み)」ボタンにチェックをいれます。
その状態で「変更の適用」をクリックすると、インストール処理がはじまりますが、終わるまでじゃっかん時間がかかります。
インストール処理が終わったら、「閉じる」をクリックして「ソフトウェアとアップデート」ウインドウを閉じてからシステムを再起動すると、標準の「Nouveau」ドライバではなくNVIDIA製「nvidia-440」ドライバで立ちあがります。
ターミナルをひらいて、「$ nvidia-smi」コマンドをたたいてみて、ドライバのバージョンやGPUの型式が正しく表示されることを確認しておきます。

$ nvidia-smi


デスクトップ関連の設定は、「$ nvidia-settings」コマンドを使って、グラフィカルにおこなうことができます。

$ nvidia-settings


設定内容は「⁠~/.nvidia-settings-rc」に保存され、ログインのたびに「/etc/xdg/autostart/nvidia-settings-autostart.desktop」がこの設定内容を読みこんで、反映させる仕組みです。
NVIDIA製「nvidia-440」ドライバのドキュメント類は、「⁠/usr/share/doc/nvidia-driver-440/index.html」に保管されています。
インストールしたNVIDIA製ドライバのバージョンは、以下のコマンドで確認できます。

$ cat /proc/driver/nvidia/version


4. 「CUDA 10.0」インストールまえの準備作業
「CUDA 10.0」をインストールする方法はいくつかありますが、NVIDIAウェブサイト「CUDA Toolkit 10.0 Archive」ページからUbuntu18.04用runファイル「cuda_10.0.130_410.48_linux.run」をダウンロードして、手動で「CUDA 10.0」をインストールすることにしました。
やってみてからの感想ですが、いろいろなところで互換性の問題がおこりやすい「CUDA」関連ライブラリについては、結果的にrunファイルでインストールして手動でバージョンを管理するのが一番いいと思います。
パッケージの競合という問題がないので、複数のバージョンをインストールしたうえで、パスとショートカットでバージョンを切りかえて使う、ということができるのもおおきなメリットといえます。
GPUドライバのみ別途Ubuntuパッケージで管理したうえで、ツールキットをrunファイルからインストールするだけなら、すべての処理をグラフィカルログイン状態で完了でき、システムに致命的なダメージをあたえかねないむずかしいプロセスもありません。

NVIDIA CUDA Installation Guide for Linux」ページの指示にしたがって、「CUDA 10.0」をインストールするまえに必要な確認作業、準備作業をおこないます。

「CUDA 10.0」に対応したGPUの確認。
$ lspci | grep -i nvidia
01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX150] (rev a1)


Linux OSの対応状況確認。「Ubuntu 20.04 LTS」は対応ディストリビューションのリストにはいっていませんが、このまますすめていきます。
$ uname -m && cat /etc/*release
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal


コンパイラの存在およびバージョンを確認。「CUDA 10.0」は「Ubuntu 20.04 LTS」には対応しておらず、「Ubuntu 20.04 LTS」標準の「gcc-9」と の互換性に問題があります。
$ gcc --version
gcc-9 (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


そのため、あらかじめ互換性のある「gcc-7」をインストールし、「CUDA-10.0」ライブラリのインストール作業および「CUDA-10.0」環境でのビルド作業では優先的に「gcc-7」が使用されるように設定します。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

$ sudo apt-get install gcc-7 g++-7

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100


こうした「gcc-7」が必要なインストール作業が終わったら、かならず「gcc-7」「g++-7」の優先順位をさげて、自動モードでシステム標準の「gcc-9」「g++-9」が使われるように設定をもどしておきます。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70


Linuxカーネルのバージョン確認。
$ uname -r
5.4.0-33-generic


Linuxカーネルのヘッダと開発キットをインストール。
$ sudo apt-get install linux-headers-$(uname -r)


5. 「CUDA 10.0」のインストール
CUDA Toolkit 10.0 Archive」ページで「Linux」「x86_64」「Ubuntu」「18.04」「runfile (local)」を選択し、「Download Installers for Linux Ubuntu 18.04 x86_64」タブを開きます。
「Base Installer」「Patch 1 (Released May 10, 2019)」それぞれの「Download」ボタンを押して、「cuda_10.0.130_410.48_linux.run」「cuda_10.0.130.1_linux.run」をダウンロードします。
ファイルをダウンロードしたディレクトリへ移動し、ベースインストーラのrunファイルに実行権限を付与してから、「sudo」で実行します。
長い使用許諾書を「Enter」キーを押して全部表示してから「accept」し、「Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?」には、すでに最新ドライバ「440」をインストールしているので「no」と回答します。
「Install the CUDA 10.0 Toolkit?」に「yes」と回答し、「/usr/local/cuda-10.0」にライブラリをインストールのうえ「/usr/local/cuda」からシンボリックリンクをはり、動作確認のためのサンプルファイルは「~/NVIDIA_CUDA-10.0_Samples」にコピーする設定にします。

$ chmod +x cuda_10.0.130_410.48_linux.run
$ sudo ./cuda_10.0.130_410.48_linux.run

Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: no

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yes

Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]:

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: yes

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: yes

Enter CUDA Samples Location
[ default is /home/username ]:

Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...
Installing the CUDA Samples in /home/username ...
Copying samples to /home/username/NVIDIA_CUDA-10.0_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.0
Samples: Installed in /home/username

Please make sure that
- PATH includes /usr/local/cuda-10.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-10.0/lib64, or, add /usr/local/cuda-10.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-10.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver

Logfile is /tmp/cuda_install_4325.log


ベースインストーラのインストール処理が終わったら、パッチをあてていきます。
「CUDA 10.0 Toolkit」をインストールしたディレクトリ「/usr/local/cuda-10.0」をターゲットに、パッチファイルを実行するだけです。

chmod +x cuda_10.0.130.1_linux.run
$ sudo ./cuda_10.0.130.1_linux.run

Do you accept the previously read EULA?
accept/decline/quit: accept

Enter CUDA Toolkit installation directory
[ default is /usr/local/cuda-10.0 ]:

Installation complete!
Installation directory: /usr/local/cuda-10.0


ここまでの作業が終わったら、「~/.bashrc」に以下二行を追加して、パスをとおしておきます。

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}


あるいは、以下のようなかたちで「CUDA_HOME」変数を使ってもO.K.です。

# CUDA 10.0 path
export CUDA_HOME="/usr/local/cuda-10.0"
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64:/usr/lib/x86_64-linux-gnu/
export CPATH=$CPATH:$CUDA_HOME/include


いったんターミナルを閉じるか、「$ source ~/.bachrc」コマンドを実行して、パスの変更を反映させます。
いくつかライブラリがたりない(「libGLU.so」「libX11.so」「libXi.so」「libXmu.so」「libGL.so」など)ことがあるので、必要な場合はあとで該当パッケージをインストールし、パスのとおった「/usr/lib」からライブラリファイルへシンボリックリンクをはっておけば問題ありません。

$ sudo apt install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev


ここまででインストール作業は完了です。
以下のコマンドを実行して、インストールした「CUDA 10.0」のバージョンが正しく表示されることを確認します。

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130


問題なければ、サンプルのビルドを実行します。
$ cd ~/NVIDIA_CUDA-10.0_Samples
$ make


ビルド処理が終わったら、「~/NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release/」以下に「deviceQuery」が生成するので、それを実行してみます。

$ ~/NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release/deviceQuery


デバイスが検出され、「Result = PASS」と表示されていれば、インストールは正常に完了しています。

NVIDIA公式インストール手順書にも記載がありますが、「CUDA Toolkit 10.0」をrunfileを使ってインストールしたときは、以下のスクリプトを実行することでアンインストールできます。

$ sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl


なお、今回のインストール方法では必要ありませんが、NVIDIA製ドライバをrunfileを使ってインストールしたときのアンインストールコマンドは以下のとおりです。

$ sudo /usr/bin/nvidia-uninstall


6. 「cuDNN 7.6.5」のインストール
基本的には、NVIDIA公式の「cuDNN Installation Guide」の指示にしたがって、インストール作業をすすめていきます。
まず「cuDNN Download」ページへいき、必要におうじてログインしたうえで、「I Agree To the Terms of the cuDNN Software License Agreement」にチェックをいれます。
ここで「Download cuDNN」をクリックして、「cuDNN Download」ページへ飛び、「Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.0」をクリックしてタブをひらきます。
一覧表のなかから「cuDNN Library for Linux」をクリックして、「cudnn-10.0-linux-x64-v7.6.5.32.tgz」をダウンロードします。
ダウンロードしたディレクトリへ移動してファイルを解凍のうえ、「CUDA 10.0」ライブラリをインストールした「/usr/local/cuda-10.0」ディレクトリ以下に配置し、読み込み権限をあたえておきます。

$ tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.6.5
cuda/lib64/libcudnn_static.a
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


「cuDNN」ライブラリの配置が完了したら、以下のコマンドで正しく配置されているかどうか確認します。

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"


インストールしたバージョン「7.6.5」が正しく表示されれば、問題ありません。
最後に、debian package「cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)」をクリックしてダウンロードした「libcudnn7-doc_7.6.5.32-1+cuda10.0_amd64.deb」からサンプルを抽出、ビルドしてみます。

$ dpkg-deb -x libcudnn7-doc_7.6.5.32-1+cuda10.0_amd64.deb ./
$ cp -r usr/src/cudnn_samples_v7/ ~/
$ cd ~/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN

.....
Test passed!


「Test passed!」と表示が出れば、「cuDNN 7.6.5」のインストール作業は完了しています。

7. 「NCCL 2.6.4」のインストール
「NCCL 2.6.4」をインストールするには、NVIDIA公式の「NCCL 2.6.4 Installation Guide」にしたがって、作業をすすめます。

まず「NVIDIA Collective Communications Library (NCCL) Download Page」へいき、必要におうじてログインしたうえで、「I Agree To the Terms of the Software License Agreement」にチェックをいれます。
「Download NCCL v2.6.4, for CUDA 10.0, March 26,2020」をクリックしてタブをひらき、「O/S agnostic local installer」をクリックして、「nccl_2.6.4-1+cuda10.0_x86_64.txz」をダウンロードします。
ダウンロードしたディレクトリに移動したら、ファイルを解凍のうえ、「/usr/local/nccl-2.6」ディレクトリ以下へ配置します。

$ tar xvf nccl_2.6.4-1+cuda10.0_x86_64.txz
nccl_2.6.4-1+cuda10.0_x86_64/include/
nccl_2.6.4-1+cuda10.0_x86_64/include/nccl_net.h
nccl_2.6.4-1+cuda10.0_x86_64/include/nccl.h
nccl_2.6.4-1+cuda10.0_x86_64/lib/
nccl_2.6.4-1+cuda10.0_x86_64/lib/pkgconfig/
nccl_2.6.4-1+cuda10.0_x86_64/lib/pkgconfig/nccl.pc
nccl_2.6.4-1+cuda10.0_x86_64/lib/libnccl.so
nccl_2.6.4-1+cuda10.0_x86_64/lib/libnccl.so.2
nccl_2.6.4-1+cuda10.0_x86_64/lib/libnccl_static.a
nccl_2.6.4-1+cuda10.0_x86_64/lib/libnccl.so.2.6.4
nccl_2.6.4-1+cuda10.0_x86_64/LICENSE.txt
$ sudo cp -r nccl_2.6.4-1+cuda10.0_x86_64 /usr/local/nccl-2.6


最後に、「.bashrc」に以下の行を追加し、「/usr/local/nccl-2.6」へパスをとおしておきます。

export NCCL_ROOT="/usr/local/nccl-2.6"
export CPATH=$CPATH:$NCCL_ROOT/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NCCL_ROOT/lib/
export LIBRARY_PATH=$LIBRARY_PATH:$NCCL_ROOT/lib/


いったんターミナルを閉じるか、「$ source ~/.bachrc」コマンドを実行して、パスの変更を反映させます。

8. 「TensorRT 7.0.0」インストール

NVIDIA TensorRT 7.x Download
」ページへいき、必要におうじてログインしたうえで、「I Agree To the Terms of the Software License Agreement」にチェックをいれます。
「Tar File Install Packages」リストのなかの「TensorRT 7.0.0.11 for Ubuntu 18.04 and CUDA 10.0 tar package」をクリックして、「TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz」ファイルをダウンロードします。
ダウンロードしたディレクトリへ移動して、ファイルを解凍のうえ、適当なディレクトリ(ここでは「/usr/local/TensorRT-7.0.0」)に配置します。

$ tar xzvf TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz
$ sudo cp -r TensorRT-7.0.0.11 /usr/local/TensorRT-7.0.0


「.bashrc」に以下の行を追加し、「TensorRT-7.0.0」ディレクトリへパスをとおしておきます。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/TensorRT-7.0.0/lib


あとは、NVIDIA公式の「TensorRT 7.0.0 Installation Guide」の手順どおり、「Python TensorRT」「Python UFF」「Python graphsurgeon」パッケージをインストールします。
「TensorRT 7.0.0」をインストールしたディレクトリの「samples/sampleMNIST/」へいき、サンプルをmakeしてみます。
「TensorRT 7.0.0」をインストールしたディレクトリの「bin」に「sample_mnist」ができているので、これを実行して「TensorRT 7.0.0」が正しくインストールされていることを確認します。
この生成したサンプルファイルをきちんと動かすためには、あらかじめ「data/mnist/download_pgms.py」を実行しておく必要があるかもしれません。

9. 「CUPTI」パス登録
「CUPTI」は「CUDA 10.0 Toolkit」にふくまれているため、あらためてインストールする必要はありませんが、パスをとおしておく必要はあります。
「.bashrc」に以下の一行を追加し、いったんターミナルを閉じるか「$ source ~/.bachrc」コマンドを実行するかして、パスの変更を反映させます。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/extras/CUPTI/lib64


以上で、「Ubuntu 20.04 TLS」上に「CUDA 10.0」+「TensorRT 7.0.0」環境を構築する作業は完了です。
今回は「TensorRT 7.0.0」環境が必要だったため、動作要件となっている「CUDA 10.0」+「cuDNN 7.6.5」環境の構築をめざした記述になっていますが、 より広い意味で現時点で一般性の高い「Ubuntu 20.04 LTS」+「CUDA 10.0」+「cuDNN 7.6.5」+「NCCL 2.6.4」という環境を構築するための手引きとしてもご参照いただければ幸甚です。
上記手順にしたがってインストールすれば、だいたいうまくいくと思いますが、「CUDA」の動作に問題が発生するときは以下のパス設定(上記手順のなかで設定した「CUDA」関連ライブラリに関係する部分のみ)を再確認してみてください。
$ printenv
LD_LIBRARY_PATH=:/usr/local/cuda-10.0/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64:/usr/local/nccl-2.6/lib/:/usr/local/TensorRT-7.0.0/lib
CPATH=:/usr/local/cuda-10.0/include:/usr/local/nccl-2.6/include
PATH=/usr/local/cuda-10.0/bin



参考ウェブページ一覧表(順不同)
posted by hatakazu at 20:27| Comment(0) | Linuxとか | 更新情報をチェックする

「Ubuntu 20.04 LTS 日本語 Remix」のインストール、Windows10とのデュアルブート化

1. 基本的なOS構成設計
Inspiron14はWindows10プリインストールモデル、記憶領域は「SSD 128GB」+「HDD 1TB」で、最初は以下のようなかたちになっています。

「SSD 128GB」:起動ディスク、Windows Boot Manager -> Windows10起動。
「HDD 1TB」:データ領域。

今回は、「Ubuntu 20.04 LTS 日本語 Remix」をインストールして、「Windows10 Home 64bit」とのデュアルブート環境を構築します。
hatakazuは自宅では基本的にLinuxしか使わないので、デフォルトでUbuntu20.04が立ちあがるかたちにしておき、必要なときだけWindows10を起動できればO.K.です。
そのため、以下のような設計としました。

「SSD 128GB」:Windows Boot Manager -> Windows10起動。
「HDD 1TB」:起動ディスク、GRUB -> Ubuntu20.04起動。Windows10と共有するデータ領域。

GRUB画面でWindows Boot Managerを呼びだすことができるので、Windows10が必要な場合はそこから起動、通常は「Enter」キー押下によって(もしくは一定時間経過後に自動的に)Ubuntu20.04が立ちあがる仕様です。
この設計にしたおおきな理由は、「HDD 1TB」のUbuntu20.04環境が「SSD 128GB」のWindows10環境に依存してないため、Ubuntu20.04がわの設定変更やOS再インストールなどのさいにWindows10がわからなんの制約も受けないことです。
場合によっては、「HDD 1TB」を取りはずしたり交換したりしても、Windows10はまったく問題なく起動するわけです。
その意味で、非常に自由度が高く、hatakazuのようにいろいろ遊んでみたいひとにとっては最適なデュアルブート構成になっていると思います。
あらかじめWindows10上で

・回復ドライブの作成:「コントロールパネル」→「システムとセキュリティ」→「回復ドライブの作成」
・高速スタートアップの無効化:「コントロールパネル」→「ハードウェアとサウンド」→「電源オプション」→「システム設定」から「現在利用可能ではない設定を変更します」をクリック、「高速スタートアップを有効にする」のチェックをはずして設定を保存
・Ubuntu 20.04をインストールするスペースの確保:「コントロールパネル」→「システムとセキュリティ」→「ハードディスクパーティションの作成とフォーマット」

はすませておきます。
記憶装置は「SSD 128GB」+「HDD 1TB」なので、Linuxをインストールする領域として、「HDD 1TB」上におよそ700GBを確保しました。

2. 「Ubuntu 20.04 LTS 日本語 Remix」インストール用USBメモリの作成
Ubuntu Japanese Team」サイトから「Ubuntu Desktop 日本語 Remixのダウンロード」ページへいき、最新の長期サポート版日本語対応バージョン「Ubuntu 20.04 LTS 日本語 Remix」のイメージファイル「ubuntu-ja-20.04-desktop-amd64.iso」を取得します。
イメージファイルをダウンロードしたディレクトリへ移動して、USBメモリを挿入したあと、以下のコマンドでUSBメモリのデバイス名を確認します。

$ sudo fdisk -l


ハードディスク一台の構成であれば、USBメモリは「/dev/sdb」などに割りあてられていることが多いと思います。
USBメモリに余計なパーティションが設定してあると、インストールイメージを書きこむさいに失敗することがあるので、あらかじめパーティション構成を確認しておきます。

$ sudo fdisk /dev/sdb


「d」コマンドで既存パーティションを削除、「n」コマンドで新規パーティションを作成、USBメモリ全体をひとつの基本パーティションにしておきます。
イメージを書きこむためにはddコマンドを使用しますが、「if」オプションで対象となるイメージファイルを、「of」オプションで書きこみ先のデバイスを指定します。

$ sudo dd if=./ubuntu-ja-20.04-desktop-amd64.iso of=/dev/sdb


これで「Ubuntu 20.04 LTS 日本語 Remix」インストール用USBメモリができました。

3. 「Ubuntu 20.04 LTS 日本語 Remix」インストール
コンピュータを再起動して、Dellのロード画面が表示されているあいだに「F2」キーを押し、Setup Utilityを起動します。

・「Secure Boot Enable」項目をひらいて、「Disabled」を選択する。
・「Fastboot」検査をスキップしない設定にする。初期値のままでO.K.だった。
・「CSM」項目が存在しない。存在する場合は有効化しておく必要があると思う。
・「Virtualization」初期値で有効化されていたが、あえて無効化する必要もないので、そのままにした。Winsows10上で「VirtualBox」などの仮想化環境を使う場合は、有効化されていることを確認する。
・「POST Behavior」→「Fn Lock Options」にて、「Fn lock」にチェックをいれて、「Lock Mode Disabled/Standard」を選択する。

ここまでの設定を保存してUSBメモリを挿入のうえInspironを再起動し、「F12」を押下してBoot Menu画面を開いて、挿入したUSBメモリからブートします。
まずUSBイメージのファイルが壊れてないかチェックが走りますが、二度目以降は「Ctrl」+「C」キーを押してスキップすることができます。
表示される画面で「Ubuntuを試す」オプションを選択、デスクトップが表示されるところまでいけば、Ubuntu20.04がこのコンピュータ上で問題なく動作することが確認できたということです。
デスクトップ上にある「Ubuntu 20.04 のインストール」アイコンをダブルクリックして、インストールを開始します。
インストール手順は、たいていのLinuxディストリビューションでだいたいおなじような流れになっていますが、Ubuntu20.04の場合はとくにかんたんです。
ただし、Windows10とのデュアルブートにする場合は、「インストールの種類」画面ですこし気をつけないといけません。
「それ以外」ボタンにチェックをいれて「続ける」をクリック、パーティション設定画面へすすみます。
Ubuntu20.04をインストールする領域として「HDD 1TB」上におよそ700GBを確保したので、そのうち15GBていどを「swap area」に、残りをすべて「/」に割り当てることにします。
そしてブートローダは「HDD 1TB」のMBRにインストール、Setup Utilityで優先起動ドライブに設定して最初にGRUBが起動するようにし、必要なときだけGRUBからWindows Boot Managerを選択して「SSD 128GB」のWindows10を起動する設計でした。
そのため、「インストールの種類」画面では、最終的に以下のようなパーティション構成になります。

/dev/sda1 ntfs 300GBくらい(Ubuntu20.04とWindows10で共有するデータ領域)
/dev/sda2 ext4 / 680GBくらい
/dev/sda3 swap 15GBくらい

ブートローダをインストールするデバイス
/dev/sda


Windows10がプリインストールされている「SSD 128GB」は、「/dev/sdc」として認識されていますが、これにはまったくさわらずそのままにしておきます。
「インストール」をクリックすると、タイムゾーンやキーボードやユーザの設定をへて、インストールがはじまります。
インストールが終わったら、インストールメディアを抜いてから再起動するように指示されるので、UBSメモリを取りはずしてから「Enter」キーを押下してコンピュータをリブートさせます。
起動時に「F2」キーを押してSetup Utility画面を開き、「HDD 1TB」を優先起動するよう指定します。
それによってまずGRUB画面が開くようになるので、GRUB画面でUbuntu20.04(デフォルト)とWindows10(Windows Boot Managerを指定)を選択起動できる、設計どおりの仕様を実現したことになります。
Ubuntu20.04を起動、オープニング画面で登録したユーザを選んで設定したパスワードを入力すれば、Ubuntu20.04のデスクトップがあらわれるはずです。

4. 「Ubuntu 20.04 LTS 日本語 Remix」インストール後の設定
「Ubuntu 20.04 LTS 日本語 Remix」をインストールしたあと、hatakazuの使用形態にあわせて環境をととのえた部分を、以下に列挙しておきます。

・時刻設定
Windows10とのデュアルブート環境では、標準ではUCTとなるUbuntu20.04の時計を、Windows10とおなじ現地時間に設定する必要があります。
UCTのままだと、Windows10とUbuntu20.04をいったりきたりするたびに、時計がどんどんずれていってしまうからです。
以下のコマンドを実行することで、「/etc/adjtime」が作成されて、Ubuntu20.04を現地時間で動かすことができます。
UCTにもどすときは、最後の「1」を「0」にして、おなじコマンドを実行すればO.K.です。

$ sudo timedatectl set-local-rtc 1


・ターミナル
「Ctrl」+「Alt」+「T」で端末が開くので、ランチャにあらわれたアイコンを右クリックして、ランチャに固定しておきます。

・スーパーユーザのパスワード設定
以下のコマンドを実行し、必要になる場合にそなえて、あらかじめスーパーユーザのパスワードを設定しておきます。

$ sudo passwd root


・設定画面
dock位置変更、アイコンサイズ変更、タッチパッドのエッジスクロール有効化、など必要におうじて。

・Javaランタイムのインストール
せっかくなので、ランタイムをふくむ「Java Development Kit」をまるごとインストールしておきます。
Java SE Development Kit 14 Downloads」ページから「jdk-14.0.1_linux-x64_bin.tar.gz」をダウンロード、解凍して「/usr/lib/jdk-14.0.1」に設置します。

$ tar xzvf jdk-14.0.1_linux-x64_bin.tar.gz
$ sudo cp -r jdk-14.0.1 /usr/lib/jdk-14.0.1


そのあと、エディタで「~/.bashrc」に以下二行を追記して、パスをとおしておきます。

export JAVA_HOME=/usr/lib/jdk-14.0.1
export PATH=$PATH:$JAVA_HOME/bin


「$ java -version」コマンドを実行して、バージョン情報が正しく表示されれば、パスの設定はO.K.です。

・「google-chrome-stable」インストール
パソコン版Chrome」サイトで「Chromeをダウンロード」ボタンを押し、「64 bit .deb (Debian / Ubuntu 版)」を選択してから、「同意してインストール」ボタンを押します。
「google-chrome-stable_current_amd64.deb」ファイルをダウンロードしたら、ダウンロードしたフォルダへ移動して、以下のコマンドを入力してインストールします。
ターミナルから「google-chrome-stable」コマンドで起動できるようになるので、ランチャにあらわれたアイコンを右クリックして、ランチャに固定しておきます。

$ sudo apt install ./google-chrome-stable_current_amd64.deb


--別法--
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo apt update
$ sudo apt install google-chrome-stable

--

「google-chrome-stable」を起動したときに、「NSS」の更新を要求するエラーメッセージが出た場合、要求されたパッケージをインストールすれば起動できるようになります。

$ sudo apt install libnss3


・「exfat」フォーマット対応
exfat形式のデバイス(SDカードなど)をあつかえるよう、必要なパッケージをインストールしておきます。

$ sudo apt install exfat-fuse exfat-utils


たとえばSDカードのデバイス名が「/dev/sd」だとしたら、「mkfs.exfat /dev/sd」コマンドで、SDカードをexfat形式でフォーマットできるようになります。

・「MTP」対応
Android端末とのMTP接続には、MTP関連のファイルをまとめてインストールします。

$ sudo apt install mtpfs mtp-tools gmtp


・「7z」対応
このごろサイズの大きいファイルを配布するのに、「7z」形式が増えてきているので、それに対応する「p7zip」パッケージをインストールします。
これにより、「$ p7zip -d xxxxx.7z」コマンドで「7z」形式のファイルを解凍できるようになります。

$ sudo apt install p7zip p7zip-full


・パッケージ管理ソフト「synaptic」
以下のコマンドでインストール、「$ synaptic」コマンドで起動して、これもランチャに固定しておきます。

$ sudo apt install synaptic


・音楽管理ソフト「rhythmbox」用プラグイン
「m4a」形式ファイルをサポートするために「streamer1.0-plugins-bad」を、「mp3」形式ファイルをサポートするために「gstreamer1.0-plugins-ugly」をインストールします。

$ sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly


・音楽管理ソフト「gtkpod」
初代iPod Shuffleに音楽ファイルを転送するため、「gtkpod」をインストールします。

$ sudo apt install gtkpod


初代iPod Shuffleが自動的に認識されないときは、「synaptic」を起動して、初代iPod Shuffleの認識を妨げている「libgpod-common」を削除してやればO.K.です。
iPodが認識されているのに「gtkpod」にロードできない場合は、一度iPod内のファイルをすべて削除してから「gtkpod」へつなぎ、「Tools」 -> 「Create iPod's Directories...」でiPod内のディレクトリを再構築する必要があるかもしれません。

・組版環境「texlive」および楽譜組版パッケージ「MusiXTeX」

$ sudo apt install texlive-lang-japanese texlive-music


・エディタ「emacs」

$ sudo apt install emacs emacs-mozc


・「emacs」で使うフォント

$ sudo apt install fonts-takao-gothic fonts-takao-mincho fonts-takao-pgothic
$ sudo rm /etc/fonts/conf.d/65-fonts-takao-*


・「skype」インストール

skypeをダウンロード」ページの「デスクトップ用skype」から「Skype for Linux DEBをダウンロード」を選択し、Ubuntu用インストールファイル「skypeforlinux-64.deb」を取得して、aptコマンドでインストールします。
インストール後は「skypeforlinux」コマンドで起動できます。
「Ubuntu Software」からインストールできる「skype」アプリケーションは、現時点で日本語でのチャットができないようなので、上記インストールを実行するのがおすすめです。

$ sudo apt install ./skypeforlinux-64.deb


・「zoom」インストール

ダウンロードセンター - Zoom」ページの「Linuxタイプ」から「Ubuntu」を選択し、「OSアーキテクチャ」は「64ビット」、「バージョン」は「16.04+」を選んで「ダウンロード」ボタンをクリック、Ubuntu用インストールファイル「zoom_amd64.deb」を取得して、aptコマンドでインストールします。
インストール後は「zoom」コマンドで起動できます。
ログイン時に自動的に起動するよう、「自動起動するアプリケーションの設定」から「/usr/bin/zoom」を登録しておいてもいいかもしれません。

$ sudo apt install ./zoom_amd64.deb



参考ウェブページ一覧表(順不同)

http://www.dell.com/support/home/jp/ja/jpdhs1/product-support/product/inspiron-14-7472-laptop/diagnose
http://www.dell.com/support/manuals/jp/ja/jpbsd1/inspiron-14-7472-laptop/inspiron-14-7472-servicemanual/inspiron-14-7000-サービスマニュアル
https://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/
https://www.g104robo.com/entry/ubuntu-dualboot-win10-uefi
https://hnakamur.github.io/blog/2018/03/23/ubuntu-17.10-windows10-dual-boot/
posted by hatakazu at 19:24| Comment(0) | Linuxとか | 更新情報をチェックする

2020年05月25日

Windows 10上に囲碁勉強環境を構築する - 「PhoenixGo」編

Tencent「PhoenixGo」についてはだいぶまえのことになりますが、「コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編」という記事にて、当時実行したインストール方法についてくわしくまとめました。
しかし、今回の「Windows 10上に囲碁勉強環境を構築する」プロジェクトでは「GLOBIS-AQZ」を使えるようにすることが最優先課題であったため、当時使っていた「CUDA 9.0」ベースの環境から「CUDA 10.0」+「TensorRT 7.0.0」という「GLOBIS-AQZ」動作要件を満たす環境へとシフトすることになりました。
たいていの囲碁プログラムのGPUバージョンは動作要件として特定バージョンの「CUDA」ライブラリを例示していますが、それはあくまでも動作検証をおこなった環境について言及しているだけで、じっさいにはほかのバージョンの「CUDA」ライブラリとも互換性をもって動作します。
しかしながら、「PhoenixGo」だけは明示的に以下のように「CUDA 9.0」+「cuDNN 7.1」環境に特定されており、今回プロジェクトで構築した「CUDA 10.0」をベースとする環境では動作させることができません。

・CUDA 9.0 only
・cudnn 7.1.x (x is any number) or lower for CUDA 9.0
・no AVX, AVX2, AVX512 instructions supported in this release (so it is currently much slower than the linux version)
・there is no TensorRT support on Windows


じっさいにあらたな「CUDA 10.0」環境でこれまでとおなじように「PhoenixGo」を起動しようとすると、いくつかの「CUDA 9.0」ライブラリが見つからないため起動できないむね、エラーが出てそのまま終了してしまいます。
ということは逆にいえば、このエラーメッセージで要求されているライブラリファイルだけ「CUDA 9.0」からもってきて、それをパスがとおっている場所(いちばんわかりやすいのは「PhoenixGo」の実行ファイルそのものがあるフォルダ)に置いて見つかるようにしてやれば、動かせるのではないかという考えにたどりつきます。
バックアップしてあった「CUDA 9.0」環境からさっそく「cublas64_90.dll」「cudart64_90.dll」「cudnn64_7.dll」「cufft64_90.dll」「curand64_90.dll」「cusolver64_90.dll」をとりだしてきて、「PhoenixGo」の実行ファイルが置かれている「C:\Users\username\PhoenixGo\bin」フォルダに設置してから起動してみると、はたして問題なく動作することが確認できました。

そこまでやってみてから気づいたというのがなんとも間のぬけた話なのですが、じつは「PhoenixGo」GPUバージョンには二種類のバイナリ配布があり、そのうちのひとつがまさに上記したように「CUDA 9.0」ライブラリを同梱したものになっていました。
「PhoenixGo」Windowsバイナリのダウンロードページへいくと、「PhoenixGo-win-x64-gpu-v1」と「PhoenixGo-win-x64-gpu-with-cuda-v1.zip」の二種類が公開されています。
「CUDA 9.0」+「cuDNN 7.1」環境が構築されている場合は前者をダウンロードしてインストールすればいいのですが、NVIDIA製「CUDA」対応GPUを搭載したコンピュータであれば、じつはCUDA環境が構築されていなくても(あるいは今回のhatakazuのケースのように、べつのバージョンの「CUDA」環境が構築されていても)後者をダウンロードしてインストールすることで「PhoenixGo」をよりかんたんに動かすことができるのです。
コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編」で記述したうち、「1. 前提となる環境」でまとめてある「CUDA 9.0」+「cuDNN 7.1」をインストールする準備作業は、スキップしてしまってかまいません。
それから「2. 「PhoenixGo」インストールファイルのダウンロード」の部分では、GPUバージョンのWindows用インストールファイルとして、「PhoenixGo-win-x64-gpu-v1」ではなくて「PhoenixGo-win-x64-gpu-with-cuda-v1.zip」のほうをダウンロードしてきます。
そのあとのインストール方法、設定方法、囲碁GUIとの連携方法は「コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編」に書いてあるのとまったくおなじです。
コミ六目半日本ルールで学習したネットワークをもつ「GLOBIS-AQZ」や日本ルール対応を打ち出した「KataGo」に対して、「Leela Zero」や「ELF OpenGo」は(七目半でしか学習してないので)棋譜ごとのコミ設定にかかわらず七目半でしか思考できないようにみえますが、「PhoenixGo」はそもそもの話として七目半以外のコミ設定を受けつけないので、どんな条件の棋譜であってもとにかくコミを七目半に設定しないと動かないという部分は注意が必要です。
posted by hatakazu at 21:53| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

コンピュータ囲碁プログラム「KataGo」をソースからビルドする - 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. 「KataGo」インストールの準備とソースコードの取得
「KataGo」のソースコードは「KataGo」GitHubレポジトリでソースコードが公開されており、現時点での最新バージョンは「v1.4.2」となっています。
このソースコードをLinuxでビルドするための要件は、「KataGo」GitHubレポジトリの説明によれば、以下のとおりです。

--
Requirements
・CMake with a minimum version of 3.10.2 - for example sudo apt install cmake on Debian, or download from https://cmake.org/download/ if that doesn't give you a recent-enough version.
・Some version of g++ that supports at least C++14.
・If using the OpenCL backend, a modern GPU that supports OpenCL 1.2 or greater, or else something like this for CPU. (Of course, CPU implementations may be quite slow).
・If using the CUDA backend, CUDA 10.1 and CUDNN 7.6.1 (https://developer.nvidia.com/cuda-toolkit) (https://developer.nvidia.com/cudnn) and a GPU capable of supporting them. I'm unsure how version compatibility works with CUDA, there's a good chance that later versions than these work just as well, but they have not been tested.
・zlib, libzip, boost filesystem. With Debian packages (i.e. apt or apt-get), these should be zlib1g-dev, libzip-dev, libboost-filesystem-dev.
・If you want to do self-play training and research, probably Google perftools libgoogle-perftools-dev for TCMalloc or some other better malloc implementation. For unknown reasons, the allocation pattern in self-play with large numbers of threads and parallel games causes a lot of memory fragmentation under glibc malloc that will eventually run your machine out of memory, but better mallocs handle it fine.
--

これから「KataGo」をソースコードからビルドするにあたっては、あらかじめ「「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

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

$ cd
$ git clone https://github.com/lightvector/KataGo


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

3. 「KataGo」のインストール

「Makefile」ファイルの編集がおわったら、ビルド作業にすすみます。
$ cd KataGo/cpp
$ cmake . -DUSE_BACKEND=CUDA

(OpenCLバージョンをビルドしたいときは「$ cmake . -DUSE_BACKEND=OPENCL」に変更のこと)

$ make


ビルド処理は問題なく完了し、「~/KataGo/cpp」ディレクトリのなかに実行バイナリ「katago」が生成しています。
このあとの作業にさいしてわかりやすいように、この生成した実行バイナリ「katago」を「KataGo」ディレクトリへ移動しておきます。

$ mv katago ../


つづいてネットワークファイルを取得します。
「KataGo」の歴代ネットワークファイルは「katago-public/g170/neuralnets」に保管されているので、そこからダウンロードしてきたネットワークファイルを自由に使うことができます。
ここでは、最近「KataGo v1.4.0」と同時に公開された、117日間トレーニングずみの最新ネットワークファイルを使ってみることにします。
それぞれことなる設計の三種類のネットワークファイルがあり、コンピュータの性能によっても強さに差が出てくるので、試してみて自分の環境に合いそうなものを採用するといいでしょう(基本的にはGPU性能が上がるほど下のものが強くなるはず)。

g170-b20c256x2-s4384473088-d968438914.bin.gz - The latest and final semi-zero 20-block net (continuing extended training on games from the bigger nets). -> ファイル名の例「kata20x256.bin.gz」
g170-b30c320x2-s3530176512-d968463914.bin.gz - The latest and final semi-zero 30-block net. -> ファイル名の例「kata30x320.bin.gz」
g170-b40c256x2-s3708042240-d967973220.bin.zp - The latest and final semi-zero 40-block net. -> ファイル名の例「kata40x256.bin.gz」

こうしてダウンロードした「kata20x256.bin.gz」「kata30x320.bin.gz」「kata40x256.bin.gz」を「katago」フォルダへ移動しておきます。

4. 「KataGo」の設定
以上の作業が完了したら、「~/KataGo」ディレクトリにGTP思考エンジンの実行ファイル「katago」と設定ファイル「default_gtp.cfg」、そして三種類のネットワークファイル「kata20x256.bin.gz」「kata30x320.bin.gz」「kata40x256.bin.gz」が置かれている状態になります。
このあとは「コンピュータ囲碁プログラム「KataGo」のインストールと使いかた - Ubuntu編」のLinux用バイナリ配布ファイルを利用するときとまったくおなじように、「default_gtp.cfg」を編集して「KataGo」の設定(日本ルール対応を忘れずに)をおこない、「Lizzie」「GoGui」「Sabaki」などGTP対応囲碁GUIへの登録作業をすすめればO.K.です。

5. 問題点
じっさいに上記インストール手順を実行するにさいしては、「$ cmake . -DUSE_BACKEND=CUDA」コマンドのところでエラーが出てしまうことがあります。
これは「cmake」と「CUDA」のバージョンの関係で発生する問題で、「Ubuntu 18.04 LTS」標準の「cmake version 3.10.2」では「CUDA 10.0」以降のライブラリを使用したコンパイルはできない、らしい。

この「cmake」でエラーが出るケースは、基本的にライブラリが見つからない問題なので、該当ライブラリが見つかるように探しにいく場所を指定してやればいい。
「OpenCL」ライブラリが見つからない場合は、「/usr/share/cmake-3.10/Modules/FindOpenCL.cmake」ファイルの「OpenCL_INCLUDE_DIR」「OpenCL_LIBRARY」あたりの変数を、「CUDA」ライブラリが見つからない場合は、「/usr/share/cmake-3.10/Modules/FindCUDA.cmake」の「CUDA_cublas_device_LIBRARY」あたりの変数を確認すること。


この環境でコンパイル作業をすすめるためには「cmake version 3.12.2」以降が必要ということなので、「CMake Download」ページ へいき、ページの下のほうにある「Older Releases」から「https://cmake.org/files/」をクリックします。
v3.12/」ディレクトリを開いて、そこから「cmake-3.12.2-Linux-x86_64.sh」をダウンロードします。
現在のバージョンをアンインストールしたうえで、「sh ./cmake-3.12.2-Linux-x86_64.sh」を実行して「cmake version 3.12.2」をインストールすれば、さきほどの「$ cmake . -DUSE_BACKEND=CUDA」コマンドが問題なくとおるようになっているはずです。
posted by hatakazu at 19:29| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2020年05月22日

コンピュータ囲碁プログラム「KataGo」のインストールと使いかた - Ubuntu編

KataGo」はコンピュータ囲碁プログラムとしては比較的あたらしいプロジェクトで、「AlphaZero」方式の自己学習を基本としながらもさまざまな工夫をこらして学習効率を高め、ほかの類似のコンピュータ囲碁プログラムよりも短期間で強くなってきたところにアピール点があります。
「KataGo」をインストールしたコンピュータのGPU性能におうじて、適切にリソースを設定するための方法を提供し、具体的にいろいろ説明しているのもおもしろいところです。
まあそのあたりはhatakazuのようなただの囲碁愛好家にはあまり関係ないのですが、コンピュータ囲碁プログラムの思考を囲碁GUIに表示させて遊んでいる身からすれば、①「KataGo」が独自の形勢判断機能を搭載していて、形勢を目数差で表示することができること、②標準で「Lizzie」との連携が可能で、「Lizzie」でも「KataGo」独自の形勢判断機能をサポートしていること、③「v1.3」以降で日本ルールへの対応を打ち出したことはうれしいポイントです。

「KataGo」GitHubレポジトリ
・Linux用およびWindows用バイナリ配布あり。
・CUDAバージョンおよびOpenCLバージョン。
・現時点の最新バージョンは「v1.4.2」。

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)
--

「KataGo」を動かすには「CUDA」もしくは「OpenCL」に対応したGPUが必要で、ここではあらかじめ「「Ubuntu 18.04 LTS 日本語 Remix」に「CUDA 10.0」+「TensorRT 7.0.0」をインストールする」の記述のとおりに「CUDA 10.2」+「cuDNN 7.6.5」環境が構築されていることを前提として、CUDAバージョンのインストール方法を説明していきます。
「KataGo」GitHubレポジトリの記述では「CUDA 10.1」+「CUDNN 7.6.1」環境への言及がありますが、「CUDA」関連ライブラリのバージョン間における互換性などの制約は検証されておらず、今回「CUDA 10.2」+「cuDNN 7.6.5」環境でもまったく問題なく動作することが検証できました。
OpenCLバージョンをインストールする場合は、たいてい特別な準備をする必要はありませんが、OpenCLライブラリが見つからないときは警告が出るので追加インストールしてください。
以下のCUDAバージョンのインストール方法の記述のうち、「katago-v1.4.2-cuda10.1-linux-x64」の部分をすべて「katago-v1.4.2-opencl-linux-x64」に読みかえるだけで、まったくおなじ手順を実行してもらえればOpenCLバージョンをインストールできます。
なお、「KataGo」として公開されているのはGUIをもたない囲碁思考エンジン部分のみなので、グラフィカルに対局や棋譜分析をおこなうためにはGTPを解釈できる囲碁GUIと連携させる必要があります。

2. 「KataGo」インストールファイルのダウンロード
「KataGo」の現行バージョンは「v1.4.2」で、「KataGo」GitHubレポジトリの「Releases」ページから「katago-v1.4.2-cuda10.1-linux-x64.zip」をクリックして、Linux用バイナリファイル「katago-v1.4.2-cuda10.1-linux-x64.zip」を取得します。

3. 「KataGo」のインストール
ダウンロードした「katago-v1.4.2-cuda10.1-linux-x64.zip」ファイルを解凍すると、「katago-v1.4.2-cuda10.1-linux-x64」フォルダができるので、フォルダ名をわかりやすく「katago」に変更しておきます。
この「katago」フォルダのなかにGTP思考エンジン本体である「katago」や設定ファイル「default_gtp.cfg」などがふくまれているので、この「katago」フォルダをそのまましかるべき場所(たとえば「/home/username/katago」など)に設置します。
つづいてネットワークファイルを取得します。
「KataGo」の歴代ネットワークファイルは「katago-public/g170/neuralnets」に保管されているので、そこからダウンロードしてきたネットワークファイルを自由に使うことができます。
ここでは、最近「KataGo v1.4.0」と同時に公開された、117日間トレーニングずみの最新ネットワークファイルを使ってみることにします。
それぞれことなる設計の三種類のネットワークファイルがあり、コンピュータの性能によっても強さに差が出てくるので、試してみて自分の環境に合いそうなものを採用するといいでしょう(基本的にはGPU性能が上がるほど下のものが強くなるはず)。

g170-b20c256x2-s4384473088-d968438914.bin.gz - The latest and final semi-zero 20-block net (continuing extended training on games from the bigger nets). -> ファイル名の例「kata20x256.bin.gz」
g170-b30c320x2-s3530176512-d968463914.bin.gz - The latest and final semi-zero 30-block net. -> ファイル名の例「kata30x320.bin.gz」
g170-b40c256x2-s3708042240-d967973220.bin.zp - The latest and final semi-zero 40-block net. -> ファイル名の例「kata40x256.bin.gz」

こうしてダウンロードした「kata20x256.bin.gz」「kata30x320.bin.gz」「kata40x256.bin.gz」を「katago」フォルダへ移動しておきます。

4. 「KataGo」の設定
「KataGo」フォルダのなかにGTP思考エンジン本体「katago」といっしょに設定ファイル「default_gtp.cfg」が置かれており、この設定ファイル「default_gtp.cfg」の内容を編集することで、次回起動時以降「KataGo」のふるまいを変更することができます。
ここでは現時点で最新のバージョンである「KataGo v1.4.2」をインストールしましたが、「KataGo」では「v1.3」で日本ルールへの対応を打ち出し、「katago」フォルダにある「default_gtp.cfg」でその挙動を制御できるようになっています。
基本ルールにかかわる設定ファイルの変更は以下の赤字部分で、日本ルールの適用はデフォルトの「rules = tromp-taylor」をコメントアウトして、「rules = japanese」と宣言するだけです。
個別に指定するなら、青字で示した三行のコメントをはずし、指定を有効化する方法もあります。

# Default rules------------------------------------------------------------------------------------
# See https://lightvector.github.io/KataGo/rules.html for a description of the rules.
# These rules are defaults and can be changed mid-run by several custom GTP commands.
# See https://github.com/lightvector/KataGo/blob/master/docs/GTP_Extensions.md for those commands.

# Some other legal values are: "chinese", "japanese", "korean", "aga", "chinese-ogs", "new-zealand".
# KataGo does not claim to exactly match any particular human ruleset, but KataGo will try to behave
# as closely as possible given the rules it has implemented.
# rules = tromp-taylor
rules = japanese

# Use the below instead to specify an arbitrary combination of individual rules.

# koRule = SIMPLE # Simple ko rules (triple ko = no result)
# koRule = POSITIONAL # Positional superko
# koRule = SITUATIONAL # Situational superko

# scoringRule = AREA # Area scoring
# scoringRule = TERRITORY # Territory scoring (uses a sort of special computer-friendly territory ruleset)

# taxRule = NONE # All surrounded empty points are scored
# taxRule = SEKI # Eyes in seki do NOT count as points
# taxRule = ALL # All groups are taxed up to 2 points for the two eyes needed to live

# multiStoneSuicideLegal = true #Is multiple-stone suicide legal? (Single-stone suicide is always illegal).


5. GTP対応囲碁GUIとの連携方法
「KataGo」として公開されているのはGUIをもたない囲碁思考エンジン部分のみなので、グラフィカルに対局や棋譜分析をおこなうためにはGTPを解釈できる囲碁GUIと連携させる必要があります。
「katago」フォルダをたとえば「/home/username/katago」(「username」はお使いのユーザ名)に設置したとして、「/home/username/katago/katago」が、囲碁GUIに登録するべきGTP思考エンジンへの絶対パスになります。

5-1. 「Lizzie」との連携
なんといっても標準で「Lizzie」と連携するGTP出力をそなえていることが、「KataGo」の特徴のひとつでもあります。
それもあって「Lizzie」のWindows用バイナリ現行バージョンには「KataGo」が同梱されていますが、これは「v1.2」で日本ルールに対応しておらず、いっしょについてくるネットワークもかなり古い(最新版ネットワークと比べるとかなり弱い)ものです。
そのため、同梱されている「KataGo v1.2」とはべつに最新版「KataGo v1.4.2」をエンジン登録し、ネットワークも最新版を導入する方法を紹介しておきましょう。
まず「Lizzie」を立ち上げ、上部メニュバーの「設定」から「エンジン」を選択し、エンジン登録画面を開きます。
この画面で、任意のエンジン番号「エンジンx」の欄に、「KataGo」思考エンジンへの絶対パス「/home/username/katago/katago」を入力します。
それにつづけてGTP通信のための「gtp」オプション、最新ネットワークファイルを指定する「-model kata20x256.bin.gz」オプション、 設定ファイルを指定する「-config default_gtp.cfg」オプションをいっしょに指定する必要があります。
最終的には一行でまとめて「/home/username/katago/katago gtp -model kata20x256.bin.gz -config default_gtp.cfg」のようになります。
「kata20x256.bin.gz」の代わりに「kata30x320.bin.gz」や「kata40x256.bin.gz」を使いたいときは、「-model」のあとのファイル名を変更すればO.K.です。
ここまでの設定が終わったら、「Lizzie」の上部メニューバー「エンジン」からを開くと、いま設定したエンジンが「エンジンx: kata20x256.bin.gz」と表示されています。
この「エンジンx: kata20x256.bin.gz」を選択すれば、日本ルール対応の最新版「KataGo」が最新版ネットワークで起動し、「KataGo」の実力をじゅうぶんに発揮させることができます。

5-2. GTP対応囲碁GUI「GoGui」への思考エンジン登録
メニューバーの「プログラム」から「新規プログラム」を選び、あらわれた画面の「コマンド:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「katago」フォルダを「/home/username/katago」に設置した場合、「コマンド:」欄に入力する絶対パスは「/home/username/katago/katago」のようになります。
これにオプションを追加しますが、GTP通信のための「gtp」オプションのほか、「-config default_gtp.cfg」のような設定ファイル指定、「-model kata20x256.bin.gz」のようなネットワークファイル指定が使えます。
「kata20x256.bin.gz」の代わりに「kata30x320.bin.gz」や「kata40x256.bin.gz」を使いたいときは、「-model」のあとのファイル名を変更すればO.K.です。
最終的に「コマンド欄:」には、これをすべて一行でつなげて、「/home/username/katago/katago gtp -config default_gtp.cfg -model kata20x256.bin.gz」と入力します。
「OK」ボタンを押下して何度か「待機」をクリックしながら待っていると、ステイタスバーに表示されていた「プログラムの開始中」メッセージが消えて新規プログラム登録画面が開くので、「ラベル:」欄にたとえば「KataGo」などと入力して「OK」ボタンを押下します。
これで登録完了となるので、次回以降はメニューバーの「プログラム」 -> 「プログラムの起動」とすすんで「KataGo」を選ぶと、「KataGo」が起動して対局や棋譜分析に利用できるようになります。
登録した囲碁思考エンジン「KataGo」と対局するには、「KataGo」を起動した状態で、メニューバーの「対局」から「碁盤サイズ」「置石」「コンピュータの手番」を指定したうえで、「新規対局」をクリックします。
検討したい局面を指定して、そこで「KataGo」がどう打つかをみることもできます。
「KataGo」を起動したあと、メニューバーから「コンピュータの手番」を「なし」にして、どんどん石を置いていって対象となる局面をつくり、黒番の局面なら「KataGoに黒を打たせる」、白番の局面なら「KataGoに白を打たせる」アイコンをクリックします。
そのさい「GTPシェル」を開いておけば、「GoGui」と「KataGo」との通信内容が表示されるので、なにか問題がある場合は問題解決の手がかりを得ることができます。

5-3. GTP対応囲碁GUI「Sabaki」への思考エンジン登録
メニューバーの「Engines」から「Manage Engines」を選び、あらわれた画面で「Add」をクリックします。
「(Unnamed Engine)」と表示されている欄にカーソルをもっていって、わかりやすい表示名を、そして「Path」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「katago」フォルダを「/home/username/katago」に設置した場合、「(Unnamed Engine)」欄にカーソルをもっていって「KataGo」と入力、「Path」欄に絶対パス「/home/username/katago/katago」を指定します。
「(No arguments)」欄にはオプションを追加しますが、GTP通信のための「gtp」オプションのほか、「-config default_gtp.cfg」のような設定ファイル指定、「-model kata20x256.bin.gz」のようなネットワークファイル指定が使えます。
「kata20x256.bin.gz」の代わりに「kata30x320.bin.gz」や「kata40x256.bin.gz」を使いたいときは、「-model」のあとのファイル名を変更すればO.K.です。
最終的に「(No arguments)」欄には、「gtp -config default_gtp.cfg -model kata20x256.bin.gz」のように入力することになります。
登録した「KataGo」と対局するには、メニューバーの「File」から「New」をクリックします。
開いた画面で「Board Size」「Handicap」「Komi」を指定のうえ、黒番と白番それぞれの担当者を選択します。
自分が担当する手番は「Manual」を選択、「KataGo」に担当させる手番は登録されている思考エンジンの表示名から「KataGo」を選んで、「OK」ボタンを押下します。
「Sabaki」にほかの囲碁思考エンジンを登録しておいて、「KataGo」をほかの思考エンジンと対局させることもできます。
その場合は、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないかたちで対局をおこなう必要があります。
「KataGo」では、設定ファイル「default_gtp.cfg」に記述されている「ponderingEnabled = false」の部分が該当します。
「Sabaki」では、「KataGo」をもちいて記譜解析を(SGF記譜を読みこみながら、もしくはリアルタイムで入力しながら)おこなうことができます。
「F4」キーで解析モードにうつった画面で、「KataGo」の特徴のひとつである目数差での形勢表示は可能ですが、「勝率+探索数」か「目数差+探索数」の選択となり、「Lizzie」のように「勝率」「探索数」「目数差」の三つを同時に表示させることはできないようです。

6. そのほかのポイント

6-1. GPUチューニング
「KataGo」では、GPUを制御するパラメータを適切に設定するための、さまざまな方法が提供されています。
GitHubレポジトリの「How to use」や「Tuning for performance」を参考に、GPUパフォーマンスの最適化に取りくんでいきます。


参考ウェブページ一覧表(順不同)
posted by hatakazu at 20:48| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

Windows 10上に囲碁勉強環境を構築する - 「q5Go」編

コンピュータ囲碁プログラムとよばれるものは一般的に、現在の盤面の状況を分析して次の着手を導き出す囲碁思考エンジンそのものを指すことがおおく、それじたいは対局や棋譜分析に適した操作画面をそなえてないのがふつうです。
そうした操作画面は囲碁GUI(Graphical User Interface)とよばれるべつのソフトウェアで、囲碁思考エンジンを囲碁GUIと連携させることによって、グラフィカルな碁盤画面をつうじて囲碁思考エンジンとやりとりできるようになるわけです。
そして、囲碁思考エンジンと囲碁GUIとは、GTP(Go Text Protocol)という共通の言葉によってむすびつけられています。
囲碁GUIは現在の盤面の状況をGTP経由で囲碁思考エンジンに伝え、次の着手を導き出すよう命令し、囲碁思考エンジンも計算によって導き出された着手をGTP経由で囲碁GUIに返し、それを囲碁GUIがグラフィック画面の碁盤上に表示するという方法で、ユーザと囲碁思考エンジンとの対局や思考エンジンによる棋譜分析が可能になっているのです。
そのため、いろいろな囲碁思考エンジンを対局や棋譜分析に使うためには、GTPに対応した囲碁GUIをインストールして囲碁思考エンジンと連携させ、GTP対応囲碁GUIをとおして囲碁思考エンジンを制御してやる必要があることになります。
GTPに対応した囲碁GUIとしては「Leela Zero」専用GUIとして開発された「Lizzie」が、「Leela Zero」経由で「ELF OpenGo」のネットワークを使えることや操作性のよさもあいまって広く利用されていますが、ほかにも「GoGui」「Sabaki」「q5Go」などはよく使われていると思います。
ここでは、「q5Go」をWindowsにインストールする方法と、基本的な使いかたについて記述していきます。

「Lizzie」プロジェクトページ
「GoGui」プロジェクトページ
「Sabaki」プロジェクトページ
「q5Go」プロジェクトページ

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「q5Go」をインストールするさいの動作要件ですが、ハードウェア的にもソフトウェア的にも特別な要請はなく、比較的あたらしいOSが動いているコンピュータならたいてい問題なく動かせるはずです。
ただし、「q5Go」をどれだけ使えるかはけっきょく「q5Go」から利用できる囲碁思考エンジンの性能に依存するので、最低限自分が利用したいコンピュータ囲碁プログラムを動かせる環境でないと意味がありません。

2. 「q5Go」インストールファイルのダウンロード
「q5Go」の最新バージョンは「1.1.1」で、「q5Go」GitHubレポジトリの「Releases」ページから、Windows用バイナリファイルをダウンロードすることができます。
「Releases」ページに表示されている最新バージョン「1.1.1」の「Assets」タブから「q5go-1.1.1-win.zip」をクリックして、「Windows用バイナリファイル「q5go-1.1.1-win.zip」を取得します。

3. 「q5Go」のインストール
ダウンロードした「q5go-1.1.1-win.zip」を右クリックして「すべて展開」を選ぶと、「q5go-1.1.1-win」フォルダができるので、フォルダ名をわかりやすく「q5go」に変更しておきます。
この「q5go」フォルダのなかに囲碁GUI本体である「q5go.exe」や動作に必要なライブラリなどがふくまれているので、この「q5go」フォルダをそのまましかるべき場所(たとえば「C:\Users\username\q5go」など)に設置します。
必要におうじてデスクトップにショートカットを作成しておけば、今後はこのショートカットをダブルクリックするだけでかんたんに「q5go」を起動できるようになります。

4. 「q5Go」の設定
「q5Go」を起動したら、まずは「q5Go」から呼び出すコンピュータ囲碁プログラムを登録します。
起動画面真ん中下の「Settings」をクリックし、設定画面が開いたら「Gomputer Go」タブをクリックして、エンジン登録画面を開きます。
「New」をクリックして「Name:」欄にわかりやすい表示名を、そして「Executable:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「AQ」フォルダを「C:\Users\username\AQ」に設置した場合、「Name:」欄に「AQ」と入力、「Executable:」欄に絶対パス「C:\Users\username\AQ\AQ」を指定します。
「Arguments:」欄には「--rule=1 --komi=6.5 --byoyomi=10 --use_ponder=off」のようにオプションを指定しますが、「AQ」の場合は「AQ」フォルダにある設定ファイル「config.txt」から設定を読みこむスタイルなので、基本的にここは空欄のままで問題ありません。
「config.txt」の内容を上書きして、「AQ」の動作を変更したい場合だけ、ここにその内容を記述すればO.K.です。
「Fixed Komi:」欄にデフォルトのコミ(「AQ」や「KataGo」なら「6.5」が有効に作用します)を指定、「Board size:」欄には「19」と入力しておきます。
「Lizzie」と通信できるエンジンであれば記譜解析に利用できるので「Use for analysis」ボタンにチェックをいれてから、それ以外のエンジンであればチェックがはずれた状態のままで、「OK」をクリックすればエンジンの登録は完了です。
「AQ v4.0.0」は「--lizzie」スイッチを指定することで「Lizzie」での出力が可能になっていますが、「q5Go」でおなじ設定をためしてみたところ、現時点では動かせませんでした。
そのため、記譜解析に使えるのは基本的には「Leela Zero」および「KataGo」のみ、ということになりそうです。

5. 「q5Go」の基本的な使いかた
「q5Go」はGTP対応囲碁GUIとしては比較的あたらしいもので、そのぶん「Leela Zero」のもつ「Leela Zero」や「KataGo」と連携した棋譜分析機能や「KataGo」の目数差による形勢判断表示などのあたらしいトレンドにも対応しており、非常に多機能かつ使いやすい囲碁GUIとなっています。
コンピュータ囲碁プログラム相手の対局、思考エンジンどうしの対局、「Leela Zero」および「KataGo」を利用した記譜解析、SGFファイルの編集や他形式ファイルへの変換など、囲碁GUIに期待されることはひととおりできるうえに、いくつか便利な機能も追加されています。

5-1. 思考エンジンとの対局
登録した囲碁思考エンジン(たとえば「AQ」)と対局するには、起動画面で「Play against the machine」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Play with program」を選択します。
開いた画面の「Engine:」欄で登録ずみの思考エンジンから対局したいエンジン(たとえば「AQ」)を選択、「Computer plays:」の右の石アイコンをクリックして、コンピュータに黒番を打たせるか白番を打たせるかを指定します。
「Board size: 19」「Komi: 6.5」「Hnadicap:」を指定し、「Main time (minutes):」および「Overtime」を設定して、「OK」ボタンを押下すれば対局開始です。

5-2. 思考エンジンどうしの対局
起動画面で「Play online」ボタンをクリックして開いた画面で、メニューバー「File」から「Computer vs. computer play」を選択します。
「Engine (white):」欄に白番を担当させたいエンジンを、「Engine (black):」欄に黒番を担当させたいエンジンを指定し、「Board size: 19」「Komi: 6.5」などの条件と時間を設定して「OK」ボタンをクリックします。
思考エンジンどうしの対局では、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないように設定しておく必要があります。

5-3. 記譜分析
新規入力する記譜を分析するためには、起動画面で「Create a board」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「New board 19x19」を選択します。
碁盤が表示されるので、メニューバー「Edit」から「Game information」を選択し、各種情報を入力していきますが、「Komi: 6.5」を忘れずに設定しておきます。
つづいてメニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
ふたたびメニューバー「Analysis」から、今度は「Connect analysis engine」を選択すると、さきほど選択したエンジンが起動します。
あとは、リアルタイムで進行する分析を参照しながら、着手を入力していくことができます。
保存してあるSFG記譜を分析する場合は、起動画面で「Load SGF file」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Opne」を選択します。
表示された画面からディレクトリをたどって解析したいSGFファイルを見つけ、それを選択して「Open」ボタンをクリックします。
あとは新規記譜の場合とおなじように解析用エンジンを指定、立ち上げてから、カーソルキーの左右を使って記譜を分析しながら手順をすすめていきます。
候補手の色分け表示や、候補手をカーソルでポイントすることによる読み筋表示など、操作方法はほかの囲碁GUIとおなじく直感的にわかりやすくなっています。
石の上に表示されるのは勝率のみ、探索数や「KataGo」の目数形勢判断などは、右下の枠内に別途表示される仕組みになっています。

5-4. 事前記譜解析のバッチ処理
ちょっとめずらしい、「q5Go」に特徴的な機能として、思考エンジンにあらかじめ記譜を解析させて結果を書き込んだSFGファイルを出力する、バッチ処理があります。
hatakazuのコンピュータはなんとか「CUDA」環境でGPUを動かせるぎりぎりの性能しかもっておらず、「Lizzie」から思考エンジンを立ち上げてGPUをぶんぶん回していると、正直なところ負荷が大きくて操作に支障をきたしたり最悪しばらく入力を受けつけなくなったりします。
しかしたとえば寝ているあいだや外出中にこの事前記譜解析バッチ処理を走らせておけば、コンピュータにむかうときにはすでに解析を終えてデータが書き込まれたSFGファイルが準備されており、「q5Go」からそれを開いて手順を追っていくと(その時点では思考エンジンを動かす必要はなく、GPUを回してコンピュータに負担をかけることなく)解析結果を見ることができるのです。
強力なGPUを搭載しているコンピュータであれば、同時進行で解析しながらでも問題ないのでしょうが、hatakazuのようにとぼしいGPU資源しかもたないコンピュータを使っている場合はたいへん助かります。
たとえば寝ているあいだに、同時進行なら待ってられないほどの時間をかけて深く解析させておいて、それをあとから短時間でパラパラと軽快に追っていくことができるということです。
hatakazuがこの囲碁GUI「q5Go」を使っている理由、ここであらためて紹介する理由は、おもにこのバッチ処理機能が便利で重宝しているところにあります。
事前記譜解析のバッチ処理を実行するためには、起動画面で「Batch analysis」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Batch analysis」を選択します。
「Batch computer analysis」画面が表示されるので、「Choose:」欄で解析に使用する思考エンジンを指定、メニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
左側の「Number of seconds per move:」と「Maximum number of lines to add:」は、一手ごとにどれだけ時間をかけて読ませ、その読んだなかからどれだけの情報を解析結果として出力するかを指定するパラメータです。
数が大きいほど情報量は増えますが、そのぶん解析にかかる時間も長くなります。
「If fixed engine komi:」では、たとえば「PhoenixGo」のように七目半以外のコミを受けつけないエンジンに、たとえばコミ六目半の碁を解析させるときの振る舞いを制御します。
このあたりの設定を終えたら、「File to analysis」欄で解析したいSGFファイルを選んでは「Add to queue」ボタンを押して「Job queue」へ追加していきます。
解析したいSFGファイルをすべて登録したら、「Start engine」ボタンをクリックします。
「Choose:」欄で設定した解析用エンジンが立ち上がり、SFGファイルを順番に解析にかけて、その結果(候補手、読み筋、勝率の推移など)を各SFGファイルへ追加していきます。
作業が終わったSFGファイルを「q5Go」で開くと、あらかじめ思考エンジンによって解析した結果が書き込まれているので、思考エンジンを起動することなく手順を追っていくことができるというわけです。
そのさいは、まさにリアルタイムで解析しながら手順を再生するときとおなじように、候補手が勝率におうじて色分け表示され、気になる候補手をポイントすれば読み筋があらわれ、勝率の推移や探索深さのデータ、「KataGo」で解析させた場合は目数形勢判断もすべて見ることができます。


参考ウェブページ一覧表(順不同)
posted by hatakazu at 18:50| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2020年05月21日

GTP対応囲碁GUI「q5Go」のインストールと使いかた - Ubuntu編

コンピュータ囲碁プログラムとよばれるものは一般的に、現在の盤面の状況を分析して次の着手を導き出す囲碁思考エンジンそのものを指すことがおおく、それじたいは対局や棋譜分析に適した操作画面をそなえてないのがふつうです。
そうした操作画面は囲碁GUI(Graphical User Interface)とよばれるべつのソフトウェアで、囲碁思考エンジンを囲碁GUIと連携させることによって、グラフィカルな碁盤画面をつうじて囲碁思考エンジンとやりとりできるようになるわけです。
そして、囲碁思考エンジンと囲碁GUIとは、GTP(Go Text Protocol)という共通の言葉によってむすびつけられています。
囲碁GUIは現在の盤面の状況をGTP経由で囲碁思考エンジンに伝え、次の着手を導き出すよう命令し、囲碁思考エンジンも計算によって導き出された着手をGTP経由で囲碁GUIに返し、それを囲碁GUIがグラフィック画面の碁盤上に表示するという方法で、ユーザと囲碁思考エンジンとの対局や思考エンジンによる棋譜分析が可能になっているのです。
そのため、いろいろな囲碁思考エンジンを対局や棋譜分析に使うためには、GTPに対応した囲碁GUIをインストールして囲碁思考エンジンと連携させ、GTP対応囲碁GUIをとおして囲碁思考エンジンを制御してやる必要があることになります。
GTPに対応した囲碁GUIとしては「Leela Zero」専用GUIとして開発された「Lizzie」が、「Leela Zero」経由で「ELF OpenGo」のネットワークを使えることや操作性のよさもあいまって広く利用されていますが、ほかにも「GoGui」「Sabaki」「q5Go」などはよく使われていると思います。
ここでは、「q5Go」を「Ubuntu 18.04 LTS」にインストールする方法と、基本的な使いかたについて記述していきます。

「Lizzie」プロジェクトページ
「GoGui」プロジェクトページ
「Sabaki」プロジェクトページ
「q5Go」プロジェクトページ

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)
--

「q5Go」をインストールするさいの動作要件ですが、ハードウェア的にもソフトウェア的にも特別な要請はなく、比較的あたらしいOSが動いているコンピュータならたいてい問題なく動かせるはずです。
ただし、「q5Go」をどれだけ使えるかはけっきょく「q5Go」から利用できる囲碁思考エンジンの性能に依存するので、最低限自分が利用したいコンピュータ囲碁プログラムを動かせる環境でないと意味がありません。

2. 「q5Go」インストールファイルのダウンロード
「q5Go」の最新バージョンは「1.1.1」で、「Ubuntu 18.04 LTS」にインストールするには、「q5Go」GitHubレポジトリからソースをダウンロードする必要があります。
最終的には「~/q5Go」ディレクトリに実行ファイルをインストールするとして、作業用フォルダ「~/q5Go-tmp」にソースをダウンロードすることにしましょう。

$ cd
$ git clone https://github.com/bernds/q5Go q5Go-tmp


これによってホームフォルダに「~/q5Go-tmp」ディレクトリを作成のうえ、そこに必要なソースをダウンロードして、「q5Go」をインストールする準備がととのったことになります。

3. 「q5Go」のインストール
ソースをダウンロードした「~/q5Go-tmp」ディレクトリ内にビルド作業に使うサブディレクトリを作り、そこでコンパイルをおこなって実行ファイルを生成し、そして生成した実行ファイルを「~/q5Go」にインストールしてやる手順です。

$ cd q5Go-tmp
$ mkdir build
$ cd build
$ qmake ../src/q5go.pro PREFIX=/home/username/q5Go
$ make
$ make install


「qmake」コマンドが見つからない場合は「$ sudo apt install qt5-qmake」でインストールしますが、「qmake」を実行するにあたって「qt5」関連のライブラリが足りないというエラーが出るかもしれません。
hatakazuの場合は「multimedia」と「svg」のライブラリがはいってなかったので、追加でインストールする必要がありました。
最後に「q5Go」の実体である「~/q5Go/bin/q5go」ファイルをターゲットに、パスのとおった場所(たとえば「~/bin」など)からリンクを張っておきます。

$ ln -s ~/q5Go/bin/q5go ~/bin


これで「q5Go」のインストール作業は完了し、「$ q5go」コマンド一発で「q5Go」を起動できるようになりました。

4. 「q5Go」の設定
「q5Go」を起動したら、まずは「q5Go」から呼び出すコンピュータ囲碁プログラムを登録します。
起動画面真ん中下の「Settings」をクリックし、設定画面が開いたら「Gomputer Go」タブをクリックして、エンジン登録画面を開きます。
「New」をクリックして「Name:」欄にわかりやすい表示名を、そして「Executable:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「AQ」フォルダを「/home/username/AQ」に設置した場合、「Name:」欄に「AQ」と入力、「Executable:」欄に絶対パス「/home/username/AQ/AQ」を指定します。
「Arguments:」欄には「--rule=1 --komi=6.5 --byoyomi=10 --use_ponder=off」のようにオプションを指定しますが、「AQ」の場合は「AQ」フォルダにある設定ファイル「config.txt」から設定を読みこむスタイルなので、基本的にここは空欄のままで問題ありません。
「config.txt」の内容を上書きして、「AQ」の動作を変更したい場合だけ、ここにその内容を記述すればO.K.です。
「Fixed Komi:」欄にデフォルトのコミ(「AQ」や「KataGo」なら「6.5」が有効に作用します)を指定、「Board size:」欄には「19」と入力しておきます。
「Lizzie」と通信できるエンジンであれば記譜解析に利用できるので「Use for analysis」ボタンにチェックをいれてから、それ以外のエンジンであればチェックがはずれた状態のままで、「OK」をクリックすればエンジンの登録は完了です。
「AQ v4.0.0」は「--lizzie」スイッチを指定することで「Lizzie」での出力が可能になっていますが、「q5Go」でおなじ設定をためしてみたところ、現時点では動かせませんでした。
そのため、記譜解析に使えるのは基本的には「Leela Zero」および「KataGo」のみ、ということになりそうです。

5. 「q5Go」の基本的な使いかた
「q5Go」はGTP対応囲碁GUIとしては比較的あたらしいもので、そのぶん「Leela Zero」のもつ「Leela Zero」や「KataGo」と連携した棋譜分析機能や「KataGo」の目数差による形勢判断表示などのあたらしいトレンドにも対応しており、非常に多機能かつ使いやすい囲碁GUIとなっています。
コンピュータ囲碁プログラム相手の対局、思考エンジンどうしの対局、「Leela Zero」および「KataGo」を利用した記譜解析、SGFファイルの編集や他形式ファイルへの変換など、囲碁GUIに期待されることはひととおりできるうえに、いくつか便利な機能も追加されています。

5-1. 思考エンジンとの対局
登録した囲碁思考エンジン(たとえば「AQ」)と対局するには、起動画面で「Play against the machine」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Play with program」を選択します。
開いた画面の「Engine:」欄で登録ずみの思考エンジンから対局したいエンジン(たとえば「AQ」)を選択、「Computer plays:」の右の石アイコンをクリックして、コンピュータに黒番を打たせるか白番を打たせるかを指定します。
「Board size: 19」「Komi: 6.5」「Handicap:」を指定し、「Main time (minutes):」および「Overtime」を設定して、「OK」ボタンを押下すれば対局開始です。

5-2. 思考エンジンどうしの対局
起動画面で「Play online」ボタンをクリックして開いた画面で、メニューバー「File」から「Computer vs. computer play」を選択します。
「Engine (white):」欄に白番を担当させたいエンジンを、「Engine (black):」欄に黒番を担当させたいエンジンを指定し、「Board size: 19」「Komi: 6.5」などの条件と時間を設定して「OK」ボタンをクリックします。
思考エンジンどうしの対局では、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないように設定しておく必要があります。

5-3. 記譜分析
新規入力する記譜を分析するためには、起動画面で「Create a board」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「New board 19x19」を選択します。
碁盤が表示されるので、メニューバー「Edit」から「Game information」を選択し、各種情報を入力していきますが、「Komi: 6.5」を忘れずに設定しておきます。
つづいてメニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
ふたたびメニューバー「Analysis」から、今度は「Connect analysis engine」を選択すると、さきほど選択したエンジンが起動します。
あとは、リアルタイムで進行する分析を参照しながら、着手を入力していくことができます。
保存してあるSFG記譜を分析する場合は、起動画面で「Load SGF file」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Opne」を選択します。
表示された画面からディレクトリをたどって解析したいSGFファイルを見つけ、それを選択して「Open」ボタンをクリックします。
あとは新規記譜の場合とおなじように解析用エンジンを指定、立ち上げてから、カーソルキーの左右を使って記譜を分析しながら手順をすすめていきます。
候補手の色分け表示や、候補手をカーソルでポイントすることによる読み筋表示など、操作方法はほかの囲碁GUIとおなじく直感的にわかりやすくなっています。
石の上に表示されるのは勝率のみ、探索数や「KataGo」の目数形勢判断などは、右下の枠内に別途表示される仕組みになっています。

5-4. 事前記譜解析のバッチ処理
ちょっとめずらしい、「q5Go」に特徴的な機能として、思考エンジンにあらかじめ記譜を解析させて結果を書き込んだSFGファイルを出力する、バッチ処理があります。
hatakazuのコンピュータはなんとか「CUDA」環境でGPUを動かせるぎりぎりの性能しかもっておらず、「Lizzie」から思考エンジンを立ち上げてGPUをぶんぶん回していると、正直なところ負荷が大きくて操作に支障をきたしたり最悪しばらく入力を受けつけなくなったりします。
しかしたとえば寝ているあいだや外出中にこの事前記譜解析バッチ処理を走らせておけば、コンピュータにむかうときにはすでに解析を終えてデータが書き込まれたSFGファイルが準備されており、「q5Go」からそれを開いて手順を追っていくと(その時点では思考エンジンを動かす必要はなく、GPUを回してコンピュータに負担をかけることなく)解析結果を見ることができるのです。
強力なGPUを搭載しているコンピュータであれば、同時進行で解析しながらでも問題ないのでしょうが、hatakazuのようにとぼしいGPU資源しかもたないコンピュータを使っている場合はたいへん助かります。
たとえば寝ているあいだに、同時進行なら待ってられないほどの時間をかけて深く解析させておいて、それをあとから短時間でパラパラと軽快に追っていくことができるということです。
hatakazuがこの囲碁GUI「q5Go」を使っている理由、ここであらためて紹介する理由は、おもにこのバッチ処理機能が便利で重宝しているところにあります。
事前記譜解析のバッチ処理を実行するためには、起動画面で「Batch analysis」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Batch analysis」を選択します。
「Batch computer analysis」画面が表示されるので、「Choose:」欄で解析に使用する思考エンジンを指定、メニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
左側の「Number of seconds per move:」と「Maximum number of lines to add:」は、一手ごとにどれだけ時間をかけて読ませ、その読んだなかからどれだけの情報を解析結果として出力するかを指定するパラメータです。
数が大きいほど情報量は増えますが、そのぶん解析にかかる時間も長くなります。
「If fixed engine komi:」では、たとえば「PhoenixGo」のように七目半以外のコミを受けつけないエンジンに、たとえばコミ六目半の碁を解析させるときの振る舞いを制御します。
このあたりの設定を終えたら、「File to analysis」欄で解析したいSGFファイルを選んでは「Add to queue」ボタンを押して「Job queue」へ追加していきます。
解析したいSFGファイルをすべて登録したら、「Start engine」ボタンをクリックします。
「Choose:」欄で設定した解析用エンジンが立ち上がり、SFGファイルを順番に解析にかけて、その結果(候補手、読み筋、勝率の推移など)を各SFGファイルへ追加していきます。
作業が終わったSFGファイルを「q5Go」で開くと、あらかじめ思考エンジンによって解析した結果が書き込まれているので、思考エンジンを起動することなく手順を追っていくことができるというわけです。
そのさいは、まさにリアルタイムで解析しながら手順を再生するときとおなじように、候補手が勝率におうじて色分け表示され、気になる候補手をポイントすれば読み筋があらわれ、勝率の推移や探索深さのデータ、「KataGo」で解析させた場合は目数形勢判断もすべて見ることができます。


参考ウェブページ一覧表(順不同)
posted by hatakazu at 21:46| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする