Wnioskowanie

Etap użycia wytrenowanego modelu do generowania przewidywań lub wyników na nowych danych. To faza „działania” modelu po treningu.

Wnioskowanie (ang. inference) to etap, w którym wytrenowany model uczenia maszynowego dostaje nowe, nigdy wcześniej niewidziane dane i zwraca na ich podstawie wynik — predykcję, klasę, liczbę albo wygenerowany tekst. Mówiąc prościej: trening to nauka, a wnioskowanie to egzamin, który model zdaje już w realnym świecie. Model nie uczy się tu niczego nowego — wagi są zamrożone, a Ty po prostu „pytasz”, a on „odpowiada”.

Jak to działa i do czego służy

Podczas treningu model wielokrotnie przepuszcza dane przez sieć i koryguje swoje parametry (wagi). Wnioskowanie pomija część korygującą: dane lecą tylko „do przodu” (forward pass), a wynikiem jest gotowa odpowiedź. Dlatego wnioskowanie jest tańsze obliczeniowo niż trening, ale w produkcji to ono generuje 99% kosztów — bo trenujesz raz, a wnioskujesz miliony razy dziennie.

To właśnie faza, którą widzi użytkownik. Każde zapytanie do ChatGPT, każde wykrycie spamu w skrzynce, każda rekomendacja filmu — to wnioskowanie. Liczą się tu inne rzeczy niż przy treningu: latencja (jak szybko przyjdzie odpowiedź) i throughput (ile zapytań obsłużysz na sekundę).

Przykład z praktyki

Załóżmy, że masz model klasyfikujący zdjęcia. Trening robisz w PyTorchu, ale przed wnioskowaniem warto przełączyć model w tryb ewaluacji i wyłączyć liczenie gradientów:

  • model.eval() — wyłącza warstwy typu Dropout i ustawia BatchNorm w tryb inferencji,
  • with torch.no_grad(): — nie liczy gradientów, więc oszczędzasz pamięć i czas.

W produkcji model często eksportuje się do formatu ONNX albo serwuje przez dedykowane narzędzia jak NVIDIA Triton, vLLM (dla LLM-ów) czy TensorFlow Serving — wszystkie zoptymalizowane pod jeden cel: szybkie wnioskowanie pod obciążeniem.

Częste błędy i mity

  • Zapomniany model.eval() — model dalej losowo „gubi” neurony przez Dropout, więc te same dane dają różne wyniki. Klasyk debugowania o 23:00.
  • „Model się uczy w trakcie wnioskowania” — nie. Wagi są zamrożone. To, co wygląda jak „uczenie się” w chatbocie, to kontekst w promcie, nie zmiana modelu.
  • Mylenie kosztu treningu z kosztem wnioskowania — duży model można wytrenować raz, ale jeśli wnioskowanie jest wolne i drogie, projekt nie spnie się finansowo.

Pojęcia powiązane

Warto znać: trening (training), forward pass, latencja i throughput, kwantyzacja (przyspiesza wnioskowanie), batch inference vs. real-time, oraz edge inference (wnioskowanie na urządzeniu, np. w telefonie). Z tym ostatnim spotkasz się przy modelach na mikrokontrolery i aplikacje mobilne.