dlshogi
最近のコンピュータ将棋では、氷彗をはじめとしてNNUE系が、Stockfishの手法を取り入れることで棋力を伸ばしている。 また、ディープラーニング系のモデルを知識蒸留することで、モデル精度も向上している。それと比較して、dlshogiはやや停滞気味で、序中盤…
チェスAIのStockfishでは、SPSAという方法で、探索パラメータのチューニングが行われている。今年の世界コンピュータ将棋選手権の打ち上げで、Qhapaqチームの澤田さんからKaggleのFIDE & Google Efficient Chess AI Challengeで、SPSAが効果的だったという話…
5/3~5/5に開催された第35回世界コンピュータ将棋選手権にHEROZチームとして、「dlshogi with HEROZ」というプログラム名で参加しました。 大会の概要 今回は、51チームが参加しました。 第1予選、第2予選を通過した上位8チームで総当たりのリーグ戦で決勝戦…
以前に、2024年11月時点のdlshogiの40ブロック512フィルタのモデルで、方策のみで指した場合の、floodgateでのレーティングを測定した。 その時点では、レーティングが2750という結果だった。今回、50ブロック640フィルタのモデルを学習したので、同様に方策…
前回、軽量価値ネットワークの推論をStockfishの探索に組み込んで、モデルサイズ相当のNPSで探索できることを確認した。前回は、36,819,741局面を8エポック学習しただけで、Lesserkaiに勝てるがGPSFishには勝てなかった。今回は、dlshogiの学習で使用した約3…
前回、軽量価値ネットワークのモデル全体の推論をC++でSIMDを使用して実装した。 今回は、推論を探索に組み込む。 ネットワーク構成見直し 推論を組み込む前にネットワーク構成で気になる箇所があったので見直した。埋め込み層を実装した際に、permuteを忘れ…
前回までで、軽量価値ネットワークの推論のビルディングブロックがすべてそろったので、それらを組み合わせてモデル全体の推論処理を実装する。 実装 以下の通りモデル全体の推論処理を実装した。 処理を順番に呼び出すだけなので、特に工夫点はない。複数ス…
前回までで、層ごとの推論処理が実装できたので、今回は、PyTorchで学習したモデルをレイヤー融合して、推論用にパラメータを保存する処理を実装する。 レイヤー融合 畳み込み層の直後のBatchNorm2dは、畳み込み層のパラメータに融合できる。PyTorchでは、fu…
日曜日にたややんCh.で配信された「将棋AI頂上決戦2025 氷彗 vs dlshogi」で使用したモデルについての補足です。【#将棋AI頂上決戦2025 】⏰本日3/9, 20:00~、将棋AIの頂点が決まる!❄氷彗 vs ⛲dlshogi公開されている将棋AIと今ほど棋力差がある時代は久しぶ…
前回は、軽量価値ネットワークの連結と活性化関数の推論をSIMDで実装した。今回は、埋め込み層の推論処理を実装する。 埋め込み層 軽量価値ネットワークの def __init__(self, dims=(16, 4, 32), activation=nn.ReLU()): self.l1_1 = nn.Embedding(NUM_EMBED…
前回、軽量価値ネットワークの畳み込みの層をSIMDで実装した。今回は、9x1と1x9の畳み込みの層の出力を連結して活性化関数ReLUを適用する処理をSIMDで実装する。 連結と活性化関数 軽量価値ネットワークの h2 = self.act(torch.cat((h2_1.view(-1, self.dims…
前回に引き続き軽量価値ネットワークの推論処理をSIMDで実装する。前回は全結合の推論処理を実装したが、今回は畳み込み層を実装する。 畳み込み層 実装中の軽量価値ネットワークは、9x1と1x9のカーネルを並列で適用を行う。入力サイズは9x9で固定のため、片…
前回、LibTorchで推論処理を実装してStockfishの探索に組み込んだが、NPSが1スレッド2万程度で、Stockfish系の探索エンジンとしては遅すぎることがわかった。 LibTorchは推論が別スレッドで実行されるため、オーバーヘッドが大きく、軽量のモデルをバッチサ…
前回、dlshogiの最新モデルで、自己対局して生成した教師データを、同じモデルで推論した結果に付け替えることで、モデルサイズによらず精度が上がる傾向があることを確かめた。今回は、dlshogiの最新モデルではなく、既存の教師データを使い、そのデータを…
前回、dlshogiのモデルの自己対局で生成した教師データの方策、価値、勝敗を、同一モデルで推論した結果に付け替えた場合、精度が上がることを観測した。 自己対局で探索した教師データより、探索なしで推論した結果の方が精度が上がるのは予想外の結果だっ…
前回、NNUE系のtanuki-で生成した教師データを使用して、dlshogiのモデルで方策と評価値、勝敗を付け替えた場合に、dlshogiの推論結果で付け替えた方が精度が上がることが確認できた。今回は、dlshogiの最新モデルの自己対局で生成したデータに対して、同一…
前回、NNUE系で生成した教師データの方策と評価値に加えて、勝敗もdlshogiのモデルで推論した結果に付け替えた方が精度が上がることを確かめた。前回までは、2020年にNNUE系で生成した教師データを使用したが、nodchip氏が公開している最近のNNUEで生成した…
前回、NNUE系で生成した教師データの評価値をdlshogiのモデルで推論した評価値に付け替えることを試した。今回は、方策についてもモデルの推論結果に付け替えることを検討する。 方策の付け替え NNUE系で生成した教師データは、最善手のみが記録されているが…
将棋AIの大会では、2年ほど前から定跡により勝敗が高い確率で決まるという状況になっている。相手の準備していない定跡で嵌めたり、相手が準備した定跡に嵌らないようにするという盤外の戦術が必要になっており、AIの技術的な要素とは別の戦いになっている。…
前回、入玉宣言に関する特徴量を加えたモデルの強さを測定したが、入玉宣言勝ちした棋譜がなく入玉の精度が測定できていなかった。NNUE系を相手にして連続対局を行い測定しなおした。 強さ NNUE系を相手に互角局面から連続対局を行った結果は以下の通り。 NN…
前回は、入玉宣言に関する入力特徴量を追加して、入玉宣言した棋譜に対する評価精度が向上することを確認した。今回は、入力特徴量の宣言までの残り点数を前回10点未満にしたところを、20点未満にした場合で比較した。 また、入力特徴量を増やしたことでNPS…
現在のdlshogiの入力特徴量には、入玉宣言に関連する特徴量を含んでいない。 入玉宣言の精度を上げるため、入玉宣言に関する特徴量を加えることを検討する。 現在の入力特徴量 現在の入力特徴量: 盤上の駒 駒の種類ごとの効き 効き数 持ち駒 王手 持ち駒は…
11/30、12/1に開催された文部科学大臣杯第5回世界将棋AI電竜戦にdlshogiとして参加しました。 結果 予選を1位で通過し、決勝リーグでは、1位と0.8勝差で準優勝という結果になりました。dlshogiは、第2回から4年連続準優勝です。 今大会の感想 優勝した氷彗が…
前回、dlshogiの最新モデルで方策のみで連続対局した場合の強さを測定した。 結果、第2回世界将棋AI電竜戦エキシビジョンバージョンと比べて方策がR+395.1だけ強くなっていることわかった。今回は、floodgateに放流して、レーティングを測定した。 測定条件 …
前回書いた通り、方策の強さを手軽に測定できるようになったので、公開している第2回世界将棋AI電竜戦エキシビジョンバージョンから最新モデルがどれくらい強くなっているか測定した。以前に、WCSC32版dlshogiと探索ありで比較したときは、互角局面集を使用…
先日学習したラージカーネル+Transformerモデルの方策のみの強さ(Policy Elo)を測定した。これまで、同一持ち時間や固定ノード数で計測も行ったが、方策のみの連続対局を行うことで、短時間で直接方策の強さを測ることができる。floodgateのテストデータでの…
以前に検証したラージカーネルのモデルにTransformerを組み合わせたモデルの学習を行った。実験段階では20ブロック256フィルタのモデルを使用したが、今回は11月末に行われる電竜戦向けに40ブロック512フィルタのモデルを学習した。 モデル構造 20ブロック25…
前回、ResNetベースのモデルにおける位置エンコーディングの効果について測定した。 結果、位置エンコーディング有無による差は、ほぼなかった。入玉の局面においては、差がある可能性があるため、追加で検証した。 実験条件 評価データとして、 NNUE系1000…
Ryfamateが採用しているモデル構造の工夫の一つである位置エンコーディングについて検証する。 位置エンコーディング 畳み込みニューラルネットワークは、位置不変性という特性を持っており、画像の位置をずらした場合でも同じように認識される。 将棋では、…
前回、Ryfamateと同様の9x1と1x9カーネルを並列にしたブロックが、精度と推論速度の両方でメリットがあることを実験で確認した。【dlshogi】ラージカーネルの効果 - TadaoYamaokaの開発日記 【dlshogi】ラージカーネルの効果 その2(推論速度) - TadaoYama…