きっかけ
ollama に decision model という種類のモデルが入った。テキストを生成する代わりに、渡した状況と選択肢に対して「どれを選ぶか」を確率つきで返してくる。元ネタは TypeSafe AI の Jev というクローズドな API で、その後追いとして重みが公開されているのが tev1 だ。
気になったのはサイズで、tev1 は 4B と 0.8B の2つしかない。大きいほうの 4B でもこの小ささなのに、公開ベンチでは Jev の 76.0% に対して 73.3% と、ほぼ並ぶ数字をうたっていた。4B なら自宅の GPU に余裕で載る。本当にそんなに使えるのか、試してみたくなった。
作ったもの
横スクロールのゲームを書いて、操作を全部 tev1 に任せた。
やっていることは単純で、ゲームの状況(足元に地面があるか、次の穴や敵が「今跳べば越えられる距離か」)を言葉にして渡し、run / jump / wait のどれにするかを毎回選ばせているだけ。右のパネルのバーが、tev1 が返してきた確率そのものだ。
判定は1回30ms台で返ってくるので、毎秒20回ほど判断し直している。ゲームはモデルの返事を待たずに進み、返ってきた時点で操作が切り替わる。途中で何度か死にながらも、穴を跳び越え、敵を踏んで、ゴールまで走り切った。
感想
正直、これが自宅のマシンで、4B のモデルで、リアルタイムに回るのはすごいと思った。
同じ tev1 でも、普通の生成 API で選択肢の記号を文章として答えさせると、考え込んだまま答えを返さないことがあったし、正答も減った。decision API は選択肢の確率を直接返すので、そういうことが起きない。この3択くらいの形に落とせれば、4B でもここまで速く回る。
ゲームはおもちゃだけど、同じ形の判断を大量にさばきたい場面は手元にいくらでもある。しばらく遊んでみようと思う。