利用者:Singaporeloverz/sandbox
作者 | David J. Wu[1] |
---|---|
開発元 | David J. Wu |
初版 | 2019年2月27日[2] |
最新版 |
1.9.1
/ 2021年6月30日[2] |
リポジトリ |
github |
プログラミング 言語 | C++、Python |
種別 | コンピュータ囲碁 |
ライセンス | MIT License |
公式サイト |
github |
作者 | David J. Wu and Tycho Tatitscheff[3] |
---|---|
開発元 | David J. Wu and Tycho Tatitscheff |
初版 | 2020年11月8日[4] |
最新版 |
v0.9
/ 2020年12月14日[5] |
リポジトリ |
github |
プログラミング 言語 | Python |
種別 | コンピュータ囲碁 |
ライセンス | MIT License |
公式サイト |
katagotraining |
KataGo(カタゴ)はDavid J. Wu(通称 lightvector)によって開発されたコンピュータ囲碁プログラムである。
概要
[編集]DeepMindが発表したAlphaGo ZeroとAlphaZero論文に基づいてDavid J. WuがKataGoを作成した[6]。さらに、DeepMindの論文に加え、多くの関連研究と独自の研究の結果、強化学習の速度を大幅に向上させた(50倍以上[7]:1)[1]。また、ニューラルネットワークのデータが公開されている、世界で最も強いコンピューター囲碁ソフトウェアの1つとなった。
KataGoによって実装されたコンピュータ囲碁プログラムには以下が含まれる [1]:
- セルフプレイトレーニングプログラム (C++、Python 3、TensorFlowで実装)
- ソフトウェアで操作できるGTPエンジン(C++で実装)
Jane Street Capital(作者所属の会社)はトレーニングに必要な計算資源加えて、トレーニング結果(ニューラルネットワークデータ)も公開している[1]。
KataGoは囲碁AI検討ソフト「Lizzie」の思考エンジンに採用された(2019年10月1日に公開されたLizzieバージョン0.7以降)。
また、その豊富な分析機能により、囲碁オンライン分析Webサイト「AI Sensei」でデフォルトの分析エンジンとして使用されている[8]。
構成
[編集]KataGoを実行するには実行プログラムとウエイト(weight)ファイル(ニューラルネットワーク)が必要。
他の囲碁AIとの差異
[編集]AlphaZero
[編集]オープンソースとオープンデータに加えて、KataGoとAlphaZeroの主な違いは[7]、強化学習のコストが大幅に削減されるため、自宅のPCでも比較的高いレベルの強化学習を行える。数日でアマチュア高段者に到達した[1]。
Leela Zero
[編集]KataGoとLeelaZeroの主な違いは、KataGoのGTPエンジンが"kata-analyze"コマンドをサポートしている事で。フロントエンドプログラム(Lizzieなど)がKataGoの目数差の分析を取得できるため、人間が目数計算の判断の助けになる。LeelaZeroなどに見られるの終盤のヨセで損をする手を提示する可能性を減らせる[1]。
もう1つの違いは、KataGoはOpenCL(v1.2以降でサポート[9])とCUDA[1](OpenCLでは、最新バージョンが最適化されており、CUDAバージョンよりも数倍高速ではないが、2つのバージョンはほぼ同じ)の両方をサポートしている。 LeelaZeroはOpenCLのみのをサポート[10]。
強化学習の過程
[編集]最初のバージョン
[編集]ウェイト(ニューラルネット)名 | バージョン | 注釈 | 訓練日数 | Elo |
---|---|---|---|---|
b6c96-s103408384-d26419149 | v1.0 | 6x96 | - | - |
b10c128-s101899520-d60734663 | 10x128 | - | - | |
b15c192-s279618816-d164990022 | 15x192 | - | - |
最初のバージョン(番号はg65,v1.0
)は2019年2月に35 NVIDIA Tesla V100を使用して7日間強化学習が行われた。6ブロックx96フィルターから15ブロックx192フィルターまで[11]、棋力はLeelaZeroの(ニューラルネットワークの130番目に相当する)LZ130とほぼ同じになった[12]。これは人間の棋力を既に超えた[1]。
2番目のバージョン
[編集]ウェイト(ニューラルネット)名 | バージョン | 注釈 | 訓練日数 | Elo |
---|---|---|---|---|
g104-b6c96-s97778688-d23397744 | v1.1 | 6x96最終版 | 0.75 | -1146 |
g104-b10c128-s110887936-d54937276 | 10x128 | 1.75 | -476 | |
g104-b15c192-s297383936-d140330251 | 15x192最終版 | 7.5 | 327 | |
g104-b20c256-s447913472-d241840887 | 20x256最終版 | 19 | 908 |
2番目のバージョン(番号はg104,v1.1
)は2019年5月と6月に28個のNVIDIATesla V100で、6ブロックx96フィルターから20ブロックx256フィルターまで強化学習が行われた[13]。ハイパーパラメータが大幅に改善されたため、わずか3.5日で最初のバージョンの棋力を超えた[1][14]。さらに、LCB(英語: Lower confidence bound)の導入により、棋力が大幅に向上した[14]。 最後に、19日間のトレーニングの後、20ブロックバージョンが作成され、棋力が「LZ-ELFv2」(ELF OpenGoのv2のウェイトファイルをLeela Zeroで動かしたもの)を上回った、Leela Zeroの40ブロックバージョンと比較するところ、LZ200と同等の棋力になった[1]。
3番目のバージョン
[編集]ウェイト(ニューラルネット)名 | バージョン | 注釈 | 訓練日数 | Elo |
---|---|---|---|---|
g170-b6c96-s175395328-d26788732 | 6x96最終版 | 0.75 | -1184 | |
g170-b10c128-s197428736-d67404019 | 10x128最終版 | 1.75 | -280 | |
g170e-b10c128-s1141046784-d204142634 | v1.3 | 拡張再訓練10x128 | - | 300 |
g170-b20c256x2-s668214784-d222255714 | 20x256 | 15.5 | 959 | |
g170-b15c192-s497233664-d149638345 | 15x192 | 7.5 | 512 | |
g170-b20c256x2-s1039565568-d285739972 | v1.3.1 | 20x256 | 21.5 | 1073 |
g170e-b15c192-s1305382144-d335919935 | v1.3.1-nets | 拡張訓練15x192 | - | 867 |
g170-b20c256x2-s1420141824-d350969033 | 20x256 | 27.5 | 1176 | |
g170e-b15c192-s1672170752-d466197061 | v1.3.2 | 拡張訓練15x192 | - | 935 |
g170-b20c256x2-s1913382912-d435450331 | 20x256 | 35.5 | 1269 | |
g170-b20c256x2-s2107843328-d468617949 | 20x256 | 38.5 | 1293 | |
g170e-b20c256x2-s2430231552-d525879064 | v1.3.3 | 20x256 | 47.5 | 1346 |
g170-b30c320x2-s1287828224-d525929064 | 30x320 | 47.5 | 1412 | |
g170-b40c256x2-s1349368064-d524332537 | 40x256 | 47 | 1406 | |
g170e-b20c256x2-s2971705856-d633407024 | v1.3.3-nets | 20x256 | 64.5 | 1413 |
g170-b30c320x2-s1840604672-d633482024 | 30x320 | 1524 | ||
g170-b40c256x2-s1929311744-d633132024 | 40x256 | 1510 | ||
g170e-b20c256x2-s3354994176-d716845198 | v1.3.4 | 20x256 | 78 | 1455 |
g170-b30c320x2-s2271129088-d716970897 | 30x320 | 1551 | ||
g170-b40c256x2-s2383550464-d716628997 | 40x256 | 1554 | ||
g170e-b20c256x2-s3761649408-d809581368 | v1.3.5-nets | 20x256 | 92 | 1513 |
g170-b30c320x2-s2846858752-d829865719 | 30x320 | 96 | 1619 | |
g170-b40c256x2-s2990766336-d830712531 | 40x256 | 1613 | ||
g170e-b20c256x2-s4384473088-d968438914 | v1.4.0 | 20x256 | 117 | 1529 |
g170-b30c320x2-s3530176512-d968463914 | 30x320 | 1643 | ||
g170-b40c256x2-s3708042240-d967973220 | 40x256 | 1687 | ||
g170e-b20c256x2-s4667204096-d1045479207 | 20x256(実験的) | 129 | 1561 | |
g170-b30c320x2-s3910534144-d1045712926 | 30x320(実験的) | 1651 | ||
g170-b40c256x2-s4120339456-d1045882697 | 40x256(実験的) | 1698 | ||
g170e-b20c256x2-s4842585088-d1091433838 | 20x256(実験的) | 136.5 | 1547 | |
g170-b30c320x2-s4141693952-d1091071549 | 30x320(実験的) | 1653 | ||
g170-b40c256x2-s4368856832-d1091190099 | 40x256(実験的) | 1680 | ||
g170e-b20c256x2-s5055114240-d1149032340 | v1.4.2-nets | 20x256(実験的[注 1]) | 145.5 | 1539 |
g170-b30c320x2-s4432082944-d1149895217 | 30x320(実験的[注 1]) | 1648 | ||
g170-b40c256x2-s4679779328-d1149909226 | 40x256(実験的[注 1]) | 1690 | ||
g170e-b20c256x2-s5132547840-d1177695086 | 20x256 | 150 | 1577 | |
g170-b30c320x2-s4574191104-d1178681586 | 30x320 | 1759 | ||
g170-b40c256x2-s4833666560-d1179059206 | 40x256 | 1788 | ||
g170e-b20c256x2-s5303129600-d1228401921 | v1.4.5 | 20x256 | 157 | 1645 |
g170-b30c320x2-s4824661760-d1229536699 | 30x320 | 1908 | ||
g170-b40c256x2-s5095420928-d1229425124 | 40x256 | 1919 |
3番目のバージョンは29GPUで始まり、14日後に37GPUに増加し、24日(合わせて38日)後に47GPUに増加した[1]。
v1.5.0以降[16]、GPUを使用しない純粋なCPUのみでの動作がサポートされた(Eigen(英語: Eigen (C++ library))ライブラリを使用)。また、v1.8.0バージョン以降、分散トレーニングをサポートしているため、世界中のユーザーがウェイト(ニューラルネットワーク)のトレーニングに協力できるようになった。
関連項目
[編集]脚注
[編集]注釈
[編集]- ^ a b c 人間の棋譜が一部に追加された実験的バージョンだが、v1.4.0のニューラルネットワークよりも優れているとは限らない。 [15]
出典
[編集]- ^ a b c d e f g h i j k “lightvector/KataGo: GTP engine and self-play learning in Go”. 2021年1月14日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
- ^ a b “Releases · lightvector/KataGo” (英語). 2021年1月26日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
- ^ “katago/katago-server”. 2020年11月19日時点のオリジナルよりアーカイブ。2021年1月14日閲覧。
- ^ “Release v0.1 · katago/katago-server” (英語). 2020年11月19日時点のオリジナルよりアーカイブ。2021年1月14日閲覧。
- ^ “Releases · katago/katago-server” (英語). 2020年11月19日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
- ^ “Accelerating Self-Play Learning in Go” (英語) (2019年2月28日). 2020年11月7日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
- ^ a b David J. Wu (2020). "Accelerating Self-Play Learning in Go". arXiv:1902.10565 [cs.LG]。
- ^ “Analyze with a fixed visit number? · Issue #91 · lightvector/KataGo” (英語). 2020年10月30日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
- ^ “Release OpenCL, Windows Support, other features and fixes · lightvector/KataGo” (英語) (2019年7月20日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年5月12日閲覧。
- ^ “leela-zero/leela-zero: Go engine with no human-provided knowledge, modeled after the AlphaGo Zero paper.” (英語). 2021年1月6日時点のオリジナルよりアーカイブ。2020年1月2日閲覧。
- ^ “katago-public/g65/models”. 2020年1月1日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
- ^ “Release Initial release · lightvector/KataGo” (英語) (2019年2月27日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
- ^ “katago-public/g104/models”. 2020年1月1日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
- ^ a b “Release Strong Neural Net, LCB, and many bugfixes · lightvector/KataGo” (英語) (2019年6月18日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
- ^ “Release Experimental Neural Nets · lightvector/KataGo” (英語) (2020年6月6日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年6月7日閲覧。
- ^ “Release OpenCL FP16 Tensor Core Support · lightvector/KataGo” (英語) (2020年8月2日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年8月26日閲覧。
外部リンク
[編集]- 公式ウェブサイト
- 分散トレーニングサイト
- katago-public アーカイブ 2021年1月26日 - ウェイバックマシン -訓練されたデータと訓練されたニューラルネットワーク。
- Accelerating Self-Play Learning in Go アーカイブ 2021年1月11日 - ウェイバックマシン - KataGoの論文(arXiv)。