| import json | |
| import os | |
| import subprocess | |
| import sys | |
| from argparse import ArgumentParser | |
| from pathlib import Path | |
| import numpy as np | |
| import pandas as pd | |
| import torch | |
| import torch.distributed as dist | |
| import torch.nn.functional as F | |
| from accelerate import Accelerator, DistributedDataParallelKwargs | |
| from mbpp import MBPP as evaltor | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| if __name__ == "__main__": | |
| kwargs_handlers = [DistributedDataParallelKwargs(find_unused_parameters=True)] | |
| accelerator = Accelerator(mixed_precision="bf16", kwargs_handlers=kwargs_handlers) | |
| parser = ArgumentParser() | |
| parser.add_argument("--logdir", type=str, default="") | |
| parser.add_argument("--dataroot", type=str, default="") | |
| args = parser.parse_args() | |
| logdir = args.logdir | |
| if logdir == "": | |
| logdir = "tmp/" | |
| tokenizer = dict( | |
| cls=AutoTokenizer, | |
| model_path=logdir, | |
| ) | |
| dataroot = args.dataroot | |
| evaluator = evaltor( | |
| data_root=dataroot, | |
| max_seq_len=4096, | |
| tokenizer_cfg=tokenizer, | |
| log_dir=logdir, | |
| n_sample=1, | |
| batch_size=1, | |
| max_gen_len=500, | |
| ) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| logdir, | |
| device_map=accelerator.device, | |
| trust_remote_code=True, | |
| torch_dtype=torch.bfloat16, | |
| ) | |
| os.environ["TOKENIZERS_PARALLELISM"] = "false" | |
| evaluator.eval_model(model, accelerator) | |