Views
No views yet
1 import re
2 import torch
3 from transformers import AutoTokenizer, AutoModelForCausalLM
4
5 tokenizer = AutoTokenizer.from_pretrained("kirankunapuli/Gemma-2B-Hinglish-LORA-v1.0")
6 model = AutoModelForCausalLM.from_pretrained("kirankunapuli/Gemma-2B-Hinglish-LORA-v1.0")
7
8 device = "cuda:0" if torch.cuda.is_available() else "cpu"
9 model = model.to(device)
10
11 alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
12
13 ### Instruction:
14 {}
15
16 ### Input:
17 {}
18
19 ### Response:
20 {}"""
21
22 # Example 1
23 inputs = tokenizer(
24 [
25 alpaca_prompt.format(
26 "Please answer the following sentence as requested", # instruction
27 "ऐतिहासिक स्मारक India Gate कहाँ स्थित है?", # input
28 "", # output - leave this blank for generation!
29 )
30 ], return_tensors = "pt").to(device)
31
32 outputs = model.generate(**inputs, max_new_tokens = 64, use_cache = True)
33 output = tokenizer.batch_decode(outputs)[0]
34 response_start = output.find("### Response:") + len("### Response:")
35 response_end = output.find("<eos>", response_start)
36 response = output[response_start:response_end].strip()
37 print(response)
38
39 # Example 2
40 inputs = tokenizer(
41 [
42 alpaca_prompt.format(
43 "Please answer the following sentence as requested", # instruction
44 "ऐतिहासिक स्मारक इंडिया गेट कहाँ स्थित है? मुझे अंग्रेजी में बताओ", # input
45 "", # output - leave this blank for generation!
46 )
47 ], return_tensors = "pt").to(device)
48
49 outputs = model.generate(**inputs, max_new_tokens = 64, use_cache = True)
50 output = tokenizer.batch_decode(outputs)[0]
51 response_pattern = re.compile(r'### Response:\n(.*?)<eos>', re.DOTALL)
52 response_match = response_pattern.search(output)
53
54 if response_match:
55 response = response_match.group(1).strip()
56 return response
57 else:
58 return "Response not found"1 model = FastLanguageModel.get_peft_model(
2 model,
3 r = 16,
4 target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
5 "gate_proj", "up_proj", "down_proj",],
6 lora_alpha = 32,
7 lora_dropout = 0,
8 bias = "none",
9 use_gradient_checkpointing = True,
10 random_state = 42,
11 use_rslora = True,
12 loftq_config = None,
13 )1 trainer = SFTTrainer(
2 model = model,
3 tokenizer = tokenizer,
4 train_dataset = dataset,
5 dataset_text_field = "text",
6 max_seq_length = max_seq_length,
7 dataset_num_proc = 2,
8 packing = True,
9 args = TrainingArguments(
10 per_device_train_batch_size = 2,
11 gradient_accumulation_steps = 4,
12 warmup_steps = 5,
13 max_steps = 120,
14 learning_rate = 2e-4,
15 fp16 = not torch.cuda.is_bf16_supported(),
16 bf16 = torch.cuda.is_bf16_supported(),
17 logging_steps = 1,
18 optim = "adamw_8bit",
19 weight_decay = 0.01,
20 lr_scheduler_type = "linear",
21 seed = 42,
22 output_dir = "outputs",
23 report_to = "wandb",
24 ),
25 )==((====))== Unsloth - 2x faster free finetuning | Num GPUs = 1
\\ /| Num examples = 14,343 | Num Epochs = 1
O^O/ \_/ \ Batch size per device = 2 | Gradient Accumulation steps = 4
\ / Total batch size = 8 | Total steps = 120
"-____-" Number of trainable parameters = 19,611,648
GPU = Tesla T4. Max memory = 14.748 GB.
2118.7553 seconds used for training.
35.31 minutes used for training.
Peak reserved memory = 9.172 GB.
Peak reserved memory for training = 6.758 GB.
Peak reserved memory % of max memory = 62.191 %.
Peak reserved memory for training % of max memory = 45.823 %.