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 對局、讓棋力更上一層樓!
谢谢指教
咦?有幫助到您嗎?
如果有就太好了!