ローカルでのLLM(Large Language Models)の利用が増えており、多くの人が個人のPCやシステムで動かす中、クラウド上のサーバーで動かす方法は時代遅れになりつつあります。ビン・ファム氏は、Raspberry Pi Zeroを使って小型のUSBドライブに変える実験を行い、余計な機器なしでLLMをローカルで動かせるようにしました。
このプロジェクトは、オフラインで軽量なチャットボットの経験を提供するllama.cppとllamafile、つまり命令セットとパッケージ群のおかげで大いに助けられました。
しかし、8年前のPi Zeroにllama.cppを搭載するのは簡単ではありませんでした。まずファム氏は、デバイスをUSBインターフェイスにマウントし、デバイス自体のシェルを3Dプリントしました。しかしながら、Pi Zero Wの512MB RAMという記憶容量の制限が問題となり、llama.cppをビルドしてもコンパイルに失敗しました。
また、llama.cppをPi ZeroやPi Oneにビルドした人は他にいませんでした。
問題の根本はPi ZeroのCPUにあり、ARMv6で動いていました。この対応として、ファム氏はllama.cppのARMv8命令セットを変換し、現代のハードウェアに基づいた記述や最適化を取り除く必要がありました。Pi Zeroで動作させるためにllama.cppのソースコードを編集した後、ソフトウェア的な側面を作動させる必要がありました。
その後、ソフトウェア体験を可能な限りスムーズにすることに彼の関心が移りました。
結局、実装したLLMは、テキストファイルをLLMにサブミットし、メインのプロンプトとすることで動作します。そのため、ファム氏はテキストプロンプトに基づいて物語を生み出し、生成された結果をファイルに出力する仕組みを構築しました。トークンの速度は64に設定され、様々なモデルでベンチマークが設けられましたが、実用的な用途には遅すぎることが明らかになりました。興味深いプロジェクトであるものの、古い軽量ハードウェアを使ってLLMを動かすことは実際あまり有用ではないかもしれません。
より複雑なモデルを使用すること、例えばRaspberry Pi 5でDeepseekを動かすことを検討する価値があるでしょう。
出典 : Modder crams LLM onto Raspberry Pi Zero-powered USB stick, but it isn’t fast enough to be practical https://www.tomshardware.com/raspberry-pi/raspberry-pi-zero/pi-zero-llm-usb-stick