KataGo

KataGo(カタゴ)は、David J. Wu(通称 lightvector)によって開発されたコンピュータ囲碁プログラムである。

KataGo
作者 David J. Wu[1]
開発元 David J. Wu
初版 2019年2月27日 (2019-02-27)[2]
最新版
1.9.1 / 2021年6月30日 (2021-06-30)[2]
リポジトリ github.com/lightvector/KataGo
プログラミング
言語
C++Python
種別 コンピュータ囲碁
ライセンス MIT License
公式サイト github.com/lightvector/KataGo
KataGo Server
作者 David J. Wu and Tycho Tatitscheff[3]
開発元 David J. Wu and Tycho Tatitscheff
初版 2020年11月8日 (2020-11-08)[4]
最新版
v0.9 / 2020年12月14日 (2020-12-14)[5]
リポジトリ github.com/katago/katago-server
プログラミング
言語
Python
種別 コンピュータ囲碁
ライセンス MIT License
公式サイト katagotraining.org

概要

DeepMindが発表したAlphaGo ZeroAlphaZeroの論文に基づいてDavid J. WuがKataGoを作成した[6]。さらに、DeepMindの論文に加え、多くの関連研究と独自の研究の結果、強化学習の速度を大幅に向上させた(50倍以上[7]: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" という名称は、日本語の「かた()」に因んでいる[9]。現在は、英語でも武道の形を "kata" という。作者である lightvector (David J. Wu) は、自己の強化学習によって永続的に鍛錬し、独自の形の完成を目指すボットの名称として合理的に思えたと述べている。

差異

AlphaZero

AlphaZeroとの主な違いは[7]、KataGoがオープンソースオープンデータであることに加えて、強化学習のコストが大幅に削減されたので、自宅のPCでも比較的高いレベルの強化学習が行えることである。数日でアマチュア高段者に到達した[1]

Leela Zero

LeelaZeroとの主な違いは、KataGoのGTPエンジンが"kata-analyze"コマンドをサポートしていることである。フロントエンドプログラム(Lizzieなど)がKataGoの目数差の分析結果を取得できるので、人間の目数計算と判断の助けになる。LeelaZeroなどに見られる終盤のヨセで損な手を打つ可能性を減らすことができる[1]

もう一つの違いは、KataGoはOpenCL(v1.2以降でサポート[10])とCUDA[1]の両方をサポートしていることである(OpenCLの最新版は最適化されており、CUDA版より数倍も高速ということはなく、二つの版はほぼ同じ)。 LeelaZeroはOpenCLだけをサポートしている[11]

強さ

最初のバージョン

最初のバージョン(番号はg65,v1.0)では、2019年2月[12]に35台のNVIDIA Tesla V100を使用して7日間の強化学習が行われた。6ブロックx96フィルターから15ブロックx192フィルターまでで[13]、棋力はLeelaZeroの(ニューラルネットワークの130番目に相当する)LZ130とほぼ同じになった[14]。これは人間の棋力を既に超えている[1]

重みコード注釈訓練日数Elo
b6c96-s103408384-d26419149v1.06x96--
b10c128-s101899520-d6073466310x128--
b15c192-s279618816-d16499002215x192--

2番目のバージョン

2番目のバージョン(番号はg104,v1.1)は、2019年5月から6月[12]に作成された。28台のNVIDIA Tesla V100で、6ブロックx96フィルターから20ブロックx256フィルターまで強化学習が行われた[15]ハイパーパラメータが大幅に改善されたので、わずか3.5日で最初のバージョンの棋力を超えた[1][16]。さらに、LCB(英語: Lower confidence bound)の導入によって、棋力が大幅に向上した[16]。 最後に、19日間のトレーニングの後、20ブロック版が作成され、棋力が「LZ-ELFv2」(ELF OpenGoのv2の重みファイルをLeela Zeroで動かしたもの)を上回った。Leela Zeroの40ブロック版と比較すると、LZ200と同等の棋力になった[1]

重みコード注釈訓練日数Elo
g104-b6c96-s97778688-d23397744v1.16x96最終版0.75-1146
g104-b10c128-s110887936-d5493727610x1281.75-476
g104-b15c192-s297383936-d14033025115x192最終版7.5327
g104-b20c256-s447913472-d24184088720x256最終版19908

3番目のバージョン

3番目のバージョン(番号はg170,v1.3v1.4)は、2020年1月から6月にかけて作成された[12]。29GPUで始まり、14日後に37GPUに増加し、24日(合わせて38日)後に47GPUに増加した[1]

v1.5.0以降[17]、GPUを使用しない純粋なCPUだけでの動作がサポートされた(Eigen英語: Eigen (C++ library)ライブラリを使用)。また、バージョンv1.8.0以降では、分散トレーニングをサポートしているので、世界中のユーザーが重み(ニューラルネットワーク)のトレーニングに協力できるようになった[18]

重みコード注釈訓練日数Elo
g170-b6c96-s175395328-d267887326x96最終版0.75-1184
g170-b10c128-s197428736-d6740401910x128最終版1.75-280
g170e-b10c128-s1141046784-d204142634v1.3拡張再訓練10x128-300
g170-b20c256x2-s668214784-d22225571420x25615.5959
g170-b15c192-s497233664-d14963834515x1927.5512
g170-b20c256x2-s1039565568-d285739972v1.3.120x25621.51073
g170e-b15c192-s1305382144-d335919935v1.3.1-nets拡張訓練15x192-867
g170-b20c256x2-s1420141824-d35096903320x25627.51176
g170e-b15c192-s1672170752-d466197061v1.3.2拡張訓練15x192-935
g170-b20c256x2-s1913382912-d43545033120x25635.51269
g170-b20c256x2-s2107843328-d46861794920x25638.51293
g170e-b20c256x2-s2430231552-d525879064v1.3.320x25647.51346
g170-b30c320x2-s1287828224-d52592906430x32047.51412
g170-b40c256x2-s1349368064-d52433253740x256471406
g170e-b20c256x2-s2971705856-d633407024v1.3.3-nets20x25664.51413
g170-b30c320x2-s1840604672-d63348202430x3201524
g170-b40c256x2-s1929311744-d63313202440x2561510
g170e-b20c256x2-s3354994176-d716845198v1.3.420x256781455
g170-b30c320x2-s2271129088-d71697089730x3201551
g170-b40c256x2-s2383550464-d71662899740x2561554
g170e-b20c256x2-s3761649408-d809581368v1.3.5-nets20x256921513
g170-b30c320x2-s2846858752-d82986571930x320961619
g170-b40c256x2-s2990766336-d83071253140x2561613
g170e-b20c256x2-s4384473088-d968438914v1.4.020x2561171529
g170-b30c320x2-s3530176512-d96846391430x3201643
g170-b40c256x2-s3708042240-d96797322040x2561687
g170e-b20c256x2-s4667204096-d104547920720x256(実験的)1291561
g170-b30c320x2-s3910534144-d104571292630x320(実験的)1651
g170-b40c256x2-s4120339456-d104588269740x256(実験的)1698
g170e-b20c256x2-s4842585088-d109143383820x256(実験的)136.51547
g170-b30c320x2-s4141693952-d109107154930x320(実験的)1653
g170-b40c256x2-s4368856832-d109119009940x256(実験的)1680
g170e-b20c256x2-s5055114240-d1149032340v1.4.2-nets20x256(実験的[注 1]145.51539
g170-b30c320x2-s4432082944-d114989521730x320(実験的[注 1]1648
g170-b40c256x2-s4679779328-d114990922640x256(実験的[注 1]1690
g170e-b20c256x2-s5132547840-d117769508620x2561501577
g170-b30c320x2-s4574191104-d117868158630x3201759
g170-b40c256x2-s4833666560-d117905920640x2561788
g170e-b20c256x2-s5303129600-d1228401921v1.4.520x2561571645
g170-b30c320x2-s4824661760-d122953669930x3201908
g170-b40c256x2-s5095420928-d122942512440x2561919

関連項目

脚注

注釈

  1. 人間の棋譜が一部に追加された実験的バージョン。v1.4.0のニューラルネットワークよりも優れているとは限らない。 [19]

出典

  1. lightvector. GTP engine and self-play learning in Go (英語). GitHub. lightvector/KataGo. 2021年1月14日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
  2. lightvector. TensorRT Backend, Many Minor Improvements (英語). GitHub. lightvector/KataGo. 2021年1月26日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
  3. lightvector. katago/katago-server”. GitHub. 2020年11月19日時点のオリジナルよりアーカイブ。2021年1月14日閲覧。
  4. lightvector (2020年11月8日). v0.1 (英語). GitHub. katago/katago-server. 2020年11月19日時点のオリジナルよりアーカイブ。2021年1月14日閲覧。
  5. Releases (英語). GitHub. katago/katago-server. 2020年11月19日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
  6. David Wu (2019年2月28日). Accelerating Self-Play Learning in Go (英語). TECH BLOG. Jane Street. 2020年11月7日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
  7. David J. Wu (9 November 2020). "Accelerating Self-Play Learning in Go". arXiv:1902.10565 [cs.LG]。
  8. bsteuber (2019年12月19日). Analyze with a fixed visit number? (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2022年1月9日閲覧。
  9. lightvector (2020年8月27日). The Name of KataGo (英語). GitHub. lightvector/KataGo. 2022年1月9日閲覧。
  10. lightvector (2019年7月21日). OpenCL, Windows Support, other features and fixes (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2020年5月12日閲覧。
  11. MaxVanDijck. Go engine with no human-provided knowledge, modeled after the AlphaGo Zero paper. (英語). GitHub. leela-zero/leela-zero. 2021年1月6日時点のオリジナルよりアーカイブ。2020年1月2日閲覧。
  12. katago-public”. 2021年1月26日時点のオリジナルよりアーカイブ。2022年1月10日閲覧。
  13. katago-public/g65/models”. 2020年1月1日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
  14. lightvector (2019年2月27日). Initial release (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
  15. katago-public/g104/models”. 2020年1月1日時点のオリジナルよりアーカイブ。2020年1月1日閲覧。
  16. lightvector (2019年6月18日). Strong Neural Net, LCB, and many bugfixes (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2020年1月14日閲覧。
  17. lightvector (2020年8月3日). OpenCL FP16 Tensor Core Support (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2020年8月26日閲覧。
  18. KataGo Distributed Training (英語). katagotraining.org. KataGo. 2022年1月10日閲覧。
  19. lightvector (2020年6月6日). Experimental Neural Nets (英語). GitHub. lightvector/KataGo. 2020年10月30日時点のオリジナルよりアーカイブ。2020年6月7日閲覧。
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.