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