Abhijith / sample.py
Abhijith71's picture
Upload folder using huggingface_hub
5462e7f verified
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset
from transformers import TrainingArguments
from trl import SFTTrainer
# Load the model
model_name = "deepseek-ai/deepseek-coder-6.7b-instruct"
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_name,
max_seq_length=2048,
dtype=None,
load_in_4bit=True,
)
# Load the dataset
dataset = load_dataset("tatsu-lab/alpaca")
# Format the dataset correctly
dataset = dataset.map(lambda x: {
"input": x["instruction"],
"output": x["output"],
}, remove_columns=["instruction", "output"])
# Apply LoRA to the model
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=["q_proj", "v_proj"],
lora_alpha=32,
lora_dropout=0.1,
bias="none",
)
# Function to check bfloat16 support
def is_bfloat16_supported():
return torch.cuda.is_bf16_supported()
# Define training arguments
training_args = TrainingArguments(
output_dir="outputs",
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
evaluation_strategy="steps",
save_strategy="steps",
save_steps=500,
save_total_limit=3,
learning_rate=2e-5,
weight_decay=0.01,
logging_dir="logs",
logging_steps=100,
fp16=not is_bfloat16_supported(), # Use fp16 if bf16 is not supported
bf16=is_bfloat16_supported(), # Use bf16 if supported
report_to="none",
num_train_epochs=3,
)
# Set up the SFT Trainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
args=training_args,
tokenizer=tokenizer,
)
# Start fine-tuning
trainer.train()
# Save the fine-tuned model
model.save_pretrained("fine_tuned_llama_3_2")
tokenizer.save_pretrained("fine_tuned_llama_3_2")