---
title: "Jak zaczynałem"
author: "Jakub Ćwirlej"
id: how-i-started
language: pl
url: "https://jakubcwirlej.com/pl/articles/how-i-started.md"
page: "https://jakubcwirlej.com/pl/ai-dev/"
translations:
  en: "https://jakubcwirlej.com/articles/how-i-started.md"
  fr: "https://jakubcwirlej.com/fr/articles/how-i-started.md"
  nl: "https://jakubcwirlej.com/nl/articles/how-i-started.md"
updated: 2026-10-14
words: 1309
summary: "Autor opowiada, jak budowa OrsonAI, zestawu narzędzi AI do własnej pracy dziennikarskiej, zaprowadziła go od vibe codingu do badań nad halucynacjami modeli językowych i do trenowania własnych modeli. Opisuje chłodne przyjęcie aplikacji w branży, swoje badania aktywacji bramek SwiGLU i porażkę pierwszego modelu opartego na własnej architekturze. Dziś trenuje EUGEN 160M, mały model wyspecjalizowany w kodzie, który można wypróbować w terminalu na stronie."
summary_type: editorial
---

# Jak zaczynałem

Jakub Ćwirlej · język tekstu: PL · 1309 słów

## Streszczenie (redakcyjne)

Autor opowiada, jak budowa OrsonAI, zestawu narzędzi AI do własnej pracy dziennikarskiej, zaprowadziła go od vibe codingu do badań nad halucynacjami modeli językowych i do trenowania własnych modeli. Opisuje chłodne przyjęcie aplikacji w branży, swoje badania aktywacji bramek SwiGLU i porażkę pierwszego modelu opartego na własnej architekturze. Dziś trenuje EUGEN 160M, mały model wyspecjalizowany w kodzie, który można wypróbować w terminalu na stronie.

## Najważniejsze punkty (redakcyjne)

- OrsonAI oferowało transkrypcję wywiadów na żywo, tryb edycji pozwalający konsultować z chatbotem wybrane fragmenty oraz certyfikaty ludzkiego autorstwa zapisywane w publicznym rejestrze Hedera Hashgraph.
- Znalezione sygnały GSI opisuje dziś raczej jako sygnały proxy wiedzy niż „świadomość epistemiczną” modelu; zaobserwował, że konfabulacja jest w dużej mierze procesem dwuetapowym.
- Postępy EUGEN 160M opierają się na ścisłym monitorowaniu, celowo dobieranych danych treningowych, danych syntetycznych STaR i LEMA oraz przykładach tłumaczeń z Pythona na C++, Javę i Rusta.
- Z pomocą agenta AI do kodowania zbudował własny kernel w Tritonie do trenowania modelu rzadkiego: w modelu ~300 mln parametrów wariant rzadki trenował się 1,23× szybciej od gęstego, a kolejne optymalizacje kernela podniosły przepustowość o dalsze 36%.
- Porażkę pierwszego modelu przypisuje problemowi filozoficznemu, przywołując definicję prawdy Tarskiego i twierdzenia Gödla.

## Pełny tekst (słowa autora)

…Nie posiadam żadnego formalnego wykształcenia w zakresie programowania i szkolenia LLM.

Tworzeniem aplikacji i treningiem AI zająłem się przez kompletnie dziwny zbieg przypadków, który z dzisiejszej perspektywy wydaje mi się jednak mieć sporo sensu. I, jak sądzę, mówi to coś ważnego o naszych czasach. Nie planowałem tego, nie sądziłem, że kiedykolwiek mogę mieć z technologią więcej wspólnego niż przeciętny użytkownik iPhone'a. Przez lata moim jedynym oknem na świat Big Tech był podcast Hard Fork. Pozdrowienia dla Caseya i Kevina :)

Wszystko zaczęło się od vibecodingu i aplikacji OrsonAI. Bawiąc się sztuczną inteligencją, zacząłem tworzyć narzędzia, które mogłyby być mi pomocne w mojej codziennej pracy dziennikarskiej. Zapisywanie wywiadów w formie tekstu w trakcie nagrywania i importowanie ich do edytora, czy tryb edycji pozwalający konsultować z czatem wybrane fragmenty tekstu bez konieczności nawigacji między oknami i przeklejania całego kontekstu, to na tamten moment były naprawdę fajne narzędzia, które wydatnie przyspieszały moją pracę.

Z czasem zacząłem myśleć o tym jak o projekcie, jak o czymś, co mogłoby służyć też innym. Idea była prosta: wykorzystać udogodnienia, które pomagają mi zaoszczędzić czas, i stworzyć produkt dla osób napotykających te same problemy. Poświęciłem dużo czasu na stworzenie interfejsu i mechanizmów, które mogłyby zapewnić bezpieczne AI dla redakcji – takie, które pomaga dziennikarzowi, ale go nie wyręcza. Zaprojektowałem nawet system przyznający certyfikaty ludzkiego autorstwa tekstu, publikowany na publicznym ledgerze Hedery Hashgraph. Niezmienny dowód o wartości świadectwa sądowego, wskazujący, jak powstawał tekst i jaki był udział człowieka przy jego tworzeniu.

- [Tutaj znajdziesz opis technologii HDK](https://jakubcwirlej.com/pl/articles/hdk-tech.md)
- [Tutaj możesz pobrać darmową bibliotekę HDK](https://jakubcwirlej.com/files/hdk/hdk-audit-0.1.3.zip)
- [HDK na Hugging Face](https://huggingface.co/JakCwi/hdk-audit)

Spotkało mnie jednak spore rozczarowanie. Przyjęcie przez osoby z branży, którym pokazywałem aplikację, było więcej niż chłodne. Pytanie, które powracało na koniec każdej prezentacji, boleśnie uświadamiało mi, jak bardzo się myliłem: „Czemu ktoś miałby płacić za twoją aplikację, skoro mamy darmowego ChatGPT?”. Kwestie certyfikatu ludzkiego autorstwa, ochrony danych czy nawet znacznego usprawnienia pracy ponad to, co oferował zwykły chatbot, nie były istotne. Słyszałem to od ludzi podkreślających na co dzień wagę rzetelnego dziennikarstwa.

Praca nad aplikacją i systemem agentycznego AI, który będzie wystarczająco niezawodny, żeby mógł służyć w redakcjach informacyjnych, popchnęła mnie jednak w zupełnie nowym kierunku. Starając się lepiej zrozumieć, skąd biorą się halucynacje modeli językowych, zacząłem czytać prace naukowe publikowane na arXiv, a w końcu zaprojektowałem i przeprowadziłem serię badań związanych z aktywacją bramek SwiGLU na kilku otwartych modelach językowych. Wnioski z tych badań opisałem w kilku pracach, które zamieściłem na ResearchGate. Choć z dzisiejszej perspektywy niektóre tezy tamtych prac wydają mi się megalomańskie, a sam tekst wymagałby pewnie poprawy i bardziej naukowego słownictwa, nie usuwam ich – choćby ze względu na uczciwość badawczą.

Dziś, mając więcej pokory zdobytej na poligonie szkolenia modeli językowych, po wielu nieudanych eksperymentach i rozczarowaniach, pisząc o znalezionych sygnałach GSI, mówiłbym raczej o sygnałach proxy wiedzy niż o "epistemicznej świadomości" modelu. Z drugiej strony, na podstawie twardych danych udało mi się zaobserwować, że konfabulacja to w dużej mierze proces dwuetapowy, w którym model – nie mając oparcia w faktach – niemal zawsze wybiera spójność formy kosztem prawdy. To był dla mnie osobiście najciekawszy moment tych eksperymentów: chwila, w której moje dawne zainteresowania filozofią i epistemologią znalazły niespodziewane, w pełni mierzalne odzwierciedlenie w architekturze transformerów. Osobną kwestią pozostaje jednak codzienna użyteczność tych sygnałów w warunkach produkcyjnych. Porównanie ich skuteczności przy wykrywaniu halucynacji z innymi wykorzystywanymi metodami wymagałoby z pewnością dodatkowych badań.

To zadanie pochłonęło mnie bez reszty. Być może jest to trochę zgodne z moim charakterem – lubię angażować się w zajęcia, które stanowią wyzwanie, ale też pozwalają mi nauczyć się czegoś o otaczającym mnie świecie i lepiej go zrozumieć. Zresztą, zanim zająłem się dziennikarstwem, studiowałem filozofię, szczególnie interesując się filozofią nauki i epistemologią.

- [Tutaj znajdziesz esej podsumowujący niektóre moje przemyślenia](https://www.researchgate.net/publication/397730862)

Szkolenie mojego własnego modelu skończyło się totalną katastrofą. Popełniłem prawdopodobnie wszystkie możliwe błędy, i to mimo nawyku do solidnego researchu oraz pochłonięcia olbrzymiej ilości fachowej literatury. Pierwsze efekty wydawały się obiecujące, ale dopiero po czasie zrozumiałem, że były one w dużej mierze zasługą regularyzacji szumem. Przewaga modelu w testach ablacyjnych nie opłacała się w zestawieniu z dodatkowym narzutem obliczeniowym (compute) związanym z obliczaniem Gini aktywacji bramek. Doszły do tego również wyzwania czysto techniczne związane z treningiem. Moje modyfikacje wyjęte spod normalizacji hamowały efektywne uczenie, natomiast zastosowanie normalizacji powodowało ich spłaszczenie, czyniąc z modelu standardowy, ale droższy w treningu transformer. Szczegóły architektury udostępniam do pobrania tutaj – być może ktoś znajdzie w tym użyteczny materiał do nauki na cudzych błędach.

Rozwiązaniem, które mimo wszystko moim zdaniem zasługuje na uwagę, jest bramka M2. Dzięki afinicznej kotwicy pozwala ona zachować działanie w oparciu o funkcję sigmoid bez ryzyka ściągnięcia w dół przez leniwy optymalizator szukający łatwej drogi do obniżenia straty treningowej. U mnie ta bramka, uczona na sygnałach Gini aktywacji, miała za zadanie ciąć szumy przy generacji przez model. Jednak wyjęcie sygnału spod normalizacji – jak wspomniałem wcześniej – prowadziło do modelu o przesadnym rozkładzie pewności; sprawniejszego logicznie, jednak de facto gorzej uczącego się faktów. Być może to rozwiązanie mogłoby przydać się w innych modelach do bramkowania innych elementów i pomóc w procesie treningowym.

Wszystkie moje porażki związane z trenowaniem modelu według własnej architektury uznałem ostatecznie za kapitał, którego nie należy marnować. Dziś szkolę swój własny, mały model EUGEN 160M, który specjalizuje się w kodzie. Porównując jego dotychczasowe wyniki benchmarkowe, jestem ostrożnym optymistą i zakładam, że nie będzie to stracony czas. Zdecydowałem się na szkolenie modelu specjalizującego się w językach backendowych, ponieważ w przypadku tego typu architektur łatwiej jest monitorować postępy, a sam model może być użytecznym narzędziem autouzupełniania (autocomplete) do wykorzystania w inferencji na zwykłym CPU. Model można przetestować w specjalnie przygotowanym terminalu na mojej stronie oraz porównać go z innymi otwartymi rozwiązaniami o podobnych rozmiarach.

- [Tutaj możesz przetestować model Eugen 160M](https://jakubcwirlej.com/pl/ai-dev/#terminal)

Dotychczasowe wyniki to przede wszystkim zasługa rygorystycznego śledzenia postępów i błędów popełnianych przez model w czasie generacji. Dzięki temu byłem w stanie na bieżąco interweniować, dodając dane treningowe wzmacniające model tam, gdzie pokazywał słabości. Stosowałem też regularnie techniki STaR i LEMA, tworząc dane syntetyczne na podstawie tego, co wygenerował sam model, oraz dane translacyjne uczące model logiki kodu poprzez pokazywanie mu przykładów tłumaczeń między Pythonem a C++, Javą i Rustem. Wszystkie te materiały stanowią obecnie około 0,35% całego zbioru, a ich udział będzie stopniowo zwiększany w miarę postępów treningu.

Praca nad szkoleniem modelu sprawia mi wiele frajdy i – podobnie jak wcześniej dziennikarstwo – daje mi poczucie, że robię coś ważnego; coś, co pozwala mi lepiej uchwycić przemiany w świecie, który mnie otacza. Nie stworzę sam złożonego kodu w C++ od zera, to fakt, ale staram się zrozumieć logikę procesów. W ten sposób odnoszę drobne sukcesy, które pozwalają mi posuwać się naprzód w mojej pracy. Tak – przy pomocy kodującego agenta AI stworzyłem własny kernel w Tritonie, który pozwala trenować rzadki model, poprawiając TPS (Tokens Per Second) o 23% względem modelu gęstego; kolejne optymalizacje kernela dały dalsze 36%. Zamierzam to rozwiązanie wykorzystać przy szkoleniu kolejnego, nieco większego modelu.

- [Kernel możesz pobrać tutaj](https://jakubcwirlej.com/files/eugen-sparse.zip)
- [Kernel na Hugging Face](https://huggingface.co/JakCwi/eugen-sparse)

A wracając do modelu, od którego wszystko się zaczęło... Dziś widzę, że moim największym błędem nie była naiwność inżynieryjna. Ten model po prostu nie miał prawa działać tak, jak zakładałem. Problem nie był technologiczny, lecz czysto filozoficzny. I jako ktoś, kto studiował filozofię, powinienem był to wyłapać na samym początku, mając w pamięci definicję prawdy Tarskiego i twierdzenia Gödla. Zgodnie z nimi żaden dostatecznie złożony system nie potrafi w pełni dowieść własnej spójności, ani zdefiniować prawdy wyłącznie z poziomu samego siebie. Próba zmuszenia modelu do analizowania, oceny i korygowania swoich własnych stanów wewnętrznych w czasie rzeczywistym zamykała go w strukturalnej pętli, z której – bez metapoziomu i zewnętrznego punktu odniesienia – po prostu nie było wyjścia.

Kiedy zaczynałem tę przygodę, chciałem po prostu stworzyć narzędzie ułatwiające spisywanie dziennikarskich wywiadów. Bardzo szybko okazało się jednak, że wejście w świat sztucznej inteligencji to prawdziwy skok do króliczej nory z „Alicji w Krainie Czarów” – im głębiej schodzisz, tym bardziej wszystko staje się złożone, wielowarstwowe i fascynujące. Moja pierwsza aplikacja może nie zrewolucjonizowała rynku mediów, ale ten lot w dół nory doprowadził mnie do miejsca, w którym z powodzeniem trenuję własną architekturę. Przeszedłem długą drogę od biernego słuchacza technologicznych podcastów do człowieka, który fizycznie kształtuje parametry modeli i rozumie, co dzieje się wewnątrz.

---

Jakub Ćwirlej — Dziennikarz, który buduje z AI · na stronie: https://jakubcwirlej.com/pl/ai-dev/
Pełny kontekst: https://jakubcwirlej.com/context/pl.md · https://jakubcwirlej.com/llms.txt
