Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import torch | |
# Model initialization | |
model_name = "gpt2" # or your specific model | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
# Add special tokens for languages | |
special_tokens = {"additional_special_tokens": ["[YORUBA]", "[IGBO]", "[HAUSA]"]} | |
tokenizer.add_special_tokens(special_tokens) | |
model.resize_token_embeddings(len(tokenizer)) | |
# Move model to GPU if available | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
model.to(device) | |
def generate_text(prompt, language): | |
# Add language tag to prompt | |
tagged_prompt = f"[{language.upper()}] {prompt}" | |
# Tokenize | |
inputs = tokenizer(tagged_prompt, return_tensors="pt").to(device) | |
# Generate | |
outputs = model.generate( | |
**inputs, | |
max_length=100, | |
num_return_sequences=1, | |
temperature=0.7, | |
pad_token_id=tokenizer.eos_token_id | |
) | |
# Decode and return | |
return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Create Gradio interface | |
iface = gr.Interface( | |
fn=generate_text, | |
inputs=[ | |
gr.Textbox(label="Enter your prompt"), | |
gr.Dropdown(choices=["YORUBA", "IGBO", "HAUSA"], label="Select Language") | |
], | |
outputs=gr.Textbox(label="Generated Text"), | |
title="Nigerian Language Generator", | |
description="Generate text in Yoruba, Igbo, or Hausa using a fine-tuned GPT model." | |
) | |
if __name__ == "__main__": | |
iface.launch() |