
LLMのトークン確率を活用したビジョンモデル向けラッパーの実装
LLMのトークン確率を読み取ることで、ビジョンおよびテキストモデルから構造化された回答を抽出するJev風ラッパーが開発された。このラッパーはBase64エンコード画像をビジョンモデルに送信し、代替トークンのログ確率を受け取ることで、効率的な分類タスクを実現する。
実装の概要
著者が開発したラッパーは、OpenAI、Google、Hugging Faceの各社モデルに対応し、ビジョンモデルと連携して構造化化された質問応答を行う仕組みである。Jev、OpenJev、SemIfを参考プロジェクトとしており、Jev形式に画像用の「attachments」フィールドを追加している。スクリプトはOpenCVを使用してウェブカメラにアクセスし、キャプチャしたフレームをBase64 JPEG形式で送信する。

スクリプトは人物の可視性、植物の可視性、屋内外の設定、シーンの明るさに関する質問に対応している。各質問ごとに2~20個の選択肢を必要とする設計であり、欠落したオプションの確率閾値は1e-6、ログ確率フロア値は9999に設定されている。
パフォーマンス測定
RTX 3090上でGemma 4 12B QATモデル(約7 GB)を実行した場合、フレームあたり3つの質問で毎秒1フレーム(1 FPS)の処理速度を達成した。一方、OpenAI gpt-6-lunaモデルに対しては毎秒0.2フレーム(0.2 FPS)のパフォーマンスが測定されている。マルチモーダルプロジェクタのサイズは約175 MBである。
API対応と最適化
このラッパーはllama.cpp Chat Completions APIまたはOpenAI Responses APIに対応している。llama.cpp APIはtop_logprobsパラメータを1024に設定して利用される。OpenAIはトークン確率技術について文書化したlogprobsクックブックを公開しており、参考となる。max_completion_tokensパラメータを1に設定することで、単一トークン生成を強制し、冗長な回答を避けている。
KV-キャッシングはバックエンドがサポートしている場合、繰り返される状態プレフィックスの最適化に活用できるとされる。llama.cpp バイナリはCUDAアーキテクチャ86(RTX 3090)向けに利用可能である。
筆者の見立て
- LLMのトークン確率を読み取ることは優れた手法であると論じている
- 条件を平文で記述する柔軟性は、特化した専門的コンピュータビジョンモデルと比較して価値があると考えている
- 単一トークン生成を強制することで冗長な回答を回避でき、極めて高速になると予想している
この記事は元記事の事実のみに基づいて自動生成されました。
出典
Allan's Blog「A Jev-like wrapper for LLMs, including vision models」 http://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html (OpenAIのlogprobsクックブックの報道による)