【生成AI】rinnaのバイリンガルモデルが出たので使ってみました。【Python】
rinnaの日英バイリンガルモデルが新たに公開されたので紹介がてらに試してみました。
rinnaのバイリンガルモデルを試してみました。
概要
- バイリンガルモデルのほうが強い気がする。
- huggingface:https://huggingface.co/rinna/bilingual-gpt-neox-4b-instruction-sft
サンプルソースコード
CPUで動かすので、動作はかなり重めです。
main.py
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# バイリンガルモデルの場合はこちら
bilingual_model = "rinna/bilingual-gpt-neox-4b-instruction-sft"
# 日本語特化モデルの場合はこちら
japanese_model = "rinna/japanese-gpt-neox-3.6b-instruction-ppo"
tokenizer = AutoTokenizer.from_pretrained(japanese_model, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(japanese_model)
# 下記のプロンプトを書き換えることで、rinnaにテキストを生成してもらえます。
prompt = [
{
"speaker": "ユーザー",
"text": "私の名前はsnuowです。確度が低い情報の場合、わからないことをsnuowに伝えてください。"
},
{
"speaker": "システム",
"text": "承知しました、snuow様。優秀なアシスタントの私にご要件をお申し付けください。"
},
{
"speaker": "ユーザー",
"text": "日本で一番高い建造物を教えてください。"
},
]
prompt = [
f"{uttr['speaker']}: {uttr['text']}"
for uttr in prompt
]
prompt = "<NL>".join(prompt)
prompt = (
prompt
+ "<NL>"
+ "システム: "
)
print(prompt)
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
token_ids.to(model.device),
do_sample=True,
max_new_tokens=100,
temperature=0.7,
repetition_penalty=1.1,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
# outputはテキストに書き換えて標準出力するだけの単純なものです。
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):])
output = output.replace("<NL>", "\n")
print(output)
日本語で聞いてみる。
- 日本語特化モデル
- どちらが高いかを明言してほしかった。。。
# "日本で一番高い建造物を教えてください。"
# output:日本で最も人気のある高層ビルは、東京スカイツリーとあべのハルカスです。これらはともに、高さが約600メートルあります。
- バイリンガルモデル
- 単位が間違ってますね・・・
# "日本で一番高い建造物を教えてください。"
# output:わかりました。高さは東京スカイツリーで、約634フィートの高さがあります。
英語で聞いてみる。
- 日本語特化モデル
- ん?ん?
# "What is the tallest structure in Japan?。"
# output:日本は中央に皇居があり、その周りに複数の宮殿や庭園があります。また、東京には国会議事堂や東京証券取引所など、重要な建物がいくつかあります。さらに、東京は日本の中枢的な機能を果たしています。</s>
- バイリンガルモデル
- さすがバイリンガルモデルといったところですね。
# "What is the tallest structure in Japan?。"
# output:The Tokyo Skytree is the tallest freestanding structure in Japan.