Google Colab(PRO)でrinna/Japanese GPT-NeoX (Hugging face)を使ってみました。
推論 on Google Colab
Python3にて以下を順次実行します。
#機械学習ライブラリ
!pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
#Hugging Faceのモデルをしようするため
!pip install transformers sentencepiece
import time
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("cpu")
--colabでは ここで分割--
# 質問
question = "初夏の季語を5つ教えて"
prompt = f"ユーザー: {question}<NL>システム: "
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,
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 = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):])
output = output.replace("<NL>", "\n")
print(output)
output:
初夏とは、6月から7月初めまでの数ヶ月間です。この時期に俳句や歌、詩などの詩的な作品でよく使われる季語には、「梅雨」、「立葵」、「紫陽花」、「夏至」、「半夏生」があります。
質問を投げてから回答までに20~30秒程度かかります。
パラメータ比較
rinnaのパラメータはGPT2の2倍強
モデル | パラメータ数 [個] |
rinna/Japanese GPT-NeoX | 36憶 |
GPT2 | 15億 |
GPT3 | 1750億 |
GPT4 | 非公開 |
vsGPT3
GPT3とrinnaではどちらが日本語に優れているのでしょうか。
Language Models are Few-Shot Learnersでは、Common Crawl(大規模Webクロールテキスト)の重みが60%です。また、論文のsubmit時点である2020年のインターネット上での日本語の割合は2.2%(参考)です。
これらを単純に乗算すると「410B(billion) * 0.6 * 0.022 = 5.412B」となり、rinnaの3.6Bよりも大きいです。したがって、GPT3の方が優れていると言えるのではないでしょうか。GPT3時点でこの差が付いているので、GPT4ではもっと大きな差が付いているんじゃないかなあと思います。
おわり
比較しておいてアレですが、rinnaはトークンが少ないので少々良いPCであればローカル環境で実行できる点がすごいです。(小並感)
Open AIのAPIとは異なり、プロンプトを外部へ渡しているわけではないので、このモデルを独自にファインチューニングすれば、機密情報もある程度学習させれて便利になるのかなあ…