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()