File size: 1,662 Bytes
5a22686
51d4f2a
02cfa98
745907c
da9043e
d0f7a6f
 
 
 
 
 
 
 
0d722f7
332914e
 
4c37b59
 
0d51f33
8ecaac5
d4781e3
0d51f33
b7bf584
fdb97c7
 
0d51f33
9bb0c06
745907c
0d51f33
d4781e3
c1ff840
 
f99bc36
08f3dee
f99bc36
c1ff840
5a22686
 
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
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()