今回は最近発表された大規模言語モデル
Rinna を試してみました
解説動画はこちら
はじめに
最近発表された「Rinna」は
rinna株式会社が開発した
大規模言語モデル(LLM 英: large language model)
になります
早速使い方を見ていきましょう
必要可動要件
モデルの稼働にメモリが16GBほど必要です
最低でも16GB以上の
メモリを積んだPCが必要です
メモリが足りない場合は
次のモデルのダウンロードで落ちます
インストール方法
transformers pytorch などの
ライブラリが必要です
手元にインストールしていない人は
インストールしておいて下さい
モデルのダウンロード
ライブラリに問題ない人は
次のコードでモデルをダウンロード出来ます
モデルのダウンロード(15-20分くらい)
GPUが使える人は
下記のコードを追加するとGPUを使えます
rinnaを使って会話してみる
プロンプトの後半部分も
作成する関数を用意します
ここまで用意できたら、あとは
プロンプトを用意して会話するだけです
簡単なプロンプトを指定して会話してみましょう
システム:
こんな感じで会話が成立しました
日本語自体はかなり自然で正しい構文である様に見えます
他の会話も色々試しているので
結果は動画をみてみて下さいね
まとめ
ChatGPTを初めとした
大規模言語モデルの開発が進んできています
ファインチューニングを行えば
自社のサービスに特化した会話も
実現できる様になりそうなので
これらのモデルの進化に期待したい所です
今回はここまでです
それでは
Rinna を試してみました
解説動画はこちら
はじめに
最近発表された「Rinna」は
rinna株式会社が開発した
大規模言語モデル(LLM 英: large language model)
になります
日本語に特化した36億パラメータを持つ
汎用言語モデルと対話言語モデルの
汎用言語モデルと対話言語モデルの
2種類のGPT言語モデルが
オープンソースで公開されています
オープンソースで公開されています
早速使い方を見ていきましょう
必要可動要件
モデルの稼働にメモリが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を初めとした
大規模言語モデルの開発が進んできています
ファインチューニングを行えば
自社のサービスに特化した会話も
実現できる様になりそうなので
これらのモデルの進化に期待したい所です
今回はここまでです
それでは
コメントする