in prm800k/eval/eval.py [0:0]
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--method', type=str, default='prm') # one of ['orm', 'prm']
args = parser.parse_args()
method = args.method
n_trials = 400
samples_path = "az://openaipublic/process-supervision/scored-test-samples.jsonl"
ns = [10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000, 1250, 1500, 1860]
all_trial_pass_rates = []
num_samples_per_problem = 1860
print(f"Reading {samples_path}, this may take a while...")
samples = _read_jsonl(samples_path)
print("Done.")
samples_by_problem = _key_by_problem(samples)
num_problems = len(samples_by_problem)
for i in range(n_trials):
pass_rates = []
for n in ns:
num_correct = 0
for problem, problem_samples in samples_by_problem.items():
nones = [None] * (num_samples_per_problem - len(problem_samples))
problem_samples = problem_samples + nones
random.shuffle(problem_samples)
subsamples = list(problem_samples[:n])
subsamples = [x for x in subsamples if x is not None]
subsamples = [x for x in subsamples if _get_answer(x) is not None]
if method == "prm":
choice = _choose_sample_by_score(subsamples, "prm_score")
elif method == "orm":
choice = _choose_sample_by_score(subsamples, "orm_score")
if choice is not None and choice["is_correct"]:
num_correct += 1
pass_rates.append(num_correct / num_problems)
all_trial_pass_rates.append(pass_rates)
print(f"Trial {i}/{n_trials} {pass_rates}")
all_trial_pass_rates = np.array(all_trial_pass_rates)
print("Mean:", list(np.mean(all_trial_pass_rates, axis=0)))
print("Standard deviation:", list(np.std(all_trial_pass_rates, axis=0)))