Views
No views yet
1# モデルによるタスクの推論。
2from tqdm import tqdm
3
4results = []
5for data in tqdm(datasets):
6
7 input = data["input"]
8
9 prompt = f"""大きく息を吸って、論理的に、嘘をつかないで以下の指示に対して回答しなさい。
10 ### 指示
11 {input}
12 ### 回答
13 """
14
15 tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
16 attention_mask = torch.ones_like(tokenized_input)
17
18 with torch.no_grad():
19 outputs = model.generate(
20 tokenized_input,
21 attention_mask=attention_mask,
22 max_new_tokens=100,
23 do_sample=True,
24 top_p=0.95,
25 repetition_penalty=1.2,
26 pad_token_id=tokenizer.eos_token_id
27 )[0]
28 output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
29
30 results.append({"task_id": data["task_id"], "input": input, "output": output})
31
32
33# こちらで生成されたjsolを提出してください。
34# 本コードではinputとeval_aspectも含んでいますが、なくても問題ありません。
35# 必須なのはtask_idとoutputとなります。
36import re
37jsonl_id = re.sub(".*/", "", new_model_id)
38with open(f"./{jsonl_id}-outputs.jsonl", 'w', encoding='utf-8') as f:
39 for result in results:
40 json.dump(result, f, ensure_ascii=False) # ensure_ascii=False for handling non-ASCII characters
41 f.write('\n')