Views
No views yet
{instruction} {input} : {output}{instruction} {input} :1from peft import PeftModel, PeftConfig
2from transformers import AutoModelForCausalLM, AutoTokenizer
3import torch
4
5source_model_id = "NorGLM/NorGPT-3B"
6peft_model_id = "NorGLM/NorGPT-3B-Instruction-peft"
7
8config = PeftConfig.from_pretrained(peft_model_id)
9model = AutoModelForCausalLM.from_pretrained(source_model_id, device_map='balanced')
10
11tokenizer_max_len = 2048
12tokenizer_config = {'pretrained_model_name_or_path': source_model_id,
13 'max_len': tokenizer_max_len}
14tokenizer = tokenizer = AutoTokenizer.from_pretrained(**tokenizer_config)
15tokenizer.pad_token = tokenizer.eos_token
16
17model = PeftModel.from_pretrained(model, peft_model_id)1def merge_columns(example):
2 if str(example["input"]) == "":
3 example["text"] = str(example["instruction"]) + " : "
4 else:
5 example["text"] = str(example["instruction"]) + " " + str(example["input"]) + " : "
6 return example
7
8def generate_text(text, max_length=200, do_sample=True, top_p = 0.92, top_k=0):
9 set_seed(42)
10 model_inputs = tokenizer(text, return_tensors='pt').to(torch_device)
11 output = model.generate(**model_inputs, max_new_tokens = max_length, no_repeat_ngram_size=2, pad_token_id=tokenizer.eos_token_id)
12 return tokenizer.decode(output[0], skip_special_tokens=True)
13
14print("--LOADING EVAL DATAS---")
15eval_data = load_dataset("NbAiLab/norwegian-alpaca", split='train[-20%:]')
16
17print("--MAKING PREDICTIONS---")
18model.eval()
19
20output_file = <output file name>
21with open(output_file, 'w', encoding='utf-8-sig') as file:
22 generated_text = []
23
24 for question in eval_data['text']:
25 generated_text.append({"generated_text": generate_text(question)})
26 print({"text_generated": len(generated_text)})
27
28 json_lines = [json.dumps(data) for data in generated_text]
29 json_data = "\n".join(json_lines)
30 file.write(json_data)
31