IrvineのもっとPC自作日記
HP Directplus -HP公式オンラインストア-
ウイルスバスター公式トレンドマイクロ・オンラインショップ
毎日の生活に役立つ!面白い!『こんな便利な商品があったのか!!』特集
本ページはプロモーションが含まれています。
  
 

【LLM】楽天製AI rakutenAI-7Bを試してみた(1)

 

スポンサーリンク

 
【LLM】楽天製AI rakutenAI-7Bを試してみた(1)
 

楽天が提供するPCで動くLLM、rakutenAI-7Bを試してみた。すんなりと動かなかったので、今回は失敗したところまで。
テキスト生成AIについてのまとめはこちら。

  
  

rakutenAIとは

楽天は楽天市場出店者に対するサービス提供のためなのか、独自の日英語対応のLLMを開発している。その成果が今回発表された、rakutenAI-7Bだ。
Apache 2.0ライセンスなので商用利用も可能。
おそらく楽天は自社で運用するクラウドでサービス提供して、出店者に対してより売れるための助言をするサービス提供をするのだろう。

rakutenAI テキスト生成AI WEB

rakutenAI テキスト生成AI WEB

いつものようにpythonの仮想環境を作ってダウンロードして進める。

インストール

1 python仮想環境を作る

今回のrakutenAIに専用のpython環境をWindows内に作る。
コマンドプロンプトを表示して、以下のコマンドを入力する。pythonのインストールはMicrosoft Store から。
ここでは、c:\pythonの下に仮想環境を作る。

cd \python
python3 -m venv rakuten
cd rakuten\Scripts
activate

2 pytonライブラリのインストール

AIに必要なライブラリをインストールする。
pip3 install transformers
pip3 install torch torchvision torchaudio
pip3 install accelerate

※後述するが、この手順でインストールしたpytorchはGPUに対応していないので、CPUで計算する。

3 本体のダウンロード

以下のコマンドでrakutenAIをダウンロードする。かなり巨大で1時間弱かかった。
git clone https://huggingface.co/Rakuten/RakutenAI-7B-chat

rakutenAI テキスト生成AI ダウンロード

rakutenAI テキスト生成AI ダウンロード

実際にこんな大きさだ。

rakutenAI テキスト生成AI ダウンロード後

rakutenAI テキスト生成AI ダウンロード後

実行

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分待っても何も変わらない。またあれか。

GPU対応のPytorchに更新

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
数時間かかって、最初の質問にたどり着いた。長い。

USER:
こんにちは
ASSISTANT:
こんにちは、何をお探しのですか?

CPUとGPUの差はこんなに違うのね。

さて、CPU版でこのまま数日かけて試すのもいいが、そんな情報は誰も欲しがらないだろう。
rakutenAIは容量不足であきらめるか。

と思ったら、面白い手段で実行できるとわかった。
次回は、GPUで動かせるようにする改造をする。

PR

   
著者プロフィール
irvine
 ソフトウェア設計、ストレージ設計を経てクラウドにかかわる仕事をしている、東京郊外在住のエンジニア。
 仕事でUS,UK,SGなどの国とかかわる。
 自作PC、スマホ、タブレット、AV機器好き。ドラクエウォークはルーチンワーク。Linuxやストレージ、IT業界の動向は興味を持っている。
 新しい機器、サービスに興味あり。年数回のレビュー(自腹購入、ご依頼)と発表されて興味があるものの新製品机上レビューをやっている。
 2022年はJAPANNEXT様のアンバサダーを務めました。
 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です