今回は最近発表された大規模言語モデル
Rinna を試してみました

解説動画はこちら



はじめに

最近発表された「Rinna」は
rinna株式会社が開発した
大規模言語モデル(LLM 英: large language model)
になります

日本語に特化した36億パラメータを持つ
汎用言語モデルと対話言語モデルの
2種類のGPT言語モデルが
オープンソースで公開されています

今回は対話GPT言語モデル
の方を使っていきます

モデル自体はこちらで公開されています

対話GPT言語モデル(Hugging Faceリンク


早速使い方を見ていきましょう

必要可動要件


モデルの稼働にメモリが16GBほど必要です
最低でも16GB以上の
メモリを積んだPCが必要です

メモリが足りない場合は
次のモデルのダウンロードで落ちます


インストール方法

transformers pytorch などの
ライブラリが必要です

手元にインストールしていない人は
インストールしておいて下さい

# パッケージのインストール例
!pip install pytorch transformers sentencepiece



モデルのダウンロード

ライブラリに問題ない人は
次のコードでモデルをダウンロード出来ます

モデルのダウンロード(15-20分くらい)
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
​
# トークナイザーとモデルの準備(すんごい時間かかる)
tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-sft", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-sft")


GPUが使える人は
下記のコードを追加するとGPUを使えます
if torch.cuda.is_available():
    model = model.to("cuda")


rinnaを使って会話してみる

先に会話実行用の関数を定義しておきましょう
プロンプトと呼ばれる命令文を
引数として渡します

プロンプトの後半部分も
作成する関数を用意します
# 対話用関数
def excute_conv(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=128, temperature=0.7, pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id ) output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):]) output = output.replace("<NL>","\n") output = output.replace("。","。\n") print(output) def make_prompt(l): prompt = [f"{k}:{v}" for (k,v) in l] prompt = "<NL>".join(prompt) prompt = (prompt + "<NL>" + "システム: ") return prompt

ここまで用意できたら、あとは
プロンプトを用意して会話するだけです

簡単なプロンプトを指定して会話してみましょう
# プロンプトの用意
l = [
    ["ユーザー","あなたはどんな仕組みで動いていますか、より詳しく解説して下さい"],
]
prompt = make_prompt(l)
print(prompt.replace("<NL>","\n"))
excute_conv(prompt)
ユーザー:あなたはどんな仕組みで動いていますか、
より詳しく解説して下さい

システム: 
私はロボットであり、ハードウェアと
ソフトウェアを組み合わせ、そのハードウェアを使って
自分自身のソフトウェアを実行しています。
</s>


こんな感じで会話が成立しました
日本語自体はかなり自然で正しい構文である様に見えます

他の会話も色々試しているので
結果は動画をみてみて下さいね


まとめ

ChatGPTを初めとした
大規模言語モデルの開発が進んできています

ファインチューニングを行えば
自社のサービスに特化した会話も
実現できる様になりそうなので

これらのモデルの進化に期待したい所です

今回はここまでです
それでは