Views
No views yet
1import torch,re
2from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
3
4bnb_config = BitsAndBytesConfig(
5 load_in_4bit=True,
6 bnb_4bit_use_double_quant=True,
7 bnb_4bit_quant_type="nf4",
8 bnb_4bit_compute_dtype=torch.bfloat16
9)
10
11from transformers import AutoTokenizer, AutoModelForCausalLM
12
13model_id = "erythropygia/Gemma2b-Turkish-Instruction"
14
15model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map={"":0})
16tokenizer = AutoTokenizer.from_pretrained(model_id, add_eos_token=True, padding_side="left")
17
18def get_completion(query: str, model, tokenizer) -> str:
19 device = "cuda:0"
20
21 prompt_template = """
22 <start_of_turn>user
23 Alt satırdaki soruya cevap ver:\n
24 {query}
25 <end_of_turn>\n<start_of_turn>model
26 """
27 prompt = prompt_template.format(query=query)
28
29 encodeds = tokenizer(prompt, return_tensors="pt", add_special_tokens=True)
30
31 model_inputs = encodeds.to(device)
32
33
34 #max_new_tokens = 200, temperature = 0.9, repetition_penalty = 0.5, disabled
35 #num_return_sequences=1, max_length = 256,
36 generated_ids = model.generate(**model_inputs, max_new_tokens = 256, do_sample=True, pad_token_id=tokenizer.eos_token_id)
37 decoded = tokenizer.decode(generated_ids[0], skip_special_tokens=False)
38
39
40 decoded = re.sub(r'<(end_of_turn|start_of_turn|eos|bos)>[^<]*$', '', decoded)
41
42 decoded = re.sub(r'<(end_of_turn|start_of_turn|eos|bos)>', '', decoded)
43
44 return decoded.strip()
45
46result = get_completion(query="int türünde üç parametre alan ve bunların toplamını döndüren bir işlev oluşturun.", model=model, tokenizer=tokenizer)
47print(result)