Katagoと対戦することのできる、囲碁ソフトKaTrain:
をダウンロードして使ってみると、前回の記事で紹介したシステム https://qiita.com/tkoji3744/items/d0a680ee53e6952f8173
が、まさにこの洗練された囲碁ソフトのプロトタイプのように感じられたので少し紹介していく。
(1)KaTrainのダウンロード
KaTrain.exeをクリックすると自動ダウンロード。
ぼくのWindows11はこの.exeファイルのダウンロードを嫌がり警告をくりかえし出したが、無視して強引にダウンロードしたし、それで問題ない。できない場合は、 KaTrain.zipをダウンロードして展開すればいい。
(2)この囲碁ソフトのダウンロードは比較的、安定で容易。しかも最大棋力は、プロ並み。
さらに、
A路盤の大きさを選べる
B棋力を選べる
C棋風をえらべる
しかし、これらのを実現するために、複数のエンジンを、搭載しているのでなく、一つのエンジンのみつかっている。
KaTrain画面内に、kata1-b18c384nbt-s9996604416-d4316597426.bin.gz と表示してある。
ぼくの、前回報告ではモデルファイル: kata1-b18c384nbt-s9791399168-d4261348054.bin.gzを使用。いずれも、https://katagotraining.org/networks
のリスト内のひとつである。
KaTrain内では、以下のような棋風の選択肢が用意されている: 強いAI(標準) 攻撃的(Aggressive) 防御的(Defensive) 人間っぽい(Human-like) 愚形を好む・地を重視する など *Tenuki-Styleなど笑える
いいかえると、いろいろな機能を、モデルの切り替え(複数エンジンの使用)ではなく、その推論時の方針の切り替えでおこなっている。いいかえると、KaTrain は、KataGoの出力結果(複数候補の手とその勝率)を独自ロジックで加工し、その中から「棋風」に合う手を選択している。
例えば、以下のような工夫によってそれを実現している。
つまり: モデルファイル(例:kata1-b18c384nbt-s9996604416-d4316597426.bin.gz)は1つでよく、その「出力候補の中から何を選ぶか」を変えているだけ。
では、実際のファイルの扱いはどうなっているのか?
このkatago-v1.14.0-opencl-windows-x64フォルダこそ、KaTrainの本体である。同じフォルダ内に、katago.exe、kata1-b18c384nbt-s9996604416-d4316597426.bin.gzの他に、gtp_example.cfgなどのファイルが同じ層内におかれている。
A 路盤の大きさを選べる
このとき、KataGo はgtp_example.cfg ファイル内で明確に 路盤 が設定されている。
(9路盤のとき)
modelFile = default_model.bin.gz
logFile = gtp_log.txt
...
boardXSize = 9
boardYSize = 9
*この boardXSize = 19 と boardYSize =1 9 と記述がをかえれば、19路盤 。
B 棋力を弱くする:gtp_weak.cfgファイルをフォルダ内に追加
modelFile = kata1-b18c384nbt-s9791399168-d4261348054.bin.gz
maxVisits = 20
numSearchThreads = 2
cpuctExploration = 1.5
conservativePass = false
*棋力をわざと落とす設定
numSearchThreads = 2 # 思考スレッド数(通常は8〜16)
maxVisits = 30 # 探索回数(低くすると弱くなる)
cpuctExploration = 0.5 # 探索のランダム性を増やす(0.8〜1.5あたり)
C 棋風をえらべる:以下のファイルをそれぞれ追加
gtp_defensive.cfg (守備型)
modelFile = kata1-b18c384nbt-s9791399168-d4261348054.bin.gz
maxVisits = 150
numSearchThreads = 4
conservativePass = true
dynamicPlayoutDoublingAdvantage = 0.2
*自陣の領域確保を重視
dynamicPlayoutDoublingAdvantage = 0.2~0.5
gtp_aggressive.cfg (攻撃型)
modelFile = kata1-b18c384nbt-s9791399168-d4261348054.bin.gz
maxVisits = 150
numSearchThreads = 4
conservativePass = false
dynamicPlayoutDoublingAdvantage = 3.0
*劣勢で無理攻めするように
dynamicPlayoutDoublingAdvantage = 3.0
(参考)この場合のSabakiの設定方法やり方(Windows)
たとえば、以下のようなフォルダ構成にしておき:
katago/
├── katago.exe
├── kata1-b18c384nbt-s9791399168-d4261348054.bin.gz
├── gtp_defensive.cfg
├── gtp_aggressive.cfg
├── gtp_weak.cfg
コマンド C:\Users\koji3\デスクトップ\katago-v1.12.4-opencl-windows-x64\katago.exe はかえず、引数の設定のみをかえる
1.守備型で起動したいとき:引数
katago.exe gtp -config gtp_defensive.cfg
2.攻撃型で起動したいとき:引数
katago.exe gtp -config gtp_aggressive.cfg
3.弱くしたBotで動かしたいとき:引数
katago.exe gtp -config gtp_weak.cfg
*いずれも、gtp_example.cfg は変更不要
本質的に、KaTrainと、前回ぼくが示したシステム(katago-v1.14.0-opencl-windows-x64フォルダ + Sabaki)は同じといえる。
とすれば、わざわざファイルを書き換えず、クリックだけでいろいろな条件を設定できるKaTrainのほうが、ずっとスマートである。
ただ、前回ぼくが示したシステムが、KaTrainよりも優位であるとすれば、それは、例えば、同じbotが、対局がすすむにつれて
-手数 30手目以降は守備型
-勝率 負けそうになったら暴れる
-地の差 点差が広がったら守備に切り替え
と、その性格をかえていくようにすることができるということだ(KaTrainでは棋風ははじめから終わりまで変えることはできない)
(3)もうひとつ、忘れてはいけないのが、もともとKataTrainは、Katagoの「継続学習」(分散トレーニング)のためのツール、ということ。
今回つかっている、モデルファイル(.gz)kata1-b18c384nbt-s9791399168-d4261348054.bin.gz をはじめこのサイト(https://katagotraining.org/networks )
に掲載されているこれらはすべて 「kata1系」= g170以降の次世代モデル で、で2020.11以前の日付のものは掲載されてない(のは少し残念)。
に書かれているように、今入手できるモデルは、3番目のバージョン(番号はg170,v1.3とv1.4)で、、2020年1月から6月にかけて作成されたもののみ。*昔のファイルが入手できなくなっているのが残念ともいえる
今の、katagotraining.org/networks/ のモデルたちは:
「継続学習(continued training)」の出発点は、基本的に 1つに決まっている。 ただし、 🔁 過去の学習済みモデル(例:g170)を再学習の出発点として使うことは可能です。 しかし 通常は、最新の「最良モデル」を基に、全参加者が分散学習を続けるという方式が採用されています。 🔄 「継続学習」の出発点は誰がどう決めるの? ✔ 通常の流れ: トレーニング管理者(katagotraining.org 運営)が「最良モデル」1つを決定 通常は直近の最も勝率が高く、評価の安定したモデル(例:g170...)。 そのモデルを基にして、世界中のユーザーが自己対局データを生成 その結果を集めて、さらに新しいモデルを訓練していく(つまり、継続学習) 🔁 「過去モデルの再学習」はやらないの? 原則として: ✅ 「可能」だが、「公式プロジェクト(katagotraining.org)」では通常行われません。 なぜか? 再学習するよりも、最新モデルから継続した方が効率がよく、学習の偏りが少ないため。 公式プロジェクトの目的は「最高性能のAIを作ること」であり、歴史的な比較や分岐には興味がないため。
貢献の方法は、下記のサイトに書かれているよう、そう難しくはない。
この設定画面から、KataGoの分散学習プロジェクト(https://katagotraining.org/? ) に自分のPCを使って協力することができる。KataGoは人間やAIの棋譜、自己対局データなどを集めて常に強化学習しているプロジェクトで、世界中の協力者からデータを募っている。 つまり、この画面で、KataGo があなたのPC上で自己対局(self-play)を行い、その結果を katagotraining.org にアップロードして、KataGo の学習に貢献できる。PCスペックに応じて空き時間で協力可能。
KaTrain内でこのような表示を(Contribute to KataGo Distributed Training:KataGoの分散学習に協力する)さがす。そして、
① 公式サイトでアカウント作成
https://katagotraining.org/
中央「Create an account」からアカウント作成
ユーザー名とパスワードを設定 Email認証
② KaTrain に設定する
KaTrain の「Contribute to KataGo Distributed Training」タブで、以下を入力:
項目 入力内容(例)
Path to KataGo executable: 例: C:\Users\kojikoji\デスクトップ(¥katagoo.exe)():不要
Path to KataGo config file: katrain/KataGo/contribute_config.cfg (すでに記載されている.ダウンロードファイルに同梱されている)Username / Password: katagotraining.org で登録したもの
③ Start Contributing!
Start Contributing! ボタンを押すと、KataGo が自己対局を開始し、結果を自動でアップロードしてくれる。
*同時進行対局数(Simultaneous Games):PCの性能に応じて調整(6は中程度)
*保存先:./dist_sgf/ フォルダに棋譜も残せる
*注意点:GPU推奨 CPUだけだと遅くなる。GPU搭載PCが適している。電気代等、長時間自己対局するので、放置実行する場合は注意
(4)おわりに
KaTrainに関して、囲碁ソフト、という視点以外に、今まで書いてきたような視点をもてることもKaTrainのいいところだと思うし、そういう視点の紹介はもっとあってもいいと思い、ここに記した。