Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -13,8 +13,9 @@ st.write("This AI tutor is fine-tuned on Python-related questions.")
|
|
| 13 |
model_name = "microsoft/phi-2"
|
| 14 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 15 |
|
| 16 |
-
# π₯ Fix: Add padding token
|
| 17 |
-
tokenizer.
|
|
|
|
| 18 |
|
| 19 |
# Check if fine-tuned model exists
|
| 20 |
model_path = "./models"
|
|
@@ -27,7 +28,7 @@ else:
|
|
| 27 |
# Load model on CPU
|
| 28 |
model = AutoModelForCausalLM.from_pretrained(
|
| 29 |
model_name,
|
| 30 |
-
torch_dtype=torch.
|
| 31 |
device_map={"": "cpu"} # Force CPU usage
|
| 32 |
)
|
| 33 |
|
|
@@ -45,13 +46,13 @@ else:
|
|
| 45 |
)
|
| 46 |
model = get_peft_model(model, lora_config)
|
| 47 |
|
| 48 |
-
# Load dataset
|
| 49 |
-
dataset = load_dataset("
|
| 50 |
|
| 51 |
# π₯ Fix: Set `labels` properly
|
| 52 |
def tokenize_function(examples):
|
| 53 |
-
inputs = tokenizer(examples["
|
| 54 |
-
inputs["labels"] = inputs["input_ids"].copy() # β
|
| 55 |
return inputs
|
| 56 |
|
| 57 |
tokenized_dataset = dataset.map(tokenize_function, batched=True)
|
|
@@ -69,8 +70,8 @@ else:
|
|
| 69 |
logging_dir="./logs",
|
| 70 |
logging_steps=10,
|
| 71 |
save_total_limit=2,
|
| 72 |
-
evaluation_strategy="no", # β
|
| 73 |
-
load_best_model_at_end=False # β
|
| 74 |
)
|
| 75 |
|
| 76 |
# Trainer
|
|
|
|
| 13 |
model_name = "microsoft/phi-2"
|
| 14 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 15 |
|
| 16 |
+
# π₯ Fix: Add padding token if missing
|
| 17 |
+
if tokenizer.pad_token is None:
|
| 18 |
+
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
|
| 19 |
|
| 20 |
# Check if fine-tuned model exists
|
| 21 |
model_path = "./models"
|
|
|
|
| 28 |
# Load model on CPU
|
| 29 |
model = AutoModelForCausalLM.from_pretrained(
|
| 30 |
model_name,
|
| 31 |
+
torch_dtype=torch.float32, # Use float32 for CPU compatibility
|
| 32 |
device_map={"": "cpu"} # Force CPU usage
|
| 33 |
)
|
| 34 |
|
|
|
|
| 46 |
)
|
| 47 |
model = get_peft_model(model, lora_config)
|
| 48 |
|
| 49 |
+
# Load dataset (Choose any one)
|
| 50 |
+
dataset = load_dataset("lvwerra/codeparrot-clean", split="train") # β
Free dataset
|
| 51 |
|
| 52 |
# π₯ Fix: Set `labels` properly
|
| 53 |
def tokenize_function(examples):
|
| 54 |
+
inputs = tokenizer(examples["content"], padding="max_length", truncation=True, max_length=512)
|
| 55 |
+
inputs["labels"] = inputs["input_ids"].copy() # β
Ensure labels exist
|
| 56 |
return inputs
|
| 57 |
|
| 58 |
tokenized_dataset = dataset.map(tokenize_function, batched=True)
|
|
|
|
| 70 |
logging_dir="./logs",
|
| 71 |
logging_steps=10,
|
| 72 |
save_total_limit=2,
|
| 73 |
+
evaluation_strategy="no", # β
No eval dataset needed
|
| 74 |
+
load_best_model_at_end=False # β
Prevents conflicts
|
| 75 |
)
|
| 76 |
|
| 77 |
# Trainer
|