| | import gradio as gr |
| | import torch |
| | import tiktoken |
| | from supplementary import GPTModel, generate_text_simple |
| |
|
| | |
| | GPT_CONFIG_124M = { |
| | "vocab_size": 50257, |
| | "context_length": 1024, |
| | "emb_dim": 768, |
| | "n_heads": 12, |
| | "n_layers": 12, |
| | "drop_rate": 0.1, |
| | "qkv_bias": False |
| | } |
| |
|
| | |
| | model = GPTModel(GPT_CONFIG_124M) |
| |
|
| | |
| | model.load_state_dict(torch.load("my_gpt_model.pth", map_location=torch.device('cpu'))) |
| | model.eval() |
| |
|
| | tokenizer = tiktoken.get_encoding("gpt2") |
| |
|
| | def generate(prompt, max_new_tokens): |
| | token_ids = tokenizer.encode(prompt) |
| | input_ids = torch.tensor(token_ids).unsqueeze(0) |
| | output_ids = generate_text_simple( |
| | model=model, |
| | idx=input_ids, |
| | max_new_tokens=max_new_tokens, |
| | context_size=GPT_CONFIG_124M["context_length"] |
| | ) |
| | return tokenizer.decode(output_ids.squeeze(0).tolist()) |
| |
|
| | iface = gr.Interface( |
| | fn=generate, |
| | inputs=[ |
| | gr.Textbox(label="Prompt"), |
| | gr.Slider(minimum=1, maximum=100, value=20, step=1, label="Max New Tokens") |
| | ], |
| | outputs=gr.Textbox(label="Generated Text"), |
| | title="SamGPT Text Generation", |
| | description="Enter a prompt to generate text with the custom language model." |
| | ) |
| |
|
| | iface.launch() |