ミソ・イン・ザ・スープ OMMF2024スペシャルバージョン

Seeed K.K.の松岡です。

11/23-24に開催されたOgaki Mini Maker Faire 2024のSeeedブースに「ミソ・イン・ザ・スープ OMMF2024スペシャルバージョン」を展示した経緯と仕組みを解説します。

経緯

日ごろから、SeeedにNVIDIA Jetson関連製品がたくさんあるので、これ使ってなにか展示物作りたいなと考えていました。でも、AIよくわからないのでどうしようかなと。もやもや。

そんなときに、有名ブロガーからあげさんの記事が目に留まりました。

karaage.hatenadiary.jp

これだ!!!(キラーン)

イベント展示帰り(からあげさん、いつも手伝っていただきありがとうございます)に、恐る恐る相談。

まつおか:「これ、Jetsonで出来ない?」
からあげさん:「できると思う。」
まつおか:「ちょっと手伝ってほしいかも...(モジモジ)」
からあげさん:「いいよ。」

大勝利 \(^o^)/

そんなわけで、からあげさんにお手伝いいただきながら、Ogaki Mini Maker Faire 2024に向けてポータブル脳みそ「ミソ・イン・ザ・スープ」をJetsonに換装することになりました。

出来上がり

Jetsonで動いている様子がこちらです。 reComputer J4012のローカルLLMで動いています。 ちょっと不気味ですけど...。

やったこと

最終的に、このような仕組みになりました。

www.docswell.com

プロセッサ以外もいろいろとアップグレードしました。以下が具体的な変更点です。

プロセッサ

元々はRaspberry Pi 5を使っていますが、reComputer J4012に変更します。

www.seeedstudio.com

LLM(大規模言語モデル)を動かすときにメモリ不足で苦労したくなかったので、一番多いJetson Orin NX 16GBの機種にしました。(Jetson AGX Orinという選択肢もあるのですが、価格が高くて手が出せませんでした。😅)

メカ

最初は物理脳オブジェにしたかったところを妥協してiPad+透過スクリーンにしているので、本来やりたかった物理脳オブジェを作ることにします。

「やわらかな触感で~」とか「水槽に入れて~」といったヤバそうなアイデアがいくつか出ましたが、ちょっと難しそうだったので、シンプルに3Dプリンターで作ることにしました。

脳データは、BOOTHにイイ感じのものがあったので購入して、3D CADで中身をくりぬいて大きさを調整しました。 また、脳内の基板(後述)を出し入れできるように、いくつかの部位に分割しました。

kenmko.booth.pm

3Dプリンターの出力は60時間くらいでした。(写真撮り忘れ😣)

最終的に、塗装は無しとしました。 お試しでパテ埋めや金塗装などもやりましたが、結果はいまいちだったので。

脳内

3Dプリンターで出力しただけではただの置物なので、脳タッチ検知とLEDピカピカの基板を作って入れることにします。

タッチ検知は長谷部さんLoopian::ORBITと同じCY8CMBR3110を使いました。(長谷部さん、アドバイスありがとうございます)

LEDはよくあるカラーLEDテープを使いました。 色ムラを避けたかったので、これでもかっ!というほど敷き詰めました。 合計47個です。

制御は使い慣れていて安価なXIAO ESP32C6にしました。安いので。

将来、振動ブルブルみたいなのができるように、DCモーター制御の回路も加えました。BD6211Fです。

脳内基板の回路図はGitHubに置きました。 https://github.com/matsujirushi/miso-in-the-soup-xiao/blob/main/schematic/miso-in-the-soup-xiao.1.0.pdf

脳内基板のソフトはこちらです。 reComputer J4012からUSB-CDCで指令を受けて、タッチ検知を返したりLEDを点灯させたりします。 LEDのアニメーション?(ふわふわと光らせるとか)はreComputer J4012側の負担にならないよう、脳内基板のソフトの中に組み込みました。

github.com

reComputer J4012ソフト

からあげさんにreComputer J4012を送って、従来のミソ・イン・ザ・スープを良い感じに動くようにしてもらいました。その後、物理脳と連動するようにしました。

環境構築はからあげさんのZenn記事にまとめられています。

zenn.dev

OllamaというのがさまざまなLLMを動かす便利ツールのようです。なるほど。

そして、次のように呼び出して処理していました。なるほど。

  • ollama.chat()というのでLLMを動かしている。(ここ
  • 使っているモデルは7shi/tanuki-dpo-v1.0:8b-q6_K。(ここ
  • LLM実行結果は実行しながら部分的に取得できる。ストリーミング的な。(ここ
  • プロンプトは固定。(ここ

発話を追加

LLMがサクッと動いたので、「これ喋れないかな?」と予定にない追加タスクをからあげさんに投げてみたところ、VOICEBOXというもので音声合成するものが出来上がって返ってきました。すごい!

zenn.dev

そうそう、ソフトは発話するようになったのですがreComputer J4012にはスピーカーがありません。会社にreSpeaker Liteがあったので、これを使うことにしました。USB接続するだけで、市販のUSBスピーカーのようにreComputer J4012から認識できました。

www.seeedstudio.com

最後に

「AIよくわからん」「ローカルLLM難しそう」だったのが、「おれポータブルな脳みそ作れるんだぜ」に少しレベルアップしました。

LLMの謎技術もすごいですが、Ollamaもすごいです。Ollama無しで環境構築はキツいんだろうなと感じました。(想像)

次は、タッチなどでプロンプト変えて、インタラクティブに反応してくれる脳みそにアップグレードしたいと思います。

参考リンク

変更履歴

日付 変更者 変更内容
2024/12/16 松岡 作成