portfolio / app.py
kaba777's picture
fix typo
f6bc926
import gradio as gr
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
from peft import PeftModel
# モデルのパス
model_folder = "./model"
base_model_name = "bigscience/mt0-large"
peft_model_path = f"{model_folder}/peft_model"
# PEFT設定とベースモデル読み込み(meta tensor回避)
base_model = AutoModelForSeq2SeqLM.from_pretrained(base_model_name)
tokenizer = AutoTokenizer.from_pretrained(base_model_name)
model = PeftModel.from_pretrained(base_model, peft_model_path)
def predict_sentiment(text: str) -> str:
model.eval()
inputs = tokenizer(text, return_tensors="pt")
# 本来はtorch.no_grad()を使うべきだが、バグを避けるために、torch.no_grad()を使わない
# with torch.no_grad():
outputs = model.generate(input_ids=inputs["input_ids"], max_new_tokens=10)
sentiment = tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)
return sentiment
demo = gr.Interface(fn=predict_sentiment, inputs="textbox", outputs="textbox", description="入力された金融ニュースがネガティブかポジティブかを判定するLLMを作成しました。 金融ニュース以外(例えば映画の感想など)のネガポジ判定も出来ますが、あくまでも金融ニュースに特化したLLMです。 試しに、以下の金融ニュースの本文を入力してみてください。 https://news.livedoor.com/article/detail/28762328/ 使用技術: LoRA(peft) ベースモデル: bigscience/mt0-large データセット: 金融ニュースデータセット(financial_phrasebank)")
if __name__ == "__main__":
demo.launch()