C-WebGL: LiteRT(旧TFLite) の LLM Inference したい

コンピュートシェーダーに対応するにあたって、やりたいことと言えばUpscalerといわゆる生成AIが営業上は必要だろう。Upscalerは普通にOpenGL ES実装があったり、まぁ手で移植すれば充分なので良いとして、AIはなかなか難しい気がする。
Gemma
とりあえず基盤となるモデルにはGemmaを選び、LiteRTをターゲットにする。llama.cppがSyclあったりとかするのでSycl → OpenCL → Vulkan → OpenGL ESみたいな流れで移植しても良いかもしれないけど遠そうなので。
モデル自体はHFからダウンロードできる。4B-int8でも充分な性能と感じた。
...というかHFにvision系のモデルが全然無いのはどうなんだ。。本来そっちだったと思うんだけど。。
Gemmaの重大な問題は、エッジ向けを謳っているのに直接的なtool callingのサポートが無いこと。ちょっと使ってみた感じ14B以上のモデルにPythonを書かせて代わりにはできそうだけど、Webサイト組込みは無理なのでどうしたもんか。

WebGPU (Web版 Mediapipe)
-
https://deepwiki.com/search/where-is-gpu-shader-used-for-w_221b9b2d-cb27-43df-b7a1-5722142bd8a1
- WebGPUでのシェーダーの位置を質問してみた
WGSLシェーダーはその場で生成、というかWebGPU向けのinferenceコードはLiteRTのリポジトリには入ってないのか。。
C-WebGLにこれを載せる場合、簡単でも良いからWebGPU実装も用意する必要がある。Computeだけなら直ぐできると思うけどちょっと面倒。

OpenGL ES
... Vulkanじゃないのかよ!MediapipeはLiteRT側に実装させている。
LiteRTはOpenCL(!)とOpenGLをサポートしていて、OpenGLは事実上Android専用(Emscriptenのifdefがあったりするけど)。
-
https://deepwiki.com/search/where-is-gpu-shader-sources-fo_c481cc07-6b8a-4829-89f8-f0d62e73cb33
- 同様にシェーダーは動的生成
そもそもREADMEに書かれているオペレーターが少なすぎる気がする。。
素のLiteRTをビルドしてみて、それで実行するのをトライするのが良いかな。。
→ gemma3-4b-it-int4-web.task
は素の .tflite
ファイルのようだ。 ...グラフ類無いけど、その辺はMediapipe側で補完してるのかな。

llm_inference_engine.h
Mediapipeの
これがCバインディングを提供しているようだ。というわけで、このAPIをライブラリとして切り出すのが最初のステップかな。。