はじめに
OpenAI の ChatGPT のような LLM(大規模言語モデル)、このLLMをローカルで動かすにはCUDAが動くGPUだったり、Apple SiliconなMac(しかもメモリ大量)だったりが必要でした。そんな中、近年では組み込み向けのマイコン用のエッジLLMモジュールなどが登場してきました。
この記事では、M5Stack社が発売しているクレジットカード💳サイズのキーボード付きコンピュータCardputerとローカルLLMが動くModuleLLMを組み合わせることで「手のひらサイズでローカルLLMが動く」世界を実現させます。
↓動作のようす
https://x.com/GOROman/status/1883032143884103767
やり方
用意するもの
ModuleLLM
まずは、ModuleLLM(LLM モジュール)を用意しましょう!。国内正規代理店であるスイッチサイエンスでは売り切れで、M5Stack公式Storeでも売り切れで、Aliexpressの最後の1個は私が買いました。多分春節明けで量産が再開されて3月くらいには在庫が戻る可能性はあります。勢いで買ったけどよく分からず使えてない人とかに凸って譲ってもらうなど手段を選ばなければゲットできるかもしれません。
Cardputer
Cardputer も用意しましょう。こっちは在庫が最近復活したようです。
まずは、おもむろに分解します。
ModuleLLMを枠から外します。4つのネジをレンチで回します。
Cardputerも分解ます。Cardputerはデカいバッテリーが両面テープで止めてあるので丁寧に剥がします(力任せにしてバッテリーを曲げて燃えないように注意!)
Cardputerの上の黒いやつも外しましょう。
あとは、適当にガシガシと削ってModuleLLMをケース内に収めます。
後ろもカッターで切ってピン(M.BUS)が出るようにしました。ショートすると良くないのでカプトンとかアセテートテープなどで絶縁しましょう。
収まった(?)様子
接続方法
ModuleLLMとのやりとりは UART or TCP(10001)で可能です。今回はUARTを使用します。
ModuleLLMとCardputerの接続は
- Cardputer 側 GROVE端子(G1,G2,+5V,GND)
- ModuleLLM 側 UARTのピン と +5V と GND
です。
今回は基板へ直接ハンダ付けしましたが、もっと良い方法はありそうです。
Cardputer側(GROVE) | ModuleLLM側(M.BUS) |
---|---|
G(黒) | GND |
5V(赤) | 5V |
G1(黄) | UART(Tx) |
G2(白) | UART(Rx) |
(2025.2.9 TxとRxを入れ替えました。LLM630 Kit をそのまま繋いで動作可能です)
↑注意. この写真はG1がTxで、G2がRxになっています。
コーディング
コードをサクッと書きましょう。
公式のサンプルを適当に改造すればすぐできます。
と
を合体させました。キー入力で音を出すと良いです。
UARTのTX, RXのGPIOは以下のように指定します。
Serial2.begin(115200, SERIAL_8N1, 2, 1);
完成!!!
お楽しみください!
(2025/2/3 追記) ↓↓↓実際に作られた人が現れました!↓↓↓
(2025/2/9 追記) ソースコード公開しました