Spaces:
Running
Running
| import torch | |
| import gradio as gr | |
| from model import GPT, GPTConfig # Assuming your model code is in a file named model.py | |
| import tiktoken | |
| # Load the trained model | |
| def load_model(model_path): | |
| config = GPTConfig() # Adjust this if you've changed the default config | |
| model = GPT(config) | |
| model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu'))) | |
| model.eval() | |
| return model | |
| model = load_model('GPT_model.pth') # Replace with the actual path to your .pth file | |
| enc = tiktoken.get_encoding('gpt2') | |
| def generate_text(prompt, max_length=100, temperature=0.7): | |
| input_ids = torch.tensor(enc.encode(prompt)).unsqueeze(0) | |
| with torch.no_grad(): | |
| for _ in range(max_length): | |
| outputs = model(input_ids) | |
| next_token_logits = outputs[0][:, -1, :] / temperature | |
| next_token = torch.multinomial(torch.softmax(next_token_logits, dim=-1), num_samples=1) | |
| input_ids = torch.cat([input_ids, next_token], dim=-1) | |
| if next_token.item() == enc.encode('\n')[0]: | |
| break | |
| generated_text = enc.decode(input_ids[0].tolist()) | |
| return generated_text | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=generate_text, | |
| inputs=[ | |
| gr.Textbox(label="Prompt", placeholder="Enter your prompt here..."), | |
| gr.Slider(minimum=10, maximum=200, value=100, step=1, label="Max Length"), | |
| gr.Slider(minimum=0.1, maximum=1.0, value=0.7, step=0.1, label="Temperature") | |
| ], | |
| outputs=gr.Textbox(label="Generated Text"), | |
| title="GPT-2 Text Generator", | |
| description="Enter a prompt and generate text using a fine-tuned GPT-2 model." | |
| ) | |
| # Launch the app | |
| iface.launch() |