{"id":21850310,"url":"https://github.com/syarig/cygo","last_synced_at":"2025-04-14T14:56:08.105Z","repository":{"id":255796996,"uuid":"128784743","full_name":"syarig/Cygo","owner":"syarig","description":"Cygo is Go AI has feature of like AlphaGo Fan","archived":false,"fork":false,"pushed_at":"2020-10-17T13:45:42.000Z","size":21145,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T03:51:08.272Z","etag":null,"topics":["alphago","cython","keras","mcts","python3","ray"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syarig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-09T14:27:54.000Z","updated_at":"2025-01-03T02:30:23.000Z","dependencies_parsed_at":"2024-09-07T06:09:41.037Z","dependency_job_id":null,"html_url":"https://github.com/syarig/Cygo","commit_stats":null,"previous_names":["syarig/cygo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syarig%2FCygo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syarig%2FCygo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syarig%2FCygo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syarig%2FCygo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syarig","download_url":"https://codeload.github.com/syarig/Cygo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248901979,"owners_count":21180542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alphago","cython","keras","mcts","python3","ray"],"created_at":"2024-11-28T00:17:03.135Z","updated_at":"2025-04-14T14:56:08.071Z","avatar_url":"https://github.com/syarig.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Cygoについて\nhttps://github.com/syarig/Cygo\n\nAlphaGo Fanの論文を参考に作った囲碁AIです．AlphaGo Fanはプロを圧倒する棋力を示しましたが，ハードウェアに依存しており，ソースも公開されていません．\nしかし，Cygoは少資源環境下で動作する囲碁AIを目指しました．探索アルゴリズムに幾つかの工夫を施しています．\n\n１９路盤にのみ対応しており，同じプレイアウト数のときでは強豪のオープンソース囲碁プログラムであるRay， Fuego，Pachiよりも強いです．\nただし，実行速度が遅いためCythonを用いた高速化を進めています．\n\n\nMacOSとUbuntu上で動作することを確認しています．おそらくWindows上でも動作するとは思いますが，動作確認はしてません．\nライセンスはGPLライセンスで，インターフェースは同梱していません．GoGuiなどのソフトを使って下さい．\n\n\n# 環境構築\n- 事前に`pipenv`を入れておいてください\n- GPUを使うにはGPU版のtensorfowをインストールしてください\n```shell\n# Cygoをクローンしてくる\ngit clone https://github.com/syarig/Cygo.git\ncd Cygo\n\n# 必要なライブラリをインストール\npipenv install\n```\n\n# コンパイル\nRollout policyをCythonで書いてみたのですが、高速動作を実現できなかったため代わりにRayのプレイアウトを使わせてもらってます．\nRayのラッパークラスや木構造の部分にCythonを使っているためコンパイルに下記のコマンドを実行します。`g++5`以上をインストールしておいてください。\n\n```shell\n$ python setup.py build_ext -i\n```\n\n\n# ネットワークの学習\n`train_sl_policy_net.py, train_rl_policy_net.py, train_value_net.py`のファイルを実行することでモデルを作成することができます。バッチ数等のパラメータ\bもこのファイルに書いてあります。重みなど各種データは`data/*`に作成されます．ディレクトリに関する設定は`config.py`から変更してください。．\n\n```shell\npython train_sl_policy_net.py\n```\n\n|名称|用途|\n---|---\n|SL policy network|熟練者の着手予測|\n|RL policy network|Value networkの訓練データの生成|\n|Value network|盤面の評価|\n\n# 実行\n- `apvmcts/gpu_workers.py`の`SL_POLICY_NET_WEIGHT, VALUE_NET_WEIGHT`を使用したい重みのファイル名にする．\n- `python cygo.py`を実行する．下記のような引数を取ることができます．\n- PCのスペックに合わせて`--rollout`と`--tree-size`は調節して下さい．\n\n例）`python cygo.py -t 1000 -r 1000 --logging --verbose`\n\n```\nusage: cygo.py [-h] [--processes PROCESSES] [--lambda_val LAMBDA_VAL]\n               [--rollout ROLLOUT] [--search-moves SEARCH_MOVES]\n               [--expand-thr EXPAND_THR] [--tree-size TREE_SIZE] [--komi KOMI]\n               [--size SIZE] [--reuse-subtree] [--verbose]\n\nCygo is Go AI has feature of like AlphaGo Fan\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --processes PROCESSES, -p PROCESSES\n                        Number of available processes. Default: 2\n  --lambda_val LAMBDA_VAL, -l LAMBDA_VAL\n                        Mixing parameter. Default: 0.5\n  --rollout ROLLOUT, -r ROLLOUT\n                        Number of playout for tree searching. Default: 6000\n  --search-moves SEARCH_MOVES, -m SEARCH_MOVES\n                        Number of search moves for each nodes. Default: 20\n  --expand-thr EXPAND_THR, -e EXPAND_THR\n                        Number of node expanding threthold. Default: 30\n  --tree-size TREE_SIZE, -t TREE_SIZE\n                        Tree size. Default: 10000\n  --komi KOMI, -k KOMI  Number of komi. Default: 7.5\n  --size SIZE, -s SIZE  Go board size. Default: 19\n  --reuse-subtree, -R   Number of search moves for each nodes. Default: 20\n  --verbose, -v         debug mode\n```\n\n# 対戦させてみる\nこのようにするとGoGuiとTwoGtpを使って対戦させることがでます。\nパスやコマンド諸々はご自身の環境に合わして実行してください\n\n```shell\n#!/usr/bin/env bash\ntwogtp_cmd=\"gogui-twogtpのパス\"\ngogui_cmd=\"goguiのパス\"\npython_path=\"python環境へのパス\"\n\nray=\"ray --no-debug --playout 6000\"\npachi=\"pachi -d 0 -t =6000\"\ngnugo19=\"gnugo --mode gtp --level 15\"\ncygo=\"${python_path} cygo.pyへのパス\"\n\n\nBLACK=$ray\nWHITE=$cygo\n\nDIR=\"対戦結果の保存先\"\nFILE=\"対戦結果のファイル名\"\n\nTWOGTP=\"$twogtp_cmd \\\n  -black \\\"$BLACK\\\" -white \\\"$WHITE\\\" -games 50 \\\n  -size 19 -verbose -referee \\\"$gnugo\\\" -sgffile $DIR$FILE\"\n\n$gogui_cmd -size 19 -program \"$TWOGTP\" -computer-both -auto\n\n$twogtp_cmd -analyze \"${DIR}${FILE}.dat\"\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyarig%2Fcygo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyarig%2Fcygo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyarig%2Fcygo/lists"}