Czym właściwie jest ta architektura
Vision transformer przekonwertowany do formatu ONNX i skompresowany do około 40 MB, podzielony na dwie części, aby każda mieściła się w limicie rozmiaru pliku platformy hostingowej. Jest składany z powrotem w przeglądarce, a jego suma kontrolna jest weryfikowana przed uruchomieniem czegokolwiek.
Wnioskowanie odbywa się za pośrednictwem WebAssembly, co pozwala skompilowanemu środowisku wykonawczemu działać z prędkością zbliżoną do natywnej wewnątrz karty przeglądarki. Sama środowisko wykonawcze to skompresowany plik binarny WASM ładowany wraz z wagami.
Nic w tym nie jest już niezwykłe. To, co w 2021 roku było demonstracją badawczą, jest dziś normalnym sposobem dostarczania modelu, a przeglądarki wykonały większość pracy.
Co to daje
| Nieruchomość | W przeglądarce | Na serwerze |
|---|---|---|
| Zdjęcie opuszcza Twoje urządzenie | No niemożliwe | Yes wymagane |
| Koszt sprawdzenia | Yes zero | No realna moc obliczeniowa |
| Wymagana umowa powierzenia przetwarzania danych | No | Yes |
| Działa bez sieci po załadowaniu | Yes | No |
| Model może być utrzymywany jako prywatny | No jest pobierany | Yes |
| Pierwsze sprawdzenie jest natychmiastowe | No model pobiera się raz | Yes |
Pierwszy wiersz to powód, dla którego reszta istnieje. Ponieważ nie ma punktu końcowego przesyłania, nie ma zbioru cudzych zdjęć, polityki retencji do napisania, naruszenia do zgłoszenia ani niczego do przekazania na żądanie.
Drugi wiersz wyjaśnia, dlaczego usługa może być darmowa bez licznika użycia. Sprawdzenie nic nie kosztuje po stronie serwera, więc nie ma kosztu przypadającego na obraz do odzyskania, co zmienia to, jak musi wyglądać cennik.
Ile to kosztuje
Trzy realne kompromisy przedstawione wprost, ponieważ strona wymieniająca wyłącznie zalety to reklama.
- Pierwsze sprawdzenie jest wolne. Czterdzieści megabajtów musi dotrzeć, zanim cokolwiek się stanie. Przy szybkim połączeniu to kilka sekund, przy słabym dłużej. Kolejne sprawdzenia używają ponownie modelu z pamięci podręcznej i uruchamiają się natychmiast.
- Starsze urządzenia sobie nie radzą. Wnioskowanie wymaga pamięci i mocy obliczeniowej, których pięcioletni telefon może nie mieć w wystarczającym stopniu. Serwer nie interesuje się tym, jakie urządzenie trzymasz w ręku.
- Model jest publiczny. Wszystko pobrane do przeglądarki można zachować. Model po stronie serwera może być własnościowy; ten taki być nie może, a wagi są i tak otwartym punktem kontrolnym badań.
O trzecim punkcie warto powiedzieć wprost. Dostarczenie modelu klientowi oznacza oddanie go. Jest to tutaj akceptowalny kompromis, ponieważ wagi zostały już opublikowane, a praca czyniąca narzędzie użytecznym to kalibracja, dzielenie na kafelki i interpretacja zbudowana wokół nich.
Problemy inżynieryjne, o których warto wiedzieć
Podział dużego pliku
Statyczne platformy hostingowe nakładają limity na rozmiar pojedynczych plików. Model o wadze 40 MB przekraczał ten limit, dlatego jest dostarczany jako dwie deterministyczne części, które są składane w przeglądarce i weryfikowane z sumą kontrolną manifestu przed użyciem. Uszkodzona lub podmieniona część kończy się wyraźnym błędem zamiast cichego generowania błędnych wyników.
Nieładowanie niczego, dopóki nie jest potrzebne
Model, środowisko wykonawcze i czytnik danych uwierzytelniających nie są pobierane podczas ładowania strony. Docierają przy pierwszej interakcji, więc osoba czytająca artykuł nie pobiera niczego z tego. To sprawia, że strony działają szybko dla zdecydowanej większości odwiedzających, którzy nigdy nie uruchamiają sprawdzenia.
Dekodowanie niewygodnych formatów
Formaty HEIC z iPhone'ów, AVIF, TIFF i JPEG XL wymagają dekodowania przed oceną. Przeglądarki radzą sobie obecnie z większością z nich natywnie, co eliminuje to, co kiedyś było największą częścią pracy po stronie klienta w tego typu narzędziu.
Kiedy ta architektura jest złym wyborem
Nie jest uniwersalnie lepsza. Serwer ma większy sens, gdy model jest własnościowy i wart ochrony, gdy jest zbyt duży do przesłania, gdy potrzebujesz wyników w potoku backendowym zamiast przed użytkownikiem lub gdy potrzebujesz gwarantowanego czasu odpowiedzi niezależnie od urządzenia.
W przypadku narzędzia, które ktoś otwiera, aby sprawdzić jedno podejrzane zdjęcie, żadne z tych ograniczeń nie ma zastosowania, a cecha prywatności jest wart więcej niż wszystko, co dodałby serwer.
Czego to uniemożliwia
Wybór klienta niesie za sobą konsekwencje wykraczające poza prywatność, a niektóre z nich to ograniczenia, które warto nazwać po imieniu, zamiast nazywać je funkcjami.
Nie ma historii. Wynik istnieje tylko na karcie, która go wygenerowała, więc niczego nie można później odszukać, chyba że zostało wyeksportowane. To bezpośredni koszt braku konta i zarazem najczęściej zgłaszana rzecz, którą ta architektura czyni kłopotliwą.
Nie ma współdzielonego stanu. Dwie osoby nie mogą widzieć tej samej kolejki, a zespół nie może wzajemnie przeglądać swoich sprawdzeń. Współdzielony link niesie ze sobą pojedynczy wynik, który obejmuje rozmowę, a nie przepływ pracy.
Nie ma API. Cokolwiek działa w karcie przeglądarki, nie może być wywołane z poziomu potoku backendowego, co całkowicie wyklucza zastosowania o najwyższej skali. To realne luki, a uczciwe stanowisko jest takie, że stanowią one cenę za właściwość, która ma większe znaczenie.