TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

メモリの非同期転送対応

Mizarさんからプルリクエストを頂き、CPUGPU間のメモリの非同期転送に対応した。 TensorRT: 転送・推論を非同期に行う by mizar · Pull Request #67 · TadaoYamaoka/DeepLearningShogi · GitHubこれは第2回世界将棋AI電竜戦のふかうら王に実装されていた改善…

第2回世界将棋AI 電竜戦 結果報告その2

後々のためにデータを整理しておきたいので、dlshogiとGCTの各種統計情報を調べた。 探索の統計 NPS、思考時間、探索ノード数、探索深さ、詰み手数の統計は以下の通り。 dlshogi 1日目 予選リーグ nps time nodes depth mate count 940 940 940 940 58 mean …

第2回世界将棋AI 電竜戦 結果報告

11/20(土)、21(日)に開催された第2回世界将棋AI電竜戦に参加しました。チームdlshogiとして、dlshogi、GCT電竜、python-dlshogi2という3つのソフトでエントリしました。 大会の結果 GCT電竜が優勝、dlshogiが準優勝、python-dlshogi2がC級優勝という結果に…

【書籍の宣伝】強い将棋ソフトの創りかた

12/20に、マイナビ出版から書籍を出します(GCT電竜の加納さんとの共著です)。前著の「将棋AIで学ぶディープラーニング」の古くなった内容を改めて、加えて、第2回世界将棋AIにも参加しているGCT電竜を超える強い将棋AIを創る方法を解説しています(GCT電竜…

第2回世界将棋AI 電竜戦 1日目結果報告

本日、第2回世界将棋AI 電竜戦の予選リーグがありました。 予選リーグの結果 全46チーム参加で、上位10チームが明日のA級リーグで総当たりで優勝を争います。 11位~28位はB級リーグ、それ以外はC級リーグになります。私はdlshogiと、チームとしてGCT電竜と…

floodgateの序盤3手の統計

序盤3手の戦型と先手勝率について話題になっているので、floodgateの棋譜から統計を調べてみた。相居飛車の序盤は3手で分岐して、4つの主要な戦型になります。(手順前後はありますが)その上で評価値からmin-maxを取ると赤矢印、つまり相掛かりが最善になる…

Windows11+WSL2+Dockerでdlshogiを動かす 続き

昨日、Windows11でCUDA on WSLを試したが、なぜかWindows上でdlshogiのNPSが低下する問題が発生した。WindowsのCUDAのバージョンが古かったため、新しいバージョンで試してみた。 CUDAインストール TensorRTの最新版(8.2.0.6)に対応した、CUDAの最新版(11.4)…

Windows11+WSL2+Dockerでdlshogiを動かす

学習用のPCをWindows11にアップグレードしたので、CUDA on WSLを試してみた。 ドライバインストール CUDA on WSLに対応したドライバをインストールする。 GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer ※2021/11/1 追記 CUDA 11.4に付属する…

dlshogiのmateの読み筋表示 続き

昨日の記事で、dlshogiを詰みの読み筋表示に対応させたことを書いた。 その際、王手の合法手に不成を生成していないことで、手順が10手以上長くなる局面があることがわかった。 探索速度が低下しないのであれば、不成を生成することを検討したい。そこで、不…

dlshogiのmateの読み筋表示

dlshogiは、モンテカルロ木探索とは別に、詰み専用のアルゴリズム(df-pn)で長手数の詰み探索を行っている。 df-pnで詰みが見つかった場合、すぐにその手を返している。df-pnは、詰みがあるかどうかを見つけるアルゴリズムのため、見つかる手順が最短手順とは…

dlshogiの評価値のスケール調整

dlshogiは、開始局面から170点という比較的大きな評価値を出力する。 これは適切でないため、今回調整を行うことにした。 勝率から評価値への変換 dlshogiの内部では、局面の価値は、評価値を使わず勝率で扱っているが、GUIソフトには評価値として返す必要が…

接待dlshogi

接待水匠にインスパイアされて接待dlshogiを作ってみた。何番煎じだというネタですが、接待将棋プログラムが一応動くようになりました!https://t.co/BLvfTF2rOeMultiPVで思考し、手番から見た評価値が100以上の指し手のうち、最も100に近いものを選択する単…

将棋AIの実験ノート:活性化関数Mishを試す

以前にdlshogiのモデルで活性化関数をReLUからSwishにした場合の比較を行った。今回は、活性化関数Mishを試した。 Mish Mishは、 で表される活性化関数である。論文によると、6層CNNのCIFAR-10の訓練で、Swishの正解率を上回ると報告されている。 [1908.0868…

dlshogiの学習時の自己対局での先手勝率

少し前にdlshogiの先手勝率について調べた。 今回は、dlshogiの学習時の自己対局での先手勝率について調べた。 開始局面 現在、dlshogiの自己対局は、floodgateの16手目までの出現頻度が99パーセンタイル以上の局面を初期局面集として、そこからさらに16手MC…

英語のDiscordチャンネルを翻訳して読む方法

ほぼ個人用メモです。コンピュータ囲碁やコンピュータチェスの開発者のやり取りは、Discordのチャンネルで行われていて有用な情報が多い。 Leela Zero and Friends Leela Chess Zero 今までWidnowsやスマホのDiscordのアプリで眺めていたが、英語だと読む速…

互角局面集作成スクリプト

勝率測定などに「たややん互角局面集」を使わせてもらっている。 ただ、抽出条件の「36手目の局面まで、全ての指し手について評価値が±100以内となっている対局のみ」だと、dlshogiの棋譜が除外されてしまう点が気になっていた。 dlshogiは、開始局面で160付…

水匠4とdlshogiのNPSの比較

ディープラーニング系の将棋AIは、従来の将棋AIと比べてNPSが低くても強いという特徴がある。 NPSがどれくらい違うのか質問を受けることがあるので、測定を行った。 NPSのカウント方法の違い やねうら王(元はStockfishのソース)のNPSは、探索中にdo_moveを行…

将棋AIモデルのテストデータの作り方

dlshogiで以前から使用しているテストデータと、GCTのノートブックのテストデータで、テスト損失と正解率の違いがあるため、テストデータの作成方法によってどう違いがでるのかを検証した。 テストデータの比較 まず、dlshogiのテストデータとGCTのテストデ…

dlshogiのOpenCL対応 その1

dlshogiをOpenCLに対応させたいと思っている。 現在のdlhsogiはTensorRTを使用しているため、再配布の制限があり、環境構築が大変になっている。 OpenCLは、必要なdllを同梱すれば環境構築が不要になるので利用者にメリットがある。OpenCLのコードを一から作…

やねうら王バグのdlshogiへの影響

先日の水匠とdlshogiの長時間マッチの第1局で、水匠側にバグが発生するというハプニングがあった。 原因などの詳細は、やねうら王ブログを参照して欲しい。 先日の電竜戦、長時間マッチで現れたやねうら王のバグについて | やねうら王 公式サイトここで、こ…

dlshogiの先手勝率

dlshogiの先手勝率について質問されることがあるので、計測してみた。持ち時間1分1秒加算で、dlshogi(dr2_exhi)の自己対局と、dlshogiと水匠4の対局で計測した。 対局条件が持ち時間だと、ある程度手が揺らぐため完全に同じ手順になるのは防ぐことができる。…

OpenCLのサンプルコード

ほぼ個人用メモ。「改訂新版 OpenCL入門 1.2対応 マルチコアCPU・GPUのための並列プログラミング」を買って、OpenCLをお勉強中。 OpenCL 1.2とバージョンが古いが、KataGoもOpenCL 1.2で実装されているので問題ない。 そもそもNVIDIAはOpenCLに対してやる気…

ONNXファイルのパース処理

dlshogiは現在TensorRTを使用しているが、TensorRTは再配布できないなどライセンスが厳しいのと、環境構築が大変なため、OpenCLに対応させたいと思っている。OpenCLでも、NVIDIAのGPUのTensorCoreをPTXインラインアセンブリという方法で使用することができる…

dlshogi(第2回世界将棋AI電竜戦エキシビジョンバージョン)のWindows版ビルド済みファイル公開

dlshogi(第2回世界将棋AI電竜戦エキシビジョンバージョン)のWindows版ビルド済みファイルを公開します。 ダウンロード Release 第2回世界将棋AI電竜戦エキシビジョンバージョン · TadaoYamaoka/DeepLearningShogi · GitHub のAssetsからダウンロードしてくだ…

電竜戦長時間マッチ「水匠 vs dlshogi」

明日8/15(日) 17:00から、私の開発した「dlshogi」と電竜戦TSEC優勝ソフト「水匠」との長時間マッチを行います。 対局の様子は、YouTubeとニコニコ動画で生配信されます。 先手、後手入れ替えて計2局行います。 第1局は、阿部健治郎七段と佐々木勇気七段のダ…

AWS inf1 インスタンスで推論を行う その3

前回、neuronコアを複数使用して推論を行うことを試した。 今回は、推論速度の測定を行った。参考にしたいのは、dlshogiでの推論速度であるため、C++のdlshogiの推論部分に組み込んで、どれくらいのNPSがでるのかを確認した。 C++での推論の実装方法 C++でne…

AWS inf1 インスタンスで推論を行う その2

前回AWS inf1 インスタンスでdlshogiのモデルの推論ができることを確認したが、今回はマルチGPUで推論できるかを確かめてみた。マルチGPUにするには、Inferentia チップが複数あるAWS inf1 インスタンス(inf1.6xlargeとか)が必要と思っていたが、よく調べる…

AWS inf1 インスタンスで推論を行う

dlshogiをAWS inf1 インスタンスで動かせないか試している。 AWS inf1 インスタンスは、推論に特化したAWS Inferentia チップが搭載されている。現在のdlshogiは、TensorRTを使用して推論を行っているため、NvidiaのGPUで動かすことが前提になっている。 onn…

pandoc-crossrefで参考文献を引用する方法

ほぼ個人用メモ 参考文献管理 Mendeleyを使う。論文の場合は、PDFを登録する。書籍の場合は、Google Scholar ボタンを使用して、Bib Tex形式をコピーしてMendelayに張り付ける。 参考: Google Scholarプラグインから書籍のBibTeXを取得してMendeleyに突っ込…

第2回 電竜戦TSEC 結果報告

7/17~18にかけて実施された第2回 電竜戦TSECにdlshogiというソフトで参加しました。 チームとしてはGCT電竜でも参加しています。 第2回世界将棋AI 電竜戦TSEC -中継サイトファイナルリーグとB級リーグに分かれて実施されて、7/3に行われた予選で上位2チーム…