Leela_Zero

**Leela Zero** 是由比利時程式設計師 Gian-Carlo Pascutto 起頭所開發的電腦圍棋軟體，以及相關的運算計畫。專案在 2021 年 2 月 15 日已經中止，並推薦改參與 SAI 與 KataGo。

## 簡介

Leela Zero 是依照 DeepMind 在科學期刊《自然》上對於 AlphaGo Zero 所發表的論文《Mastering the game of Go without human knowledge》所實做出的開源電腦圍棋程式，也就是不使用人類棋譜與累積的圍棋知識，僅實做圍棋規則，使用單一類神經網路從自我對弈中學習（不像 AlphaGo 以人類角度思考，設計了 Policy Network 與 Value Network）。

軟體使用蒙特卡洛樹搜尋（MCTS）類比與 ResNet，在蒙特卡洛樹搜尋類比與自我訓練時都採用 Tromp–Taylor 規則，這個規則的貼目雖然與中國規則相同，都是由黑棋貼 7.5 目，但在某些情境下可能會有差異。

程式碼部份，使用者端對弈的程式碼與訓練的程式碼以 GPLv3 授權公開，分散式運算的伺服器端程式則以 AGPLv3 授權公開；資料的部份，訓練對弈資料以及訓練對弈的原始資料也可以公開下載。

## 與論文的差異

初期時 Leela Zero 在確認演算法以及程式是否實做正確，所以對論文裡提到的部份參數進行調整，以加快驗證速度：

**類神經網路的架構**
: AlphaGo Zero 使用 20 blocks 或 40 blocks，配上 256 filters。

　
: Leela Zero 是逐步提昇類神經網路的大小（在近期的版本開始使用 Net2Net，將舊的網路資料轉換到新的網路上），一開始使用
* 1 block x 8 filters（2017 年 11 月 10 日，第 0 代），並逐步換成
* 4 blocks x 32 filter（2017 年 11 月 17 日，第 2 代，訓練約 1.9 萬盤時）、
* 5 blocks x 64 filters（2017 年 11 月 21 日，第 5 代，約 13.7 萬盤時）、
* 6 blocks x 128 filters（2018 年 1 月 20 日，第 58 代，約 286 萬盤時）、
* 10 blocks x 128 filters（2018 年 3 月 5 日，第 92 代，約 481 萬盤時）、
* 15 blocks x 192 filters（2018 年 4 月 9 日，第 117 代，約 664 萬盤時）、
* 20 blocks x 256 filters（2018 年 7 月 28 日，第 158 代，約 872 萬盤時），到目前使用的
* 40 blocks x 256 filters（2018 年 9 月 4 日，第 174 代，約 997 萬盤時）。

**自我對戰訓練的盤數**
: AlphaGo Zero 使用最新的 50 萬盤訓練。

　
: Leela Zero 在 10 blocks 前（不含 10 blocks）使用最新的 25 萬盤自我對戰結果訓練（在 2018 年 1 月 1 號前因為有 bug，導致只會使用最新的（約）16 萬盤自我對戰結果進行訓練），在 10 blocks x 128 filters 後改用最新的 50 萬盤自我對戰結果訓練。

**蒙特卡洛樹搜尋（MCTS）的類比的次數**
: AlphaGo Zero 在論文裡提到自我訓練或正式對弈時，每一步都使用 1600 次類比。

　
: Leela Zero 一開始使用與 AlphaGo Zero 的論文相同的 1600 次，但後來改為 3200 次。

這些調整是希望在比較小的網路與訓練盤數下快速確認程式的正確性。在每個階段確認沒有重大問題以及 bug 後會重新評估調昇，並且正式公開向社群尋求運算資源。

另外作者發現在原論文裡有瑕疵：論文裡的第一層輸入只有 17 個，會導致白棋較容易看到棋盤邊緣（指類神經網路），這在 Leela Zero 內被修正為 18 個。

## 目標

早期 Leela Zero 剛出來時，Gian-Carlo Pascutto 的目標是重製 AlphaGo Zero 的論文結果。在後來受到更多關注後，有更多的計算資源與人力投入 Leela Zero 計畫之中，使得 Leela Zero 的強度迅速提昇，甚至已經超越先前開發的 Leela 以及其他對手。

現在的目標是希望在行動電話上也能夠有足夠強的圍棋軟體可以使用。

## 訓練

由於作者估算以當時的高階硬體（以 Nvidia 的 GeForce GTX 1080 Ti 估算）大約需要 1700 年的計算量才能達到 AlphaGo Zero 自我學習 2900 萬盤的水平，所以在 2017 年十一月開始，讓自願者使用自己的硬體，透過作者群開發的 AutoGTP 程式參加分散式運算計畫（以 GTP 自動與伺服器溝通以取得計算工作）：

* 在計畫啟動的 34 天後（2017 年 12 月 13 日），自我對弈的訓練量超過 100 萬盤。
* 59 天後（2018 年 1 月 8 日）超過 200 萬盤。
* 74 天後（2018 年 1 月 23 日）超過 300 萬盤。
* 100 天後（2018 年 2 月 18 日）超過 400 萬盤。
* 119 天後（2018 年 3 月 9 日）超過 500 萬盤。
* 138 天後（2018 年 3 月 28 日）超過 600 萬盤。
* 166 天後（2018 年 4 月 25 日）超過 700 萬盤。
* 218 天後（2018 年 6 月 16 日）超過 800 萬盤。
* 261 天後（2018 年 7 月 29 日）超過 900 萬盤。
* 299 天後（2018 年 9 月 5 日）超過 1000 萬盤。

2018 年初，志願者申請到超級電腦的部份計算資源，印第安納大學的 Big Red II（申請到 3360 cores，約該台超級電腦的 10.7% 資源），另外自 0.10 版支援純 CPU 版本（不需 GPU），現有演算法的最佳化以及新演算法的引入，這些因素大幅提昇了整體的計算速度。

Leela Zero 官方曾鼓勵參與者使用 Google Colaboratory 所提供的免費運算資源幫助訓練，但後來因為檔案裡的操作步驟過時而失效而移除檔案。

在 2019 年十一月時，由於 Gian-Carlo Pascutto 個人時間的限制，加上最近的 50 萬盤沒有推進，而且其他的專案有不錯的前景（包括 SAI 與 KataGo），宣佈先將訓練盤數加到 75 萬盤以確認是否到了極限，並暫定於 2020 年 1 月 31 日結束這次長達兩年的訓練。

## 合作

### Minigo

Minigo 同樣也是依照 AlphaGo Zero 論文所獨立實做出來的軟體，而 Minigo 專案取得 Google 贊助的計算資源，透過大量計算資源得到品質還不錯的訓練網路資料。因此 Leela Zero 的團隊與 Minigo 的團隊基於雙方的經驗，討論參數的調整能帶來的改善，以及雙方訓練資料共享的可能性。

### ELF OpenGo

ELF OpenGo 是 Facebook 依照 AlphaGo Zero 與 AlphaZero 所實做出來的軟體，由於 Facebook 使用大量資源運算（使用 2000 顆 GPU 計算兩週）並公開訓練網路資料，Leela Zero 團隊得以將資料轉換為 Leela Zero 可以使用的格式（Hash 值為 `62b5417b`），並進行分析。

Leela Zero 後來決定將 ELF OpenGo 的資料混入自我對弈，在 2018 年 5 月 7 日後引入了 ELF OpenGo 的資料。

## 成績

### CGOS

在 CGOS（英語：Computer Go Server）上會有志願者將每次演化的版本掛上進行測試（19x19）以比較與其他圍棋軟體的差距。

#### 名稱

程式名稱會以 `LZ` 或 `LeelaZero` 之類的名稱命名。大致上有幾個不同的版本，像是使用訓練網路的 Hash 值為名（如 `LZ-d6f3a6-t1-p1600`），或是使用訓練世代的次數為名（如 `LZ-000-p1600-t1-r1`）。

#### 特例

有幾個特別的訓練網路不是自我訓練產生，而是透過人類頂尖棋手的對弈棋譜產生，用以作為階段性的指標。

名為 `LZ-HBest1-t1-p1600` 的帳號是使用 Leela Zero 的程式加上以人類棋譜計算出的 20 blocks x 256 filters 訓練網路所產生的的版本（BayesElo 約 2650 分）。

另一個帳號是 `LZH256x20-t4-nolim`，也是使用 20 blocks x 256 filters 訓練網路，但以 CGOS 的時間限制，找出 Leela Zero 的程式與人類棋譜訓練的網路可以達到的最高成績（BayesElo 約 3610 分）。

#### 分數

另外由於 CGOS 可以任意註冊名稱，有些人會拿較強的軟體摸魚混珠（而非使用 Leela Zero），因此 CGOS 上面的數據需要確認後才有參考價值。在 CGOS 上測試比較完整的基準參數是 `t1-p1600`（Thread 1、Playouts 1600），但目前（2018 年四月）已暫時沒有使用這個參數測試訓練網路：

* 在 `LZ-c99f1a-t1-p1600`（第 36 代，約 136 萬盤訓練）的 BayesElo 分數約 1830 分，超越 CGOS 的分數基準 GNU Go（1800 分），不過此時對 GNU Go 的勝率還不高。
* 在 `LZ-097dee-t1-p1600`（第 41 代，約 146 萬盤訓練）後可以穩定對 GNU Go 獲勝。此時 BayesElo 分數約 2000 分。
* 在 `LZ-c83e1b-t1-p1600`（第 57 代，約 266 萬盤訓練）的 BayesElo 分數約 2480 分，這是最後一個 5 blocks x 64 filters 的版本。
* 在 `LZ-ed002c-t1-p1600`（第 58 代，約 286 萬盤訓練）的 BayesElo 分數約 2460 分，這是第一個 6 blocks x 128 filters 的版本。
* 在 `LZ-5773f4-t1-p1600`（第 65 代，約 314 萬盤訓練）的 BayesElo 分數約 2670 分，是第一個在相同執行參數下，超越以人類棋譜訓練出的版本（即 `LZ-HBest1-t1-p1600` 的 2650 分）。

### 野狐圍棋

2017 年 12 月 16 日，貼吧上的志願者以 `alphaleela` 的帳號在野狐圍棋上開始測試，以快棋對弈為主，並隨時更新為最新版的訓練網路。於 2017 年 12 月 30 日（約 150 萬盤訓練）從級位升到一段，在 2018 年 3 月 8 日（約 497 萬盤訓練）升到九段。

### 2018 世界人工智慧圍棋大賽

在預賽取得第三名，僅輸給 PhoenixGo 與絕藝。

## 相關連結

* AlphaGo Zero，Leela Zero 所參考的論文所實做的電腦圍棋軟體。
* ELF OpenGo，由 Facebook 團隊依照 AlphaGo Zero 論文所實做的開源電腦圍棋軟體，並將訓練的數據被 Leela Zero 團隊納入。
* Leela，同作者的上一代電腦圍棋軟體。
* Minigo，另外一套開源電腦圍棋軟體。
* SAI，改自 Leela Zero 但支援動態貼目的圍棋軟體。
* 電腦圍棋
* 圍棋軟體

## 參考資料

## 註解

## 外部連結

* Leela Zero 的程式碼 （英文）
* Leela Zero （頁面存檔備份，存於網際網路檔案館），Leela Zero 的訓練狀態頁。（英文）
* leela-zero eval (0x0): Leela-Zero (eval with more cross play) （頁面存檔備份，存於網際網路檔案館） （英文）
* Leela Zero （頁面存檔備份，存於網際網路檔案館） on GitHub
* Leela Zero （頁面存檔備份，存於網際網路檔案館） on Sensei's Library
* Play Leela Zero （頁面存檔備份，存於網際網路檔案館） on ZBaduk