Downloads · 30 days
22
37% of all-time downloads
aswin1906/gpt2-medium-wiki
gpt2-medium-wiki is a text generation model from aswin1906. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Model Description: GPT-2 Medium is the 355M parameter version of GPT-2, a transformer-based language model created and released by OpenAI. The model is a pretrained model on English language using a causal language mo…
Downloads · 30 days
22
37% of all-time downloads
All-time downloads
59
Public
Repo size
2.8 GB
Likes
0
Public
Click a slice to open those files.
.bin1.4 GB · 100%
From the Hugging Face model README
Model Description: GPT-2 Medium is the 355M parameter version of GPT-2, a transformer-based language model created and released by OpenAI. The model is a pretrained model on English language using a causal language modeling (CLM) objective. Created new fine-tuned model using wikitext dataset referred from huggingface(lilacai/lilac-wikitext-2-raw-v1)
Created model as part of experiment, please increase epoch and other parameters as part of hyperparameter tuning.
from transformers import GPT2Tokenizer, GPT2LMHeadModel, \
DataCollatorForLanguageModeling, Trainer, TrainingArguments
import time
from rich import print
from datasets import load_dataset
# Fine-tuned model name
new_model = "gpt2-medium-wiki"
# Load the entire model on the GPU 0
device_map = {"": 0}
model_name = "gpt2-medium" # You can use "gpt2", "gpt2-medium", "gpt2-large", etc.
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
model = GPT2LMHeadModel.from_pretrained(model_name, device_map=device_map)
datasets librarytrain_dataset = load_dataset('wikitext', 'wikitext-2-raw-v1', split='train[10:90]')
eval_dataset = load_dataset('wikitext', 'wikitext-2-raw-v1', split='validation[10:30]')
train_tokenized = train_dataset.map(lambda x: tokenizer(x['text'], truncation=True, padding='max_length', max_length=128), batched=True)
eval_tokenized = eval_dataset.map(lambda x: tokenizer(x['text'], truncation=True, padding='max_length', max_length=128), batched=True)
train_tokenized.set_format('torch', columns=['input_ids', 'attention_mask'])
eval_tokenized.set_format('torch', columns=['input_ids', 'attention_mask'])
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
training_args = TrainingArguments(
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=10, # Set this higher for more fine-tuning
evaluation_strategy="epoch",
logging_dir="./logs",
logging_steps=200,
do_train=True,
do_eval=True,
save_strategy="epoch",
output_dir="./gpt2_finetuned",
)
trainer = Trainer(
model=model,
args=training_args,
data_collator=data_collator,
train_dataset=train_tokenized,
eval_dataset=eval_tokenized,
)
trainer.train()
results = trainer.evaluate()
print(results)
end = time.time()
print(f"[bold green]Model Successfully trained in {end - start} seconds")
trainer.model.save_pretrained(new_model)
def generate_text(input_text):
input_ids = tokenizer.encode(input_text, return_tensors="pt").to(model.device)
# Generate text
output = model.generate(input_ids, max_length=50, temperature=0.7)
# Decode and print the generated text
for i, sequence in enumerate(output):
decoded_sequence = tokenizer.decode(sequence, skip_special_tokens=True)
print(f"Generated Text {i + 1}: {decoded_sequence}")
input_text = "which system carried over directly from Valkyira Chronicles"
generate_text(input_text)
