14MBの小さなAIモデル「Needle 2」が、Raspberry Pi 5のCPUだけで動く。自然な文で書いた指示を、あらかじめ用意した関数の呼び出しに変換するもので、AI用の拡張基板はいらない。開発元のCactus Computeが重みとコードをApache 2.0ライセンスで公開し、Raspberry Piが自社ブログで紹介した。
Needleはチャットボットではない。Cactus Computeは、機器の上で確実に動作を呼び出す1つの用途に絞って学習させたとしている。「LEDを点けて」と入力すると、78ミリ秒後にRaspberry Pi 5のLEDが点く。
使い方は、Pythonで関数を書き、その関数にNeedleが選べる目印を付けるだけだ。目印を付けると、Needleは関数の名前、説明文、引数の型から、呼び出しの仕様を自動で組み立てる。あとは自然な文を渡すと、どの関数を呼ぶか、引数に何を入れるかをNeedleが決める。
紹介記事では、テキストファイルにメモを書き足す関数、Raspberry PiのCPU温度を返す関数、LEDを操作する関数などを用意している。「クーラーが効いているとメモして」と渡すと、Needleがメモ用の関数を選び、「クーラーが効いている」という文字列を引数に入れて呼び出す。「このRaspberry Piは何度」と聞けば、温度を返す関数を呼び、摂氏49.9度という値を返した。
対象外の質問には答えない。「フランスの首都は」と聞くと、渡した関数のどれも答えられないため、空の呼び出しを92ミリ秒で返す。動作を選ぶモデルとしては、無関係な求めを断るのが正しい応答だとしている。
処理は速く、軽い。Raspberry Pi 5(8GB、CPUのみ)での実測では、LEDを点ける指示が78ミリ秒、温度を尋ねる指示が149ミリ秒で終わった。Needle本体のメモリー使用量は約28MBで、Pythonのデモ全体でも最大46.4MBに収まる。いずれも最初のダウンロードのあとは、クラウドのAPIもネットワークもなしに動く。
GPIO Zeroで書いた関数があれば、そこに目印を付けて渡すだけで使える。特定の関数群に合わせて、手元のノートパソコンで追加学習させることもできる。学習済みのモデルはHugging Face、コードはGitHubにある。