- 1 名前:名前は開発中のものです。 [2017/10/15(日) 17:34:58.03 ID:RaMh0le2.net]
- 比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
前スレ 【オセロ,将棋】ボードゲーム【囲碁,War】 mevius.2ch.net/test/read.cgi/gamedev/1057763418/
- 483 名前:310 mailto:sage [2018/10/14(日) 23:06:48.18 ID:Z3+yTgkQ.net]
- 局面の偏りが結構酷い事になっていました。
新しいforwardでは反復深化の評価値を表示するようにしたのですが、探索が進む ほどに0になっていきます。そこで盤面のパターンが一回も出てこないケース(0値) を調べたところ、後ろの方が大量に…。前回書いたLSB問題の影響がかなり大きい という事です。 というわけで、棋譜作成の時には、少なくとも複数選択しあるときにはランダムに 選択するように変更し、既存の棋譜については、仕方がないので後ろの方をランダム を導入した仕組みで再探索したものを追加していく事にしました。 1件1秒程度でできるので、折に触れてランダム化していこうと思います。 全部展開すると件数が大変な事になるので、様子を見ながらこの辺でお茶を濁して みようと思います。
- 484 名前:名前は開発中のものです。 mailto:sage [2018/10/18(木) 01:59:08.41 ID:VXZ7Gx+W.net]
- ずっと昔にオセロを作っていた者です。
久しぶりに再燃したので熱があるうちに… 50万棋譜計画のバグっている棋譜、被っている棋譜を消去して、22マス空きからの読み切り訂正をやってます プログラムを3つほど立ち上げて一日9万局…めどは一ヶ月ぐらい 最近寒くなってきたのでちょうどいいかなとw FFO45が32秒ぐらいで、まだまだトッププログラムには及びませんけど、 この棋譜訂正で大幅に縮まらないかと希望を持ちつつ進めてます
- 485 名前:535 mailto:sage [2018/10/20(土) 22:43:08.00 ID:T970svPP.net]
- zen2まで待つのはさすがに待ちすぎかなぁ?w
とりあえずAQのコードに結構詳細なコメントが付いてることにいまさらながら気づいて もう一度チャレンジしてみるかどうか迷ってるところ。
- 486 名前:310 mailto:sage [2018/10/21(日) 22:20:35.21 ID:wV/AjJxk.net]
- >>475
はじめまして。新規参入嬉しいですね。 50万記譜計画の記譜は今はHPからダウンロードできないですね。懐かしい。 評価関数が正しくないと、探索時間かかりますからね。 自分は今は、自作の記譜を後ろから順番に訂正していってます。 が、やはりすごく時間がかかりまするorz
- 487 名前:310 mailto:sage [2018/10/21(日) 22:39:45.97 ID:wV/AjJxk.net]
- 先日、局面の偏りで反復深化で評価値がゼロになっていく件を書きましたが、
もっと大きな問題な気がしてきました。 マイナスの評価値になるはずの局面から、中盤探索を反復深化で深くしていく時、 途中で評価関数的に未知の局面に入って、評価値0を返すようになる事があります。 もともと期待される評価値はマイナスなので、評価値0のルートに乗り換えてしまい ます。どうもこの様な現象が起きる事で、探索を間違える事がありそうです。 これから、デバッグ用のプログラム書いて、現象を確認してみようと思います。 もしかしたら、評価関数の初期値をゼロから始めるのが、良くないのかもしれません。 初期値を−1にすると、未知の局面は−66点(パターンの種類)になるし、1つ2つ 混入したくらいでは、評価値への影響も小さいのかなと思っています。 評価関数のゼロデータを−1にして動かしてみる方が早いかなぁ?
- 488 名前:310 mailto:sage [2018/10/22(月) 22:40:29.62 ID:cyPX+oid.net]
- 一応、ゼロデータをすべて−1に置き換えてみたところ、それなりな感じで、
頻度はだいぶ減りました。が、まだ時々おかしな時があります。 デバッグ用のプログラムが案外簡単にできたので、評価値の計算を確認して みたところ、反復深化の計算のどこかにバグがありそうだという結論に…。 ただ、ほとんどのケースでは正しそうなんだなぁ。
- 489 名前:310 mailto:sage [2018/10/22(月) 22:53:50.11 ID:cyPX+oid.net]
- ソース見てたら、一瞬で判明(汗
ほぼtypoの類でしたorz これで探索少し早くなるかな?
- 490 名前:310 mailto:sage [2018/10/23(火) 01:08:22.60 ID:rwBd0O0t.net]
- ウェイトのゼロデータを−1にしてみましたが、関係なさそうなので0に戻しました。
原理的にはマイナス評価値の問題は起きそうなのですが、評価値ゼロはあまり 発生していない感じです。 残り27手読み切りあたりから今のやり方では追い付かなくなって来ていますので、 MPCモドキの導入を考えています。MPCのスレッショルドの計算を真面目に やると、それだけで日が暮れてしまいそうなので、あくまでモドキですが(汗 置換表から作り直しになるし、記譜作り直しで、まだ27手まで時間がたっぷりある ので、1週間くらいじっくり考えてから始めようかと思います。
- 491 名前:535 mailto:sage [2018/10/28(日) 21:48:30.83 ID:X2c31b1r.net]
- うう、やっぱPCに30万はおいそれと出せないorz orz orz
しかし、何もしないままでただ時間が過ぎていくほうが怖いような気もする。
- 492 名前:535 mailto:sage [2018/10/30(火) 23:21:10.12 ID:pl1cfUhR.net]
- なんかRTXに不具合があるとか何とか
- 493 名前:
マジ? もうしばらく様子見が正解か… [] - [ここ壊れてます]
- 494 名前:310 mailto:sage [2018/11/01(木) 00:10:54.87 ID:D90j6hyj.net]
- MPCですが、完全読み切りをIterative Wideningで速度アップするためのProbCutを
作ってます。とりあえずスレッショルド計算のところまでできました。線形近似と誤差の 標準偏差の計算ですが、以前はループでゴリゴリ計算してました。今回はEigen使って 行列で計算するようにしたら超簡単でびっくりするほど早くなりました。 結局、計算時間の大半は浅い探索になります。 で、結果を見れば見るほど、無理に計算しなくてよいのではないかと思えてきます(汗 誤差は1σ=4〜5程度の固定値。線形近似は、1次係数は1.0で0次の定数(バイアス) を、深さが偶数で+1〜+2、奇数−1〜−2くらい。探索の深さを変えると、誤差は 減っていきますが、あまり頑張るとオーバーヘッドになります。 そもそもIterative Wideningでは、探索精度ではなく、徐々に探索対象を広める事で、 置換表の精度を上げていく事で高速化をしますので、アドホックな値でも良いのかなと。 誤差やバイアスは今の自分の評価関数での値ですが、気が向いた時に再度チェック するくらいで良いのかなと思う次第。 というわけで、大幅に簡素化・定数化して、読み切り処理の方に移る事にしました。
- 495 名前:535 mailto:sage [2018/11/02(金) 23:35:29.24 ID:1vnWpGba.net]
- 9900K発売ですか。
かなり入手困難みたいですね。
- 496 名前:535 mailto:sage [2018/11/04(日) 21:31:50.64 ID:AYd3OzR3.net]
- 11/6にAMDからなにか発表があるとか
ZEN2くるかなー? とりあえず今は待ちか。
- 497 名前:535 mailto:sage [2018/11/08(木) 22:14:39.88 ID:l30eANOm.net]
- 結局zen2は春ごろなんですかね?
いまはRyzen 2700xを買っていつでも乗り換えられる体勢を取るのが正解かなぁ?
- 498 名前:310 mailto:sage [2018/11/10(土) 22:53:18.40 ID:MAqAiuT/.net]
- ぬぬぬ。
ProbCutのバグ取りに時間がかかりました。というか、なかなか高速化できません。 むしろ倍以上時間がかかってしまいます。 もっとひどい事に、今までのやり方のうち、比較的単純なやつが最も早い可能性が 高いという事に気が付いてしまいました…。下手すると40%くらい早いかも。 ProbCut比では3〜4倍速いという事です。 もともとProbCu自体は中盤探索で前方枝刈するための仕組みです。 これを読み切りしながら順次探索範囲を広げる事でソート順を修正する方向で 活用しようとしているのですが、下位のところを何度も読むオーバーヘッドがあり、 そこを置換表で高速化と考えていましたが、どこかがおかしい…。 そうこうするうちに、評価関数の精度が上がって、反復深化で十分実用になる ソート順がセットできる事になった模様です。 まだバグの可能性は捨てきれませんが、一旦諦めようかな。
- 499 名前:310 mailto:sage [2018/11/15(木) 23:13:39.64 ID:Gy98Zi+i.net]
- ProbCutは一旦放置して、地道にSolverの速度アップを始めました。
作り直した時に、末端ノードの処理を結構簡素化しちゃったので、やり直しです。 で、Zebraの初期バージョンのオーダリングを日本語で解説した資料を見つけて 色々とノウハウを得まして、Fastest Fastの処理を見直したり、その他色々やった ところ、速度が倍になりました。 が、見たくない現実としては、まだZebraの当時のFFOテストより若干遅い感じです。 以前はFFO#20限定で0.3秒くらいまで行っていたのですが、まだ1〜2秒前後。 ちなみに、似たスペックのPCでの計測値が公表されているマスターオセロは、 更に10倍程度高速です。ぬぬぬ。 棋譜作って学習していくと、探索時間が地味に短くなっていくし、時にはオーダリング の間違いが直ってジャンプするように特定の盤面で高速化する事がありますので、 まだまだ辛抱かなぁ。
- 500 名前:名前は開発中のものです。 mailto:sage [2018/11/17(土) 11:28:45.78 ID:8gp5y6uH.net]
- なんとか棋譜訂正が終わりました
それだけだと終盤探索にあまり効き目はなかったようです… これで終わりたくなくて色々見直したところ、なんとかFFO55が6000秒から2500秒切るレベルまで高速化されました ただ問題があって、空きマスリストを用意していない影響で、空きマスが2つになるまでビット演算で着手番号を取得してるので、NPSがかなり低くなっています ここを改善するだけでも20%ぐらいは高速化するのではないかと…今週はそのへんやってみようかと思います
- 501 名前:名前は開発中のものです。 mailto:sage [2018/11/17(土) 11:43:10.64 ID:8gp5y6uH.net]
- テスト結果を載せます
ここから2倍ぐらいになれば、MasterReversiの背中が見えてくるレベル・・・まだまだです YBWCとかやらないとなぁ Microsoft Windows 10 Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz キャッシュサイズ256MB FFO#40 ( Exact:(a2:+38) 1.19sec node: 12.33[Mn] nps:10323[Knps] ) FFO#41 ( Exact:(h4: +0) 2.99sec node: 35.31[Mn] nps:11825[Knps] ) FFO#42 ( Exact:(g2: +6) 2.86sec node: 39.98[Mn] nps:13961[Knps] ) FFO#43 ( Exact:(G3:-12) 2.49sec node: 25.47[Mn] nps:10236[Knps] ) FFO#44 ( Exact:(D2:-14) 4.08sec node: 40.86[Mn] nps:10006[Knps] ) FFO#45 ( Exact:(b2: +6) 29.92sec node: 449.45[Mn] nps:15022[Knps] ) FFO#46 ( Exact:(b3: -8) 7.48sec node: 87.43[Mn] nps:11687[Knps] ) FFO#47 ( Exact:(G2: +4) 3.71sec node: 49.65[Mn] nps:12851[Knps] ) FFO#48 ( Exact:(F6:+28) 18.78sec node: 216.42[Mn] nps:11523[Knps] ) FFO#49 ( Exact:(e1:+16) 53.12sec node: 655.97[Mn] nps:12350[Knps] ) FFO#50 ( Exact:(d8:+10) 141.11sec node: 1.39[Gn] nps: 9873[Knps] ) FFO#51 ( Exact:(E2:+6) 39.81sec node: 509.68[Mn] nps:12804[Knps] ) FFO#52 ( Exact:(a3:+0) 54.33sec node: 725.60[Mn] nps:13355[Knps] ) FFO#53 ( Exact:(d8:-2) 774.22sec node: 10.74[Gn] nps:13873[Knps] ) FFO#54 ( Exact:(c7:-2) 965.65sec node: 14.37[Gn] nps:14973[Knps] ) FFO#55 ( Exact:(G6:+0) 7124.95sec node: 105.41[Gn] nps:14794[Knps] ) FFO#56 ( Exact:(H5:+2) 244.72sec node: 3.22[Gn] nps:13475[Knps] ) FFO#57 ( Exact:(a6:-10) 926.60sec node: 11.06[Gn] nps:13352[Knps] ) FFO#58 ( Exact:(g1:+4) 551.11sec node: 8.16[Gn] nps:14803[Knps] ) FFO#59 ( Exact:(g8:+64) 0.94sec node: 5.28[Mn] nps: 5626[Knps] )
- 502 名前:名前は開発中のものです。 mailto:sage [2018/11/17(土) 11:45:17.49 ID:8gp5y6uH.net]
- 間違えて前のバージョンを載せてしまいましたw
今回はこちらです。比較になってちょうどよかったかも FFO#40 ( Exact:(a2:+38) 1.29sec node: 10.63[Mn] nps: 8244[Knps] ) FFO#41 ( Exact:(h4: +0) 2.97sec node: 25.54[Mn] nps: 8599[Knps] ) FFO#42 ( Exact:(g2: +6) 2.24sec node: 20.58[Mn] nps: 9189[Knps] ) FFO#43 ( Exact:(C7:-12) 2.54sec node: 19.23[Mn] nps: 7572[Knps] ) FFO#44 ( Exact:(B8:-14) 4.32sec node: 32.07[Mn] nps: 7418[Knps] ) FFO#45 ( Exact:(b2: +6) 27.68sec node: 294.61[Mn] nps:10644[Knps] ) FFO#46 ( Exact:(b3: -8) 7.56sec node: 68.56[Mn] nps: 9070[Knps] ) FFO#47 ( Exact:(G2: +4) 3.25sec node: 36.70[Mn] nps:11293[Knps] ) FFO#48 ( Exact:(F6:+28) 21.11sec node: 195.99[Mn] nps: 9286[Knps] ) FFO#49 ( Exact:(e1:+16) 34.84sec node: 346.90[Mn] nps: 9958[Knps] ) FFO#50 ( Exact:(d8:+10) 108.94sec node: 960.91[Mn] nps: 8820[Knps] ) FFO#51 ( Exact:(E2:+6) 36.21sec node: 378.54[Mn] nps:10453[Knps] ) FFO#52 ( Exact:(a3:+0) 63.95sec node: 730.82[Mn] nps:11429[Knps] ) FFO#53 ( Exact:(d8:-2) 545.77sec node: 6.17[Gn] nps:11304[Knps] ) FFO#54 ( Exact:(c7:-2) 626.09sec node: 7.42[Gn] nps:11848[Knps] ) FFO#55 ( Exact:(G6:+0) 2492.74sec node: 31.10[Gn] nps:12475[Knps] ) FFO#56 ( Exact:(H5:+2) 212.26sec node: 2.52[Gn] nps:11894[Knps] ) FFO#57 ( Exact:(a6:-10) 520.85sec node: 6.35[Gn] nps:12183[Knps] ) FFO#58 ( Exact:(g1:+4) 588.80sec node: 8.54[Gn] nps:14512[Knps] ) FFO#59 ( Exact:(g8:+64) 1.88sec node: 8.86[Mn] nps: 4722[Knps] )
- 503 名前:535 mailto:sage [2018/11/17(土) 17:28:43.31 ID:s4ulT91Q.net]
- うおお、ついに新PC買っちゃいました!
s.kota2.net/1542443012.jpg
- 504 名前:535 mailto:sage [2018/11/17(土) 17:38:57.27 ID:s4ulT91Q.net]
- なんか買っただけで満足してしまっている自分がいるwww
- 505 名前:名前は開発中のものです。 mailto:sage [2018/11/17(土) 18:39:02.10 ID:8gp5y6uH.net]
- 空きマスリストを作る方式でやってみたのですがビット演算のほうが5%速かったみたいです
こうなるとオーダリングのコストを下げるしか無くなってきました
- 506 名前:名前は開発中のものです。 mailto:sage [2018/11/17(土) 18:40:00.61 ID:8gp5y6uH.net]
- RYZENですか
自分もi5なので、新しいPCが欲しいところ
- 507 名前:535 mailto:sage [2018/11/17(土) 19:32:43.11 ID:s4ulT91Q.net]
- >>496
せっかくなのでなにか͡コテ名乗ってくれませんか? まあ無理強いはしませんが。
- 508 名前:535 mailto:sage [2018/11/17(土) 20:03:37.36 ID:s4ulT91Q.net]
- シネベンチマルチ1705CB
うーん、壊れる前のマシンの倍くらいにはなってるんですかね?
- 509 名前:535 mailto:sage [2018/11/17(土) 20:20:24.98 ID:s4ulT91Q.net]
- さて本題のAI開発は何から始めようか?w
差しあたっての目標はAQをwindowsでビルドかな
- 510 名前:535 mailto:sage [2018/11/17(土) 22:39:28.71 ID:s4ulT91Q.net]
- >>491
よくみたらキャッシュ256MBってどうゆうこっちゃw
- 511 名前:535 mailto:sage [2018/11/18(日) 00:16:59.82 ID:rI0UFOUu.net]
- windowsでビルドするの結構難しそう。
気分転換にAQのあらかじめexeになってるものを落として動かしてみたら割とサクサク動く。 そして当たり前だけど強い。 これは期待が高まるw
- 512 名前:310 mailto:sage [2018/11/18(日) 01:01:51.11 ID:CiNHjYBr.net]
- おお。大体僕の倍くらいの速度ですね。
なお、気が短いし、記譜訂正が26手目くらいまでしかできていないので、 今は#40-#44の5つしか計測していません。昔から#41がピンポイントで遅い。 空きマスのビット演算、ちょうどやったところです。 mobility使わずに、flip関数がゼロだと着手不能ってパターンです。 静的オーダリングを使っていますが、角優先×最後って事で。 パターン配列作ってループ回してAND版と、先に空きマスをpextで並び替えて、 テーブル引いて元に戻して着手する版と2種類トライしまいしたが、速度差は 誤差としか言いようが無いレベルでしたorz 元に戻す演算を思いついたらまたトライする予定。 本日はProbCutを再トライ。今度はちゃんと高速化しているようです。 スレッショルド1.0σで反復無しで、その結果を用いてアスピレーションウィンドウ サーチして、少し高速化できたかなぁと言う感じ。 ただ、投機的に高速化しているので、FFOで比較しても、苦手盤面がありそうです。 棋譜が揃って来たら投機のヒット率が上がると信じて、しばらく使ってみます。
- 513 名前:310 mailto:sage [2018/11/18(日) 01:13:00.25 ID:CiNHjYBr.net]
- 535さんニューマシンおめ!
自分はSurface3で、i7-4650Uの1.7GHz(2.29GHz)×4です。 キャッシュとかどこで見れるのかなぁ。
- 514 名前:310 mailto:sage [2018/11/18(日) 01:19:18.37 ID:CiNHjYBr.net]
- ちなみに、偶数理論は何度かトライしていますが、速度低下してしまうので
使えずにいます。 ZebraはUndo方式で空きマスリストを常時更新しているようです。 僕はCopy方式で、末端の該当ノードで空きマスリストを作ろうとしているので すが、なかなかうまくできません。 過去にpaint処理みたいな方法で完全な空きマスリストを作成しましたが、 当然オーバーヘッドが大きくて使い物になりませんでした。 最近は「どうせ4隅でしょ?」という事で、盤面を4分割して空きマス計算して いますが、それでも遅い。 「どうせ4隅」が良くないのか、偶数理論の理解が間違っているのか…
- 515 名前:535 mailto:sage [2018/11/18(日) 17:01:14.00 ID:rI0UFOUu.net]
- 高負荷時のファンが意外とうるさいorz
熱風もなかなかorz あんまり連続実行しないほうがいいのかもorz
- 516 名前:535 mailto:sage [2018/11/18(日) 17:56:00.38 ID:rI0UFOUu.net]
- なんかクロームがメモリ1GBとか使ってるんだがこれで平常運転なのか?
メモリに余裕あるからってなめすぎじゃね?
- 517 名前:495 mailto:sage [2018/11/18(日) 18:39:39.38 ID:w1KaGZJD.net]
- >>497
なるほど、では495ということで… あとキッシュサイズは置換表のサイズです
- 518 名前:535 mailto:sage [2018/11/18(日) 18:55:52.33 ID:rI0UFOUu.net]
- >>507
コテありがとうございます。よろしくお願いします。 CPUのキャッシュかと思ってビビりましたw。
- 519 名前:535 mailto:sage [2018/11/18(日) 19:17:18.42 ID:rI0UFOUu.net]
- AQのビルド、linuxだとBAZELで、windowsだとCMakeでって書いてあるんだけど、
CMake用の入力ファイルが見当たらないorz windowsもBAZELでやるんだろうか?そこからわからんorz
- 520 名前:535 mailto:sage [2018/11/20(火) 20:47:23.74 ID:sCHL0ufM.net]
- いかん、投資に見合った成果を挙げねばww
とは思うが腰が重いorz
- 521 名前:535 mailto:sage [2018/11/21(水) 22:15:48.48 ID:YJjwR4VH.net]
- windowsは一旦保留にしてLinuxに走るのが正解だろうか?
- 522 名前:535 mailto:sage [2018/11/22(木) 23:20:13.56 ID:ak7z/rHD.net]
- ネイティブリナックスをデュアルブートにするかVMWareでいくか。
なんかwindows10とlinuxのデュアルブートは罠があるらしくちょっと怖い。
- 523 名前:535 mailto:sage [2018/11/23(金) 15:43:50.93 ID:uREb6qVe.net]
- うーん、やっぱAQ無理かもorz.
もっと簡単そうなのに逃げるべきだろうか? とほほ
- 524 名前:名前は開発中のものです。 mailto:sage [2018/11/24(土) 05:53:44.23 ID:quW8CQIk.net]
- 同一HDD 内で、Windows10・Linux のデュアルブートは、素人では元に戻せない。
だから、日経Linux では、仮想OS を使うように書いてある。 Virtual Box が多いかな Ruby できるなら、Vagrant, Chef から使うのもよい 漏れは、WSL・Ubuntu16.04 を使っている。 ただし、WSL はGUI なし。コマンドのみ 開発用だから、本番では使えないし、Docker なども使えないけど、 WSLは単なるアプリだから、遊ぶには気楽
- 525 名前:535 mailto:sage [2018/11/24(土) 20:30:54.02 ID:CNsuI7eC.net]
- うーん、今後の方向性が定まらないorz.
最終的にはwindowsでやりたいからそこも悩みどころ。
- 526 名前:名前は開発中のものです。 [2018/11/24(土) 23:59:56.87 ID:MjnwrHjN.net]
- ボードゲームスレだよな?なんの話してんの?
- 527 名前:310 mailto:sage [2018/11/25(日) 09:01:51.50 ID:Mml0PIJf.net]
- Iterative Widening何とかできた。平均的に高速化できていると思う。
FFOについては相変わらず>>495さんと比較して速度は半分くらいかな。 一方で記譜作成的には倍速になったイメージ。細かく4σまでWideningして いる事で、仮探索の誤答が減った事が効いています。 仮探索で増える時間 > 仮探索が正解した時に減る時間 + 誤答した時に増える時間 Iterative Wideningで、仮探索時間の削減と正答率の向上の両方が実現できた 感じです。この辺、課題盤面との相性がある話なので、統計的に計ろうとすると かなり面倒です。というか、統計的に計るためには、前提となる評価関数をロック しなきゃなりませんが、現在記譜作成しながら評価関数学習させてますので、 前提が常に動いてしまいます。 現在オーバーヘッドが嫌で、ノード数をとっていません。並列化するとロック の待ち時間で数%〜10%くらい速度が落ちちゃうからです。ノード数をとれば 純粋な速度比較がしやすいのですが、悩みどころです。
- 528 名前:535 mailto:sage [2018/11/25(日) 22:15:31.15 ID:MnTu6mxc.net]
- なんも進展がないのでとりあえず昔作った19路囲連星AIをビルドする環境を新マシンに構築しました。
リハビリの意味でもしばらくこれいじってようかな。
- 529 名前:名前は開発中のものです。 [2018/11/26(月) 11:23:16.87 ID:3TlDlboD.net]
- オンラインボードゲームって作れば流行ると思うんだけど、誰もやらないってことはサーバの維持費の方が高くなるんかね?
- 530 名前:名前は開発中のものです。 mailto:sage [2018/11/26(月) 12:10:20.62 ID:dM/DsP5w.net]
- そう簡単に流行るかよ
囲碁のkgsとかだってかなり廃れてきてるのに
- 531 名前:535 mailto:sage [2018/11/26(月) 22:59:02.56 ID:PdBnQCC1.net]
- 気持ちだけ焦るけど、何も進まないというorz
とりあえず、結果だけ求めるのは謹んで、 地道に愚直にディープラーニングの勉強するのが正解だろうか?
- 532 名前:310 mailto:sage [2018/11/27(火) 09:45:52.43 ID:IL6H1udh.net]
- 自分の場合、プログラムいじるネタが欲しくて、ヘウレーカ!って感じを味わいたくて、
続けているだけだからなぁ(汗 目標でかすぎるとか、期限切りすぎると、焦って嫌になるだけだよ。 オセロなんて、既にやってる人ほとんどいないから、ちょうど良いのだw 今の目標は、60歳になるまで続ける事w
- 533 名前:535 mailto:sage [2018/11/27(火) 18:36:07.13 ID:oxbu/SRL.net]
- そうですね
結局自分のペースで一歩一歩進んでいくしかないですよね ありがとうございます
- 534 名前:535 mailto:sage [2018/11/27(火) 20:02:14.21 ID:DriHkSnO.net]
- これからどうしようかなぁ。
以前、途中までうまくいきかけた9路囲連星を移植したalpha zero クローンのコードを読み解くのやってみようかなぁ。 それとももっと本とか読んで理論の基礎から固めていくべきだろうか。
- 535 名前:名前は開発中のものです。 [2018/11/27(火) 21:15:20.03 ID:8ndts6Rn.net]
- loser_sのブログ読んだけど、重大発表やばすぎだろ
- 536 名前:535 mailto:sage [2018/11/28(水) 22:14:06.77 ID:h+t1ldhF.net]
- VMWareのubuntuで9路囲連星のalphazeroクローン動かしてみたらなんかメモリリークする。
前のマシンではメモリリークなかったのに? OSとかpython とかCUDAのバージョンが変わったせいだろうか? うーん、解決する気力がいまいち湧いてこないorz
- 537 名前:535 mailto:sage [2018/11/28(水) 22:31:22.70 ID:h+t1ldhF.net]
- やっぱ出来ればwindows & C++ で行きたいなぁ。
うーん。
- 538 名前:535 mailto:sage [2018/11/28(水) 22:44:28.01 ID:h+t1ldhF.net]
- 悶々としつつ19路囲連星AIでLV3と対戦させたら素晴らしい勝ち方した。
(;SZ[19] ;B[jj];W[ji];B[ii];W[hi];B[ih];W[ik];B[ki];W[jl] ;B[hh];W[ij];B[jh];W[lh];B[gg];W[ff];B[fg];W[gi] ;B[kg];W[eg];B[lg];W[hg];B[hf];W[jg];B[jf];W[km] ;B[ig];W[hj];B[fh];W[ln];B[mo];W[lj];B[hg];W[mj] ;B[jg]) 自然な流れからのダブル必勝形。 こういうのがたまにあるから止められないんだよなぁ。
- 539 名前:535 mailto:sage [2018/11/29(木) 20:09:22.49 ID:vNqglcEX.net]
- ふーむ。ダブル必勝形で勝負ありかと思ったら白にも粘り筋があって意外と奥が深い。
でも正しく打てばたぶん黒の勝ち。
- 540 名前:535 mailto:sage [2018/11/30(金) 20:09:22.21 ID:QHRZJCgT.net]
- やっとこさ週末か。でもどうせ進まない予感orz
せめてなにかこれだという方針が定まらないと。 焦っちゃダメと頭では分かっていてもついww
- 541 名前:535 mailto:sage [2018/11/30(金) 20:59:59.07 ID:QHRZJCgT.net]
- 理想を言えばwindows & C++ & reinforcement learning
その線で探ってみるか
- 542 名前:535 mailto:sage [2018/12/01(土) 19:46:42.48 ID:1G6ID0fa.net]
- まだまだ方向が定まらないけど、来るべき時のために今のうちに棋譜集めを始めるべきだろうか?
無駄になるかもしれないけど、何もしないよりはいいよね?
- 543 名前:535 mailto:sage [2018/12/01(土) 20:48:59.14 ID:1G6ID0fa.net]
- 16プロセス並列棋譜取り
なかなか圧巻ですな ファンがうるさいけど
- 544 名前:535 mailto:sage [2018/12/01(土) 23:10:46.72 ID:1G6ID0fa.net]
- 全コア使い切っちゃうとほかの作業がしづらいorz
開発用と計算ぶん回す用で2台欲しいwww ありえないけど。
- 545 名前:310 mailto:sage [2018/12/02(日) 10:27:19.04 ID:YQiXDU8o.net]
- 使用コア数制限するパラメータないの?
自分のは並列化処理に使用コア数カウンタ入れて、同時並列数を制限している。 もっとも常に4コアで4多重マックスで動かしているけどorz。16コアなら1つくらい 他のプロセスに空けても、あんま速度低下なさそうでうらやましい。 今現在は記譜作成がメインなので、気が向かない
- 546 名前:時もほっとけば棋譜を訂正しながら
勝手に学習して、少しづつ速度アップしてくれている。気が向かない時に焦らずに済む のでお勧め(^^; 一時速度アップに燃えていたけど、1勝9敗以上の比率で速度アップに失敗して(まあ そんなもんなんだけど)、今は停滞期間中w [] - [ここ壊れてます]
- 547 名前:535 mailto:sage [2018/12/02(日) 21:28:29.33 ID:tVJh9ePf.net]
- >>535
その手がありましたねww 作業中は12プロセス位にしとくか なにはなくとも棋譜取りだけはコツコツつづけます。 一日で多分3〜4000局くらい取れるはず。 ちなみに今これ見てるけど速攻挫折しそうorz https://github.com/HerveFrezza-Buet/RLlib
- 548 名前:535 mailto:sage [2018/12/03(月) 20:43:08.98 ID:M6xR0Sx+.net]
- 一日回して4652局
思ったより取れてる。
- 549 名前:535 mailto:sage [2018/12/03(月) 23:14:26.77 ID:M6xR0Sx+.net]
- 平日まとまった時間が取れなくてもちょっとづつでも進んでいかないとねぇ。
まあ、棋譜取りしてるだけでもいくらか気がまぎれるけど。 100万局目指すか。
- 550 名前:535 mailto:sage [2018/12/08(土) 23:40:47.79 ID:BUSkl7iI.net]
- RLlibやっとサンプルがコンパイルできた
ここまで長かった つかリンクオプションで-lgslつけなきゃいけないとかずっぽり嵌ったわ
- 551 名前:310 mailto:sage [2018/12/09(日) 13:20:20.42 ID:j5g2lrg3.net]
- まったりと記譜取りしてても仕方ないので、速度アップできないか色々あがいてました。
久々にプロファイラで確認したところflip関数が30%、mobility関数が8%ほどでした。 Edaxのソース見つけたので禁断の答え合わせ。flip関数は一つ昔のタイプなので、 恐らく自分の方が早い。mobilitiy関数は少し早そうなので、考え方を導入。でも誤差 範囲の効果しかなかった。 速度計測ルーチンを作って、並列単体速度比が1.2程度しか無い事が判明。 並列処理で排他待ちしそうなところに無駄がないかチェックしたところ、ほぼ全部無駄 だった事が判明(汗。無駄箇所を全て削除したけど、誤差範囲(汗 後方枝刈(ヒューリスティックスなオーダリング)が気になるので、ノード採取してみた。 やはり2割程度速度ダウンするので、プリプロセッサで普段は切り離す事に。 その他もろもろ誤差範囲の改良を積み上げた結果、なんとなく1〜2割は速度アップ した気がしますが、並列処理の効率が悪いのと、後方枝刈の工夫が足りていないの 2か所が、これからの課題かなと思います。 あれ?なんか、ループしてmin-Max探索の高速化に目的が戻ってきている(笑)
- 552 名前:535 mailto:sage [2018/12/09(日) 15:16:13.02 ID:jd/NSaBy.net]
- んあ?RLlibって強化学習のライブラリではあるけどalpha zeroとは直接関係ないのか?
全部無駄だった? www
- 553 名前:535 mailto:sage [2018/12/09(日) 20:10:15.58 ID:jd/NSaBy.net]
- ふらふら浮気しまくりww
浮き草のような人生だ。 今これ見ようとしてます。 https://github.com/novoselov-ab/ai-zero
- 554 名前:535 mailto:sage [2018/12/09(日) 21:08:44.25 ID:jd/NSaBy.net]
- g++ にfilesystemってヘッダがないorz
とりあえずいまVSインストールしてる
- 555 名前:535 mailto:sage [2018/12/09(日) 21:40:01.98 ID:jd/NSaBy.net]
- 動いたっぽい。
久しぶりに一歩進んだ気分。
- 556 名前:535 mailto:sage [2018/12/10(月) 22:15:43.67 ID:wVpZGnnS.net]
- なんか非合法手を選んでしまうみたいなんだが?
うーんなんだろ?
- 557 名前:535 mailto:sage [2018/12/12(水) 22:24:55.51 ID:eFK7VQKv.net]
- 他人のコードに頼るのやめて自力実装に走るべきだろうか?
他人のコードってなによりいまいち情熱が湧いてこない。 でも他人のコードも読めるようにならないと先はないんだろうなぁ。 我流じゃすぐ限界迎えそう。 悩ましい。
- 558 名前:535 mailto:sage [2018/12/14(金) 00:02:46.12 ID:52LN5bpq.net]
- まただよ(再起動)
windows10でも変わらずか…
- 559 名前:535 mailto:sage [2018/12/14(金) 22:52:23.39 ID:52LN5bpq.net]
- コーディングは進まないけど棋譜だけは溜まっていきます。
今、LV3 vs LV3の棋譜が61950局分溜まってます。 ファンがうるさいから夜中は回してないから日中だけなのにこのペース。 8コアはさすがといったところか。 アルファ碁Leeが16万局分の棋譜を使ったらしいからとりあえずその辺目指すか。
- 560 名前:310 mailto:sage [2018/12/18(火) 00:10:23.05 ID:4TPQUuZQ.net]
- FFOテスト(#40−#49)、色々誤差範囲の改良を加えてじわじわスピードアップ
していたけど、ある日突然20%くらい悪化。元に戻せるところは戻したけど、 結局ダメで、裏で評価関数の学習し続けた結果、途中経過でたまたま探索が 悪化するところにはまってしまったと言う事かなぁと。 実際、悪化しているの#49だけで他は改善していたし、学習都度表示している FFO問題の8手読みの次の一手の合否が、14/20から11/20に悪化している。 こういうのあると、速度アップで何を信じて良いのかわからなくなるよね…
- 561 名前:310 mailto:sage [2018/12/18(火) 00:14:29.31 ID:4TPQUuZQ.net]
- という問題もありながら、ノード数表示して、>>492さんの結果と比較すると、
ノード数に圧倒的な差が。NPSは速いけど、それ以上にノード数が多い。 枝刈の差というにはあまりに大きな差で、一桁近い差です。 これ、Iterativeな手法で生じる置換表探索の差じゃないかと思う。 自分のは置換表の動作が遅いので、あまり深い探索まで置換表を適用できず、 読切において後ろの方は置換表が無い(そもそも使用していない)事で、何度も 再探索しているからかなと。 concurrent_unordered_mapを使っているけど、自前でハッシュDB作った方が 良いかもと思い始めた。そこで速度アップすると、置換表適用深度を深くできる。 こういう時、自前で作る人はチェーンハッシュ使っているのかな?
- 562 名前:535 mailto:sage [2018/12/18(火) 23:29:10.84 ID:N5ttC8SJ.net]
- 昔自前でハッシュ作ったことありますが素朴な実装だとさほど性能出なかった記憶がありますね。
自分の場合STLでいいじゃんみたいな結果でした。 テーブルのサイズをでかくすると意外と巡回が遅くなるみたいな。
- 563 名前:535 [2018/12/19(水) 21:16:40.83 ID:REA/9P4B.net]
- スマホでconnect4のパーフェクトソルバーをちょくちょく遊んでるのですが
パターンをかなり覚えて7割くらい勝てるようになりました 囲碁とかも真の棋理が明らかになった方が 逆に人間がコンピュータに勝てるようになるかもしれませんね
- 564 名前:310 mailto:sage [2018/12/19(水) 22:48:18.33 ID:T2sH1fj1.net]
- ハッシュの構想し始めましたが、確かに自分が作って早くなる保証はないですね。
インターフェースを既存のstlに合わせようとか思って調べ始めたら面倒になりました。 で、色々見ていたら、そのまんま効率化できそうな使い方を見つけた。 有れば読み込んで更新、無ければ追加の方法です。 あとバケットサイズとか個数とか、その辺を調べていった方が早くなるかも。 並列処理だとtry_emplaceが使えないのね。これが使えたらきっと早くなるのに。
- 565 名前:535 mailto:sage [2018/12/20(木) 23:32:19.98 ID:zB5frbtZ.net]
- また再起動してる。。。
まあいいけど、もう諦めぎみ。 なんか仕事が急に忙しくなってますますコーディングから遠ざかってますが、 棋譜だけは地味に溜まってます。今82889局分溜まってます。 並列化ハッシュってどんななんですかね。そういえば知らない。
- 566 名前:310 mailto:sage [2018/12/21(金) 00:04:37.10 ID:kvniGc89.net]
- いや。まぁ。バケットか中のレコードか、どちらかの単位で排他かけるだけです。
Hash関数がきちんとばらけさせてくれたら、基本的にあんまり排他で捕まる事は 無いので、それほど気にしなくてもパフォーマンスに影響ないかなぁと。実際に concurrent_unordered_mapの配列用意して、適当にハッシュでばらけさせて格納 してみたら(つまり、同じmapじゃなければ排他はおきない)、排他で遅くなっている 訳ではない事が確認できています。 と言いながら、iteratorとか考えだすと、何を並列セーフにして、何をアンセーフに するかみたいな事で悩んじゃいます。 先日の続きでmax_load_factorとかbacketサイズとかいじってみましたが、 パフォーマンスにほとんど影響がないです。というか、どうせ後で逐次的に拡張する くらいならと、backetサイズを増やしても性能は上がらないし、max_load_factorを 増やしても、性能が落ちるだけだったり…。 棋譜作成だけなら並列化レベルをもう1段上げて、4記譜同時作成とかすれば、 個々の読み切りはシングルスレッドに下げられて、ただのunordered_mapが使えるし その方が棋譜作成的には速度アップしそうな気がしてきた(汗 FFO的には別処理になるけど。
- 567 名前:535 mailto:sage [2018/12/22(土) 00:08:33.74 ID:w0ekMTPt.net]
- 採りためた棋譜をもとに序盤DBを更新してみましたが、
確かにうち筋は変わってる気がしますが強くなってるかはよくわからないというorz まあ序盤DBは誤魔化しみたいなものだから期待しすぎもよくないか。
- 568 名前:535 mailto:sage [2018/12/22(土) 00:42:25.73 ID:w0ekMTPt.net]
- 序盤DB更新で強くなってるか統計とってみたいけどモンテカルロが遅すぎてそれもままならないというorz
やはりモンテカルロに代わる何かを実装しなければ…
- 569 名前:535 mailto:sage [2018/12/26(水) 00:12:59.86 ID:2Tvqp++w.net]
- 棋譜USBメモリにコピーしたらめっちゃ時間かかるorz
130MBくらいなのにUSBメモリってやっぱ遅いんだな。
- 570 名前:310 mailto:sage [2018/12/26(水) 00:20:29.39 ID:Rkthqh0l.net]
- 4記譜並列作成実装してみました。ただいま本番状態でテスト中。
並列処理の基本は、なるべく上位の層で並列化すべしでした。 現状、並列探索の速度は、シングル探索の2倍程度です。 1つ1つの探索には時間が2倍かかるけど、4つ並列なので、トータルでは 半分の時間で処理できるので、実質2倍みたいな。 探索中のオーバーヘッドはほぼ無いはずで、待ち合わせロスくらいなので、 大量に一気に処理する分には、ほぼ無視できるかなと。 これやると、スレッドの数がモロに効いてくるんで…48並列くらいできたら…
- 571 名前:535 mailto:sage [2018/12/26(水) 00:30:44.15 ID:2Tvqp++w.net]
- 310さんはintel派なんでしたっけ?
AMDでもzen2はかなりコスパいいものが来ると思いますが…
- 572 名前:535 mailto:sage [2018/12/26(水) 00:40:17.50 ID:2Tvqp++w.net]
- 試しにSSDに棋譜コピーしてみたらかなり速いw
やっぱそうなのか。
- 573 名前:310 mailto:sage [2018/12/26(水) 03:07:45.74 ID:Rkthqh0l.net]
- あれれ。思ったほど速度が出ない…というか、単体の速度が半分どころか、
1/4くらいになっているイメージ…。深さが深いものほど遅いという事は、 置換表周りかなぁ。 棋譜作成する対象によって速度が結構変わるので、評価しづらい。 メモリー配置等の問題も考えないといかんような気がしてきた。 いかん。夜も更けていく…。 >>561 なんか、フラッシュメモリー自体は書き込みが遅くて、SSDだとその辺を並列 化とかキャッシュとかで回避しているらしいです。USBメモリーは、その辺真面目 にやっているもの(高価)と、そうじゃないもの(安価)で差があるけど、それでも SSDには敵わないとか。
- 574 名前:535 mailto:sage [2018/12/26(水) 21:06:48.31 ID:2Tvqp++w.net]
- 明日か明後日あたりで棋譜10万局分溜まりそう
深層学習のプログラム、組みたいなぁ でも難しいんだよなぁ
- 575 名前:310 mailto:sage [2018/12/27(木) 00:00:43.02 ID:APLuuq5f.net]
- 悩ましい。
シングルmin-Maxの並列動作と、パラレルmin-Maxのシングル動作。 どうも速度的には大差ない感じ。 2倍くらい速度出ると思ったのに…。 スレッド数が増えたら差が出てくるのかなぁ。
- 576 名前:535 mailto:sage [2018/12/27(木) 20:54:08.52 ID:gYB4tQZF.net]
- 10万局いきました。
- 577 名前:535 mailto:sage [2018/12/27(木) 21:18:27.23 ID:gYB4tQZF.net]
- 多分俺が世界で一番囲連星LV3の計算を回した人だろうなw
- 578 名前:310 mailto:sage [2018/12/27(木) 22:00:15.50 ID:APLuuq5f.net]
- 色々あがいた挙句、そこそこ時間がかかる26手空きを、それぞれで解いてみた。
並列探索で6分。シングル単独動作で12分。シングル4並列動作で18分。 やはり、シングルも4並列する事でなにがしかのオーバーヘッドがあるようです。 単純計算だと並列探索6分を4個で24分に対して、シングル18分で4つ解ける 事から33%の速度アップが見込める事になるけど、体感そこまでの効果が感じ られないというか、時間がかかる問題では更に差が大きくなっていて、そいつらに 足を引っ張られている印象。 そのうえで、裏でゴソゴソやりながら計算させる時に色々弊害があるので、 CPUの増強を決断するまで放置しようかと思います。 色々あがいた結果か、並列探索ですこーし速度アップした感じ。 10%行くかいかないか。
- 579 名前:535 mailto:sage [2018/12/27(木) 22:05:17.88 ID:gYB4tQZF.net]
- よくわからんがハイパースレッディングって単純に性能2倍になるわけではないということではなくて?
- 580 名前:310 mailto:sage [2018/12/27(木) 23:06:53.59 ID:APLuuq5f.net]
- もちろんそうなんだけど、排他待ちを要するデータも、待ち合わせロスも
無いので、もうちょっと性能出るんじゃないかと思っていたのです。 あと、うまく説明できないけど、ノード数が多い探索は、ノード数比以上に 時間がかかっている気がしています。まだ感覚の話ですが。
- 581 名前:535 mailto:sage [2018/12/28(金) 20:37:08.10 ID:HWMCAOZD.net]
- LV3は強いんだけど詰み状態から詰みを逃してる棋譜が散見される。
直せるもんなら直したほうがいいんだろうけどかなり大変だろうな
- 582 名前:310 mailto:sage [2018/12/29(土) 09:40:46.33 ID:hnomLa8j.net]
- んー。シングル並列動作で6時間かかっても解けずに諦めた盤面とを見つけて、
パラレルで解いたら1時間40分だった。空きマス26だと通常1分程度なんだけど、 時々こういう時間がかかる盤面がある。今までテストが面倒なので、10分以内に 終わりそうな奴でテストしていたけど、もしかしたら探索ノードが多い奴ほど、 シングル並列動作での速度低下が大きいのかも知れない。 時間がかかる奴ほど、シングル・パラレル比が悪化するなら、今考えている大体 3倍程度ってのは成り立たなくなって、もっと悪い事になる。それなら感覚的に 合致する。普通に流れている時には、シングル並列で高速化できそうな手ごたえ があるんだけど、時間がかかる盤面が来ると急速に逼塞していって、なかなか 回復しないという感じ。 パフォーマンスモニタにらみながら、unordered_mapのメモリアロケーションの方法 を
- 583 名前:想像してみた。初期確保件数指定(倍々で自動追加される)してみたけど、溢れて
もいないのにダラダラとメモリー使用量が増えていく。もしかしたらOSにメモリーを 貰いに行く動作が排他待ちになっているのかも知れない。どうやって検証しよう。 やっぱ自前置換表作るしかないのかなぁ。 [] - [ここ壊れてます]
|

|