Přeskočit na obsah
U sebe doma 4 min čtení

ONNX Runtime 1.29.0 sbírá data i na Linuxu, macOS, Androidu a iOS

Vydání z 12. srpna přidalo do knihovny sběr telemetrie pro Linux, macOS, Android a iOS; dosud běžel jen na Windows. V oficiálních balíčcích je zapnutý ve výchozím stavu a vypne ho proměnná prostředí nastavená dřív, než se knihovna spustí. Událost o vytvoření relace nese mimo jiné jméno souboru modelu, otisk jeho grafu a metadata.

ONNX Runtime je knihovna Microsoftu, která spouští hotové modely ve formátu ONNX – na procesoru, na grafické kartě i na akcelerátorech v telefonu. Sama o sobě vidět není: sedí pod aplikacemi, které si model do ONNX převedou a pak ho potřebují někde spustit. Vydání 1.29.0 z 12. srpna 2026 do ní přidalo sběr telemetrie pro Linux, macOS, Android a iOS. Do té doby ho měla jen na Windows.

Raspberry Pi 4 položený na osmiportovém síťovém přepínači
ONNX Runtime běží i na drobných počítačích. Seznam architektur, na kterých se telemetrie zapíná, zahrnuje i armv7l a aarch64. Foto: rail fox (flufftech.net), Wikimedia Commons (CC0)

V oficiálních balíčcích je sběr zapnutý

Dokument Privacy.md ve značce v1.29.0 to říká rovnou: telemetrie je v oficiálních sestaveních zapnutá ve výchozím stavu. Na Windows k tomu slouží systémové ETW, na ostatních platformách knihovna 1DS a odesílá se přes HTTPS. Bez telemetrie zůstávají cíle, pro které knihovna žádný odesílač nemá – WebAssembly, tvOS, visionOS, Mac Catalyst, AIX a RISC-V.

Na Linuxu navíc rozhoduje seznam architektur. Funkce target_supports_telemetry v souboru build_args.py jich vyjmenovává jedenáct, od aarch64armv6l po x86_64; co v seznamu není, telemetrii nedostane.

Událost o vytvoření relace nese i jméno souboru modelu

Co přesně se posílá, stojí ve zdrojovém souboru telemetry.cc. Jednorázová událost ProcessInfo obsahuje verzi knihovny, popis systému, architekturu, model procesoru, třídu zařízení, počet jader a velikost paměti v megabajtech.

Bohatší je událost SessionCreation, tedy otevření relace nad konkrétním modelem. Nese verzi formátu, jméno a verzi nástroje, který model vytvořil, doménu modelu, jméno souboru, jméno grafu, typ vah, otisk grafu, otisk vah, metadata modelu, seznam použitých execution providerů, typy a výrobce hardwaru a příznak, jestli se počítá v šestnáctibitových číslech.

Jméno souboru je opravdu jen jméno, ne cesta: inference_session.cc volá nad cestou k modelu filename(), takže adresář zůstává doma. Volné textové položky, například chybové hlášky a cesty ke knihovnám, procházejí funkcí ScrubStringForTelemetry; jméno souboru, jméno grafu ani metadata modelu se nezačišťují.

Vzorkování je podle popisu návrhu nastavené na 100 %, takže se neposílá zlomek relací, ale všechny. Na stolních systémech se odesílá solený otisk místně vytvořeného identifikátoru a samotné UUID podle téhož popisu ven nejde; Android a iOS používají identitu, kterou dodá 1DS.

Vypnout to jde třemi způsoby a každý sahá jinam daleko

  • Při stavbě. Přepínač --no_telemetry pro build.py nebo build.sh. Odesílač se do knihovny vůbec nedostane.
  • Za běhu, mimo Windows. Proměnná prostředí ORT_DISABLE_TELEMETRY=1 nastavená dřív, než se ONNX Runtime inicializuje. Pak nevznikne odesílač, události ani trvalý identifikátor zařízení a rozhodnutí platí po celý život procesu.
  • Přes rozhraní. C API a jeho vazby v C#, Pythonu a Javě umí potlačit nepodstatné události. Úvodní událost už ale může být pryč – komentář přímo v telemetry.cc říká, že tohle potlačení nechá odesílač naživu, takže ProcessInfo odejde tak jako tak.

Co je vidět v knihovně z oficiálního archivu

Zkusili jsme to změřit na tom, co si člověk stáhne. V archivu onnxruntime-linux-x64-1.29.0.tgz z příloh vydání má soubor libonnxruntime.so 28 497 752 bajtů a jsou v něm řetězce ORT_DISABLE_TELEMETRY, popSample, ProcessInfo, RuntimePerf a třikrát adresa sběrného serveru https://mobile.events.data.microsoft.com/OneCollector/1.0. V témž archivu pro verzi 1.28.0 má táž knihovna 24 268 848 bajtů a ani jeden z těch řetězců v ní není.

Rozdíl 4,2 MB nepatří celý telemetrii – vydání přineslo i řadu jiných změn a z hotového souboru se podíl jedné knihovny oddělit nedá. A přítomnost řetězce neříká, co se v konkrétním běhu opravdu odešle; říká jen, že kód pro odeslání v dodaném souboru je.

Odesílání muselo pryč z horké cesty

Popis návrhu #27379 uvádí i měření, kvůli kterému se podoba sběru měnila. Původní verze posílala událost synchronně po každém průchodu modelem: v jednom vlákně stál běh 100,4 mikrosekundy se zapnutou telemetrií proti 3,5 mikrosekundy s vypnutou, na osmi vláknech to bylo 11 300 běhů za sekundu proti 306 500, tedy ztráta 96,3 %. Po přesunu odesílání mimo horkou cestu vyšlo 294 300 proti 295 500 běhům za sekundu, což je rozdíl 0,4 %. Měřilo se na modelu mul_1.onnx s odstavenou sítí, měření je součástí návrhu, ne cizí ověření.

Popis návrhu a vydaný kód se u přepínače rozcházejí

V popisu návrhu stojí, že se telemetrie kompiluje jen tehdy, když se stavba nastaví přepínačem --use_telemetry. Ve vydaném kódu 1.29.0 žádný takový přepínač není: build_args.py zná jen --no_telemetry a jeho vlastní nápověda říká, že telemetrie je pro podporované nativní stavby zapnutá ve výchozím stavu. Totéž píše Privacy.md a dodává, že windowsová obálka build.bat předává --no_telemetry sama. Kdo si tedy knihovnu postaví na Windows obvyklým způsobem, sběr nemá; kdo ji postaví na Linuxu přes build.sh, ho ve výchozím stavu má.

Kdo staví přímo přes CMake bez build.py, je na tom ještě jinak: volba onnxruntime_USE_TELEMETRY je v CMakeLists.txt nastavená na OFF a build.py ji pokaždé přebíjí výslovnou hodnotou.

Koho se to týká hned

Nejnovější onnxruntime na PyPI je při psaní tohohle textu pořád 1.28.0 z 25. července 2026, takže pip install onnxruntime zatím nic z toho nepřinese. Týká se to lidí, kteří sáhnou po hotových archivech z příloh vydání, a všech, kdo si knihovnu staví sami na jiné platformě než Windows.

Identifikátor stroje jako klíč k telemetrii přitom v nástrojích kolem modelů nic nového není – rozšíření Cline podle něj rozhoduje, které ze dvou balíčků v instalaci spustí.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. U sebe doma

    Návod k modelu Ling-3.0-tiny radí zapnout zrychlení, které ten model nemá

    Karta modelu Ling-3.0-tiny radí spustit ho příkazem, který zapíná spekulativní dekódování NEXTN. V konfiguraci téhož modelu ale stojí, že pomocnou vrstvu pro ně nemá, a…

  2. U sebe doma

    vLLM 0.27.0 přeskočil PyTorch 2.12 a přechod na 2.13 stál čtyři ústupky v testech

    Vydání vLLM 0.27.0 z 10. srpna 2026 má v závislostech pevně zadaný torch 2.13.0 místo dosavadního 2.11.0. Mezi těmi dvěma čísly leží dvě vydání PyTorche, která projekt…

  3. U sebe doma

    Muse Glimmer v Ollamě má 21 GB a zatím běží jen na Apple Silicon

    Ollama 0.32.7 přidala třicetimiliardový multimodální model od Mety. Varianta pro MLX stahuje 21,2 GB dat, Meta nejmenší kvantizaci míří do 24GB paměťového rozpočtu a…

  4. U sebe doma

    Ollama přestala opisovat otisky všech vrstev do konfigurace modelu

    Ollama 9. srpna odstranila z hlavní vývojové větve pole rootfs.diff_ids, které do konfigurace modelu podruhé zapisovalo otisky všech vrstev. U modelů tvořených soubory…