Mistral_Test / train.py
eesfeg's picture
Add application file
1e639fb
import torch
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model
MODEL_ID = "abdelac/tinyllama"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
load_in_4bit=True,
device_map="auto"
)
dataset = load_dataset("json", data_files="data.json")["train"]
def tokenize(example):
text = f"### Instruction:\n{example['instruction']}\n### Response:\n{example['output']}"
return tokenizer(text, truncation=True, padding="max_length", max_length=512)
dataset = dataset.map(tokenize)
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
training_args = TrainingArguments(
output_dir="./lora-out",
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
num_train_epochs=2,
fp16=True,
logging_steps=10,
save_strategy="epoch"
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset
)
trainer.train()
model.save_pretrained("./lora-out")