Zaznacz stronę

Prawie każda firma, z którą rozmawiam, ma już politykę korzystania z AI. I prawie żadna nie ma narzędzia, które by ją egzekwowało. Polityka istnieje jako dokument: zakazy umowne, podpisy, segregator. Tymczasem programiści pracują z agentami kodującymi, analitycy wklejają arkusze do modeli językowych, a handlowcy „tylko poprawiają maila”. Według raportu LayerX z końca 2025 roku dane do narzędzi generatywnej AI wkleja około 18% pracowników, a w blisko 40% wgrywanych plików są dane osobowe lub dane kart płatniczych.

Klasyczny DLP tego ruchu nie widzi w użyteczny sposób: zapytanie do API modelu to POST po HTTPS, nieodróżnialny od tysiąca innych. A dopisanie do łańcucha „inspekcji w chmurze” zawiera sprzeczność, którą wystarczy powiedzieć na głos: żeby ustalić, czy dane wolno było wysłać do jednego zewnętrznego dostawcy, wysyłamy je do drugiego. Dochodzi kolejny podmiot przetwarzający, kolejna umowa powierzenia i kolejne miejsce, w którym treść żyje poza firmą.

Zostaje jedno miejsce, gdzie kontrola ma sens: urządzenie końcowe, zanim cokolwiek opuści maszynę. I tu zwykle pada argument, który tę drogę zamykał: przecież to oznacza model uruchamiany na każdym promptcie, na laptopie, na zawsze. Kto to udźwignie?

Odpowiedź od dwóch lat stoi na biurkach i przez większość dnia nic nie robi.

Najtańszy pracownik inferencji już siedzi w laptopie

Współczesne „AI PC” mają obok CPU i zintegrowanego GPU trzeci układ: NPU, akcelerator sieci neuronowych. W praktyce biurowej jego użycie jest incydentalne – rozmycie tła na wideokonferencji, czasem poprawa obrazu. Resztę dnia najnowocześniejszy kawałek krzemu w komputerze spędza bezczynnie.

Postanowiliśmy zmierzyć, czy ten bezczynny układ udźwignie stałą pracę strażnika prywatności. Nie na deklaracjach producenta, tylko na własnym obciążeniu. Do pomiaru posłużył nasz otwartoźródłowy proof-of-concept Sentin-NPU (Apache 2.0), uruchomiony na maszynie, która ma wszystkie trzy układy naraz: Intel Core Ultra 7 258V, czyli Lunar Lake, pod Linuksem. To architektura, w której NPU, zintegrowane GPU i CPU siedzą na jednym kawałku krzemu, a pamięć wjeżdża do tego samego pakietu – dla pomiaru to układ idealny, bo wszystkie trzy urządzenia dzielą jedną maszynę, jeden budżet cieplny i jeden zestaw sterowników.

Silnikiem inferencji jest OpenVINO i to wybór z konkretnego powodu: ten sam skompilowany model ładuje się na CPU, GPU albo NPU zmianą jednej nazwy urządzenia. Porównanie jest przez to uczciwe (jeden model, jedna maszyna, zmienia się tylko układ), a wdrożenie dostaje polisę: tam, gdzie NPU nie ma albo odmówi współpracy, ta sama paczka działa na CPU. Model NER skwantyzowany do INT8, energia mierzona licznikami RAPL, spoczynek odjęty, mediana z pięciu powtórzeń po odrzuconej rozgrzewce. Pełna metodyka i wszystkie tabele: docs/benchmarks.md.

Energia na jedną inferencję, trzy poziomy obciążenia:

Urządzeniesaturacja10 żądań/s1 żądanie/s
NPU (AI Boost)46,81 mJ78,21 mJponiżej progu szumu
iGPU (Arc 140V)49,51 mJ160,08 mJ815,77 mJ
CPU554,60 mJ724,14 mJ1 267,08 mJ

Trzy rzeczy z tej tabeli, w kolejności ważności.

Kolumna saturacji kłamie o tym produkcie. Przy pełnym obciążeniu NPU i iGPU zbiegają się do około 5% – kto zmierzy tylko tak (a tak mierzy się domyślnie), uzna oba akceleratory za wymienne. Bramka prywatności nigdy nie pracuje w saturacji; pracuje w tle, zrywami. Przy dziesięciu żądaniach na sekundę, czyli obciążeniu, jakie realnie widzi bramka przed kilkoma agentami, NPU jest już dwukrotnie tańsze od iGPU i dziewięciokrotnie od CPU. Wniosek uogólnia się poza ten projekt: inferencję działającą w tle trzeba mierzyć przy własnym profilu obciążenia, inaczej wybierze się złe urządzenie z dobrych powodów.

Przy tempie pracy jednej osoby strażnik znika. Przy jednym żądaniu na sekundę własny pobór NPU (0,17 W) schodzi poniżej progu szumu pomiaru całej platformy (0,35 W) – nasz harness uczciwie oznacza ten wiersz jako „poniżej szumu” zamiast drukować liczbę udającą pomiar. W praktyce: nawet przy podtrzymanych 10 żądaniach na sekundę NPU dokłada 0,78 W ponad spoczynek, mniej niż podświetlenie ekranu. Bateria tego nie widzi.

NPU nie wygrywa prędkością i trzeba to powiedzieć wprost. iGPU jest szybsze: 2,7 ms wobec 5,9 ms na inferencję (CPU: 23,6 ms). Cały potok inspekcji dokłada na NPU +3,85 ms p95 – niezauważalne na tle sekund, które i tak zabiera odpowiedź modelu. NPU wybiera się nie dla prędkości, tylko dlatego, że wykonuje tę samą pracę za ułamek energii i zostawia GPU użytkownikowi. Jakość też niczego nie oddaje: na polskim zbiorze testowym NPU wykrywa te same encje co CPU (F1 88,00 wobec 87,75, różnica 1-3 encji na ~750). Jedyny realny koszt to pierwsza kompilacja modelu (około 2 s), ale sterownik buforuje wynik i każdy kolejny start to kilkadziesiąt milisekund.

Tyle w temacie „kto to udźwignie”. Udźwignie układ, który dziś nie robi nic, kosztem energetycznym na granicy mierzalności.

Polityka AI jako monitoring lokalny

Skoro budżet się zgadza, zostaje architektura. Sentin-NPU działa jako lokalne reverse proxy mówiące API dostawców: agentowi czy narzędziu zmienia się base_url na lokalny port i nic więcej.

agent → 127.0.0.1:4141/anthropic/v1/messages → inspekcja → api.anthropic.com
                                                   ↓
                                       zdarzenie SIEM (same metadane)

Detekcja jest dwuwarstwowa i to rozdzielenie niesie całą filozofię narzędzia:

Warstwa deterministyczna ma prawo blokować. PESEL ma wbudowaną datę i cyfrę kontrolną, IBAN przechodzi mod-97, karta płatnicza ma sumę Luhna i prefiks wydawcy. Takie trafienie jest weryfikowalne arytmetycznie, fałszywy alarm praktycznie niemożliwy, więc twarde „nie” jest uczciwe. Zmierzona przepustowość tej warstwy: setki MB/s na zwykłej prozie, zero fałszywych trafień na 1 MB tekstu bez danych.

Warstwa NER tylko doradza albo maskuje. Nazwiska, adresy, organizacje – to, czego żadna suma kontrolna nie udowodni – może zostać podmienione na [OSOBA] czy [PESEL] albo zgłoszone użytkownikowi. Nigdy zablokowane. Ten podział jest wymuszony w systemie typów, nie w konfiguracji: detektor bez dowodu arytmetycznego nie ma technicznej możliwości wydania werdyktu „block”, nawet jeśli operator się pomyli w configu.

Dlaczego to takie ważne? Bo narzędzie kontrolne, które zatrzymuje pracę fałszywymi alarmami, kończy wyłączone – a narzędzie, które czyta i przechowuje korespondencję pracowników, kończy u prawnika. Stąd druga zasada: audyt bez treści. Zdarzenie do SIEM niesie typ danych, host docelowy, decyzję, skrót całego payloadu i urządzenie, które wykonało inferencję. Treści nie ma, bo w schemacie zdarzenia nie istnieje pole, które mogłoby ją pomieścić – łatwo to sprawdzić w docs/events.md. Monitoring jest przez to proporcjonalny i minimalizujący z konstrukcji, a nie z deklaracji.

I to jest moment, w którym polityka AI przestaje być papierem. Użytkownik dostaje ochronę przed nieświadomym wysłaniem – pracuje dalej, tylko wrażliwe fragmenty wychodzą zamaskowane. SOC dostaje telemetrię: kto próbował, jaki typ danych, dokąd, jaka decyzja – czyli dokładnie ten materiał, którego brakuje, gdy trzeba szybko ocenić, czy zdarzenie jest incydentem i co właściwie wyszło z sieci. A organizacja dostaje dowód, że polityka jest wykonywana technicznie, nie tylko podpisywana. Zakazy z segregatora zamieniają się w mechanizm kontrolny, który da się pokazać audytorowi.

Czego nie obiecujemy

Uczciwość wymaga listy ograniczeń. To proof-of-concept, nie produkt. Model NER jest pisany pod polski (po angielsku wyraźnie słabszy; warstwa sum kontrolnych działa w każdym języku). Maskowane są żądania, odpowiedzi są audytowane, ale nie przepisywane. Ochrona sekretów firmowych – nazw projektów, wiedzy produktowej – to mapa drogowa, dziś strażnik zna się na identyfikatorach i tożsamościach. Maskowanie potrafi obniżyć jakość odpowiedzi modelu; ten kompromis zostawiamy świadomie użytkownikowi. Wszystkie liczby pochodzą z jednej maszyny i jednej wersji sterowników.

Sprawdź na własnym sprzęcie

Wszystko powyżej wychodzi z jednego polecenia na paczce wydania – bez Rusta, Pythona i instalowania OpenVINO:

bash

./run.sh --power

Skrypt skompiluje i uruchomi prawdziwy model na każdym urządzeniu, które maszyna udostępnia, zmierzy energię i zbierze wyniki do jednego archiwum. Kod, pomiary i metodyka: github.com/GrzegorzOle/Sentin-NPU.