Skip to content

[Linux] 如何在 Linux 電腦上安裝 LeelaZero

Last Updated on 2021-06-04 by Clay

LeelaZero 在圍棋愛好者中幾乎沒有人不知道它的大名,與中國著名的『絕藝』相同,都是追隨著 AlphaGo Zero 使用 Reinforcement Learning (RL) 訓練出的圍棋 AI。但與絕藝不相同的是,LeelaZero 是一個開源的免費項目,我們可以簡單地在 Github 上看到這個專案:https://github.com/leela-zero/leela-zero

而我們若是想要在自己的電腦上安裝個 LeelaZero 陪我們過過招,也並不是什麼太難的挑戰。今天我打算紀錄如何在 Linux 的作業系統上安裝 LeelaZero,比較多圍棋愛好者使用的 Windows 我會在另外寫一篇。 (手邊剛好沒有 Windows 的電腦)

要安裝 LeelaZero,其實只需要以下幾個簡單的步驟:

  • 確認顯示卡驅動 (並非使用 CPU only 版本)
  • 下載 LeelaZero 程式本體
  • 下載 LeelaZero 權重
  • 下載可以對弈的圖形化界面 (今天的筆記以 Sabaki 為例)

那麼,我們就開始吧!


確認顯示卡驅動

若是顯示卡為 Nvidia ,那麼可以至 https://www.nvidia.com/download/index.aspx?lang=en-us 官網下載符合你顯示卡的驅動程式。

顯示卡的資訊可以由以下指令查看:

ubuntu-drivers devices

安裝過程也許可以參考我之前寫過的【在 Ubuntu 18.04 上安裝 CUDA、CuDNN】 當中關於 GPU 的部份。


下載 LeelaZero

首先,我們可以按照 Github 上的 README.md 一步步使用以下指令安裝。首先安裝 OpenCL —— 可以在各種不同硬體設備上硬體加速的處理器框架。

sudo apt install clinfo && clinfo

然後 git clone 專案:

git clone https://github.com/leela-zero/leela-zero
cd leela-zero
git submodule update --init --recursive

安裝相關套件:

sudo apt install cmake g++ libboost-dev libboost-program-options-dev libboost-filesystem-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev

cmake:

mkdir build && cd build
cmake ..
cmake --build .

然後,我們應該會在 leela-zero/build/ 資料夾底下看見 "leelaz" 程式。至此,本體安裝告一段落。

然而,空有程式本體沒有權重,神經網路的模型依然無法運作,所以我們接著便安裝權重網路。


下載 LeelaZero 權重

下載 LeelaZero 權重時若無特殊需求,可以直接下載最新版即可。

wget http://zero.sjeng.org/best-network

然而為了讓 LeelaZero 能夠確實使用這個權重網路,我們要將這個權重網路複製一份至以下路徑:

cp best-network ~/.local/share/leela-zero/

然而,若是要直接使用圖形化界面如 Sabaki 之類程式開啟對弈,那麼此步驟或可省略,畢竟之後會直接填入權重網路路徑。


下載可以對弈的圖形化界面

再次聲明,本次筆記以 Sabaki 為例。

首先,先安裝 npm。npm 通常是隨同 NodeJS 一同安裝的套件管理工具,如果沒有使用過,那麼需要先安裝才能使用以下安裝時的指令。

sudo apt install npm

然後 git clone Sabaki 的專案並安裝:

git clone https://github.com/SabakiHQ/Sabaki.git
cd Sabaki
npm install
npm run build

安裝完後,在 Sabaki/dist/linux-unpacked/ 底下便會有 "sabaki" 的程式,使用

./sabaki

將其打開。

會看到這樣的程式被開啟。


設定 LeelaZero 引擎

當然,光是安裝好 Sabaki 還是沒辦玍下棋的。我們需要在 Sabaki 上設定對應到剛剛裝的 LeelaZero 程式路徑。

點擊 Engines => Manage Engines... 進入引擎管理的地方:

  • (Unnamed Engine) : 可以自己設定想要的引擎名稱
  • Path : 這裡設定要 Leelaz 的路徑。以我為例,便是 /home/clay/Go/leela-zero/build/leelaz
  • No arguments : 填入自己想要的參數

參數部份比較複雜一點,可以直接參考我的填:

-g --noponder -p 1 -w /home/clay/Go/leela-zero/best-network

-p 為 playout 的數量,基本上設定的數字越大 AI 越厲害。
-w 後方接想要使用的權重檔案即可。

以下列出參數的意義,大家可以參考看看:


後記

在 Linux 上關於 LeelaZero 的教學其實不太必要...... 通常會選擇用 Linux 作業系統的多半都對這些流程駕輕就熟。奈何手邊剛好沒有 Windows 的作業系統,便先寫了 Linux 版本的了。

之後會再補一篇 Windows 版本的安裝方法、也會再寫一篇介紹 Lizzie 的。

希望大家都能使用 AI 對局、讓棋力更上一層樓!

2 thoughts on “[Linux] 如何在 Linux 電腦上安裝 LeelaZero”

Leave a Reply取消回覆

Exit mobile version