最近はやりの「生成AI」をRaspberry Pi 5で動かしたくなり、入れてみました。
(今回は画像生成AIではなく、いわゆるChatGPTのような会話型のやつです)
しかも「日本語じゃなきゃヤダ」ということで、以下のサイトを参考に入れてみました。
Raspberry Pi 5の基本セットアップとLLM動かしてみた - hacomono TECH BLOG
が、ここを見ただけでは分かりづらかったので、手順を書きます。
最初に、venvってやつで大規模言語モデル用の環境を作っておきます。
どうやらpython 3.11からは、venvで作った環境下でないとpipが使えなくなってます。
前回の記事(Raspberry Pi 5 8GBが来たので画像生成AI「Stable Diffusion」と物体検出「YOLOX」を動かしてみた: EeePCの軌跡)では無理やりインストールしましたが、これが一番楽です。
python -m venv llm
続いて、以下のコマンドを実行。
/home/(ラズパイ上のユーザー名)/llm/pip install llama-cpp-python
これで、必要な環境がインストールできちゃいます。
pipのところを絶対パスで入力してるのは、venvで作った環境をsourceコマンドを使って切り替えるのが面倒なので、直接呼び出してるためです。
続いて、以下のサイトへ行き、モデルをダウンロードします。
mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf · Hugging Face
このサイトの「Files and versions」タブをクリック。
こんな一覧が出てきます。
これの一番最初の方にある「Upload ELYZA-Japanese-Llama-2-7b-instruct-q2_K.gguf」てやつの行にある赤丸のところをクリックします。
(PCでも可能ですが、Raspberry Pi 5上でやると直接拾えます)
これは以前(ChatGPT 3.5並みの日本語能力を持つとされるLLM「ELYZA-japanese-Llama-2-13b-instruct」を使ってみた: EeePCの軌跡)でも使ったELYZA Japanese Llama2の70億パラメータ版の量子化モデルで、メモリー使用量が少なく、Raspberry Pi 5でも辛うじて動かせます。
つづいて、「elyza.py」というコードを作成します。
私の場合はvi使いなので、
vi elyza.py
ですが、viをnanoに変えてもらってもいいです。
コードの中身は以下。
import sys
from llama_cpp import Llama
llm = Llama(model_path="ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf", verbose=False)
output = llm("<user>\n" + sys.argv[1] + "\n<assistant>\n", max_tokens=128)
print(output['choices'][0]["text"] + "...")
これを、先のダウンロードしたモデル(ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf)と同じフォルダに置きます。
この状態で、
/home/(ラズパイ上のユーザー名)/llm/python elyza.py "名古屋の名物は何ですか?"
と実行します。
(なお” ”内は適当な質問を日本語で入れます)
ところで、Raspberry Piでの日本語入力設定は、以下が参考になります。
Raspberry Piに日本語で入力できる設定方法(fcitx-mozc) | ラズパイダ
で、待つこと30〜40秒ほど、
上のような答えが返ってきました。
うん、まあまあの答え……でもないな。名古屋めしに味噌汁?とんかつ?ひよこっこ?最後のはなんじゃ?
でも、文章はかなり自然です。さすがはElyzaの日本語LLM。
ということで、Raspberry Pi 5 8GB上で日本語LLMが動いてくれたのですが。
使い道がないですよね。遅いのはともかく、いちいちコマンドで打つのは面倒。
チャット風インターフェースにする方法もリンク先にありましたが、あれはうちではうまく動きませんでした。
まあ、Raspberry Piと会話したいという人以外は、あまりやるメリットなさそうです。
ところで、最近無線LANルーターを変えた影響か、Raspberry PiにSSHで接続できなくなりました。原因は不明ですが、無線LANルーター変える前はつながってたので、おそらくはそれが影響している可能性大です。
おかげで、Raspberry Pi↔︎PCのファイルのやり取りがしづらいので、ちょっと不便です。そのうち、直し方を探さないと。
最近のコメント