Egy fejlesztő ma reggel Moebius: 0.2B Lightweight Image Inpainting Framework with 10B-Level Performance nevű, kis méretű képjavító/modellkitöltő modellt portolt böngészőbe. A modell eredetileg PyTorch és NVIDIA CUDA használatát igényelte; a port célja az volt, hogy a modellt ONNX-re konvertálva és ONNX Runtime Web/WebGPU segítségével közvetlenül a böngészőben futtathatóvá tegyék. A kész demó elérhető a simonw.github.io/moebius-web/ címen.
Mi történt, és hogyan indult a munka
A projekt kezdetén a fejlesztő feltöltötte a Moebius kódját és a súlyokat tartalmazó repókat egy helyi mappába (/tmp/Moebius), majd Claude (Claude Opus 4.8 és Claude Code) segítségét kérte a megvalósításhoz. A munkafolyamat részei voltak:
- A Moebius forráskódjának klónozása a GitHubról (https://github.com/hustvl/Moebius).
- A modell súlyainak beszerzése a Hugging Face-ről (hustvl/Moebius) GIT_LFS_SKIP_SMUDGE=0 használatával.
- Kiegészítő könyvtárak klónozása, például transformers.js és microsoft/onnxruntime.
A fejlesztő Claude-t használta kutatómunkára és arra, hogy a portolás lépéseit automatikusan végrehajtsa: létrehozott egy moebius-web almappát, inicializált egy git-repot, és Claude Code-ot promptolta, hogy konvertálja át a modellt ONNX formátumba és építse meg a webes frontendet.
Műszaki megoldások és döntések
Claude javaslata az volt, hogy ONNX Runtime Web-t használják a WebGPU backenddel — ez a réteg alacsonyabb szinten helyezkedik el, mint a transformers.js. A fejlesztő megkísérelte a PyTorch->ONNX exportot (a projekt export_onnx.py fájljában is látható példa), és a repo a 18-as opsetet használja.
A konvertált ONNX súlyokat a fejlesztő feltöltötte Hugging Face-re: a simonw/Moebius-ONNX repóba került fel összesen körülbelül 1,24 GB átadott ONNX fájlok formájában. A böngészős demó a fejlesztő GitHub Pages oldalán lett hosztolva (simonw.github.io/moebius-web/).
A kész eszköz működése
A webes felületen tetszőleges képet lehet megnyitni (nem négyzetes képek levágva/letterboxolva jelennek meg), kijelölni a törlendő területeket, majd a "Run inpaint" gombra kattintva a modell kitölti a kijelölt részeket. A kész oldal működik Chrome-ban, Firefoxban és Safari-ban is.
Telepítés, cache és teljesítmény
A böngészőnek nagy mennyiségű modellsúlyt kell letöltenie: a fejlesztő tapasztalata szerint a betöltéskor mintegy 1,3 GB adat tölthető le. A CacheStorage API (caches.open("transformers-cache")) bevezetésével javították a helyi gyorsítást; a fejlesztő a Whisper Web demó példáját használta, hogy megértse és átvigye ezt a megoldást. Ugyanakkor felmerült, hogy bizonyos esetekben a Hugging Face átirányításai miatt a böngésző nem mindig használja ki a cache-t.
Mit tanult a fejlesztő az ügyről?
- Claude Opus 4.8 képes végigvinni a PyTorch modell ONNX-re konvertálását, a súlyok publikálását Hugging Face-en és egy webes alkalmazás létrehozását, amely betölti és futtatja a modellt.
- A modern böngészők (Chrome, Firefox, Safari) képesek WebGPU/ONNX Runtime Web alapú modellek futtatására.
- A CacheStorage API működőképes nagy, ~1,3 GB-os modellek esetén is, így lehetséges kliens-oldali inpainting szolgáltatást nyújtani — feltéve, hogy a felhasználók elviselik a nagy letöltést.
Kiegészítő anyagok és dokumentáció
A fejlesztő megosztotta a Claude Code munkamenet teljes átiratát és a projekt végén készített notes.md és understanding.md fájlokat, amelyek magyarázatot adnak ONNX-re, az opsetekre és a modell felépítésére. Az understanding.md kiemeli, hogy egy .onnx fájl számítási gráfot (műveleti csomópontokkal) és a hozzá tartozó súlyokat tárolja, és hogy az ONNX független a konkrét futtatókörnyezettől.
Következtetés
A projekt eredményeként egy működő böngészős inpainting demó jött létre, amely bemutatja, hogy viszonylag kis modellek (0.2B) webes környezetben is használhatók ONNX és ONNX Runtime Web/WebGPU kombinációval. A fő korlát jelenleg a nagyméretű modellek letöltése és a gyorsítótárazás finomhangolása a különböző hosting-átirányítások figyelembevételével.



