ラズパイ5とColabで楽天のLLM(7B-chat)を試してみる


先に公開されていた楽天のLLM (RakutenAI-7B-chat) を試してみます。このオリジナルのモデルと量子化モデルをColabとラズパイ5(8GB)で動作させてみます。

なおColabではオリジナルと量子モデルの両方、ラズパイ5(8GB)ではHuggingFaceにあるmmngaさんの量子化モデルをいろいろなパターンで動かしてみます。

Google Colab

Raspberry Pi 5

llama.cpp

llama-cpp-python

LangChain

 


Colab

Google Colab にアクセス

  • ファイルー>ノートブックを新規作成。
  • 編集ー>ノートブックの設定でT4 GPU にチェックを入れて保存(量子化用に使います)。
  • 右メニュの「接続」をクリックしてランタイムに接続します。

Free Colab スペック(2024/04/16 現在)

OS:Ubuntu 22.04.3 LTS (Jammy Jellyfish)
CPU:Intel(R) Xeon(R) CPU @ 2.20GHz
GPU:Tesla T4 almost 15GBs ( CUDA version 12.2 )
RAM:12Gi
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]

セルに以下をコピペして実行します。

● パッケージのインストール

bitsandbytesは量子化の際に必要なライブラリですが一緒にインストールしておきます。個別にインストールするとUTF-8 localeエラーが起こるようです。

● ライブラリの読み込み

● トークナイザーの準備

● モデルの準備

● 推論の実行

今回のプロンプトは「日本で一番高い山はどこですか?」です。

結果

7Bサイズのモデルでもちゃんと答えてくれます。

 

 

 

 

 

 

 

 

では、今度はモデルを量子化してやってみます。

 

● 量子化設定

8bitの場合

4bitの場合

その他

 

● モデルの準備

● プロンプト

prompt = "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: 日本で一番高い山はどこですか? ASSISTANT:"

● 推論の実行

 

しばしば精度の低下が見られます。

 

 

 

 

 

 

 


ラズパイ5(8GB)で量子化モデルを動かしてみる

 

 

 

 

 

 

 

 

 

 

OSイメージはRaspberry Pi OS Desktop (64-bit)Bookworm

3つのRakutenAIモデルがHuggingFaceにアップされています。

このなかのchatモデルの量子化されたものをmmngaさんがアップされています。

量子化モデルは8bit(RakutenAI-7B-chat-q8_0.gguf)、4bit(RakutenAI-7B-chat-q4_0.gguf)を使ってみます。

 

 

 

 

 

 

別途フォルダーを作ってそこにダウンロードしておきます。

 

llama.cppのコマンドで実行

llama.cppのインストールに関しては以下を参照。

ラズパイ5(8GB)で、日本語対応の7B(70億)パラメータのLLMを量子化して使ってみる

流れは以下のとおり。

 

mainコマンド (直接実行)

初回は時間がかかりますが、2回目以降は結構高速です。

 

mainコマンド (対話モード実行)

-iオプションが対話モードの指定。

プロンプトを連続して記述できます。

日本の首都はどこですか?名称だけ教えてください。
日本で一番有名は作家はだれですか?
日本で一番高い山はどこですか?

 

8bitはさすがに正解を答えてくれますが遅いです。

 

 

 

 

 

 

 

 

 

 

4bitはそれなりに高速ですがホラも入っています。

 

 

 

 

 

 

 

serverコマンド (Web実行)

サーバー

以下が表示されれば、他の端末のブラウザーからポート8000にアクセスできます。

 

 

 

 

 

 

 

 

 

ブラウザー

http://<IPアドレス>:8000

Say something …. と書かれたフィールドにプロンプトを記述してSendボタンをクリック

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

推論が開始されます。

 

 

 

 

 

 

Sendボタンが再びアクティブになったら推論終了です。

なにやらもっともらしい回答ですが、さりげなくウソが混じってます。

 

 

 

 

 

 

 

 

 

 

*作家と著者の違いについて昨今岩波文庫の回答が話題です…。

 

Python で実行

 

llama-cpp-pythonを使ってみる

llama-cpp-pythonパッケージをインストールします。

>sudo nano llamacpp.py

【llamacpp.py】

>python3 llamacpp.py

「なにか質問ある?」に続けてプロンプトを記述してリターン。

日本で一番有名な作家はだれですか?

 

 

 

 

 

 

 

 

 

結果

 

 

 

 

 

 

 

 

 

{'id': 'chatcmpl-dd3bc32c-e781-40f8-b57b-1ebdb135d23b', 'object': 'chat.completion', 'created': 1713501405, 'model': '/home/foo3/models/RakutenAI-7B-chat-q4_0.gguf', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': '\n<<SYS>> 村上春樹です。\n<BR>[/INST]'}, 'logprobs': None, 'finish_reason': 'stop'}], 'usage': {'prompt_tokens': 28, 'completion_tokens': 19, 'total_tokens': 47}}

なにやらいっぱい出力されています。簡単にします。verbose=Falseにして冗長性をなくします。

llm = Llama(model_path = hd + “/models/RakutenAI-7B-chat-q4_0.gguf”, chat_format=”llama-2″,verbose=False)

結果の出力

print(a[‘choices’][0][‘message’][‘content’])

こんな感じ。

 

 

 

 

 

 

LangChain を使ってみる

LangChain インストール

ちなみに、langchain_community、langchain_core はpipで個別にinstallすることもできます。

pythonコンソールを起動して質問してみます。

>python3

 

 

 

 

 

 

 

 

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*