This commit is contained in:
parent
fe1613a481
commit
0f40e33a1d
|
|
@ -18,8 +18,14 @@ from baukit import Trace, TraceDict
|
||||||
from metric_utils import get_measures, print_measures
|
from metric_utils import get_measures, print_measures
|
||||||
import re
|
import re
|
||||||
from torch.autograd import Variable
|
from torch.autograd import Variable
|
||||||
|
from openai import OpenAI
|
||||||
|
import openai
|
||||||
|
|
||||||
|
API={
|
||||||
|
'gpt-3.5-turbo':{'base_url':"https://api.agicto.cn/v1",'key':''},
|
||||||
|
'deepseek-chat':{'base_url':"https://api.agicto.cn/v1",'key':''},
|
||||||
|
'qwen-turbo':{'base_url':"https://api.agicto.cn/v1",'key':''},
|
||||||
|
}
|
||||||
|
|
||||||
def seed_everything(seed: int):
|
def seed_everything(seed: int):
|
||||||
import random, os
|
import random, os
|
||||||
|
|
@ -53,7 +59,7 @@ def main():
|
||||||
parser.add_argument('--dataset_name', type=str, default='triviaqa')
|
parser.add_argument('--dataset_name', type=str, default='triviaqa')
|
||||||
parser.add_argument('--num_gene', type=int, default=1)
|
parser.add_argument('--num_gene', type=int, default=1)
|
||||||
parser.add_argument('--use_api', type=bool, default=False)
|
parser.add_argument('--use_api', type=bool, default=False)
|
||||||
parser.add_argument('--most_likely', type=bool, default=False)
|
parser.add_argument('--sample', type=bool, default=False)
|
||||||
parser.add_argument("--model_dir", type=str, default=None, help='local directory with model data')
|
parser.add_argument("--model_dir", type=str, default=None, help='local directory with model data')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
@ -152,9 +158,7 @@ def main():
|
||||||
raise ValueError("Invalid dataset name")
|
raise ValueError("Invalid dataset name")
|
||||||
|
|
||||||
if not args.use_api:
|
if not args.use_api:
|
||||||
tokenizer = llama_iti.LlamaTokenizer.from_pretrained(MODEL, trust_remote_code=True)
|
|
||||||
model = llama_iti.LlamaForCausalLM.from_pretrained(MODEL, low_cpu_mem_usage=True, torch_dtype=torch.float16,
|
|
||||||
device_map="auto").cuda()
|
|
||||||
|
|
||||||
begin_index = 0
|
begin_index = 0
|
||||||
if args.dataset_name == 'tydiqa':
|
if args.dataset_name == 'tydiqa':
|
||||||
|
|
@ -162,50 +166,64 @@ def main():
|
||||||
else:
|
else:
|
||||||
end_index = len(dataset)
|
end_index = len(dataset)
|
||||||
|
|
||||||
if not os.path.exists(f'./save_for_eval/{args.dataset_name}_hal_det/'):
|
if not os.path.exists(f'./save_for_eval/{args.dataset_name}/{args.model_name}_hal_det/'):
|
||||||
os.mkdir(f'./save_for_eval/{args.dataset_name}_hal_det/')
|
os.mkdir(f'./save_for_eval/{args.dataset_name}/{args.model_name}_hal_det/')
|
||||||
|
|
||||||
|
|
||||||
if not os.path.exists(f'./save_for_eval/{args.dataset_name}_hal_det/answers'):
|
if not os.path.exists(f'./save_for_eval/{args.dataset_name}/{args.model_name}_hal_det/answers'):
|
||||||
os.mkdir(f'./save_for_eval/{args.dataset_name}_hal_det/answers')
|
os.mkdir(f'./save_for_eval/{args.dataset_name}/{args.model_name}_hal_det/answers')
|
||||||
|
|
||||||
period_token_id = [tokenizer(_)['input_ids'][-1] for _ in ['\n']]
|
# period_token_id = [tokenizer(_)['input_ids'][-1] for _ in ['\n']]
|
||||||
period_token_id += [tokenizer.eos_token_id]
|
# period_token_id += [tokenizer.eos_token_id]
|
||||||
|
|
||||||
for i in range(begin_index, end_index):
|
for i in range(begin_index, end_index):
|
||||||
answers = [None] * args.num_gene
|
answers = [None] * args.num_gene
|
||||||
if args.dataset_name == 'tydiqa':
|
if args.dataset_name == 'tydiqa':
|
||||||
question = dataset[int(used_indices[i])]['question']
|
question = dataset[int(used_indices[i])]['question']
|
||||||
prompt = tokenizer(
|
prompt = "Concisely answer the following question based on the information in the given passage: \n" + \
|
||||||
"Concisely answer the following question based on the information in the given passage: \n" + \
|
" Passage: " + dataset[int(used_indices[i])]['context'] + " \n Q: " + question + " \n A:"
|
||||||
" Passage: " + dataset[int(used_indices[i])]['context'] + " \n Q: " + question + " \n A:",
|
# prompt = tokenizer(
|
||||||
return_tensors='pt').input_ids.cuda()
|
# "Concisely answer the following question based on the information in the given passage: \n" + \
|
||||||
|
# " Passage: " + dataset[int(used_indices[i])]['context'] + " \n Q: " + question + " \n A:",
|
||||||
|
# return_tensors='pt').input_ids.cuda()
|
||||||
elif args.dataset_name == 'coqa':
|
elif args.dataset_name == 'coqa':
|
||||||
prompt = tokenizer(
|
prompt = dataset[i]['prompt']
|
||||||
dataset[i]['prompt'], return_tensors='pt').input_ids.cuda()
|
# prompt = tokenizer(
|
||||||
|
# dataset[i]['prompt'], return_tensors='pt').input_ids.cuda()
|
||||||
else:
|
else:
|
||||||
question = dataset[i]['question']
|
question = dataset[i]['question']
|
||||||
prompt = tokenizer(f"Answer the question concisely. Q: {question}" + " A:", return_tensors='pt').input_ids.cuda()
|
prompt = f"Answer the question concisely. Q: {question}" + " A:"
|
||||||
|
# prompt = tokenizer(f"Answer the question concisely. Q: {question}" + " A:", return_tensors='pt').input_ids.cuda()
|
||||||
|
|
||||||
for gen_iter in range(args.num_gene):
|
for gen_iter in range(args.num_gene):
|
||||||
if args.most_likely:
|
if args.sample:
|
||||||
generated = model.generate(prompt,
|
response = openai.Completion.create(engine=args.model_name,
|
||||||
num_beams=5,
|
prompt=prompt,
|
||||||
num_return_sequences=1,
|
max_tokens=50,
|
||||||
do_sample=False,
|
n=1,
|
||||||
max_new_tokens=64,
|
stop=None,
|
||||||
)
|
top_p=1,
|
||||||
|
temperature=0.9,)
|
||||||
|
decoded=response.choices[0].text
|
||||||
|
# generated = model.generate(prompt,
|
||||||
|
# num_beams=5,
|
||||||
|
# num_return_sequences=1,
|
||||||
|
# do_sample=False,
|
||||||
|
# max_new_tokens=64,
|
||||||
|
# )
|
||||||
else:
|
else:
|
||||||
generated = model.generate(prompt,
|
response = openai.Completion.create(engine=args.model_name,
|
||||||
do_sample=True,
|
prompt=prompt,
|
||||||
num_return_sequences=1,
|
max_tokens=50,
|
||||||
num_beams=1,
|
n=5,
|
||||||
max_new_tokens=64,
|
best_of=1,
|
||||||
temperature=0.5,
|
stop=None,
|
||||||
top_p=1.0)
|
top_p=0.5,
|
||||||
|
temperature=0.5,)
|
||||||
|
decoded=response.choices[0].text
|
||||||
|
|
||||||
|
# decoded = tokenizer.decode(generated[0, prompt.shape[-1]:],
|
||||||
decoded = tokenizer.decode(generated[0, prompt.shape[-1]:],
|
# skip_special_tokens=True)
|
||||||
skip_special_tokens=True)
|
|
||||||
if args.dataset_name == 'tqa' or args.dataset_name == 'triviaqa':
|
if args.dataset_name == 'tqa' or args.dataset_name == 'triviaqa':
|
||||||
# corner case.
|
# corner case.
|
||||||
if 'Answer the question concisely' in decoded:
|
if 'Answer the question concisely' in decoded:
|
||||||
|
|
@ -232,10 +250,10 @@ def main():
|
||||||
np.save(f'./save_for_eval/{args.dataset_name}_hal_det/answers/' + info + f'hal_det_{args.model_name}_{args.dataset_name}_answers_index_{i}.npy',
|
np.save(f'./save_for_eval/{args.dataset_name}_hal_det/answers/' + info + f'hal_det_{args.model_name}_{args.dataset_name}_answers_index_{i}.npy',
|
||||||
answers)
|
answers)
|
||||||
else:
|
else:
|
||||||
tokenizer = llama_iti.LlamaTokenizer.from_pretrained(MODEL, trust_remote_code=True)
|
client = OpenAI(
|
||||||
model = llama_iti.LlamaForCausalLM.from_pretrained(MODEL, low_cpu_mem_usage=True,
|
api_key=API[args.model_name]['key'],
|
||||||
torch_dtype=torch.float16,
|
base_url =API[args.model_name]['base_url']
|
||||||
device_map="auto").cuda()
|
)
|
||||||
# firstly get the embeddings of the generated question and answers.
|
# firstly get the embeddings of the generated question and answers.
|
||||||
embed_generated = []
|
embed_generated = []
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue