Views
No views yet
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3model_name = 'YeungNLP/firefly-baichuan-7b-qlora-sft-merge'
4max_new_tokens = 500
5top_p = 0.9
6temperature = 0.35
7repetition_penalty = 1.0
8device = 'cuda'
9input_pattern = '<s>{}</s>'
10model = AutoModelForCausalLM.from_pretrained(
11 model_name,
12 trust_remote_code=True,
13 low_cpu_mem_usage=True,
14 torch_dtype=torch.float16,
15 device_map='auto'
16)
17model.eval()
18model = model.to(device)
19tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
20text = input('User:')
21while True:
22 text = input_pattern.format(text)
23 input_ids = tokenizer(text, return_tensors="pt").input_ids
24 input_ids = input_ids.to(device)
25 outputs = model.generate(
26 input_ids=input_ids, max_new_tokens=max_new_tokens, do_sample=True,
27 top_p=top_p, temperature=temperature, repetition_penalty=repetition_penalty,
28 eos_token_id=tokenizer.eos_token_id
29 )
30 rets = tokenizer.batch_decode(outputs)
31 output = rets[0].strip().replace(text, "").replace('</s>', "")
32 print("Firefly:{}".format(output))
33 text = input('User:')1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3device = 'cuda'
4model_name = 'YeungNLP/firefly-baichuan-7b1-qlora-sft-merge'
5max_new_tokens = 500
6top_p = 0.9
7temperature = 0.35
8repetition_penalty = 1.0
9tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
10model = AutoModelForCausalLM.from_pretrained(
11 model_name,
12 trust_remote_code=True,
13 low_cpu_mem_usage=True,
14 torch_dtype=torch.float16,
15 device_map='auto'
16)
17model.eval()
18model = model.to(device)
19# 记录所有历史记录
20history_token_ids = tokenizer('<s>', return_tensors="pt").input_ids
21# 输入模型的最大长度
22history_max_len = 1000
23user_input = input('User:')
24while True:
25 user_input = '{}</s>'.format(user_input)
26 user_input_ids = tokenizer(user_input, return_tensors="pt").input_ids
27 history_token_ids = torch.concat((history_token_ids, user_input_ids), dim=1)
28 model_input_ids = history_token_ids[:, -history_max_len:].to(device)
29 outputs = model.generate(
30 input_ids=model_input_ids, max_new_tokens=max_new_tokens, do_sample=True, top_p=top_p,
31 temperature=temperature, repetition_penalty=repetition_penalty, eos_token_id=tokenizer.eos_token_id
32 )
33 model_input_ids_len = model_input_ids.size(1)
34 response_ids = outputs[:, model_input_ids_len:]
35 history_token_ids = torch.concat((history_token_ids, response_ids.cpu()), dim=1)
36 response = tokenizer.batch_decode(response_ids)
37 print("Firefly:" + response[0].strip().replace('</s>', ""))
38 user_input = input('User:')