TadaoYamaokaの開発日記

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

dlshogi

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

11/30、12/1に開催された文部科学大臣杯第5回世界将棋AI電竜戦にdlshogiとして参加しました。 結果 予選を1位で通過し、決勝リーグでは、1位と0.8勝差で準優勝という結果になりました。dlshogiは、第2回から4年連続準優勝です。 今大会の感想 優勝した氷彗が…

【dlshogi】方策のみで指した場合のfloodgateでのレーティング

前回、dlshogiの最新モデルで方策のみで連続対局した場合の強さを測定した。 結果、第2回世界将棋AI電竜戦エキシビジョンバージョンと比べて方策がR+395.1だけ強くなっていることわかった。今回は、floodgateに放流して、レーティングを測定した。 測定条件 …

【dlshogi】最新モデルが公開バージョンからどれくらい強くなっているか

前回書いた通り、方策の強さを手軽に測定できるようになったので、公開している第2回世界将棋AI電竜戦エキシビジョンバージョンから最新モデルがどれくらい強くなっているか測定した。以前に、WCSC32版dlshogiと探索ありで比較したときは、互角局面集を使用…

【dlshogi】ラージカーネル+TransformerモデルのPolicy Elo

先日学習したラージカーネル+Transformerモデルの方策のみの強さ(Policy Elo)を測定した。これまで、同一持ち時間や固定ノード数で計測も行ったが、方策のみの連続対局を行うことで、短時間で直接方策の強さを測ることができる。floodgateのテストデータでの…

【dlshogi】ラージカーネル+Transformerモデルの学習

以前に検証したラージカーネルのモデルにTransformerを組み合わせたモデルの学習を行った。実験段階では20ブロック256フィルタのモデルを使用したが、今回は11月末に行われる電竜戦向けに40ブロック512フィルタのモデルを学習した。 モデル構造 20ブロック25…

【dlshogi】位置エンコーディング(その2 入玉局面)

前回、ResNetベースのモデルにおける位置エンコーディングの効果について測定した。 結果、位置エンコーディング有無による差は、ほぼなかった。入玉の局面においては、差がある可能性があるため、追加で検証した。 実験条件 評価データとして、 NNUE系1000…

【dlshogi】位置エンコーディング

Ryfamateが採用しているモデル構造の工夫の一つである位置エンコーディングについて検証する。 位置エンコーディング 畳み込みニューラルネットワークは、位置不変性という特性を持っており、画像の位置をずらした場合でも同じように認識される。 将棋では、…

【dlshogi】ラージカーネルの効果 その3(位置情報)

前回、Ryfamateと同様の9x1と1x9カーネルを並列にしたブロックが、精度と推論速度の両方でメリットがあることを実験で確認した。【dlshogi】ラージカーネルの効果 - TadaoYamaokaの開発日記 【dlshogi】ラージカーネルの効果 その2(推論速度) - TadaoYama…

【dlshogi】ラージカーネルの効果 その2(推論速度)

前回、dlshogiにおけるラージカーネルの精度と訓練速度を測定した。推論については、測定していなかったので、追加で測定した。dlshogiで、Ryfamate Cross Network (RyfcNet)の実験をしていただいたようです。C-Layerは、paddingを行わず、通常のConvolution…

【dlshogi】ラージカーネルの効果

dlshogiは昨年はほぼ定跡の自動生成しか行っておらず、モデルの改善は後回しにしていた。 定跡の自動生成については、手法がほぼ確立できたので、最近はモデルの改善を行っている。学習データの質と量を増やして、モデルサイズを大きくすれば強くなっていく…

【dlshogi】40ブロック512フィルタモデルの学習

dlshogiは直近では1年近く定跡生成に取り組んでいたため、モデルの大きな改善はなかった。 定跡生成が一段落したので、最近はモデルの改善に取り組んでいる。 終盤の読み抜け対策 ディープラーニング系のモデルには、終盤で読み抜けが比較的起こりやすいとい…

dlshogiのPyTorch Lightning対応 その5(DDPの課題)

PyTorch Lightningに対応させたdlshogiで、並列(DDP)で学習するといくつか問題が発生したため、対処した。 保存したモデルが壊れる on_train_endで、モデルを保存していたが、マルチGPUで実行している場合、並列処理用の各プロセスでon_train_endが実行され…

第34回世界コンピュータ将棋選手権 結果報告

5/3~5/5に開催された第34回世界コンピュータ将棋選手権にHEROZチームとして、「dlshogi with HEROZ」というプログラム名で参加しました。 大会の概要 世界コンピュータ将棋選手権は、1990年より毎年開催されている歴史のあるコンピュータ将棋の大会です。 …

dlshogiのPyTorch Lightning対応 その5(Warm-upに対応したスケジューラ)

大規模なモデルの学習に効果があるとされる学習率スケジューリングの手法にWarm-upがある。 しかし、Pytorchの標準のスケジューラには、Warm-upに対応したスケジューラが提供されていない。PyTorch Lightning Boltsには、Warm-upに対応したCosineAnnealingLR…

dlshogiモデルの枝刈りを試す

前回、深層強化学習において、モデルの枝刈りによりスケーリングが可能であることを示した論文を紹介した。dlshogiの強化学習でもモデルの枝刈りが効果があるか試したいと考えているが、まずはモデルの枝刈りのみを行って、精度と探索速度にどう影響するかを…

dlshogiのPyTorch Lightning対応 その4(8GPUで学習)

前回、dlshogiをPyTorch Lightningを使用した並列学習に対応させた、8GPUでどれくらい学習が速くなるか試した。 条件 30ブロック384フィルタのモデル 訓練データ: 35,289,182局面 エポック数: 2 バッチサイズ: 4096 オプティマイザ: AdamW 学習率: 1e-4 (1ep…

dlshogiのPyTorch Lightning対応 その3(DDP)

PyTorch Lightningに対応できたので、DistributedDataParallel によるマルチGPU学習を試してみた。前回未対応だった、勾配クリッピングはconfig.yamにgradient_clip_valを記述するだけで対応できた。 また、モデルのエクスポートもon_train_end()で実装した…

dlshogiのPyTorch Lightning対応 その2(EMA)

前回、dlshogiのPyTorch Lightning対応の基本部分を実装した。今回は、EMAを実装する。 EMA EMAは、Exponential Moving Averageの略で、重みの指数移動平均をとり平準化する方法である。dlshogiでは、SWAと呼んでいたが、SWAで使われるスケジューラは使用し…

dlshogiのPyTorch Lightning対応

dlshogiの学習は、PyTorchを使用して、モデルの訓練処理を独自に実装していた。マルチGPUによる分散学習に対応させようと考えているが、独自に実装するより、PyTorch lightningに対応させた方が実装が楽になるため、dlshogiをPyTorch Lightningに対応させた…

dlshogiで量子化認識トレーニングを試す

先日、PyTorchでFXグラフモードで量子化認識トレーニングを試して、精度が大きく落ちることなく、CPUでの推論が速くなることを確認した。そこで、dlshogiのモデルで量子化認識トレーニングを試して、CPUで強くなるかを検証した。 量子化認識トレーニング 先…

RTX4090とA100のNPSの比較

今年の世界コンピュータ将棋選手権で、dlshogiチームはA100x8のサーバを9台使用してMultiPonderによるクラスタ構成を採用していた。 9台使用していても、Ponderにヒットした1台しか実際の指し手には影響せず、多くのケースではMultiPonderなしの通常のPonder…

第33回世界コンピュータ将棋選手権 結果報告

5/3~5/5に開催された第33回世界コンピュータ将棋選手権に参加しました。HEROZチームとして、「dlshogi with HEROZ」というプログラム名でエントリしました。 大会の概要 世界コンピュータ将棋選手権は、1990年より毎年開催されている歴史のあるコンピュータ…

中盤互角局面集

先日、dlshogiと水匠が互角になる探索ノード数を調べたが、初手開始局面からdlshogiはランダムありで測定していた。 初手開始局面からだと、dlshogiは序盤で優勢を築いてそのまま勝つ場合が多いため、中終盤の精度が測定できていない可能性がある。 そこで、…

将棋AI実験ノート:dlshogiと水匠で評価値の割れる局面の精度改善

第3回世界将棋AI電竜戦では、先手の角換わり定跡で、dlshogiが後手番で後手優勢と評価している局面から、定跡を抜けてから反省して負けることがあった。 dlshogiと水匠で評価が分かれる場合、dlshogiが正しくてそのまま勝ち切ることも多いが、特に中盤以降で…

将棋AIの進捗 その60(固定プレイアウトで水匠5と互角になる条件)

dlshogiの棋力測定する際に、dlshogiの過去のバージョンとの対局だとレーティング差が実際よりも大きくなる傾向がある。 そこで、棋力測定では水匠5を加えてリーグ戦で連続対局している。普段の棋力測定では、対局条件をフィッシャールールの持ち時間で対局…

将棋AIの進捗 その59(第3回電竜戦で見つかった課題と対策検討)

第3回電竜戦では、水匠が準備した先手番角換わりの長手数の定跡が、dlshogiの盲点を突いていて定跡を抜けた時点で大差になっていた。具体的には、以下の局面の85手目の8三角打が先手優勢であることをdlshogiが見つけらず、盲点となっていた。 8三角打から…

将棋AIの進捗 その58(訓練の省メモリ化と高速化)

現状のdlshogiのモデルの訓練の実装では、訓練データが多い場合にメモリを大量に消費する課題があった。dlshogiのモデルの訓練は、訓練データをすべてメモリに読み込んで処理を行っている。 そのため、一度に学習できるデータはメモリに読み込める分に制限さ…

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

週末(12/3,4)に開催された第3回世界将棋AI電竜戦に参加しました。HEROZチームとして、「dlshogi with HEROZ 30b」と「dlshogi with HEROZ 20b」という2つのソフトでエントリしました。 大会の概要 世界将棋AI電竜戦は、コンピュータ将棋開発者の有志により立…

将棋AI実験ノート:30ブロックの学習

dlshogiのモデルサイズは、10ブロック192フィルタから初めて、精度が飽和するたびに、15ブロック224フィルタ、20ブロック256フィルタと段階的に大きくしている。参考: 将棋でディープラーニングする その48(ResNet) - TadaoYamaokaの開発日記 第2回 電竜戦T…

将棋AIの実験ノート:活性化関数をReLUに変更

以前に、活性化関数を変えると同じデータを学習した場合でも、方策の傾向が変わることを実験で確かめた。現状のdlshogiのモデルでは、活性化関数にSwishを使用していたが、最善手を見つけるのに時間のかかると指摘を受けた以下の局面が、活性化関数をReLUに…