TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

2020-05-01から1ヶ月間の記事一覧

dlshogiの学習則

dlshogiを改造して遊びたい方のために、dlshogiの学習則についてちゃんと書いてなかったので書いておく。主に、学習部のソースtrain_rl_policy_with_value_using_hcpe_bootstrap.pyの解説になっている。 AlphaZeroの学習則 AlphaZeroの学習則は、 となってい…

Agent57: Outperforming the Atari Human Benchmarkを読む その15

付録H. 実験結果 H.1. Atari 10:アブレーションのスコア表 H.2. Backpropウィンドウの長さの比較 図12. 難易度の高い10ゲームのセットでの、Backpropウィンドウの長さが短い場合と長い場合のパフォーマンスの比較 H.3. アイデンティティとh変換の組み合わせ…

ONNX Runtimeを使ってみる

dlshogiはCUDAに対応したNvidiaのGPUが必須になっているが、AMDのGPUやCPUのみでも動かせるようにしたいと思っている。Microsoftがオープンソースで公開しているONNX Runtimeを使うと、様々なデバイスでONNXモデルの推論を行うことができる。 TensorRT対応で…

Agent57: Outperforming the Atari Human Benchmarkを読む その14

付録G. ハイパーパラメータ G.1. との値 セットの選択の間の直感は次のとおりです。 については、非常に活用的である方策と探索的である方策を奨励したいので、図11(a)に示すようにシグモイドを選択する。 については、活用方策(の値が小さい)には長期的な…

Agent57: Outperforming the Atari Human Benchmarkを読む その13

付録F. ネットワークアーキテクチャ 図9. Agent57のスケッチ 図10. Agent57の詳細

Agent57: Outperforming the Atari Human Benchmarkを読む その12

付録E. 分散設定の実装の詳細 リプレイバッファー 固定長の遷移のシーケンスと優先度を格納する。 遷移はの形式である。 このような遷移はタイムステップとも呼ばれ、シーケンスHの長さはトレース長と呼ばれる。 さらに、リプレイバッファー内の隣接するシー…

Agent57: Outperforming the Atari Human Benchmarkを読む その11

付録D. マルチアームバンディット形式 この節では、マルチアームバンディット(MAB)パラダイム、上限信頼限界(UCB)アルゴリズム、およびスライディングウィンドウUCBアルゴリズムについて簡潔に説明する。 より完全な説明と分析については、Garivier & Mo…

Agent57: Outperforming the Atari Human Benchmarkを読む その10

付録C.リトレースおよび変換されたリトレース リトレースは、評価または制御のための方策オフのRLアルゴリズムである。 評価設定の目標は、行動方策から引き出された軌跡からターゲット方策の状態行動価値関数を推定することである。 制御設定では、を近似す…

C++の再現性の低いバグを解析する

C++

先日、dlshogiをfloodgateでテストした際に、goコマンドに対して結果を返さずタイムアップするという事象が発生した。再現性が低く、全く同じ局面を手動でコンソールからコマンドを入力して何度も探索させても再現しなかった。 スレッドプールの処理に問題が…

将棋AIの進捗 その48(NPS改善)

ノード再利用の方式見直しを行った後、強くなっているかApery(WCSC28)と1手3秒100局で確認を行った。結果、勝利は62%で、変更前は69%だったので、強くなっていないことがわかった。 考察 理由としては、以下が考えられる。 Ponderなしの秒読みではノード再利…

将棋AIの進捗 その48(PV表示対応)

Qhapaqさんからプルリクをいただいたので、dlshogiをPV表示に対応しました。プルリクにはなかったのですが、USIオプション「PV_Interval」を追加しました。 「0」にするとPV表示なし、0以上にすると、設定したms間隔でPVを表示します。masterブランチに反映…

将棋AIの進捗 その47(Linuxのマルチスレッド排他処理)

昨日の記事で、dlshogiのゲーム木の管理をロックレス方式に見直しを行った。Windowsでは、ノード単位の排他制御をmutexを用いずに、atomic_flag (TAS機能)で実現することで10%NPSが向上したが、Linuxで測定すると800NPSくらいしかでないという悲惨な結果にな…

将棋AIの進捗 その46(ノード再利用の見直し)

世界コンピュータ将棋オンライン大会でノード再利用の処理に問題があることがわかったので、見直した。先日の記事で、Leela Chess Zeroのゲーム木の管理方法を調査して、合流を処理しないでC++のヒープ管理を利用してツリー状にノードを管理していることが分…

Leela Chess Zeroのノード再利用の方法

世界コンピュータ将棋オンライン大会で、dlshogiのノード再利用の方法に問題があることが明らかになったので、見直すことにする。 現在のハッシュ管理 dlshogiのハッシュ管理は、Ray+Rnのゾブリストハッシュの実装を参考にしていた。 Ray+Rnのノード再利用の…

dlshogiの環境構築手順

世界コンピュータ将棋オンライン大会でdlshogiライブラリを使用していたGCTは、AWSのWindows Serverで環境構築されていました。構築手順を共有いただいたので、参考にしてください。AWSでのGPU環境の構築手順について · Issue #12 · TadaoYamaoka/DeepLearni…

dlshogi(wcsoc2020)のWindows版ビルド済みファイル公開

dlshogiの世界コンピュータ将棋オンライン大会バージョンのWindows版ビルド済みファイルを公開します。Release 世界コンピュータ将棋オンライン大会バージョン · TadaoYamaoka/DeepLearningShogi · GitHub実行には、CUDA 10.2に対応したGPUが必要です。 イン…

世界コンピュータ将棋オンライン大会 結果報告

昨日、本日、世界コンピュータ将棋オンライン大会が開催されました。 dlshogiはシードのため2日目からの参加でした。結果は、4勝4敗で、2日目に進んだ28チームの内13位でした。 floodgateでのテストからR4000くらいと見積もっていたので、順当な結果だと思い…

将棋AIの進捗 その45(大会直前の性能改善)

いよいよ本日から世界コンピュータ将棋オンライン大会が始まりました。概要 http://www2.computer-shogi.org/wcso1.html 参加チーム https://www.apply.computer-shogi.org/wcsoc/team.html 棋譜中継 http://live4.computer-shogi.org/wcso1/ 特設サイト htt…

将棋AIの進捗 その44(大会直前の調整)

世界コンピュータ将棋オンライン大会はいよいよ明日から開催です。今日は、直前に簡単に変更できる部分をいくつか調整を行っていました。 探索延長の条件変更 今までは、ルートの訪問数が1番目の手と2番目の手の差が1.2倍未満の場合に、1.5倍探索を延長して…

将棋AIの進捗 その43(探索パラメータ調整)

未訪問ノードのQの初期値の変更と、FPU reductionを導入してから、探索パラメータの再調整を行っていなかったので、Optunaで最適化を行った。FPU reductionはKataGoを参考に、ルートノードは0としていたが、パラメータにして調整するようにした。 また、Leel…