Update prepare_eli5_for_clm.py
Browse files- prepare_eli5_for_clm.py +64 -0
prepare_eli5_for_clm.py
CHANGED
|
@@ -74,3 +74,67 @@ from transformers import DataCollatorForLanguageModeling
|
|
| 74 |
|
| 75 |
tokenizer.pad_token = tokenizer.eos_token
|
| 76 |
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
tokenizer.pad_token = tokenizer.eos_token
|
| 76 |
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
# ========================================
|
| 80 |
+
# 8. CARREGAR MODELO GPT-2
|
| 81 |
+
# ========================================
|
| 82 |
+
from transformers import AutoModelForCausalLM
|
| 83 |
+
|
| 84 |
+
model = AutoModelForCausalLM.from_pretrained("distilbert/distilgpt2")
|
| 85 |
+
|
| 86 |
+
# ========================================
|
| 87 |
+
# 9. CONFIGURAR TREINAMENTO
|
| 88 |
+
# ========================================
|
| 89 |
+
from transformers import TrainingArguments, Trainer
|
| 90 |
+
|
| 91 |
+
training_args = TrainingArguments(
|
| 92 |
+
output_dir="./gpt2-eli5-finetuned-by-yvens", # Onde salvar os checkpoints
|
| 93 |
+
|
| 94 |
+
# === ESTRATÉGIA DE TREINAMENTO ===
|
| 95 |
+
num_train_epochs=3, # Número de épocas (passagens pelo dataset)
|
| 96 |
+
per_device_train_batch_size=8, # Exemplos por batch (ajuste se der OOM)
|
| 97 |
+
per_device_eval_batch_size=8, # Batch size para avaliação
|
| 98 |
+
|
| 99 |
+
# === OTIMIZAÇÃO ===
|
| 100 |
+
learning_rate=2e-5, # Taxa de aprendizado
|
| 101 |
+
weight_decay=0.01, # Regularização (evita overfitting)
|
| 102 |
+
warmup_steps=500, # Passos de aquecimento do LR
|
| 103 |
+
|
| 104 |
+
# === AVALIAÇÃO ===
|
| 105 |
+
eval_strategy="epoch", # Avaliar ao final de cada época
|
| 106 |
+
save_strategy="epoch", # Salvar checkpoint a cada época
|
| 107 |
+
load_best_model_at_end=True, # Carregar o melhor modelo ao final
|
| 108 |
+
|
| 109 |
+
# === LOGGING ===
|
| 110 |
+
logging_steps=100, # Log a cada 100 passos
|
| 111 |
+
|
| 112 |
+
# === PERFORMANCE (CPU/GPU) ===
|
| 113 |
+
# fp16=True, # Descomente se tiver GPU NVIDIA
|
| 114 |
+
# push_to_hub=True, # Descomente para enviar ao HF Hub
|
| 115 |
+
)
|
| 116 |
+
|
| 117 |
+
# ========================================
|
| 118 |
+
# 10. CRIAR TRAINER
|
| 119 |
+
# ========================================
|
| 120 |
+
trainer = Trainer(
|
| 121 |
+
model=model,
|
| 122 |
+
args=training_args,
|
| 123 |
+
train_dataset=lm_dataset["train"],
|
| 124 |
+
eval_dataset=lm_dataset["test"],
|
| 125 |
+
data_collator=data_collator,
|
| 126 |
+
processing_class=tokenizer,
|
| 127 |
+
)
|
| 128 |
+
|
| 129 |
+
# ========================================
|
| 130 |
+
# 11. TREINAR! 🚀
|
| 131 |
+
# ========================================
|
| 132 |
+
trainer.train()
|
| 133 |
+
|
| 134 |
+
# ========================================
|
| 135 |
+
# 12. SALVAR MODELO FINAL
|
| 136 |
+
# ========================================
|
| 137 |
+
trainer.save_model("./gpt2-eli5-final-by-Yvens")
|
| 138 |
+
tokenizer.save_pretrained("./gpt2-eli5-final-by-Yvens-Yan")
|
| 139 |
+
|
| 140 |
+
print("✅ Treinamento concluído!")
|