[過去ログ] 【オセロ,将棋】ボードゲーム Part2【囲碁,War】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
546: 535 2018/12/12(水)22:24 ID:eFK7VQKv(1) AAS
他人のコードに頼るのやめて自力実装に走るべきだろうか?
他人のコードってなによりいまいち情熱が湧いてこない。

でも他人のコードも読めるようにならないと先はないんだろうなぁ。
我流じゃすぐ限界迎えそう。

悩ましい。
547: 535 2018/12/14(金)00:02 ID:52LN5bpq(1/2) AAS
まただよ(再起動)
windows10でも変わらずか…
548: 535 2018/12/14(金)22:52 ID:52LN5bpq(2/2) AAS
コーディングは進まないけど棋譜だけは溜まっていきます。
今、LV3 vs LV3の棋譜が61950局分溜まってます。
ファンがうるさいから夜中は回してないから日中だけなのにこのペース。
8コアはさすがといったところか。
アルファ碁Leeが16万局分の棋譜を使ったらしいからとりあえずその辺目指すか。
549: 310 2018/12/18(火)00:10 ID:4TPQUuZQ(1/2) AAS
FFOテスト(#40−#49)、色々誤差範囲の改良を加えてじわじわスピードアップ
していたけど、ある日突然20%くらい悪化。元に戻せるところは戻したけど、
結局ダメで、裏で評価関数の学習し続けた結果、途中経過でたまたま探索が
悪化するところにはまってしまったと言う事かなぁと。

実際、悪化しているの#49だけで他は改善していたし、学習都度表示している
FFO問題の8手読みの次の一手の合否が、14/20から11/20に悪化している。

こういうのあると、速度アップで何を信じて良いのかわからなくなるよね…
550: 310 2018/12/18(火)00:14 ID:4TPQUuZQ(2/2) AAS
という問題もありながら、ノード数表示して、>>492さんの結果と比較すると、
ノード数に圧倒的な差が。NPSは速いけど、それ以上にノード数が多い。
枝刈の差というにはあまりに大きな差で、一桁近い差です。

これ、Iterativeな手法で生じる置換表探索の差じゃないかと思う。
自分のは置換表の動作が遅いので、あまり深い探索まで置換表を適用できず、
読切において後ろの方は置換表が無い(そもそも使用していない)事で、何度も
再探索しているからかなと。

concurrent_unordered_mapを使っているけど、自前でハッシュDB作った方が
良いかもと思い始めた。そこで速度アップすると、置換表適用深度を深くできる。

こういう時、自前で作る人はチェーンハッシュ使っているのかな?
551: 535 2018/12/18(火)23:29 ID:N5ttC8SJ(1) AAS
昔自前でハッシュ作ったことありますが素朴な実装だとさほど性能出なかった記憶がありますね。
自分の場合STLでいいじゃんみたいな結果でした。
テーブルのサイズをでかくすると意外と巡回が遅くなるみたいな。
552: 535 2018/12/19(水)21:16 ID:REA/9P4B(1) AAS
スマホでconnect4のパーフェクトソルバーをちょくちょく遊んでるのですが
パターンをかなり覚えて7割くらい勝てるようになりました
囲碁とかも真の棋理が明らかになった方が
逆に人間がコンピュータに勝てるようになるかもしれませんね
553: 310 2018/12/19(水)22:48 ID:T2sH1fj1(1) AAS
ハッシュの構想し始めましたが、確かに自分が作って早くなる保証はないですね。
インターフェースを既存のstlに合わせようとか思って調べ始めたら面倒になりました。

で、色々見ていたら、そのまんま効率化できそうな使い方を見つけた。
有れば読み込んで更新、無ければ追加の方法です。

あとバケットサイズとか個数とか、その辺を調べていった方が早くなるかも。

並列処理だとtry_emplaceが使えないのね。これが使えたらきっと早くなるのに。
554: 535 2018/12/20(木)23:32 ID:zB5frbtZ(1) AAS
また再起動してる。。。
まあいいけど、もう諦めぎみ。

なんか仕事が急に忙しくなってますますコーディングから遠ざかってますが、
棋譜だけは地味に溜まってます。今82889局分溜まってます。

並列化ハッシュってどんななんですかね。そういえば知らない。
555: 310 2018/12/21(金)00:04 ID:kvniGc89(1) AAS
いや。まぁ。バケットか中のレコードか、どちらかの単位で排他かけるだけです。
Hash関数がきちんとばらけさせてくれたら、基本的にあんまり排他で捕まる事は
無いので、それほど気にしなくてもパフォーマンスに影響ないかなぁと。実際に
concurrent_unordered_mapの配列用意して、適当にハッシュでばらけさせて格納
してみたら(つまり、同じmapじゃなければ排他はおきない)、排他で遅くなっている
訳ではない事が確認できています。

と言いながら、iteratorとか考えだすと、何を並列セーフにして、何をアンセーフに
するかみたいな事で悩んじゃいます。

先日の続きでmax_load_factorとかbacketサイズとかいじってみましたが、
パフォーマンスにほとんど影響がないです。というか、どうせ後で逐次的に拡張する
くらいならと、backetサイズを増やしても性能は上がらないし、max_load_factorを
増やしても、性能が落ちるだけだったり…。

棋譜作成だけなら並列化レベルをもう1段上げて、4記譜同時作成とかすれば、
個々の読み切りはシングルスレッドに下げられて、ただのunordered_mapが使えるし
その方が棋譜作成的には速度アップしそうな気がしてきた(汗

FFO的には別処理になるけど。
556: 535 2018/12/22(土)00:08 ID:w0ekMTPt(1/2) AAS
採りためた棋譜をもとに序盤DBを更新してみましたが、
確かにうち筋は変わってる気がしますが強くなってるかはよくわからないというorz
まあ序盤DBは誤魔化しみたいなものだから期待しすぎもよくないか。
557: 535 2018/12/22(土)00:42 ID:w0ekMTPt(2/2) AAS
序盤DB更新で強くなってるか統計とってみたいけどモンテカルロが遅すぎてそれもままならないというorz
やはりモンテカルロに代わる何かを実装しなければ…
558: 535 2018/12/26(水)00:12 ID:2Tvqp++w(1/4) AAS
棋譜USBメモリにコピーしたらめっちゃ時間かかるorz
130MBくらいなのにUSBメモリってやっぱ遅いんだな。
559: 310 2018/12/26(水)00:20 ID:Rkthqh0l(1/2) AAS
4記譜並列作成実装してみました。ただいま本番状態でテスト中。
並列処理の基本は、なるべく上位の層で並列化すべしでした。

現状、並列探索の速度は、シングル探索の2倍程度です。
1つ1つの探索には時間が2倍かかるけど、4つ並列なので、トータルでは
半分の時間で処理できるので、実質2倍みたいな。

探索中のオーバーヘッドはほぼ無いはずで、待ち合わせロスくらいなので、
大量に一気に処理する分には、ほぼ無視できるかなと。

これやると、スレッドの数がモロに効いてくるんで…48並列くらいできたら…
560: 535 2018/12/26(水)00:30 ID:2Tvqp++w(2/4) AAS
310さんはintel派なんでしたっけ?
AMDでもzen2はかなりコスパいいものが来ると思いますが…
561
(1): 535 2018/12/26(水)00:40 ID:2Tvqp++w(3/4) AAS
試しにSSDに棋譜コピーしてみたらかなり速いw
やっぱそうなのか。
562: 310 2018/12/26(水)03:07 ID:Rkthqh0l(2/2) AAS
あれれ。思ったほど速度が出ない…というか、単体の速度が半分どころか、
1/4くらいになっているイメージ…。深さが深いものほど遅いという事は、
置換表周りかなぁ。

棋譜作成する対象によって速度が結構変わるので、評価しづらい。

メモリー配置等の問題も考えないといかんような気がしてきた。

いかん。夜も更けていく…。

>>561
なんか、フラッシュメモリー自体は書き込みが遅くて、SSDだとその辺を並列
化とかキャッシュとかで回避しているらしいです。USBメモリーは、その辺真面目
にやっているもの(高価)と、そうじゃないもの(安価)で差があるけど、それでも
SSDには敵わないとか。
563: 535 2018/12/26(水)21:06 ID:2Tvqp++w(4/4) AAS
明日か明後日あたりで棋譜10万局分溜まりそう
深層学習のプログラム、組みたいなぁ
でも難しいんだよなぁ
564: 310 2018/12/27(木)00:00 ID:APLuuq5f(1/3) AAS
悩ましい。

シングルmin-Maxの並列動作と、パラレルmin-Maxのシングル動作。
どうも速度的には大差ない感じ。
2倍くらい速度出ると思ったのに…。

スレッド数が増えたら差が出てくるのかなぁ。
565: 535 2018/12/27(木)20:54 ID:gYB4tQZF(1/3) AAS
10万局いきました。
566: 535 2018/12/27(木)21:18 ID:gYB4tQZF(2/3) AAS
多分俺が世界で一番囲連星LV3の計算を回した人だろうなw
567: 310 2018/12/27(木)22:00 ID:APLuuq5f(2/3) AAS
色々あがいた挙句、そこそこ時間がかかる26手空きを、それぞれで解いてみた。

並列探索で6分。シングル単独動作で12分。シングル4並列動作で18分。
やはり、シングルも4並列する事でなにがしかのオーバーヘッドがあるようです。

単純計算だと並列探索6分を4個で24分に対して、シングル18分で4つ解ける
事から33%の速度アップが見込める事になるけど、体感そこまでの効果が感じ
られないというか、時間がかかる問題では更に差が大きくなっていて、そいつらに
足を引っ張られている印象。

そのうえで、裏でゴソゴソやりながら計算させる時に色々弊害があるので、
CPUの増強を決断するまで放置しようかと思います。

色々あがいた結果か、並列探索ですこーし速度アップした感じ。
10%行くかいかないか。
568: 535 2018/12/27(木)22:05 ID:gYB4tQZF(3/3) AAS
よくわからんがハイパースレッディングって単純に性能2倍になるわけではないということではなくて?
569: 310 2018/12/27(木)23:06 ID:APLuuq5f(3/3) AAS
もちろんそうなんだけど、排他待ちを要するデータも、待ち合わせロスも
無いので、もうちょっと性能出るんじゃないかと思っていたのです。

あと、うまく説明できないけど、ノード数が多い探索は、ノード数比以上に
時間がかかっている気がしています。まだ感覚の話ですが。
570: 535 2018/12/28(金)20:37 ID:HWMCAOZD(1) AAS
LV3は強いんだけど詰み状態から詰みを逃してる棋譜が散見される。
直せるもんなら直したほうがいいんだろうけどかなり大変だろうな
571: 310 2018/12/29(土)09:40 ID:hnomLa8j(1) AAS
んー。シングル並列動作で6時間かかっても解けずに諦めた盤面とを見つけて、
パラレルで解いたら1時間40分だった。空きマス26だと通常1分程度なんだけど、
時々こういう時間がかかる盤面がある。今までテストが面倒なので、10分以内に
終わりそうな奴でテストしていたけど、もしかしたら探索ノードが多い奴ほど、
シングル並列動作での速度低下が大きいのかも知れない。

時間がかかる奴ほど、シングル・パラレル比が悪化するなら、今考えている大体
3倍程度ってのは成り立たなくなって、もっと悪い事になる。それなら感覚的に
合致する。普通に流れている時には、シングル並列で高速化できそうな手ごたえ
があるんだけど、時間がかかる盤面が来ると急速に逼塞していって、なかなか
回復しないという感じ。

パフォーマンスモニタにらみながら、unordered_mapのメモリアロケーションの方法
を想像してみた。初期確保件数指定(倍々で自動追加される)してみたけど、溢れて
もいないのにダラダラとメモリー使用量が増えていく。もしかしたらOSにメモリーを
貰いに行く動作が排他待ちになっているのかも知れない。どうやって検証しよう。
やっぱ自前置換表作るしかないのかなぁ。
572: 310 2019/01/01(火)10:13 ID:y24geaJt(1) AAS
あけおめです。

ヒープをダラダラと確保するのが気になったので、色々いじりました。

ordering用のvectorを、配列にしてスタックに。ついでにクラス化してメンテ性アップ。
少しだけ速度アップした気がする。

自前ハッシュテーブル型の置換表を作ってみた。
最初に大きく領域確保して、溢れた時以外領域確保しないようにした。
基本、余計な機能は実装していないので、処理は軽いはずなんだけど…
極ほんの少しだけ速度ダウンした感じ…

記譜作成はunordered_map版で実行しながら、改良をしてみたいと思います。
とはいえ、ソース的にはあんまり改良の余地がないんだよなぁ。

速度がそん色ないところまで行けたら、シングル版の並列での速度低下が
メモリー確保が原因か検証できるかなぁ。
573: 310 2019/01/05(土)09:07 ID:KwyVlHZX(1) AAS
チェーン型でハッシュを組んでましたが、テーブルがあふれると結局ダラダラと
メモリー獲得し始めるので、オープンアドレス型に変更して、まとめて領域を追加
するようにしました。

この辺、もう趣味の世界ですね。
何をしても、速度は上がりも下がりもしない(汗

やっぱり探索ノードを減らす工夫が重要ですね。
574: 535 2019/01/05(土)21:26 ID:TXR2vHHf(1) AAS
自己対戦のみで強くなるアルファゼロは理想ですが実装が難しそうなので
せっかく棋譜も集めてるので教師あり学習をやってみようかと思案中。
575: 535 2019/01/06(日)00:55 ID:6f3tqt5A(1/8) AAS
とりあえず、棋譜データからmin-max探索して黒有利の局面か白有利の局面かの2択を学習させようかな。とか思ってます。
そろそろ寝るか。。。
1-
あと 427 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s