OpenHSPをmacOSに移植した。

EC2にMacインスタンスが追加されて、Mac持ってなくてもmacOS/iOS向け開発できるようになったということで盆休みの自由研究に試してみた。


Linux向けHSP3DishだとSDL使ってて、ほぼLinux依存は無いので基本的にはコンパイルオプションの変更で動作するようになった。
HGIMG4はGamePlay部分にプラットフォーム固有コードがあるのでいくらか修正。
HSEDはbrewgtk+導入したらそのままコンパイル出来た。gtk+インストール時にlibX11も入ってるみたいだけどどういう仕組み何だろう…

git clone https://github.com/zakki/OpenHSP-fork OpenHSP
cd OpenHSP
git checkout macos
brew install glew glfw sdl2 sdl2_image sdl2_mixer sdl2_ttf gtk+
make -f makefile.macos

Linuxbrewに慣れてる人なら特に問題なくhsp3dish使えるはず。

TODO

  • 署名してないのでバイナリ配布しづらい。
  • POSIXSDLやGamePlayの範囲を超えたプラットフォーム固有の連携はしてない。
  • ARM版は依存ライブラリ込みで対応が必要そうでfatバイナリになってない。
  • ソースとしてHSPLINUXにdefined(__APPLE__)で相乗りしている。あとあとを考えるとHSPMACOSに分離したほうが良さそう。
  • DeprecatedなOpenGLを使ってる。Appleの言うDeprecatedが近々消すの意味なのかよく分からない。
  • appを作るのにotoolとinstall_name_toolで共有ライブラリかき集めて検索パス変更してるのが正しい手順な気がしない。

EC2のMacインスタンスはセットアップや終了に数十分~1時間かかる上に課金に24時間縛りがあって1回ごとに2000円以上かかるので継続的に使うなら中古Mac miniでも買ってきたほうが良さそう。

 

 

 

github.com

LizGobanをクラウドで動かす

前回の続き。

SGF読み込みに対応して、HTML製のメニューを追加して、タッチパネル対応して、AMIを作った。

 

AMI(オレゴン:ami-0f6a99179a0f6560a 東京:ami-03840379d1bbf0293)を選択して、p2かp3インスタンスを選択して

f:id:MATSUZAKI:20191027110219p:plain

 

HTTPポートを開けて

f:id:MATSUZAKI:20191027110254p:plain

 

使う。

f:id:MATSUZAKI:20191027110323p:plain

 

詳細はユーザーデータで設定。

#!/bin/sh

# パスワード認証をかけたり

htpasswd -bc /etc/apache2/.htpasswd liz lizgoban1234

# katago使ったり
ln -sf /home/ubuntu/lizgoban/external/katago.json /home/ubuntu/lizgoban/config.json

# leelazero & endstate 使ったり

ln -sf /home/ubuntu/lizgoban/external/leelaz_endstate.json /home/ubuntu/lizgoban/config.json
systemctl restart lizgoban

p2.8xlarge~やp3.8xlarge~の複数GPU搭載インスタンスでは、leelazeroは起動オプション設定用のシェルスクリプトで対応したけど、KataGoは1 GPUしか使えていないのをなんとかしたい。

 

 ソース https://github.com/zakki/lizgoban/tree/browser

LizGobanをクラウドで動かす

Electron製のLizGobanのローカル側をnode.jsで動かすようにして、Electron IPCをWebSocket経由のRPCに差し替えてみた。

https://github.com/zakki/lizgoban/tree/server-client

git clone https://github.com/zakki/lizgoban -b server-client
cd lizgoban
npm install
npm run build

external/ に leelaz と external/network.gz を配置。

node serv/server.js

で "http://localhost:3000" を開く。

TODO

  • セッション管理
  • ログイン管理
  • Electron専用のメニューをHTML化
  • SGFの読み書き対応

CGFオープン2018

CGFオープンに参加してきた。2018年CGFオープン
今回は独自性ルールが緩かったので小林さんのRayとは別にRnとして出場。

19路は現状安定して強いrn-4.32は1年以上前のPN/VNで代わり映えしないのと、一番強いrlo-0.4はELF OpenGoより弱くて改善点薄いのとで、
PN/VNのデュアルヘッドで実験中の5.5相当で出場した。結果、夏風(aka 彩)に負けて2位。

9路は19路のPN/VN統合モデルをResNetの初期値にして彩の自己対戦で全結合層を学習したもので自己対戦棋譜を生成して出場して、
夏風と棋神に次いで3位。

Rn 5.5.1(※9路専用です。)

2018年 CGFオープン結果(コンピュータ囲碁大会)

AI 竜星戦 2017

Raynzで出場して、予選11位突破(参加者全員突破だけど)、本線6位でした。
またPolicy network + value network + owner networkの重み共有による教師あり学習について、独創賞をもらいました。

目的関数としてOwnerとValueの二乗誤差を足し合わせることでValueの寄与を1/361にすることで棋譜生成無しでもVNの学習出来ています。
# この部分についての詳細は「Rayn の技術と自戦記 UEC 杯3 位への歩み」にあります。
しかし、上位8位付近までのソフトでは棋譜生成と強化学習に成功している状況ではVNとPNの精度でじわじわ押されていた感がありました。

Raynzの構成としては、Rn.4.20部分の思考エンジンと、Tripleizeさんによる1中央サーバー+10ワーカーでのリーフ並列になってます。
春のUEC版Raynから竜星戦版Raynzで、Rn部分で+145、分散処理部分で+200程度は強くなっているのに対して、他ソフトの話を聞くと+600だったり
前バージョンに4子だったり、勝率100%だったりと景気のいい強化っぷりにはついていけてなかったようです。

OSS公開してることでいくつかのソフトの対局相手・調査対象として使われているようで、コンピューター囲碁界隈の底上げには繋がってよかったのかな…

第10回UEC杯コンピュータ囲碁大会

Rayの作者の小林さんとチームでRay+Rn=Raynで出場して3位でした。
CGOSや内容から見るに4位〜8位引き離したというよりはコイントスして運よく勝てたに近い状況とはいえ暫定世界4位を名乗れる。
http://www.computer-go.jp/uec/public_html/result2.shtml

実行していた版のソースはraynブランチにpush済みなので興味があればどうぞ。

いつものcgosのRn.x.yy-4cはi7-2600K+GTX980Tiかたまにi7-6700K+TITAN Xで動かしているのを、せっかくなので56CPU+Tesla P100×1のGPU BOOSTタイプ Tesla P100で参加した。56スレッドで探索するとPolicyNetwork/ValueNetworkの評価キューが詰まって28スレッドで動かしていたけどそれでも結構CPUが遊んでいたのが若干残念。
このサービスはGPUの単体性能が高くてEC2でマルチGPU使うのと比べて何も考えなくても性能出しやすい反面、仮想化薄いらしくハードウェア障害でも別ホストに自動で移ったりしないのが面倒。


追記:
とりあえずCGOSでCGIに3連敗してる。