fela-autocomplete / verify.py
itstheraj's picture
initial commit
309d916
Raw
History Blame Contribute Delete
1.33 kB
import argparse
import sys
import torch
from modeling import load_model
VERIFICATION_TOP5 = [319, 516, 22441, 497, 4102]
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--weights", default=".")
ap.add_argument("--capture", action="store_true")
args = ap.parse_args()
torch.set_num_threads(1)
m = load_model(args.weights, threads=1)
ids = torch.arange(16, dtype=torch.long).unsqueeze(0) + 100
with torch.no_grad():
logits = m.model(ids)
assert logits.dim() == 3 and logits.size(-1) == m.cfg.vocab_size, (
f"Bad output shape {tuple(logits.shape)} (expected vocab {m.cfg.vocab_size})"
)
assert torch.isfinite(logits).all(), "Non finite logits"
print(f"Output shape ok {tuple(logits.shape)}")
top5 = logits[0, -1].topk(5).indices.tolist()
if args.capture:
print(f"VERIFICATION_TOP5 = {top5}")
return
if top5 != VERIFICATION_TOP5:
print(
f"[WARNING] top 5 tokens {top5} differ from the reference {VERIFICATION_TOP5}; small CPU numeric differences can move ties across machines"
)
else:
print("Verification value ok")
r = m.complete("import numpy as ", "", max_tokens=4)
print(f"Sample completion: 'import numpy as ' -> {r['middle']!r}")
if __name__ == "__main__":
main()