Views
No views yet
1model_name = "ganesha-shiisa/llm-jp-3-13b-finetune-4"
2
3bnb_config = BitsAndBytesConfig(
4 load_in_4bit=True,
5 bnb_4bit_quant_type="nf4",
6 bnb_4bit_compute_dtype=torch.bfloat16,
7 bnb_4bit_use_double_quant=False,
8)
9
10model = AutoModelForCausalLM.from_pretrained(
11 model_name,
12 quantization_config=bnb_config,
13 device_map="auto",
14)
15
16tokenizer = AutoTokenizer.from_pretrained(
17 model_name, trust_remote_code=True,
18)
19
20datasets = []
21with open("./elyza-tasks-100-TV_0.jsonl", "r", encoding='utf-8') as f:
22 item = ""
23 for line in f:
24 line = line.strip()
25 item += line
26 if item.endswith("}"):
27 datasets.append(json.loads(item))
28 item = ""
29
30results = []
31for data in tqdm(datasets):
32
33 input = data["input"]
34
35 prompt = f"""### 指示
36 {input}
37 ### 回答:
38 """
39
40 tokenized_input = tokenizer.encode(
41 prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
42 with torch.no_grad():
43 outputs = model.generate(
44 tokenized_input,
45 max_new_tokens=100,
46 do_sample=False,
47 repetition_penalty=1.2,
48 pad_token_id=tokenizer.eos_token_id
49 )[0]
50 output = tokenizer.decode(
51 outputs[tokenized_input.size(1):], skip_special_tokens=True)
52
53 results.append({"task_id": data["task_id"],
54 "input": input, "output": output})
55
56
57import re
58model_name = re.sub(".*/", "", model_name)
59with open(f"./{model_name}-outputs.jsonl", 'w', encoding='utf-8') as f:
60 for result in results:
61 # ensure_ascii=False for handling non-ASCII characters
62 json.dump(result, f, ensure_ascii=False)
63 f.write('\n')
64