nnue-pytorch

nnue-pytorch は、Stockfish 系で使われている NNUE 評価関数の学習用リポジトリとしてよく知られる実装である。 PyTorch を用いて NNUE の学習、検証、変換を行うための基盤として広く参照される。

概要

official-stockfish/nnue-pytorch は、

  • PyTorch ベースの学習器
  • データローダ
  • モデル定義
  • 学習済み重みの取り扱い

を含む公開リポジトリである。

将棋向けにそのまま使うわけではないが、 NNUE学習器の構成や運用を理解するうえで非常に参考になる。

何が学べるか

  • バッチ学習の組み方
  • データセットの前処理
  • 量子化前提の学習
  • 学習済みモデルをエンジンへ渡す流れ

これらは将棋向け NNUE 学習器を作るときにも共通する。

実装例

概念的な学習ループは次のようになる。

for batch in loader:
    features, target = batch
    output = model(features)
    loss = criterion(output, target)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

リポジトリ本体では、これに加えて

  • 分散学習
  • mixed precision
  • 検証
  • 変換スクリプト

などが整備されている。

将棋AIとの関係

将棋の NNUE 学習も、

  • 教師局面の設計
  • ネットワーク形状
  • 推論時の差分更新

といった点では共通の発想を持つ。

そのため、nnue-pytorch将棋向け実装の直接の答え というより、 NNUE 学習器をどう構成するかの参照実装 として読む価値が高い。

関連項目

参考にしたホームページ