Spaces:
Sleeping
Sleeping
File size: 2,530 Bytes
5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad 5666a5c af7e3ad |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import transformers
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "gpt2-large"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
@st.cache_resource
def load_model(model_name):
model = AutoModelForCausalLM.from_pretrained(model_name)
return model
model = load_model(checkpoint)
def infer(input_ids, max_tokens, temperature, top_k, top_p):
output_sequences = model.generate(
input_ids=input_ids,
max_new_tokens=max_tokens,
temperature=temperature,
top_k=top_k,
top_p=top_p,
do_sample=True,
no_repeat_ngram_size=2,
early_stopping=True,
num_beams=4,
pad_token_id=tokenizer.eos_token_id,
num_return_sequences=1
)
return output_sequences
default_value = "We are building the world's first"
#prompts
st.title("Write with vcGPT 🦄")
st.write("This is a LLM that was fine-tuned on a dataset of investment memos to help you generate your next pitch.")
sent = st.text_area("Text", default_value, height = 400)
max_tokens = st.sidebar.slider("Max Tokens", min_value = 32, max_value=512)
temperature = st.sidebar.slider("Temperature", value = 0.8, min_value = 0.0, max_value=1.0, step=0.05)
top_k = st.sidebar.slider("Top-k", min_value = 0, max_value=5, value = 4)
top_p = st.sidebar.slider("Top-p", min_value = 0.0, max_value=1.0, step = 0.05, value = 0.9)
encoded_prompt = tokenizer.encode(tokenizer.eos_token+sent, add_special_tokens=False, return_tensors="pt")
if encoded_prompt.size()[-1] == 0:
input_ids = None
else:
input_ids = encoded_prompt
output_sequences = infer(input_ids, max_tokens, temperature, top_k, top_p)
for generated_sequence_idx, generated_sequence in enumerate(output_sequences):
print(f"=== GENERATED SEQUENCE {generated_sequence_idx + 1} ===")
generated_sequences = generated_sequence.tolist()
# Decode text
text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True, skip_special_tokens=True)
# Remove all text after the stop token
#text = text[: text.find(args.stop_token) if args.stop_token else None]
# Add the prompt at the beginning of the sequence. Remove the excess text that was used for pre-processing
total_sequence = (
sent + text[len(tokenizer.decode(encoded_prompt[0], clean_up_tokenization_spaces=True, skip_special_tokens=True)) :]
)
generated_sequences.append(total_sequence)
print(total_sequence)
st.write(generated_sequences[-1]) |