1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi Zero WでGPT-2を動かした

1
Posted at

メモリ的にできそうだったのでRaspberry Pi Zero WでGPT-2を動かしました。
多分もっといいやり方はありますが、少なくとも僕が踏んだ手順はこんな感じです:

0. 準備

0.1.OSの準備

ラズパイのOSを用意します。Raspberry Pi Imagerを使って以下の順に進めます:

  1. デバイスを選ぶ:Raspberry Pi Zero
  2. OSを選ぶ:Raspberry Pi OS (other) -> Raspberry Pi OS Lite (32-bit)
  3. ストレージを選ぶ:パソコンに挿さっているmicro SDカードを探して選択
  4. ホスト名を指定:好きな名前(例:lmpi)を入れる
  5. 位置情報:必須ではないが上から順にTokyo (Japan), Asia/Tokyo, jp
  6. ユーザー名とパスワード:ユーザー名とパスワードを入れる
  7. Wi-Fi:Wi-Fiの情報を入れる(SSHで入るのに必須)
  8. 「SSHを有効化する」にチェック、「パスワード認証を使う」を選択
  9. Raspberry Pi Connectはオフ
  10. WRITEを押して待つ
    完成したらラズパイゼロに挿して電源を接続して起動します。

0.2.その他準備

起動したらパソコンから入ります:

#ここのホスト名・ユーザー名・パスワードはOS設定時に入れたもの
ssh username@ip

入れたら更新もささっと済ませます:

sudo apt update
sudo apt full-upgrade -y

メモリを食う作業をするので一応スワップを有効化します:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

1. 必要なものをインストール

今回必要なものを入れます:

sudo apt install -y git cmake ccache build-essential libpthread-stubs0-dev python3-pip

2. llama.zeroのインストール

llama.cppはPi Zeroだと動かないので対応しているllama.zeroを入れます。

2.1.ダウンロードしてビルド

GitHubからllama.zeroを引っ張ってきてビルドします:

git clone https://github.com/pham-tuan-binh/llama.zero.git
cd llama.zero

cmake -B build
cmake --build build --config Release -j1

こちらは試してませんが、サーバーがいらないときはこれでいいらしいです:

cmake -B build -DLLAMA_BUILD_SERVER=OFF
cmake --build build --config Release -j1

どっちみちとんでもなく時間かかります。(数時間程度目安)

2.2.パスの追加

どこからでも呼び出せるようにします:

echo 'export PATH="$PATH:$HOME/llama.zero/build/bin"' >> ~/.bashrc
source ~/.bashrc

3. HuggingFace CLIのインストール

モデルをダウンロードするためにHuggingFace CLIをインストールします:

python3 -m pip install --user -U huggingface_hub --break-system-packages

今回のモデルダウンロードにログインは不要です。(モデルによっては必要になることもあります。)

4. モデルのダウンロード

本当はLFM-2.5-350Mを試したかったんですが、llama.zerolfm2アーキテクチャに対応していませんでした。なので代わりにGPT-2(の量子化済みGGUF)です:

hf download QuantFactory/gpt2-GGUF gpt2.Q4_K_M.gguf --local-dir ~/models/QuantFactory

5. モデルの実行

ちゃんと使おうとすると大変なことになるのでかなり控えめな設定で呼び出します:

llama-cli -m ~/models/QuantFactory/gpt2.Q4_K_M.gguf -t 1 -c 128 -n 64 -p "Hello"

制限・課題

Raspberry Pi Zero Wなので仕方ないですがかなり制限があります:

  • 生成速度が非常に遅い:0.3~0.4トークン/秒ほどのスピードしか出ず、決して実用的ではない。
  • メモリ制約が厳しい:512MBのRAMしかないので大きなモデルを実行したり、長い文章を処理したりできない。
  • GPT-2が対話用途に向かない:GPT-2は文章補完が目的で作られているモデルで、会話ができない。(モデルを変えることで解決する可能性あり)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?