darrenphodgson76 commited on
Commit
785db18
·
verified ·
1 Parent(s): bce314a

Update train.py

Browse files
Files changed (1) hide show
  1. train.py +59 -59
train.py CHANGED
@@ -1,60 +1,60 @@
1
- import unsloth # must be first
2
- import pandas as pd
3
- import torch
4
- from datasets import Dataset
5
- from transformers import TrainingArguments
6
- from unsloth import FastLanguageModel
7
- from trl import SFTTrainer # ✅ now works because we added 'trl'
8
-
9
-
10
- # Load and format your dataset
11
- df = pd.read_csv("data.csv")
12
- df["text"] = df.apply(lambda row: f"### Instruction:\n{row['instruction']}\n\n### Response:\n{row['response']}\n", axis=1)
13
- dataset = Dataset.from_pandas(df[["text"]])
14
-
15
- # Load Unsloth model
16
- model, tokenizer = FastLanguageModel.from_pretrained(
17
- model_name = "unsloth/Llama-3.2-3B-Instruct",
18
- max_seq_length = 2048,
19
- dtype = torch.float16,
20
- load_in_4bit = True,
21
- )
22
-
23
- # Apply LoRA without task_type
24
- model = FastLanguageModel.get_peft_model(
25
- model,
26
- r = 8,
27
- lora_alpha = 32,
28
- lora_dropout = 0.05,
29
- bias = "none",
30
- )
31
-
32
- # Tokenize text
33
- def tokenize(example):
34
- return tokenizer(example["text"], truncation=True, padding="max_length", max_length=512)
35
-
36
- tokenized_dataset = dataset.map(tokenize, batched=True)
37
-
38
- # Set up training
39
- training_args = TrainingArguments(
40
- output_dir = "./lora-finetuned",
41
- per_device_train_batch_size = 2,
42
- num_train_epochs = 3,
43
- learning_rate = 2e-4,
44
- logging_steps = 10,
45
- save_steps = 100,
46
- fp16 = True,
47
- )
48
-
49
- # Train
50
- trainer = SFTTrainer(
51
- model = model,
52
- tokenizer = tokenizer,
53
- args = training_args,
54
- train_dataset = tokenized_dataset,
55
- )
56
-
57
- trainer.train()
58
-
59
- # Save the fine-tuned LoRA adapter
60
  model.save_pretrained("./lora-finetuned")
 
1
+ import unsloth # must be first
2
+ import pandas as pd
3
+ import torch
4
+ from datasets import Dataset
5
+ from transformers import TrainingArguments
6
+ from unsloth import FastLanguageModel
7
+ from trl import SFTTrainer # ✅ now works because we added 'trl'
8
+
9
+
10
+ # Load and format your dataset
11
+ df = pd.read_csv("data.csv")
12
+ df["text"] = df.apply(lambda row: f"### Instruction:\n{row['instruction']}\n\n### Response:\n{row['response']}\n", axis=1)
13
+ dataset = Dataset.from_pandas(df[["text"]])
14
+
15
+ # Load Unsloth model
16
+ model, tokenizer = FastLanguageModel.from_pretrained(
17
+ model_name = "unsloth/SmolLM2-1.7B-Instruct",
18
+ max_seq_length = 2048,
19
+ dtype = torch.float16,
20
+ load_in_4bit = True,
21
+ )
22
+
23
+ # Apply LoRA without task_type
24
+ model = FastLanguageModel.get_peft_model(
25
+ model,
26
+ r = 8,
27
+ lora_alpha = 32,
28
+ lora_dropout = 0.05,
29
+ bias = "none",
30
+ )
31
+
32
+ # Tokenize text
33
+ def tokenize(example):
34
+ return tokenizer(example["text"], truncation=True, padding="max_length", max_length=512)
35
+
36
+ tokenized_dataset = dataset.map(tokenize, batched=True)
37
+
38
+ # Set up training
39
+ training_args = TrainingArguments(
40
+ output_dir = "./lora-finetuned",
41
+ per_device_train_batch_size = 2,
42
+ num_train_epochs = 3,
43
+ learning_rate = 2e-4,
44
+ logging_steps = 10,
45
+ save_steps = 100,
46
+ fp16 = True,
47
+ )
48
+
49
+ # Train
50
+ trainer = SFTTrainer(
51
+ model = model,
52
+ tokenizer = tokenizer,
53
+ args = training_args,
54
+ train_dataset = tokenized_dataset,
55
+ )
56
+
57
+ trainer.train()
58
+
59
+ # Save the fine-tuned LoRA adapter
60
  model.save_pretrained("./lora-finetuned")