スポンサーリンク
楽天が提供するPCで動くLLM、rakutenAI-7Bを試してみた。すんなりと動かなかったので、今回は失敗したところまで。
テキスト生成AIについてのまとめはこちら。
楽天は楽天市場出店者に対するサービス提供のためなのか、独自の日英語対応のLLMを開発している。その成果が今回発表された、rakutenAI-7Bだ。
Apache 2.0ライセンスなので商用利用も可能。
おそらく楽天は自社で運用するクラウドでサービス提供して、出店者に対してより売れるための助言をするサービス提供をするのだろう。
いつものようにpythonの仮想環境を作ってダウンロードして進める。
今回のrakutenAIに専用のpython環境をWindows内に作る。
コマンドプロンプトを表示して、以下のコマンドを入力する。pythonのインストールはMicrosoft Store から。
ここでは、c:\pythonの下に仮想環境を作る。
cd \python
python3 -m venv rakuten
cd rakuten\Scripts
activate
AIに必要なライブラリをインストールする。
pip3 install transformers
pip3 install torch torchvision torchaudio
pip3 install accelerate
※後述するが、この手順でインストールしたpytorchはGPUに対応していないので、CPUで計算する。
以下のコマンドでrakutenAIをダウンロードする。かなり巨大で1時間弱かかった。
git clone https://huggingface.co/Rakuten/RakutenAI-7B-chat
実際にこんな大きさだ。
WEBにあるテストプログラムを実行する。test.pyとした。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_path = "Rakuten/RakutenAI-7B-chat"
tokenizer = AutoTokenizer.from_pretrained(model_path)
#model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype="auto", device_map="auto")
device = "cuda" if torch.cuda.is_available() else "cpu"
print(device)
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
model.eval()
requests = [
"こんにちは",
"インテルのCEOは誰ですか",
"AMDのCEOは誰ですか",
"NVidiaのCEOは誰ですか",
"GoogleのCEOは誰ですか",
"MicrosoftのCEOは誰ですか",
"東京",
"東京のお勧めの観光地を教えて",
"東京から大阪へ電車で行く方法を教えて",
]
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()
以下のコマンドで実行する。
python test.py
初回ダウンロードはやたら長い。回線の速度にもよるだろうが、我が家では40分くらいかかった。
その後、ん、10分待っても何も変わらない。またあれか。
CPU用のPytorchがインストールされている。このため入れ替える。
pip uninstall torch
pip cache purge
pip install torch -f https://download.pytorch.org/whl/torch_stable.html
これでGPUに対応した。
再度実行する。
python test.py
数分後にエラー発生。
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 64.00 MiB. GPU 0 has a total capacity of 12.00 GiB of which 0 bytes is free. Of the allocated memory 26.14 GiB is allocated by PyTorch, and 1.05 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)
メモリ不足だ。使っているGPUはRTX3060の12GBモデルだが、足りないらしい。16GBモデルが必要なのかな。
すぐには手に入らないので、ここはとりあえずPytorchをCPU版に戻して、CPUでやってみるか。
再度、Pytorchを入れ替える。
pip uninstall torch
pip cache purge
pip install torch
再度CPU版で実行する。
python test.py
数時間かかって、最初の質問にたどり着いた。長い。
CPUとGPUの差はこんなに違うのね。
さて、CPU版でこのまま数日かけて試すのもいいが、そんな情報は誰も欲しがらないだろう。
rakutenAIは容量不足であきらめるか。
と思ったら、面白い手段で実行できるとわかった。
次回は、GPUで動かせるようにする改造をする。
PR