-
nnue-pytorch nnue-pytorch
nnue-pytorch
-
-
添付ファイル
-
変更点
-
ソースを表示
-
表示
# nnue-pytorch
`nnue-pytorch` は、Stockfish 系で使われている NNUE 評価関数の学習用リポジトリとしてよく知られる実装である。
PyTorch を用いて NNUE の学習、検証、変換を行うための基盤として広く参照される。
## 概要
`official-stockfish/nnue-pytorch` は、
- PyTorch ベースの学習器
- データローダ
- モデル定義
- 学習済み重みの取り扱い
を含む公開リポジトリである。
将棋向けにそのまま使うわけではないが、
[NNUE](/shogi/shogiwiki/search/nnue/)学習器の構成や運用を理解するうえで非常に参考になる。
## 何が学べるか
- バッチ学習の組み方
- データセットの前処理
- 量子化前提の学習
- 学習済みモデルをエンジンへ渡す流れ
これらは将棋向け NNUE 学習器を作るときにも共通する。
## 実装例
概念的な学習ループは次のようになる。
```python
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 学習器をどう構成するかの参照実装`
として読む価値が高い。
## 関連項目
- [NNUE](/shogi/shogiwiki/search/nnue/)
- [Training an nnue](/shogi/shogiwiki/search/training-an-nnue/)
- [知識蒸留](/shogi/shogiwiki/search/knowledge-distillation/)
- [elmo式学習](/shogi/shogiwiki/search/elmo-style-learning/)
## 参考にしたホームページ
- [GitHub: official-stockfish/nnue-pytorch](https://github.com/official-stockfish/nnue-pytorch)
- [やねうら王公式サイト: NNUE EVAL Function THE DAWN OF A NEW ERA](https://yaneuraou.yaneu.com/2022/06/09/nnue-eval-function-the-dawn-of-a-new-era/)
- [Chessprogramming Wiki: NNUE](https://www.chessprogramming.org/NNUE)