Update README.md
Browse files
README.md
CHANGED
@@ -42,23 +42,36 @@ model, tokenizer = FastLanguageModel.from_pretrained(
|
|
42 |
FastLanguageModel.for_inference(model)
|
43 |
|
44 |
2.上記1の推論モデルとトークナイザを使って推論したjson Linesファイルoutput.jsonlの出力方法を以下に示します。
|
|
|
45 |
入力ファイル:LLM_2024/最終課題/elyza-tasks-100-TV_0.jsonl
|
|
|
46 |
(1) モデルに推論させる入力ファイルの読み込み
|
47 |
コードは以下の通りです。
|
|
|
48 |
datasets = []
|
49 |
-
with open("/content/drive/MyDrive/LLM_2024/最終課題/elyza-tasks-100-TV_0.jsonl", "r") as f:
|
|
|
50 |
item = ""
|
|
|
51 |
for line in f:
|
|
|
52 |
line = line.strip()
|
|
|
53 |
item += line
|
|
|
54 |
if item.endswith("}"):
|
|
|
55 |
datasets.append(json.loads(item))
|
|
|
56 |
item = ""
|
57 |
|
58 |
(2) 推論
|
59 |
コードは以下の通りです。
|
|
|
60 |
results = []
|
|
|
61 |
for dt in tqdm(datasets):
|
|
|
62 |
input = dt["input"]
|
63 |
|
64 |
prompt = f"""### 指示\n{input}\n### 回答\n"""
|
@@ -66,14 +79,21 @@ for dt in tqdm(datasets):
|
|
66 |
inputs = tokenizer([prompt], return_tensors = "pt").to(model.device)
|
67 |
|
68 |
outputs = model.generate(**inputs, max_new_tokens = 512, use_cache = True, do_sample=False, repetition_penalty=1.2)
|
|
|
69 |
prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]
|
70 |
|
71 |
results.append({"task_id": dt["task_id"], "input": input, "output": prediction})
|
72 |
|
73 |
(3) 推論結果output.jsonlの出力
|
|
|
74 |
コードは以下の通りです。
|
|
|
75 |
with open(f"output.jsonl", 'w', encoding='utf-8') as f:
|
|
|
76 |
for result in results:
|
|
|
77 |
json.dump(result, f, ensure_ascii=False)
|
|
|
78 |
f.write('\n')
|
|
|
79 |
|
|
|
42 |
FastLanguageModel.for_inference(model)
|
43 |
|
44 |
2.上記1の推論モデルとトークナイザを使って推論したjson Linesファイルoutput.jsonlの出力方法を以下に示します。
|
45 |
+
|
46 |
入力ファイル:LLM_2024/最終課題/elyza-tasks-100-TV_0.jsonl
|
47 |
+
|
48 |
(1) モデルに推論させる入力ファイルの読み込み
|
49 |
コードは以下の通りです。
|
50 |
+
|
51 |
datasets = []
|
52 |
+
with open("/content/drive/MyDrive/LLM_2024/最終課題/elyza-tasks-100-TV_0.jsonl", "r") as f:
|
53 |
+
|
54 |
item = ""
|
55 |
+
|
56 |
for line in f:
|
57 |
+
|
58 |
line = line.strip()
|
59 |
+
|
60 |
item += line
|
61 |
+
|
62 |
if item.endswith("}"):
|
63 |
+
|
64 |
datasets.append(json.loads(item))
|
65 |
+
|
66 |
item = ""
|
67 |
|
68 |
(2) 推論
|
69 |
コードは以下の通りです。
|
70 |
+
|
71 |
results = []
|
72 |
+
|
73 |
for dt in tqdm(datasets):
|
74 |
+
|
75 |
input = dt["input"]
|
76 |
|
77 |
prompt = f"""### 指示\n{input}\n### 回答\n"""
|
|
|
79 |
inputs = tokenizer([prompt], return_tensors = "pt").to(model.device)
|
80 |
|
81 |
outputs = model.generate(**inputs, max_new_tokens = 512, use_cache = True, do_sample=False, repetition_penalty=1.2)
|
82 |
+
|
83 |
prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]
|
84 |
|
85 |
results.append({"task_id": dt["task_id"], "input": input, "output": prediction})
|
86 |
|
87 |
(3) 推論結果output.jsonlの出力
|
88 |
+
|
89 |
コードは以下の通りです。
|
90 |
+
|
91 |
with open(f"output.jsonl", 'w', encoding='utf-8') as f:
|
92 |
+
|
93 |
for result in results:
|
94 |
+
|
95 |
json.dump(result, f, ensure_ascii=False)
|
96 |
+
|
97 |
f.write('\n')
|
98 |
+
|
99 |
|