|
import gradio as gr |
|
import random |
|
import torch |
|
import pathlib |
|
|
|
from src.model import GPTModel |
|
from src.inference import generate as generate_text |
|
from src.utils import vocab_size |
|
|
|
batch_size = 64 |
|
block_size = 256 |
|
max_iters = 5000 |
|
eval_interval = 500 |
|
learning_rate = 3e-4 |
|
device = "cuda:1" if torch.cuda.is_available() else "cpu" |
|
eval_iters = 200 |
|
n_embeds = 384 |
|
n_heads = 6 |
|
n_layers = 6 |
|
dropout = 0.2 |
|
|
|
|
|
def load_model(): |
|
model_ckpt = torch.load("checkpoints/model.pth", map_location=device) |
|
model = GPTModel( |
|
vocab_size, n_embeds, block_size, n_heads, n_layers, dropout, device |
|
) |
|
model.load_state_dict(model_ckpt.state_dict()) |
|
return model |
|
|
|
|
|
model = load_model() |
|
|
|
|
|
def generate(prompt, max_new_tokens): |
|
prompt = prompt.strip() |
|
out = generate_text(prompt, model, block_size, max_new_tokens, device) |
|
return {gpt_output: out} |
|
|
|
|
|
with gr.Blocks() as app: |
|
gr.Markdown("## ERA Session21 - GPT from scratch") |
|
gr.Markdown( |
|
"""This is an implementation of GPT [Let's build GPT: from scratch, in code, spelled out.](https://www.youtube.com/watch?v=kCc8FmEb1nY&t=2s) by Andrej Karpathy. |
|
|
|
Please find the source code and training details [here](https://github.com/RaviNaik/ERA-SESSION21). |
|
|
|
Dataset used to train: [tinyshakespeare](https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt). |
|
""" |
|
) |
|
with gr.Row(): |
|
with gr.Column(): |
|
prompt_box = gr.Textbox(label="Initial Prompt", interactive=True) |
|
max_new_tokens = gr.Slider( |
|
minimum=10, |
|
maximum=2500, |
|
value=100, |
|
step=10, |
|
label="Select Number of Tokens to be Generated", |
|
interactive=True, |
|
) |
|
submit_btn = gr.Button(value="Generate") |
|
|
|
with gr.Column(): |
|
gpt_output = gr.TextArea( |
|
label="Text Generated by GPT", |
|
show_label=True, |
|
max_lines=100, |
|
interactive=False, |
|
) |
|
|
|
submit_btn.click( |
|
generate, |
|
inputs=[prompt_box, max_new_tokens], |
|
outputs=[gpt_output], |
|
) |
|
|
|
app.launch() |
|
|