Views
No views yet
1# ELYZA-tasks-100-TVの読み込み。事前にファイルをアップロードしてください
2# データセットの読み込み。
3# omnicampusの開発環境では、左にタスクのjsonlをドラッグアンドドロップしてから実行。
4import json
5
6datasets = []
7with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
8 item = ""
9 for line in f:
10 line = line.strip()
11 item += line
12 if item.endswith("}"):
13 datasets.append(json.loads(item))
14 item = ""
15
16
17# 学習したモデルを用いてタスクを実行
18from tqdm import tqdm
19
20# 推論するためにモデルのモードを変更
21FastLanguageModel.for_inference(model)
22
23results = []
24for dt in tqdm(datasets):
25 input = dt["input"]
26
27 prompt = f"""### 指示\n{input}\n### 回答\n"""
28
29 inputs = tokenizer([prompt], return_tensors="pt").to(model.device)
30
31 outputs = model.generate(
32 **inputs,
33 max_new_tokens=512,
34 use_cache=True,
35 do_sample=False,
36 repetition_penalty=1.2,
37 )
38 prediction = tokenizer.decode(
39 outputs[0],
40 skip_special_tokens=True,
41 ).split(
42 "\n### 回答"
43 )[-1]
44
45 results.append({"task_id": dt["task_id"], "input": input, "output": prediction})
46
47
48# jsonlで保存
49with open(f"{new_model_id}_output.jsonl", 'w', encoding='utf-8') as f:
50 for result in results:
51 json.dump(result, f, ensure_ascii=False)
52 f.write('\n')