Views
No views yet
1from transformers import LlamaForCausalLM, LlamaTokenizer
2import torch
3
4base_model_name = "BlueWhaleX/bwx-13B-hf"
5load_type = torch.float16
6device = None
7
8generation_config = dict(
9 temperature=0.2,
10 top_k=40,
11 top_p=0.9,
12 do_sample=True,
13 num_beams=1,
14 repetition_penalty=1.3,
15 max_new_tokens=400
16 )
17
18prompt_input = (
19 "Below is an instruction that describes a task. "
20 "Write a response that appropriately completes the request.\n\n"
21 "### Instruction:\n\n{instruction}\n\n### Response:\n\n"
22)
23if torch.cuda.is_available():
24 device = torch.device(0)
25else:
26 device = torch.device('cpu')
27
28def generate_prompt(instruction, input=None):
29 if input:
30 instruction = instruction + '\n' + input
31 return prompt_input.format_map({'instruction': instruction})
32
33tokenizer = LlamaTokenizer.from_pretrained(base_model_name)
34model = LlamaForCausalLM.from_pretrained(
35 base_model_name,
36 load_in_8bit=False,
37 torch_dtype=load_type,
38 low_cpu_mem_usage=True,
39 device_map='auto',
40 )
41
42model_vocab_size = model.get_input_embeddings().weight.size(0)
43tokenzier_vocab_size = len(tokenizer)
44if model_vocab_size != tokenzier_vocab_size:
45 model.resize_token_embeddings(tokenzier_vocab_size)
46
47raw_input_text = input("Input:")
48input_text = generate_prompt(instruction=raw_input_text)
49inputs = tokenizer(input_text, return_tensors="pt")
50generation_output = model.generate(
51input_ids=inputs["input_ids"].to(device),
52 attention_mask=inputs['attention_mask'].to(device),
53 eos_token_id=tokenizer.eos_token_id,
54 pad_token_id=tokenizer.pad_token_id,
55 **generation_config
56)
57s = generation_output[0]
58output = tokenizer.decode(s, skip_special_tokens=True)
59response = output.split("### Response:")[1].strip()
60print("Response: ", response)
61print("\n")@software{bwx-13B-HF,
title={An Enchanced Chinese Language Model based on the Chinese-Alpaca},
url={https://huggingface.co/BlueWhaleX/bwx-13B-HF},
year={2023}
}