日本語版の大規模言語モデルLLMを使ってみた。rinna社バージョン

X 旧Twitterはこちら。
https://twitter.com/ison1232

************

日本語版の大規模言語モデルが登場

ついに日本語で学習された大規模言語モデルが登場しましたね。
それも同じ日に、2つ同時です。

一つはサイバーエージェント社の日本語LLM。
もうひとつは rinna社の日本語LLM。

サイバーのやつはパラメータ数が68億。
rinna社のやつは36億。

まあ、億を超えてるわけで、すごいことなんですが、何と言ってもChatGPTが1750億。

GPT-4なんかは公開せずっていう(多分何兆レベル。scaling low理論の限界にチャレンジですかね。詳しくはscaling lowで検索)。

すごい数のパラメータがひしめきあってるので、30億でも「ふーん、そうなのね」で済んでしまう。

でもこれだけのパラメータ数で、しかも日本語を専用に学習させたモデルですから、期待は持てます。

ちなみに大規模言語モデルっていうのは、略称するとLLM(Large Language Model)と呼ばれています。

ChatGPTに大規模言語モデルLLMについて聞いてみた

意味をChatGPTに聞いてみましょう。

*****************ここから。原文ママ

大規模言語モデルは、近年の人工知能の進歩の中で重要な役割を果たしています。これらのモデルは、巨大なデータセットを学習し、自然言語の理解と生成を行うことができます。大規模言語モデルは、機械翻訳、文章生成、会話エージェント、情報検索、自動要約など、さまざまなタスクに利用されています。

大規模言語モデルの一例としては、GPT-3が挙げられます。GPT-3は、OpenAIが開発した最先端のモデルであり、数十億のパラメータを持っています。このモデルは、人間に近い文章を生成することができ、非常に優れた性能を持っています。

しかし、大規模言語モデルにはいくつかの制約も存在します。それらは、計算リソースの要求、データのプライバシーとセキュリティの問題、バイアスや偏見の反映などです。これらの制約に対処するためには、モデルの開発者や利用者が倫理的な観点を考慮し、適切なガイドラインや規制を策定する必要があります。

大規模言語モデルの進化は、今後ますます加速していくことが予想されます。より高度な自然言語処理能力を持つモデルが登場し、私たちの日常生活やビジネスの様々な側面に影響を与えるでしょう。しかし、その発展には慎重なアプローチが求められ、技術と倫理のバランスを取りながら進めていく必要があります。

************ここまで。原文ママ

だそうです。
GPT-3のパラメータ数は違ってますね。
1750億ですよね。

まあ、さておき。
早速、インストールして使ってみましょう。

rinna社の対話モデルをインストール

まずはrinna社から。

rinna社のやつはモデルが2つあって、汎用モデルと対話モデルがあります。
今回は対話に特化したやつの方が面白いかなと思ったので、対話モデルをいじってみましょう。

公開先はHugging face
機械学習のモデルがわんさかアップされているサイトです。

URLはこちら。
汎用GPT言語モデル
https://huggingface.co/rinna/japanese-gpt-neox-3.6b

対話GPT言語モデル
https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-sft

環境はgoogle colab proのスタンダード。

pro版で、GPUの設定を
A100
ハイメモリ
で、いってみます。

まずは下記のコマンドでインストールしていきます。

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

続いてこちら。

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”
).to(“cuda”)

学習済みのモデルを落として、modelにセットする感じですね。

rinna社の対話モデルで推論してみた

で、推論してみます。

promptに質問文を入れるのですが、結構決まりがあるようで、詳細はHugging faceのサイトを読んでください。

簡単に説明すると、

prompt = “ユーザー: 首都の意味を答えてください。?システム: ”

このように、質問文の後に
システム: ”
を入れてとのこと。
最後は空白を入れるそうです。

では、これで推論のコードを記します。

# プロンプトの準備
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=300,
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(“”, “\n”)
print(output)

 

質問:
首都の意味を答えてください。

回答:
首都とは、国の首都であり、国の政府所在地であり、政府の所在地です。首都とは、国の中央政府や行政の中心であり、国の政治や文化の中心でもあります。

だそうです。
ん〜ん、てな感じもしないことはないですが、結構ちゃんとした答えが返ってきます。
やはり日本語で学習したやつは違いますね。

max_new_tokens=300 の値をいじると、返答の文字数を変動できます。
いろいろいじって遊んでみてください。

別に、サイバーのやつも使ってみましたが、両者ともどっこいどっこいといった所でしょうか。

ChatGPTにはまだまだ勝てない感じですが、こういった日本語LLMもどんどん開発していって、世界をリードしていってほしいものです。

大規模言語モデルLLMの日本語版の今後は?

そういえば先日、日本のスーパーコンピューターの「富岳」でしたっけ。これを使って日本語LLMを作るみたいな発表がありましたよね。

本気出してやれば、計算スピードはピカイチなんだから、結構早く目標を達成できるのではないでしょうか。
ただ、データセットをどうするとか、細かいパラメータの設定なんかは試行錯誤が必要なので、まだまだGAFAMには勝てないでしょう。

でもチャレンジすることに意味があるんですよね。
頑張ってください チーム「富岳」。
期待しています。

*******************

Follow me!

PAGE TOP