summaryrefslogtreecommitdiff
path: root/annotate_pgns/export_nnue_weights_v1_baseline.py
blob: 57ac7e7b4891b1d1ce1ba34385629a6a4042be35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python3
"""One-off: re-create the OLD plain-float32 "NNU1" export format for a
same-moment, apples-to-apples bench comparison against the new int16
"NNU2" quantized format. Not the real exporter (export_nnue_weights.py
is the real one now) -- throwaway, delete after use.
"""
import struct
import sys
import torch
from nnue_feature_spec import DIMENSIONS
from nnue_model import L1, L2, L3

ckpt = torch.load(sys.argv[1], map_location="cpu", weights_only=True)
sd = ckpt["model"]
names = ["ft.weight", "ft_bias", "fc1.weight", "fc1.bias",
         "fc2.weight", "fc2.bias", "fc3.weight", "fc3.bias"]
with open(sys.argv[2], "wb") as f:
    f.write(b"NNU1")
    f.write(struct.pack("<4I", DIMENSIONS, L1, L2, L3))
    for name in names:
        arr = sd[name].detach().contiguous().to(torch.float32).numpy()
        f.write(arr.tobytes())
print(f"wrote {sys.argv[2]}")