Automatizuj AI pipeline uz Github Actions [Brzi DIY]
Jedan sat rada senior MLOps inženjera košta minimalno 150 KM. Ako svakog vikenda ručno pokrećeš skripte, prebacuješ fajlove i čekaš da se model istrenira, ti bukvalno bacaš novac u vjetar. Tvoj laptop se grije, ventilator zuji kao da će poletjeti, a ti sjediš i čekaš. Zaboravi na to. Ovaj vodič ti pokazuje kako da natjeraš Github da radi prljavi posao za tebe dok ti spavaš, i to za nula maraka. Ako znaš kako se piše prva Python skripta, spreman si za ovaj poduhvat.
Alatnica: Šta ti zapravo treba osim kafe?
Prije nego što kreneš čukati kod, moraš shvatiti da automatizacija nije magija, nego logistika. Github Actions je tvoj digitalni šegrt koji živi u ‘oblaku’. On ne spava, ne griješi kod kopiranja i ne zaboravlja aktivirati virtuelno okruženje. Za ovaj DIY projekat ti trebaju tri stvari: Github nalog, osnovno poznavanje YAML sintakse i Python skripta koja zapravo nešto radi. Mnogi početnici misle da im treba skupi server. Lažu vas. Github ti daje besplatne minute na njihovim mašinama koje su sasvim dovoljno jake za manje modele i validaciju podataka. Kada osjetiš onaj specifičan miris prašine iz ventilatora dok ti procesor radi na 100%, sjeti se da Githubovi serveri nemaju taj problem—oni su tu da krvare umjesto tebe.
YAML labirint: Nemoj zaglaviti na uvlačenju redova
Pisanje workflow fajla je kao slaganje Lego kockica u mraku. Jedan razmak viška i sve pada u vodu. Tvoj fajl mora biti u folderu .github/workflows/. Ako ga staviš bilo gdje drugo, Github će ga ignorisati kao što ignoriraš reklame na YouTubeu. Prva stvar koju definišeš je ‘trigger’. Da li želiš da se trening pokrene čim gurneš kod na server (push) ili u tačno određeno vrijeme (cron)? Ja preferiram cron jer volim da me ujutru dočeka svjež izvještaj o tačnosti modela.
WARNING: Nikada, ali apsolutno nikada, nemoj upisivati svoje API ključeve ili lozinke direktno u YAML fajl. Github skeneri će ih pronaći, a botovi će ti isprazniti nalog prije nego što kažeš ‘AI’. Koristi ‘Secrets’ tab u postavkama repozitorija. Shvati ovo ozbiljno: 120v struje te može prodrmati, ali curenje privatnih ključeva ti može uništiti karijeru.
Nakon što postaviš okruženje, moraš instalirati zavisnosti. Tu se dešava većina grešaka. Koristi pip install -r requirements.txt. Ako zaboraviš jedan paket, workflow će ‘puknuti’ nakon 5 minuta rada, a ti ćeš samo dobiti crveni iksić u historiji. Frustrirajuće? Jeste. Ali je i dalje bolje nego da sam kucaš komande svaki put. 
Anatomija jednog kiksa: Zašto automatizacija propada?
Moja prva skripta za automatizaciju je radila savršeno tri dana. Četvrti dan, model je počeo da izbacuje smeće. Šta se desilo? Podaci su se promijenili, a ja nisam imao testove. Automatizacija bez validacije je kao da voziš auto bez kočnica—brzo ćeš stići, ali se nećeš dobro provesti. Ako ne naučiš kako da testiraš svoj ML model, tvoj pipeline će samo brže proizvoditi greške. Zamisli to ovako: ako ti se baza podataka zaprlja, tvoj automatizovani sistem će marljivo trenirati model na smeću. Šest mjeseci kasnije, tvoja aplikacija će davati potpuno sulude preporuke jer je ‘naučila’ pogrešne obrasce. To je tihi ubica projekata.
Da li mi stvarno treba Github Actions za male projekte?
Kratak odgovor: Da. Čak i ako tvoj model prepoznaje samo da li je na slici mačka ili pas, automatizacija te tjera na disciplinu. Tjera te da pišeš čist kod koji drugi (ili budući ti) mogu pročitati. Kao što kaže stari majstor iz moje ulice: ‘Ako ne možeš objasniti djetetu kako se nešto radi, ne znaš to ni ti.’ Github Actions je to dijete koje traži precizna uputstva. Ako preskočiš korak, on stane.
Kako izbjeći ‘Data Imbalance’ u automatskom modu?
Kada automatizuješ unos podataka, rizikuješ da ti jedna klasa preuzme dominaciju. To se dešava tiho, kao rđa na starom autu. Moraš ugraditi skriptu koja provjerava balans prije samog treninga. Ako vidiš da imaš 90% jedne klase, stopiraj pipeline. Nemoj trošiti resurse na model koji će biti pristrasan. Sredi to na vrijeme i popravi data imbalance prije nego što postane problem koji zahtijeva dane debugovanja.
Fizika resursa: Zašto se ‘runner’ ruši?
Github ‘runner’ ima svoja ograničenja. Imaš oko 7GB RAM-a na raspolaganju. Ako pokušaš učitati dataset od 50GB, proces će biti ‘ubijen’ od strane operativnog sistema (OOM – Out Of Memory). To je fizika, nema tu pregovaranja. Voda se širi kad se smrzne i puca cijevi; tvoj dataset širi RAM i puca pipeline. Rješenje je u ‘batch’ procesiranju. Umjesto da guraš sve odjednom, razbij podatke. Koristi pravilno splitovanje podataka kako bi osigurao da tvoj pipeline teče glatko, bez zapinjanja.
Zaključak: Postavi i zaboravi (skoro)
Kada jednom postaviš ovaj sistem, osjećaj je nevjerovatan. Dobiješ email da je trening završen, pogledaš rezultate na mobitelu i nastaviš sa svojim danom. To je razlika između amatera koji se bori sa alatima i majstora koji vlada njima. Automatizacija ti daje slobodu da se baviš onim što je bitno—arhitekturom modela i rješavanjem problema, a ne dosadnim kucanjem python train.py po hiljaditi put. Kreni polako, napravi prvi YAML, nek pukne par puta, ispravi uvlačenje i uživaj u tišini svog laptopa dok Github Actions odrađuje težak posao za tebe.

![Automatizuj AI pipeline uz Github Actions [Brzi DIY]](https://aiskola.org/wp-content/uploads/2026/03/Automatizuj-AI-pipeline-uz-Github-Actions-Brzi-DIY.jpeg)


![Spasi prirodu uz AI: Prati zagađenje u svom naselju [DIY]](https://aiskola.org/wp-content/uploads/2026/02/Spasi-prirodu-uz-AI-Prati-zagadjenje-u-svom-naselju-DIY.jpeg)