ONNX

Otwarty format zapisu modeli uczenia maszynowego, pozwalający wyeksportować model z jednego środowiska treningowego i uruchomić go w innym. W praktyce najczęstszy nośnik grafu obliczeniowego — także dla modeli uruchamianych w przeglądarce.

W Polsce nazywane też:

ONNXotwarty format wymiany modelieksport modelu

Model wytrenowany w jednym środowisku trzeba uruchomić w dziesięciu innych — na serwerze, na telefonie, w przeglądarce, w układzie wbudowanym. Przepisywanie go za każdym razem nie wchodzi w grę.

Czym jest ONNX

ONNX to otwarty format zapisu modeli uczenia maszynowego, przechowujący w jednym pliku graf obliczeniowy wraz z wagami, w postaci niezależnej od środowiska, w którym model powstał. Powstał jako wspólna inicjatywa branżowa i pełni rolę warstwy pośredniej między trenowaniem a uruchamianiem.

Jak to działa

Model wytrenowany w dowolnym popularnym środowisku eksportuje się do ONNX, co zamraża jego graf i wagi. Plik trafia następnie do środowiska uruchomieniowego, które kompiluje graf pod konkretny sprzęt i wykonuje go.

To rozdzielenie jest całą wartością formatu: trenowanie i uruchamianie przestają być związane jednym narzędziem.

Zestaw operatorów

Format definiuje zestaw dozwolonych operacji, wersjonowany numerem zestawu. Nowsze architektury modeli wprowadzają operacje, których starsze zestawy nie znają — i to jest najczęstsza przyczyna niepowodzenia przy eksporcie albo uruchomieniu.

Dlaczego to ważne dla stron

Środowisko uruchomieniowe ONNX ma wersję działającą w przeglądarce, korzystającą z WebGPU albo z WASM. To ono stoi pod większością modeli uruchamianych po stronie klienta — także pod bibliotekami wyższego poziomu, które ukrywają je przed programistą.

Przy eksporcie zwykle jednocześnie kwantyzuje się model, bo dla urządzenia końcowego rozmiar pliku jest zwykle ważniejszy niż ostatnie procenty dokładności.

Transformers.jsBiblioteka JavaScript uruchamiająca modele uczenia maszynowego bezpośrednio w przeglądarce, na warstwie środowiska uruchomieniowego ONNX z akceleracją WebGPU. Obsługuje nie tylko modele językowe, ale też embeddingi, rozpoznawanie mowy, syntezę mowy i zadania wizyjne.WebGPUStandard W3C dający stronom internetowym dostęp do karty graficznej użytkownika, zarówno do grafiki, jak i do obliczeń ogólnego przeznaczenia. Dla modeli językowych oznacza możliwość uruchomienia inferencji lokalnie z akceleracją sprzętową, bez wysyłania czegokolwiek na serwer.graf obliczeniowyZapisany w pliku modelu opis kolejności operacji: co przez co pomnożyć, co dodać, co znormalizować. Mówi, co ma wyjść, ale nie mówi, jak to policzyć — dopisanie tej drugiej warstwy jest zadaniem runtime'u i to w niej powstaje większość różnicy w wydajności.silnik wnioskowaniaProgram, który wczytuje plik z wagami, kompiluje graf obliczeniowy pod konkretny sprzęt, rezerwuje pamięć i wykonuje pętlę generowania. Ten sam model uruchomiony przez dwa różne runtime'y daje tę samą odpowiedź w czasie różniącym się wielokrotnie.kwantyzacjaZapisanie wag modelu z mniejszą precyzją liczbową, co zmniejsza zużycie pamięci i przyspiesza obliczenia kosztem dokładności. Umożliwia uruchamianie dużych modeli lokalnie. To nie to samo co destylacja — kwantyzacja zmienia zapis tych samych wag, destylacja tworzy nowy, mniejszy model.Lokalny model językowyModel językowy uruchamiany lokalnie — bez zewnętrznego API — zapewniający prywatność danych, działanie offline i przewidywalne koszty. Llama, Mistral, Phi jako popularne modele. Ollama jako de facto standard dla developerów.