low_haiku_space / app.py
LymphSteamer's picture
Update app.py
745907c verified
import gradio as gr
from transformers import AutoTokenizer,AutoModelForCausalLM,BitsAndBytesConfig
import torch
model_id = "rinna/japanese-gpt2-small"
tokenizer = AutoTokenizer.from_pretrained(model_id,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
low_cpu_mem_usage=True,
trust_remote_code=True
)
model.eval()
prompt =("川柳:朝寝坊 言い訳考え また寝なおす 川柳:財布見る まるで冷蔵庫 空っぽだ 川柳:ダイエット 明日からって 五年目だ 川柳:マスク取る 顔が誰だか わからない 川柳:ため息が わいふぁいよりも よく飛ぶよ 川柳:")
inputs = tokenizer(prompt,return_tensors="pt")
prompt_len = inputs["input_ids"].shape[-1] # プロンプトのトークン数!
device = "cuda" if torch.cuda.is_available() else "cpu"
inputs ={k:v.to(device) for k,v in inputs.items()}
def haiku_generate():
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=20,
eos_token_id=tokenizer.eos_token_id, # 終わりを明示!
pad_token_id=tokenizer.pad_token_id,
do_sample=True,
repetition_penalty=1.2,
temperature=0.9,
top_p=0.9
)
generated_tokens = outputs[0][prompt_len:]
return tokenizer.decode(generated_tokens,skip_special_tokens=True)
with gr.Blocks() as demo:
output = gr.Textbox(label="俳句")
btn = gr.Button("生成")
btn.click(fn=haiku_generate,outputs=output)
demo.launch()