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