最近發生諸多事項... 所以這邊就延遲了 (默)
首先, 這個 Benchmark 限制深度,
但是搜尋節點數只有
單執行緒的時候能夠確保
每次 bench 在一樣的深度得到一樣多的搜尋節點數.
多執行緒並用時, 在同一個 YaneuraOu 執行時間跑好幾次 bench 的平均結果,
和多次開啟 YaneuraOu 執行同一種 bench 的平均結果,
可能存在差距. 此差距對於 tournament 版尤其明顯,
詳情可以參考
已公開的評測資訊.
主要是對於 tournament 版本, 在同一個程式執行中
第一次 bench 大約比第二次以後 bench 慢了一些.
目前採取的仍然是四次的平均值當作文章中的列表.
而在使用多執行緒時, 每次 bench 的搜尋節點數可能有所不同.
在深度變得更深的時候, 往往會造成計算節點數的明顯差距.
這部份應該會另行說明
(Part 小數點的番外篇可能)接著, 針對於 YaneuraOu 的評測局面,
在探尋使用其他盤面當 benchmark 的可能性.
原本認為使用序中盤的難所就應該可以獲得比較穩定的結果,
接著是考慮初手是被王手限定應手的局面,
然而不論走哪一手都還距離被將死很遠的狀況.
最後在發現使用 YaneuraOu 預設評測局面時,
搜尋深度到達 23 就必須搜尋超過一千億個節點以後,
才理解到終盤互角局面可能才是真正的 nps 壓力測試.
可是之前的中盤難所和王手限定還是有可能在多次評測中出現
不同的第一候選手(當 MultiPV > 1, 且深度沒有到達足以解盤的時候)
也許這邊就是電王戰真正的精細度和勝負所在了.
對於將棋這類遊戲需要有精準的把對方將死的方法的遊戲,
這個感覺不太可能輕易的使用 Reinforcement learning + Deep learning 解決,
始終還是認為這是將棋象棋等等跟圍棋最大的不同點.
所以承上回, 原先的進度狀況...
1. Tournament 跟一般版的差距.
(Part2 已完成)2. AVX2 和 SSE4.2 的差距. (需要可使用 AVX2 的 CPU)
(Part5 預定)3. 評估參數的差距: ShinYane/elmo/relmo8/yaselmo 預定.
(Part3 本文預定)4. MultiPV 的差距: MultiPV > 1 的時候, 單執行緒為 bench 1024 1, 多執行緒為 bench 4096 #t , 不考慮使用更深的深度的原因已經寫在爆增的記憶體需求當中.
(Part4 預定)5. Windows vs Linux: 除了本來就裝了 linux 的機器以外, i7-6700hq 雙系統, 其他的如果可以臨機, 就可以使用 linux live stick 測試 linux 環境下的表現.
(Part6 預定)多執行緒的部份皆因為前面提到的問題,
導致算好的結果需要進一步驗證,
所以目前只有單執行緒的版本可以繼續整理之前的結果寫出來.
以下是使用不同的評估參數, 不同的 CPU 上面最好的版本的單執行緒評測結果.
在此使用的評估參數總共有以下四種:
ShinYane (真王, 20161010), elmo (20170127), relmo8 ((re0 epoch8 + elmo) / 2), yaselmo (20170705).
CPU |
kNPS |
clock |
Yane version |
Eval |
OS |
i7-720qm |
418 |
1.6Ghz T 2.8Ghz |
4.77 64SSE4.2 |
ShinYane |
Win 10 Pro |
i3-3220 |
555 |
3.3Ghz |
4.77 64SSE4.2 |
ShinYane |
Win 10 Ent |
i7-2600 |
790 |
3.4Ghz |
4.77 64SSE4.2 T |
ShinYane |
Xubuntu 16.04.3 |
FX-8320 |
403 |
3.5Ghz T 4.0Ghz |
4.77 64SSE4.2 |
ShinYane |
Win 10 Pro |
i5-7200U |
825 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
ShinYane |
Win 10 Pro |
i7-6700hq |
926 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
ShinYane |
Win 10 Home |
E5-2680 |
723 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
ShinYane |
Ubuntu 16.04.3 |
i7-720qm |
423 |
1.6Ghz T 2.8Ghz |
4.77 64SSE4.2 |
elmo |
Win 10 Pro |
i3-3220 |
564 |
3.3Ghz |
4.77 64SSE4.2 |
elmo |
Win 10 Ent |
i7-2600 |
812 |
3.4Ghz |
4.77 64SSE4.2 T |
elmo |
Xubuntu 16.04.3 |
FX-8320 |
388 |
3.5Ghz T 4.0Ghz |
4.77 64SSE4.2 |
elmo |
Win 10 Pro |
i5-7200U |
880 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
elmo |
Win 10 Pro |
i7-6700hq |
961 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
elmo |
Win 10 Home |
E5-2680 |
742 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
elmo |
Ubuntu 16.04.3 |
i7-720qm |
423 |
1.6Ghz T 2.8Ghz |
4.77 64SSE4.2 |
relmo8 |
Win 10 Pro |
i3-3220 |
562 |
3.3Ghz |
4.77 64SSE4.2 |
relmo8 |
Win 10 Ent |
i7-2600 |
694 |
3.4Ghz |
4.77 64SSE4.2 T |
relmo8 |
Xubuntu 16.04.3 |
FX-8320 |
400 |
3.5Ghz T 4.0Ghz |
4.77 64SSE4.2 |
relmo8 |
Win 10 Pro |
i5-7200U |
894 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
relmo8 |
Win 10 Pro |
i7-6700hq |
1040 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
relmo8 |
Win 10 Home |
E5-2680 |
652 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
relmo8 |
Ubuntu 16.04.3 |
i7-720qm |
391 |
1.6Ghz T 2.8Ghz |
4.77 64SSE4.2 |
yaselmo |
Win 10 Pro |
i3-3220 |
519 |
3.3Ghz |
4.77 64SSE4.2 |
yaselmo |
Win 10 Ent |
i7-2600 |
724 |
3.4Ghz |
4.77 64SSE4.2 T |
yaselmo |
Xubuntu 16.04.3 |
FX-8320 |
376 |
3.5Ghz T 4.0Ghz |
4.77 64SSE4.2 |
yaselmo |
Win 10 Pro |
i5-7200U |
972 |
2.5Ghz T 3.1Ghz |
4.77 64AVX2 T |
yaselmo |
Win 10 Pro |
i7-6700hq |
970 |
2.6Ghz T 3.5Ghz |
4.77 64AVX2 T |
yaselmo |
Win 10 Home |
E5-2680 |
663 |
2.7Ghz T 3.5Ghz |
4.77 64SSE4.2 T |
yaselmo |
Ubuntu 16.04.3 |
因故未能放上使用多執行緒版本尚請見諒.
4.77 版其實除了對於 MultiPV > 1 的評測穩定度大幅改善以外,
也稍微讓 SSE4.2 版本的程式加速了少許.
不過對於這些已經練過不知道幾百幾千億局的評估參數而言,
不同的評估參數影響效率較為有限, 最大可能誤差略為超過 10%.
(多執行緒時每次 bench 的計算節點數量誤差甚至在自定譜曾經高達一倍,
這樣測出來的速度就有可能出現顯著差異)