#!/usr/bin/env python3 """Full-vocabulary distances at fixed prefixes; no target-answer likelihood score. Requires numpy only. These metrics remain prefix dependent, not task accuracy. All computations use float64; raw logits are centered before RMSE comparison. """ import argparse import json import shlex import subprocess from pathlib import Path import numpy as np def candidate_chunks(path, count, remote): expected = count*157184*4 if not remote: if path.stat().st_size != expected: raise ValueError('candidate shape mismatch') data = np.memmap(path, dtype='= 1. out['reference_gap_ge_1_nat'] = dict(tokens=int(confident.sum()), top1_agreement=float(np.asarray(data['top1_equal'])[confident].mean()) if confident.any() else None) return out def main(): p = argparse.ArgumentParser(description=__doc__) p.add_argument('--suite', type=Path, required=True) p.add_argument('--reference', type=Path, required=True) p.add_argument('--candidate', type=Path, required=True) p.add_argument('--candidate-ssh', help='Read remote logits over SSH; compute on this host') p.add_argument('--suffix', default='rknn') p.add_argument('--output', type=Path, required=True) a = p.parse_args() suite = json.loads(a.suite.read_text()) pooled = {'think':{}, 'nothink':{}} result = dict(reference=str(a.reference), candidate=str(a.candidate), candidate_ssh=a.candidate_ssh, suffix=a.suffix, scope='Fixed teacher prefixes, full vocabulary, natural logarithms; not free generation or accuracy', cases=[]) for case in suite['cases']: count = len(case['teacher_ids']) file = a.reference/(case['id']+'.bf16.f32') if file.stat().st_size != count*157184*4: raise ValueError('shape mismatch: '+str(file)) reference = np.memmap(file, dtype='