Open4

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

okuokuokuoku

コンピュートシェーダーに対応するにあたって、やりたいことと言えばUpscalerといわゆる生成AIが営業上は必要だろう。Upscalerは普通にOpenGL ES実装があったり、まぁ手で移植すれば充分なので良いとして、AIはなかなか難しい気がする。

https://zenn.dev/okuoku/scraps/8ae786e2fa0136

Gemma

とりあえず基盤となるモデルにはGemmaを選び、LiteRTをターゲットにする。llama.cppがSyclあったりとかするのでSycl → OpenCL → Vulkan → OpenGL ESみたいな流れで移植しても良いかもしれないけど遠そうなので。

モデル自体はHFからダウンロードできる。4B-int8でも充分な性能と感じた。

https://huggingface.co/litert-community

...というかHFにvision系のモデルが全然無いのはどうなんだ。。本来そっちだったと思うんだけど。。

Gemmaの重大な問題は、エッジ向けを謳っているのに直接的なtool callingのサポートが無いこと。ちょっと使ってみた感じ14B以上のモデルにPythonを書かせて代わりにはできそうだけど、Webサイト組込みは無理なのでどうしたもんか。

okuokuokuoku

WebGPU (Web版 Mediapipe)

https://deepwiki.com/google-ai-edge/mediapipe/5.2.2-web-llm-inference

WGSLシェーダーはその場で生成、というかWebGPU向けのinferenceコードはLiteRTのリポジトリには入ってないのか。。

C-WebGLにこれを載せる場合、簡単でも良いからWebGPU実装も用意する必要がある。Computeだけなら直ぐできると思うけどちょっと面倒。

okuokuokuoku

OpenGL ES

... Vulkanじゃないのかよ!MediapipeはLiteRT側に実装させている。

https://deepwiki.com/google-ai-edge/mediapipe/5.2.3-android-llm-inference

LiteRTはOpenCL(!)とOpenGLをサポートしていて、OpenGLは事実上Android専用(Emscriptenのifdefがあったりするけど)。

https://deepwiki.com/google-ai-edge/LiteRT/5.5-gpu-acceleration

そもそもREADMEに書かれているオペレーターが少なすぎる気がする。。

https://github.com/google-ai-edge/LiteRT/blob/b9cc5e9c187d69f4e290243d3513d97fc5d1a59d/tflite/delegates/gpu/README.md

素のLiteRTをビルドしてみて、それで実行するのをトライするのが良いかな。。

gemma3-4b-it-int4-web.task は素の .tflite ファイルのようだ。 ...グラフ類無いけど、その辺はMediapipe側で補完してるのかな。