spinny:~/writing $ less webgpu-on-device-ai-browser.md
12Prohlížeč byl po léta hezkou tváří aplikace a cloud byl místem, kde se děly těžké věci. Uživatel zapíše, klikne, nahraje soubor; frontend posílá vše na server; server volá model; odpověď se vrací.34Toto schéma zůstává velmi užitečné, ale není zdarma. Každý hovor přináší latenci, náklady, závislost na síti a soukromí. Pokud uživatel píše větu a chce návrh, půl sekundy váží. Pokud klasifikujete tisíce malých vstupů, haléře se stanou skutečnými penězi. Pokud je text citlivý, odeslání ze zařízení není neutrální volbou.56To je důvod, proč jsou WebGPU a AI na zařízení v humbuku. Ne proto, že zítra spustíme každý model v prohlížeči. Protože některé z inteligentních funkcí se mohou dostat blíže k uživateli.78## Ne všechno se musí stát lokální910Dětinská verze argumentu zní: „cloud versus zařízení“. Užitečná verze je hybridní.1112Některé úkoly vypadají na zařízení skvěle: krátká shrnutí, detekce jazyka, lehké přepisy, jednoduchá klasifikace, obrazové filtry, malé modely vidění, kreativní zážitky s okamžitou zpětnou vazbou.1314Další úkoly zůstávají lepší v cloudu: komplexní uvažování, hraniční modely, data na straně serveru, centralizovaný audit, jednotná kvalita, pracovní postup, kde musíte pečlivě kontrolovat každý krok.1516Zdravá architektura rozhoduje za běhu:1718```mermaid19flowchart TD20 User[Uživatel] --> Browser[Prohlížeče]21 Browser --> Detect[Detekce funkcí]22 Detect -->|Podporováno| Local[Místní závěr]23 Detect -->|Není podporováno| Cloud[Záložní cloud]24 Local --> UX[Rychlá odezva]25 Cloud --> UX26 UX --> Metrics[Metriky a kvalita]27```2829Prohlížeč nemusí vyhrát nad cloudem. Musí cloud zachránit před prováděním práce, která se tam dělat nemusí.3031## Proč na WebGPU záleží3233WebGPU je moderní API pro použití GPU z prohlížeče. Není to jen pro hezčí 3D grafiku. Je také důležité, protože odhaluje primitiva vhodná pro výpočty: paralelní pracovní zátěže, shadery, potrubí blíže tomu, co GPU umí dobře.3435U AI, vědecké vizualizace, 3D editorů, video filtrů a kreativních nástrojů je tento rozdíl cítit. WebGL udělal pro web hodně, ale WebGPU se zrodilo s modelem, který lépe vyhovuje současnosti.3637První věc, kterou je třeba napsat, však není shader. Je to střízlivá detekce funkcí:3839```typescript40export async function requestWebGpuDevice() {41 if (!('gpu' in navigator)) {42 return null;43 }4445 const adapter = await navigator.gpu.requestAdapter({46 powerPreference: 'high-performance',47 });4849 if (!adapter) {50 return null;51 }5253 return adapter.requestDevice();54}55```5657Tato funkce říká jednu důležitou věc: WebGPU není právo udělené na každém zařízení. Je to schopnost být ověřena. Některé prohlížeče to plně nepodporují, některé GPU mají omezení, některá podniková prostředí zakazují funkce, někteří uživatelé používají skromný hardware.5859## Vestavěná AI: když prohlížeč přinese model6061Chrome prosazuje vestavěná rozhraní API pro úkoly, jako jsou místní výzvy, sumarizace, psaní, přepisování, překlady, detekce jazyka a korektury. Myšlenka je velmi zajímavá: prohlížeč spravuje model, dostupnost a aktualizace; aplikace používá API blíže k platformě.6263Pokud to funguje dobře, hodně se to změní:6465- méně volání serveru pro jednoduché úkoly;66- data, která mohou zůstat v zařízení;67- nižší latence;68- offline nebo semi-offline zážitky;69- Přirozenější uživatelské rozhraní pro psaní a překlad.7071Ale mělo by to být považováno za progresivní vylepšení. Některá API jsou stabilní, jiná ve zkušební verzi nebo náhledu, jiná stále závisí na verzi, jazyku a zařízení.7273```typescript74type LocalCapability = 'available' | 'downloadable' | 'unsupported';7576export async function getLocalSummarizerCapability(): Promise<LocalCapability> {77 const SummarizerApi = (globalThis as any).Summarizer;7879 if (!SummarizerApi?.availability) {80 return 'unsupported';81 }8283 const availability = await SummarizerApi.availability();8485 if (availability === 'available') return 'available';86 if (availability === 'downloadable') return 'downloadable';8788 return 'unsupported';89}90```9192Konkrétní kód se změní, ale vzorec zůstává: zkontrolujete dostupnost, vysvětlíte všechna stahování, nabídnete záložní řešení a změříte kvalitu.9394## Záloha není smutný plán B9596Cloud backback není prohra. Je součástí produktu.9798```typescript99interface AiRequest {100 task: 'summarize' | 'rewrite' | 'classify';101 input: string;102}103104interface AiResult {105 output: string;106 runtime: 'local' | 'cloud';107}108109export async function runAiTask(request: AiRequest): Promise<AiResult> {110 const local = await tryLocalAi(request);111112 if (local) {113 return { output: local, runtime: 'local' };114 }115116 const cloud = await fetch('/api/ai', {117 method: 'POST',118 headers: { 'Content-Type': 'application/json' },119 body: JSON.stringify(request),120 }).then((res) => res.json());121122 return { output: cloud.output, runtime: 'cloud' };123}124```125126Tato architektura umožňuje postupné zlepšování. Uživatelé s místní podporou získají lepší latenci a soukromí. Ti, kteří ji nemají, funkci stále používají. Můžete měřit procento místních požadavků, časy, chyby, paměť, vnímanou kvalitu a náklady.127128Bez metrik se AI na zařízení stává estetickou volbou. S metrikami se stává pákou produktu.129130## Na UX modelu záleží131132Pokud prohlížeč potřebuje stáhnout model, uživatel to vnímá. Neschovávejte to za nejasnou rotačku. Lepší, aby bylo jasno: "Připravujeme model tak, aby tuto funkci používal rychleji a dokonce i offline."133134Dobrá zkušenost:135136- ukazuje stav přípravy;137- neblokuje celou stránku;138- umožňuje pokračovat s cloudovou zálohou;139- vyhnout se překvapením z baterie a paměti;140- pamatovat si model, kdykoli je to možné;141- vysvětlit přínos jednou konkrétní větou.142143Nejhorší je "chytrá" funkce, která se zdá být nefunkční, protože něco stahuje potichu.144145## Soukromí: lepší, ne automaticky zabezpečené146147Velkou výhodou může být zpracování dat na zařízení. Koncept e-mailu, interního dokumentu nebo osobní poznámky nemusí opustit váš prohlížeč, aby obdržel návrh.148149Místní však automaticky neznamená bezpečné. Je však třeba myslet na:150151- XSS;152- náhodné protokoly;153- data uložená v úložišti;154- rychlé vložení z nedůvěryhodného obsahu;155- povolení udělená modelu;156- výstupy používané v automatických akcích.157158Pokud místní model dokáže přečíst webovou stránku a poté vyplnit formulář, může se s ní tato stránka pokusit manipulovat. Pokud může nástroj volat, je potřeba potvrzení. Pokud vytváří strukturovaný výstup, musí být ověřen. Skutečnost, že běží na zařízení, snižuje některá rizika ochrany soukromí, ale neeliminuje model zabezpečení.159160## Kde to začíná být opravdu zajímavé161162Text je jen začátek. WebGPU dělá webové zážitky důvěryhodnými, které se donedávna zdály jako nativní aplikace:163164- složité 3D editory;165- Gaussovské splatting v prohlížeči;166- video filtry v reálném čase;167- Lehký CAD;168- vědecké vizualizace;169- kreativní nástroje s okamžitým náhledem;170- inference vidění v blízkosti UI;171- ambicióznějších prohlížečových her.172173Zde se začíná mísit frontend, grafika a strojové učení. Je to poněkud nepohodlná oblast, ale také úrodná: prohlížeč se vrací jako seriózní aplikační platforma, nejen místo, kam vkládáme formuláře a řídicí panely.174175## Kontrolní seznam před výrobou176177Před uvedením funkce na zařízení před uživatele bych zkontroloval:1781791. Zacilte na prohlížeče a zařízení.1802. Cloud záložní nebo elegantní degradace.1813. Čas stahování a mezipaměť modelu.1824. Paměť a baterie na průměrném hardwaru.1835. Kvalita ve srovnání s cloudovou verzí.1846. Zásady ochrany osobních údajů a uživatelské zprávy.1857. Testování s nepřátelskými vstupy.1868. Samostatné metriky pro místní a cloudové běhové prostředí.1879. Plánujte aktualizaci nebo deaktivaci šablony.188189Je to konkrétní seznam, protože problém je konkrétní. Pomalá, křehká nebo neprůhledná funkce umělé inteligence se nezlepší jen proto, že běží v prohlížeči.190191## Správný kompromis192193Nevěřím, že budoucnost je „všechno na zařízení“. A nemyslím si, že cloud zůstane jediným rozumným místem pro vyvozování. Nejpravděpodobnější budoucnost je kombinace: místní, když to zlepší latenci, soukromí nebo náklady; cloud, když je potřeba kvalita, aktualizovaná data a centralizované řízení.194195WebGPU, WebNN a vestavěná rozhraní AI API nedělají prohlížeč všemocným. Dělají ho dospělejším. A pro ty, kteří vytvářejí webové produkty, je to obrovská zpráva.196197## Užitečné zdroje198199- [WebGPU API – MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API)200- [Specifikace WebGPU - W3C](https://www.w3.org/TR/webgpu/)201- [Vestavěná AI – Chrome pro vývojáře](https://developer.chrome.com/docs/ai/built-in)202- [Vestavěná rozhraní AI API – Chrome pro vývojáře](https://developer.chrome.com/docs/ai/built-in-apis)203- [WebNN API](https://webnn.io/)204
:WebGPU a umělá inteligence na zařízení: Z prohlížeče se stává seriózní běhové prostředílines 1-204 (END) — press q to close