Views
No views yet
1from transformers import (
2 AutoModelForCausalLM,
3 AutoTokenizer,
4 BitsAndBytesConfig,
5 TrainingArguments,
6 logging,
7)
8from peft import (
9 LoraConfig,
10 PeftModel,
11 get_peft_model,
12)
13
14import os, torch, gc, json
15from tqdm import tqdm
16from datasets import load_dataset
17import bitsandbytes as bnb
18from trl import SFTTrainer
19from google.colab import userdata
20
21# Hugging Face Token
22os.environ["HF_TOKEN"] = userdata.get("HF_TOKEN")1# 推論データ準備
2datasets = []
3
4inference_data_path = '/content/drive/MyDrive/your_path'
5with open(f"{inference_data_path}/elyza-tasks-100-TV_0.jsonl", "r") as f:
6 item = ""
7 for line in f:
8 line = line.strip()
9 item += line
10 if item.endswith("}"):
11 datasets.append(json.loads(item))
12 item = ""
13
14# モデルとトークナイザー準備
15new_model_id = "yottan-wywy/llm-jp-3-13b-instruct-finetune_1217"
16
17bnb_config = BitsAndBytesConfig(
18 load_in_4bit=True,
19 bnb_4bit_quant_type="nf4",
20 bnb_4bit_compute_dtype=torch.bfloat16,
21)
22
23model = AutoModelForCausalLM.from_pretrained(
24 new_model_id,
25 quantization_config=bnb_config,
26 device_map="auto"
27)
28
29tokenizer = AutoTokenizer.from_pretrained(new_model_id, trust_remote_code=True)1# 推論実行
2results = []
3system_text = "以下は、タスクを説明する指示です。要求を適切に満たす回答を**簡潔に**書きなさい。"
4for data in tqdm(datasets):
5
6 input_text = data["input"]
7
8 prompt = f"""
9 {system_text}
10 ### 指示
11 {input_text}
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=False,
24 repetition_penalty=1.2,
25 pad_token_id=tokenizer.eos_token_id
26 )[0]
27 output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
28
29 results.append({"task_id": data["task_id"], "input": input_text, "output": output})
30| Language | Dataset | description |
|---|---|---|
| Japanese | elyza/ELYZA-tasks-100 | A manually constructed instruction dataset |