| | import torch |
| | from transformers import GPT2Tokenizer, GPT2LMHeadModel, TextDataset, DataCollatorForLanguageModeling, Trainer, TrainingArguments, pipeline |
| | import gradio as gr |
| |
|
| | |
| | tokenizer = GPT2Tokenizer.from_pretrained('gpt2') |
| |
|
| | |
| | def load_dataset(file_path, tokenizer, block_size=128): |
| | try: |
| | dataset = TextDataset( |
| | tokenizer=tokenizer, |
| | file_path=file_path, |
| | block_size=block_size |
| | ) |
| | return dataset |
| | except Exception as e: |
| | print(f"Error loading dataset: {e}") |
| | return None |
| |
|
| | |
| | file_path = "https://huggingface.co/spaces/soalwin/meow/resolve/main/gpt2trainmodel.txt" |
| |
|
| | |
| | dataset = load_dataset(file_path, tokenizer) |
| | if dataset is None: |
| | raise ValueError("Failed to load dataset. Please check the file path and format.") |
| |
|
| | data_collator = DataCollatorForLanguageModeling( |
| | tokenizer=tokenizer, |
| | mlm=False |
| | ) |
| |
|
| | |
| | model = GPT2LMHeadModel.from_pretrained('gpt2') |
| |
|
| | |
| | training_args = TrainingArguments( |
| | output_dir='./results', |
| | overwrite_output_dir=True, |
| | num_train_epochs=3, |
| | per_device_train_batch_size=4, |
| | save_steps=10_000, |
| | save_total_limit=2, |
| | ) |
| |
|
| | |
| | trainer = Trainer( |
| | model=model, |
| | args=training_args, |
| | data_collator=data_collator, |
| | train_dataset=dataset, |
| | ) |
| |
|
| | |
| | trainer.train() |
| |
|
| | |
| | model.save_pretrained('./fine-tuned-gpt2') |
| | tokenizer.save_pretrained('./fine-tuned-gpt2') |
| |
|
| | |
| | def generate_text(prompt): |
| | |
| | model = GPT2LMHeadModel.from_pretrained('./fine-tuned-gpt2') |
| | tokenizer = GPT2Tokenizer.from_pretrained('./fine-tuned-gpt2') |
| |
|
| | |
| | generator = pipeline('text-generation', model=model, tokenizer=tokenizer) |
| |
|
| | |
| | output = generator(prompt, max_length=100, num_return_sequences=1) |
| | return output[0]['generated_text'] |
| |
|
| | |
| | iface = gr.Interface(fn=generate_text, inputs="text", outputs="text") |
| |
|
| | |
| | iface.launch() |
| |
|