金曜ごはん#18 「パパっとピザ」
おごちゃん
先日、ちょっと面白いボードが出ていました。
RDK S100P Developer KitハイエンドのSBCのCPUがRK3588ばかりで食傷気味だったところに出て来た、ちょっと毛色の変わったCPUの載ったSBCです。
RDK S100PというSoC
これはHorizon Roboticsが作っている車載用SoCシリーズの「Journey6」ファミリのものです。 NPUにはBPU Nashというものが使われているのですが、これはスマホ用SoCにありがちのDNN専用ではなくて、Transformerに対応したNPUです。 RK3588のNPUがLLMとかから見るととても期待外れだったので、こいつのNPUも同類かとばかり思っていたのですが、逆の意味で期待外れです。
もう一つRK3588のNPUが期待外れだったのは、仕様が満足に公開されていないため、プログラムを書くにも「メーカの提供の範囲」を使うか「怪しげなhack」をするかしかなかったことです。 しかし、このBPU Nashに関しては、完全オープンソースでこそないですが、SDK扱える範囲がかなり広くて、「この上で動くアプリを書く」範囲であれば必要十分な情報やツール、ライブラリ等が公開されているようです。
ここまで書いて、「このSoCはHorizon Roboticsだったんじゃないんかい。なんでD-Roboticsなんや」と思う人もいると思うのですが、どうもD-RoboticsというのはHorizon Roboticsの一部門だったものを独立させたもののようです。
D-Roboticsと言うと、
D-Robotics RDK X3とか、思い出す人もいるかも知れませんが、要するにその系統の石だということになります。
似たようなSoCでAxera AX630CというのがあってM5 Stack LLMに使われていますが、あれとは別系統ですし、ターゲットが異なります。
このSoCは要するにnVidia Jetsonのマーケットに参入しようというもののようです。 Jetsonは汎用GPUでS100は専用に近いNPUという方向性の違いはありますが、組み込んでしまえば汎用性より実現性ですから、いい感じの「後出しジャンケン」とも言えます。
目玉親父
前弊社の時から考えていたものです。
簡単に言えば、「歩行サポートアシスタント」です。 発想の元は「視覚障害者が盲導犬や誘導介助者なしで一人で外出できる」ためのデバイスです。 詳しくは↑のリンク先か末尾にあるプレゼンを見てください。
最近、ハードウェア仕事をする環境が作れていないのと、Orcinusに手を取られているためにこういったものを作ることに手が回っていませんが、忘れているわけではありませんw
目玉親父を考え始めた頃は、とりあえずメインボードはOrange Pi5を使うことを考えていたのですが、とにかくパフォーマンスが全く足りません。 具体的には、Whisperを十分な精度で動かすとリアルタイムよりも遅いくらいの速度でしかありません。
とは言え、「それ以外」の部分については「もう1枚ボードを持って来る」という乱暴な解決を考えていて、それならまぁ色々… と考えられないでもありません。 さっき試してみたのですが、LFM-2.5をLlama.cppで動かしたら10 token/secくらいで動きましたから、作って作れないわけではありません。 でも、「ウェアラブル」ということを考えるとあまりに力技過ぎますね。 電力的にも厳しくなりますし。
そこで件のボードの話が流れて来たので、Google AIモードで会話をしてみました。
その結果、
- パフォーマンス: OrangePi 5とは桁違いで、おそらく十分
- 電力: 実働OrangePi 5とほぼ同等
- リアルタイム性: 元々モビリティ用のSoC
ということで、期待以上のものらしいことがわかりました。
となると、俄然実現したくなって来ます。
コンポーネント
固有のハードウェアや機構はどうせ作らなければならないものですから置いておくことにして、それ以外で不足しているピースについて考えてみました。
必要なAIコンポーネントのうち、今パーツとしてあるものは
- 音声認識/音声合成
- 対話のためのLLM
- 画像や状況を把握するためのVLM
- 文字を読むためのOCR
あたりかなと思います。 これらは既に色々なものが存在していますね。 特にLLMやVLMはスマホ対応のこともあって、スタンドアロンでも動く軽量なものが随分増えました。
ところが案外ありそうでないのが、AIエージェントのエンジンです。 つまり、MastraやLangChainに相当するパーツで、このような用途をターゲットとしたものが存在していません。
全くないのはおかしいなと思って色々調べてみたのですが、いわゆる「組み込みAIエージェント」の類は自動運転のようなものが主で、そうなると決定論的動作が期待されるということもあって、C/C++でゴリゴリと書くものなようです。 つまり、柔軟性についての要求はそれ程ではなく、確実に動くものを「コンパイル」して作るもの… のようです。 他方柔軟で実験的なものとなると、Pythonで頑張れる環境にしてしまうと。
確かにそれはそうだろうなと思うのですが、「目玉親父」のようなものだと
- 柔軟性は必要
- 資源は有限
- スタンドアロン動作
という要求があるわけですから、これは新しい開発テーマができたなという感じですね。
さらにつっこんで調べてみると、MastraやLangChainのような「動作を含めたフレームワーク」と言うよりは、色々なコンポーネントをうまくつなぐようなインターフェイスの標準化やそれらを組み合わせるためのライブラリの方が求められているようです。 つまり、データ構造のマッピングが主であるということです。
まぁ何しても面白い開発テーマが生えて来たなと思います。
まとめ
そんなわけで、「目玉親父」はより実現の可能性が大になって来ました。
ハードウェアやコンポーネントの問題が解決しつつあるので、早くこちらにも復帰したいなと思ってます。
おまけ
一連の話をAIモードと会話をしていていい感じになったので、NotebookLMを使ってプレゼン資料を作ってみました。 多少つっこみどころもありますし、その表現どうよ? な箇所(盲導犬が「誤差」とか酷いですね)もありますが、まぁまぁ言いたいことは書いてあるかなと思います。