はじめに
2024年3月21日に楽天が公表した日本語大規模言語モデル(LLM)について動作を確認。具体的には以下サイトのコードを有料版Google Colab環境(A100)で実施した際の注意点を記載。
Rakuten/RakutenAI-7B-instruct · Hugging Face
★関連リンク
業務で活用できるAI技集のまとめはこちら
内容
①必要なライブラリをインストール [3分]
Google Colabを起動して、GPUを設定後に以下コマンドを実行。GPUの設定方法は[編集]→[ノートブックの設定]で任意のGPUが選択可能。今回は70億(7b)のパラメータということで最上位のA100を使って検証を行う。
!pip install bitsandbytes accelerate
[参考] 動作時のライブラリのバージョン
bitsandbytes 0.43.1
accelerate 0.29.3
②メインコード [2分]
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "Rakuten/RakutenAI-7B-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype="auto", device_map="auto")
model.eval()
requests = [
"「馬が合う」はどう言う意味ですか",
"How to make an authentic Spanish Omelette?",
]
system_message = "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: {user_input} ASSISTANT:"
for req in requests:
input_req = system_message.format(user_input=req)
input_ids = tokenizer.encode(input_req, return_tensors="pt").to(device=model.device)
tokens = model.generate(
input_ids,
max_new_tokens=1024,
do_sample=True,
pad_token_id=tokenizer.eos_token_id,
)
out = tokenizer.decode(tokens[0][len(input_ids[0]):], skip_special_tokens=True)
print("USER:\n" + req)
print("ASSISTANT:\n" + out)
print()
print()
モデルのDLや設定に時間の大半で、推論時間自体は大体20秒/回以内。5回程実行した結果、以下のような答えが出力された。※日本語の質問:「馬が合う」はどう言う意味ですかについての出力
1 | 二匹の馬が、一緒に引く荷車や橇などの重荷が軽い場合などで、隣同士に並んで歩く場合に使う言葉です。 |
2 | 人間同士の「気が合う」という語の馬版である。人間の場合「気が合う」の意味は、様々な意味で用いられており、「性格が合う」や「相性がいい」と使う人が多い。馬の場合もほぼ同様であり、馬同士の相性は性格だけでは決まらず、お互いにより良いパフォーマンスが出来るのでもっとも適切な組み合わせとする。 |
3 | 一対の物事の中で、互いの特質があい合って調和がとれている状態の事を言います。 |
4 | 「馬が合う」は、2人の人に対して使われる場合、その二人では一対一の対話ができる、つまり口を聞いても不快になるようなことがない、お互いが理解しあえる、などという意味で使われます。 また人が動物に使える場合、ある動物と人間が、お互いがお互いに懐きやすい、という場合も同様に使えます。 |
5 | 馬が合わないと言う言葉もありますが、意味は相手同士の意見、考え、人柄等が合う、うまくいくと言った意味です。 |
[参考] エラー発生時の対処
モデルの設定時にtorch_dtype="auto", device_map="auto"で以下のエラーが出た方は、Google Colabツールバーの[ランタイム]→[セッションを再起動する]でもう一度やり直すと成功する場合がある。(※セッション再起動の場合はモデルの再DLがないのですぐに処理完了します)
【Error内容】`low_cpu_mem_usage=True` or a `device_map` requires Accelerate: `pip install accelerate`
Appendix
日本語の大規模言語モデルで著名なものを参考に記載。
モデル名 | 公表者 | パラメータ数 |
RakutenAI | 楽天 | 70億 |
ELYZA-japanese-Llama-2 | ELYZA | 70億 |
OpenCALM | サイバーエージェント | 70億 |
nekomata | rinna | 140億 |
当記事に記載のあるコードを纏めたipynbファイルも併せて展開。
コメント