53
Raspberry Pi 4で独自のAIチャットボットサーバーを作成する方法

ChatGPTをRaspberry Piで実行できることを以前紹介しましたが、Raspberry Piはクライアント側の処理のみを提供し、すべてのプロンプトをクラウド上の強力なサーバーに送信するという欠点がありました。しかし、8GBのRaspberry Piでローカルに実行し、FacebookなどのサービスのAIに使用されているのと同じLLaMA言語モデルを使用する、同様のAIチャットボットを作成することは可能です。 

このプロジェクトの核となるのは、Georgi Gerganov氏のllama.cppです。一晩で書かれたこのC/C++モデルは、一般的な用途に十分な速度で、インストールも簡単です。MacとLinuxマシンで動作しますが、このハウツーでは、Gerganov氏のインストールプロセスを微調整し、Raspberry Pi 4でモデルを実行できるようにします。より高速なチャットボットが必要で、RTX 3000シリーズ以上のGPUを搭載したコンピューターをお持ちの場合は、ChatGPTのようなボットをPCで実行する方法に関する記事をご覧ください。

期待を管理する

このプロジェクトを始める前に、皆さんの期待に応える必要があります。Raspberry Pi 4 上の LLaMA は遅いです。チャットプロンプトの読み込みに数分かかることがあり、質問への回答にも同程度の時間がかかります。スピードを重視するなら、Linux デスクトップ / ラップトップをご利用ください。これはミッションクリティカルなユースケースというより、むしろ楽しいプロジェクトです。

このプロジェクトに必要なもの

  • ラズベリーパイ4 8GB
  • Linux が動作する 16GB の RAM を搭載した PC
  • NTFSでフォーマットされた16GB以上のUSBドライブ

Linux PC を使用した LLaMA 7B モデルのセットアップ

プロセスの最初のステップは、Linux PCにllama.cppをセットアップし、LLaMA 7Bモデルをダウンロードして変換し、USBドライブにコピーすることです。Raspberry Piの8GBのRAMでは足りないため、モデルの変換にはLinux PCの追加のパワーが必要です。

1. Linux PC でターミナルを開き、git がインストールされていることを確認します。

sudo apt update && sudo apt install git

2. git を使用してリポジトリのクローンを作成します。

git clone https://github.com/ggerganov/llama.cpp

3.一連のPythonモジュールをインストールします。これらのモジュールはモデルと連携してチャットボットを作成します。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

python3 -m pip install torch numpy sentencepiece

4. g++とbuild essentialがインストールされていることを確認してください。これらはCアプリケーションのビルドに必要です。

sudo apt install g++ build-essential

5.ターミナルでディレクトリを llama.cpp に変更します。

cd llama.cpp

6.プロジェクトファイルをビルドします。Enterキーを押して実行します。

make

7.このリンクからLlama 7Bのtorrentをダウンロードします。私はqBittorrentを使ってモデルをダウンロードしました。

magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA&dn=LLaMA

8.ダウンロードを調整し、7Bファイルとトークナイザーファイルのみをダウンロードします。他のフォルダには、数百ギガバイトにも及ぶ大きなモデルが含まれています。

パイの上のラマ

(画像提供:Tom's Hardware)

9. 7B とトークナイザー ファイルを /llama.cpp/models/ にコピーします。

10.ターミナルを開き、ホームディレクトリにあるllama.cppフォルダに移動します。

cd llama.cpp

11. 7Bモデルをggml FP16形式に変換します。PCの環境によっては、この処理に時間がかかる場合があります。この処理だけで16GBのRAMが必要になります。この処理では、13GBのmodels/7B/consolidated.00.pthファイル全体をPyTorchモデルとしてRAMに読み込みます。8GBのRaspberry Pi 4でこの処理を実行すると、不正命令エラーが発生します。

python3 convert-pth-to-ggml.py models/7B/ 1

12.モデルを4ビットに量子化します。これによりモデルのサイズが縮小されます。

python3 quantize.py 7B

13. /models/ の内容を USB ドライブにコピーします。

Raspberry Pi 4でLLaMAを実行する

パイの上のラマ

(画像提供:Tom's Hardware)

この最後のセクションでは、Raspberry Pi 4でllama.cppのセットアップを再度実行し、USBドライブを使ってモデルをコピーします。次に、インタラクティブチャットセッションを起動し、「Bob」に一連の質問をします。ただし、Pythonコードの記述は要求しないでください。このプロセスのステップ9は、Raspberry Pi 4でもLinux PCでも実行できます。

1. Raspberry Pi 4 をデスクトップで起動します。

2.ターミナルを開き、git がインストールされていることを確認します。

sudo apt update && sudo apt install git

3. git を使用してリポジトリのクローンを作成します。

git clone https://github.com/ggerganov/llama.cpp

4.一連のPythonモジュールをインストールします。これらのモジュールはモデルと連携してチャットボットを作成します。

python3 -m pip install torch numpy sentencepiece

5. g++とbuild essentialがインストールされていることを確認してください。これらはCアプリケーションのビルドに必要です。

sudo apt install g++ build-essential

6.ターミナルで、llama.cpp にディレクトリを変更します。

cd llama.cpp

7.プロジェクトファイルをビルドします。Enterキーを押して実行します。

make

8. USB ドライブを挿入し、ファイルを /models/ にコピーします。これにより、モデル ディレクトリ内のすべてのファイルが上書きされます。

9. 「Bob」とのインタラクティブなチャットセッションを開始します。ここで少し忍耐が必要です。7Bモデルは他のモデルよりも軽量ですが、Raspberry Piにとってはまだかなり重いモデルです。モデルの読み込みには数分かかる場合があります。

./chat.sh

10.ボブに質問をしてEnterキーを押します。私は「スタートレック:新世代」のジャン=リュック・ピカードについて尋ねました。終了するにはCtrl + Cを押します。

パイの上のラマ

(画像提供:Tom's Hardware)