Spaces:
Sleeping
Sleeping
File size: 13,918 Bytes
a1e5063 94aba93 fa94b9c cde20ed fa94b9c 94aba93 9c225f1 fa94b9c 94aba93 5a521e1 9c225f1 71852c2 1ac4018 aa9d7ef 2376ae8 0ebfc8a 57062ef 1ac4018 2376ae8 57ca910 1ac4018 1d40f83 1ee4b73 1ac4018 f6f9adc 1ac4018 0ebfc8a a16ea65 0ebfc8a c27f13b 8649c10 6882935 0ebfc8a 6882935 94aba93 e551817 6bd9e07 c6e7ac9 2376ae8 c6e7ac9 f6f9adc c6e7ac9 07cc877 57062ef 78683da b348524 78683da b348524 78683da 2376ae8 78683da 2376ae8 78683da 2376ae8 c6e7ac9 9c6e8e6 0ebfc8a cde20ed 2065afd 0ebfc8a 2065afd c6e7ac9 20645d3 0ebfc8a f6f9adc c6e7ac9 b348524 c6e7ac9 b348524 c6e7ac9 b348524 c6e7ac9 2376ae8 c6e7ac9 2376ae8 c6e7ac9 2376ae8 c6e7ac9 9c6e8e6 0ebfc8a cde20ed 2065afd 0ebfc8a 2065afd 37f5129 0ebfc8a f6f9adc c6e7ac9 2376ae8 c6e7ac9 b348524 c6e7ac9 b348524 c6e7ac9 2376ae8 c6e7ac9 2376ae8 c6e7ac9 2376ae8 c6e7ac9 9c6e8e6 0ebfc8a 37f5129 aa9d7ef 94aba93 |
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
import gradio as gr
import random
import os
import copy
from huggingface_hub import login
from transformers import pipeline
from transformers import GPT2Tokenizer, GPT2LMHeadModel
login(os.environ["HF_TOKEN"])
#https://huggingface.co/facebook/opt-1.3b
#generator = pipeline('text-generation', model="microsoft/DialoGPT-medium")
tokenizer = GPT2Tokenizer.from_pretrained('microsoft/DialoGPT-medium')
original_model = GPT2LMHeadModel.from_pretrained('microsoft/DialoGPT-medium')
untethered_model = GPT2LMHeadModel.from_pretrained('zmbfeng/untethered_20240225_epochs_500')
untethered_paraphrased_model = GPT2LMHeadModel.from_pretrained('zmbfeng/untethered_20240227_epochs_350')
default_num_return_sequences=5
default_temperature=0.5
default_repetition_penalty=1.5
default_top_p=1.9
default_top_k=50
default_do_sample=True
def create_response(input_str,
# num_beams,
num_return_sequences,
temperature,
repetition_penalty,
top_p,
top_k,
do_sample,
model_name):
print("input_str="+input_str)
print("model_name="+str(model_name))
# num_beams = int(num_beams)
# print("num_beams=" + str(num_beams))
num_return_sequences=int(num_return_sequences)
print("num_return_sequences" + str(num_return_sequences))
print("top_p" + str(top_p))
top_k=int(top_k)
print("top_k" + str(top_k))
print("repetition_penalty" + str(repetition_penalty))
print("temperature" + str(temperature))
print("do_sample" + str(do_sample))
if not do_sample:
num_beams = 1
print("num_beams=" + str(num_beams))
encoded = tokenizer.encode_plus(input_str + tokenizer.eos_token, return_tensors="pt")
input_ids = encoded["input_ids"]
attention_mask = encoded["attention_mask"]
if model_name == "original_model":
output_ids = original_model.generate(input_ids,pad_token_id=tokenizer.eos_token_id,do_sample=do_sample, attention_mask=attention_mask, max_length=100, temperature=temperature, top_p=top_p, repetition_penalty=repetition_penalty,num_return_sequences=num_return_sequences )
elif model_name == "untethered_model":
output_ids = untethered_model.generate(input_ids,pad_token_id=tokenizer.eos_token_id,do_sample=do_sample, attention_mask=attention_mask, max_length=100, temperature=temperature, top_p=top_p, repetition_penalty=repetition_penalty,num_return_sequences=num_return_sequences )
elif model_name == "untethered_paraphrased_model":
output_ids = untethered_paraphrased_model.generate(input_ids,pad_token_id=tokenizer.eos_token_id,do_sample=do_sample, attention_mask=attention_mask, max_length=100, temperature=temperature, top_p=top_p, repetition_penalty=repetition_penalty,num_return_sequences=num_return_sequences )
else:
output_ids = original_model.generate(input_ids,pad_token_id=tokenizer.eos_token_id,do_sample=do_sample, attention_mask=attention_mask, max_length=100, temperature=temperature, top_p=top_p, repetition_penalty=repetition_penalty,num_return_sequences=num_return_sequences )
outputs = model_name+" generated <br>"
for output_id in output_ids:
output = tokenizer.decode(output_id, skip_special_tokens=True)
outputs=outputs+output+"<br/>"
return outputs
common_examples_string="<br/>Sample Inputs:<br/>What is death?<br/>One of the best teachers in all of life turns out to be what?<br/>what is your most meaningful relationship?\nWhat actually gives life meaning?<br/>"
common_examples=[
["What is death?",default_num_return_sequences,default_temperature,default_repetition_penalty,default_top_p,default_top_k,default_do_sample], # The first example
["One of the best teachers in all of life turns out to be what?",default_num_return_sequences,default_temperature,default_repetition_penalty,default_top_p,default_top_k,default_do_sample], # The second example
["what is your most meaningful relationship?",default_num_return_sequences,default_temperature,default_repetition_penalty,default_top_p,default_top_k,default_do_sample], # The third example
["What actually gives life meaning?",default_num_return_sequences,default_temperature,default_repetition_penalty,default_top_p,default_top_k,default_do_sample]
]
examples = copy.deepcopy(common_examples)
print(examples)
for example in examples:
example.append("original_model")
print(examples)
interface_original = gr.Interface(fn=create_response,
title="original",
description="original language model, no fine tuning"+common_examples_string,
#examples=examples,
inputs=[
gr.Textbox(label="input text here", lines=3),
# gr.Number(label="num_beams (integer) explores the specified number of possible outputs and selects the most " +
# "likely ones (specified in num_beams)", value=7),
gr.Number(label="num_return_sequences (integer) the number of outputs selected from num_beams possible output",
value=default_num_return_sequences),
gr.Number(
label="temperature (decimal) controls the creativity or randomness of the output. A higher temperature" +
" (e.g., 0.9) results in more diverse and creative output, while a lower temperature (e.g., 0.2)" +
" makes the output more deterministic and focused",
value=default_temperature),
gr.Number(label="repetition_penalty (decimal) penalizes words that have already appeared in the output, " +
"making them less likely to be generated again. A higher repetition_penalty (e.g., 1.5) results" +
"in more varied and non-repetitive output.",
value=default_repetition_penalty),
gr.Number(label="top_p (decimal) the model will only consider the words that have a high enough probability" +
" to reach a certain threshold",
value=default_top_p),
gr.Number(label="top_k (integer) The number of highest probability vocabulary word will be considered" +
"This means that only the tokens with the highest probabilities are considered for sampling" +
"This reduces the diversity of the generated sequences, "+
"but also makes them more likely to be coherent and fluent.",
value=default_top_k),
gr.Checkbox(label="do_sample. If is set to False, num_return_sequences must be 1 because the generate function will use greedy decoding, " +
"which means that it will select the word with the highest probability at each step. " +
"This results in a deterministic and fluent output, but it might also lack diversity and creativity" +
"If is set to True, the generate function will use stochastic sampling, which means that it will randomly" +
" select a word from the probability distribution at each step. This results in a more diverse and creative" +
" output, but it might also introduce errors and inconsistencies ", value=default_do_sample),
gr.Textbox(label="model", lines=3, value="original_model",visible=False)
],
outputs="html"
)
examples = copy.deepcopy(common_examples)
print(examples)
for example in examples:
example.append("untethered_model")
print(examples)
interface_untethered_model = gr.Interface(fn=create_response,
title="untethered model",
description="language model fine tuned with'The Untethered Soul' chapter 17"+common_examples_string,
#examples=examples,
inputs=[
gr.Textbox(label="input text here", lines=3),
# gr.Number(label="num_beams (integer) explores the specified number of possible outputs and selects the most " +
# "likely ones (specified in num_beams)", value=7),
gr.Number(label="num_return_sequences (integer) the number of outputs selected from num_beams possible output",
value=default_num_return_sequences),
gr.Number(
label="temperature (decimal) controls the creativity or randomness of the output. A higher temperature" +
" (e.g., 0.9) results in more diverse and creative output, while a lower temperature (e.g., 0.2)" +
" makes the output more deterministic and focused",
value=default_temperature),
gr.Number(label="repetition_penalty (decimal) penalizes words that have already appeared in the output, " +
"making them less likely to be generated again. A higher repetition_penalty (e.g., 1.5) results" +
"in more varied and non-repetitive output.",
value=default_repetition_penalty),
gr.Number(label="top_p (decimal) the model will only consider the words that have a high enough probability" +
" to reach a certain threshold",
value=default_top_p),
gr.Number(label="top_k (integer) The number of highest probability vocabulary word will be considered" +
"This means that only the tokens with the highest probabilities are considered for sampling" +
"This reduces the diversity of the generated sequences, "+
"but also makes them more likely to be coherent and fluent.",
value=default_top_k),
gr.Checkbox(label="do_sample. If is set to False, num_return_sequences must be 1 because the generate function will use greedy decoding, " +
"which means that it will select the word with the highest probability at each step. " +
"This results in a deterministic and fluent output, but it might also lack diversity and creativity" +
"If is set to True, the generate function will use stochastic sampling, which means that it will randomly" +
" select a word from the probability distribution at each step. This results in a more diverse and creative" +
" output, but it might also introduce errors and inconsistencies ", value=default_do_sample),
gr.Textbox(label="model", lines=3, value="untethered_model",visible=False)
],
outputs="html"
)
examples = copy.deepcopy(common_examples)
print(examples)
for example in examples:
example.append("untethered_paraphrased_model")
print(examples)
interface_untethered_paraphrased_model = gr.Interface(fn=create_response,
title="untethered paraphrased_model",
description="language model fine tuned with'The Untethered Soul' chapter 17 paraphrased"+common_examples_string,
#examples=examples,
inputs=[
gr.Textbox(label="input text here", lines=3),
# gr.Number(label="num_beams (integer) explores the specified number of possible outputs and selects the most " +
# "likely ones (specified in num_beams)", value=7),
gr.Number(label="num_return_sequences (integer) the number of outputs selected from num_beams possible output",
value=default_num_return_sequences),
gr.Number(
label="temperature (decimal) controls the creativity or randomness of the output. A higher temperature" +
" (e.g., 0.9) results in more diverse and creative output, while a lower temperature (e.g., 0.2)" +
" makes the output more deterministic and focused",
value=default_temperature),
gr.Number(label="repetition_penalty (decimal) penalizes words that have already appeared in the output, " +
"making them less likely to be generated again. A higher repetition_penalty (e.g., 1.5) results" +
"in more varied and non-repetitive output.",
value=default_repetition_penalty),
gr.Number(label="top_p (decimal) the model will only consider the words that have a high enough probability" +
" to reach a certain threshold",
value=default_top_p),
gr.Number(label="top_k (integer) The number of highest probability vocabulary word will be considered" +
"This means that only the tokens with the highest probabilities are considered for sampling" +
"This reduces the diversity of the generated sequences, "+
"but also makes them more likely to be coherent and fluent.",
value=default_top_k),
gr.Checkbox(label="do_sample. If is set to False, num_return_sequences must be 1 because the generate function will use greedy decoding, " +
"which means that it will select the word with the highest probability at each step. " +
"This results in a deterministic and fluent output, but it might also lack diversity and creativity" +
"If is set to True, the generate function will use stochastic sampling, which means that it will randomly" +
" select a word from the probability distribution at each step. This results in a more diverse and creative" +
" output, but it might also introduce errors and inconsistencies ", value=default_do_sample),
gr.Textbox(label="model", lines=3, value="untethered_paraphrased_model",visible=False)
],
outputs= "html"
)
demo = gr.TabbedInterface([interface_original, interface_untethered_model, interface_untethered_paraphrased_model], ["Original", "Untethered", "Untethered paraphrased"])
demo.launch() |