Views
No views yet
1from transformers import LlamaForCausalLM, LlamaTokenizer
2from peft import PeftModel
3import torch1overall_instruction = "你是复旦大学知识工场实验室训练出来的语言模型CuteGPT。给定任务描述,请给出对应请求的回答。\n"
2def generate_prompt(query, history, input=None):
3 prompt = overall_instruction
4 for i, (old_query, response) in enumerate(history):
5 prompt += "Q: {}\nA: {}\n".format(old_query, response)
6 prompt += "Q: {}\nA: ".format(query)
7 return prompt1model_name = "XuYipei/kw-cutegpt-13b-base"
2LORA_WEIGHTS = "Abbey4799/kw-cutegpt-13b-ift-lora"
3tokenizer = LlamaTokenizer.from_pretrained(LORA_WEIGHTS)
4model = LlamaForCausalLM.from_pretrained(
5 model_name,
6 torch_dtype=torch.float16,
7 device_map="auto",
8)
9model.eval()
10model = PeftModel.from_pretrained(model, LORA_WEIGHTS).to(torch.float16)
11device = torch.device("cuda")1model_name = "XuYipei/kw-cutegpt-13b-base"
2LORA_WEIGHTS = "Abbey4799/kw-cutegpt-13b-ift-lora"
3tokenizer = LlamaTokenizer.from_pretrained(LORA_WEIGHTS)
4model = LlamaForCausalLM.from_pretrained(
5 model_name,
6 load_in_8bit=True,
7 torch_dtype=torch.float16,
8 device_map="auto",
9)
10model.eval()
11model = PeftModel.from_pretrained(model, LORA_WEIGHTS)
12device = torch.device("cuda")1history = []
2queries = ['请推荐五本名著,依次列出作品名、作者','再来三本呢?']
3memory_limit = 3 # the number of (query, response) to remember
4for query in queries:
5 prompt = generate_prompt(query, history)
6 print(prompt)
7
8 input_ids = tokenizer(prompt, return_tensors="pt", padding=False, truncation=False, add_special_tokens=False)
9 input_ids = input_ids["input_ids"].to(device)
10
11 with torch.no_grad():
12 outputs=model.generate(
13 input_ids=input_ids,
14 top_p=0.8,
15 top_k=50,
16 repetition_penalty=1.1,
17 max_new_tokens = 256,
18 early_stopping = True,
19 eos_token_id = tokenizer.convert_tokens_to_ids('<s>'),
20 pad_token_id = tokenizer.eos_token_id,
21 min_length = input_ids.shape[1] + 1
22 )
23 s = outputs[0][input_ids.shape[1]:]
24 response=tokenizer.decode(s)
25 response = response.replace('<s>', '').replace('<end>', '').replace('</s>', '')
26 print(response)
27 history.append((query, response))
28 history = history[-memory_limit:]