Naším cílem bylo zdokonalit detekci podvodných vzorců, které jsou specifické pro jednotlivé podniky, produkty či země, a zároveň minimalizovat chybná označení legitimních plateb. I přes objem trénovacích dat čítající přibližně 800 milionů transakcí se ukázalo, že náš model pro prevenci podvodů využíval pouze zlomek dostupné historie. Většina plateb bez hlášeného podvodu byla záměrně vynechána pro udržení efektivity tréninku.
Předpokládali jsme, že komplexnější historická data by modelu pomohla lépe rozlišit podvody od neobvyklých, ale legitimních aktivit. Trénování na větším objemu dat však představovalo výzvu pro naši infrastrukturu i vývoj modelů. Jediný průchod daty mohl trvat i den. Navíc, nejnovější platby, z nichž jsme se potřebovali učit, často trpěly neúplnými zprávami o podvodech, což ztěžovalo hodnocení pokroku modelu. Řešení těchto otázek vyžadovalo intenzivnější experimentování, přičemž každý experiment vyžadoval značnou práci inženýrů strojového učení na přípravě dat, monitoringu tréninku a ladění chyb.
Záměr učit se z širší sítě transakcí si vyžádal zrychlení tréninku a hlubší porozumění zpožděným hlášením podvodů. Vyvinuli jsme nástroje, které umožňují automatizovaným agentům zkoumat přehlédnuté podvody a provádět experimenty. Tyto agenti využívali vysvětlení modelu a výsledky dřívějších šetření k testování změn. Díky škálování tréninkových přístupů a automatizaci experimentálního cyklu jsme tak dokázali zlepšit úspěšnost našeho modelu o více než 8 %.
Pro každou týdenní dávku platebních dat náš tréninkový systém uchovával všechny známé podvodné platby a náhodně vybíral podmnožinu zbývajících. Toto podvzorkování urychlovalo pravidelné přeškolování. Trénink na větší části sítě by modelu poskytl více příkladů méně běžných aktivit a více dat pro učení reprezentací entit, jako jsou platební karty nebo obchodníci.
V rámci prvního experimentu jsme odstranili podvzorkování a zahrnuli všechny relevantní platby z devítiměsíčního období. Tím se tréninková sada rozšířila z přibližně 800 milionů na 11 miliard transakcí. Výsledky byly povzbudivé: po prvním průchodu daty se model již blížil výkonu stávajícího řešení a po třetím průchodu ho v počátečním hodnocení překonal.
Každý průchod, neboli epocha, trval přibližně 24 hodin. Naším cílem bylo provádět několik experimentů týdně a směřovat k testování nových nápadů denně. Při této rychlosti vyžadovalo i tříaepochové srovnání zhruba tři dny tréninku. Testování nové funkce nebo konfigurace znamenalo čekání dnů na výsledek, což značně zpomalovalo průzkum nových myšlenek.
Optimalizovali jsme procesy tak, že jsme zkrátili každou epochu z 24 hodin na 4,8 hodiny (tedy o 80 %), při zachování datové sady o 11 miliardách příkladů. Udržení GPU plně vytížených vyžadovalo sladění načítání dat, výpočtů a komunikace. Zrychlení jedné složky vždy odhalilo limity ostatních.
Náš tréninkový systém stahoval data z objektového úložiště na disk, odkud je následně četly datové loadery. Při tomto měřítku nebylo možné datovou sadu cachovat v paměti, takže propustnost disku omezovala rychlost dodávání dat GPU. Změnili jsme datové loadery tak, aby streamovaly data přímo z úložiště do paměti, což zkrátilo dobu na epochu na polovinu, tedy na 12 hodin.
Tensorové operace v tréninkovém kroku modelu byly kompilovány s využitím moderních nástrojů pro optimalizaci a doladěna byla také konfigurace kompilátoru. K urychlení výpočtů jsme rovněž použili aritmetiku s nižší přesností. Architektura modelu obsahuje paralelní větve; jejich souběžné provádění spolu se zlepšením přenosů mezi CPU a GPU snížilo čas na sedm hodin.
Využití paměti omezovalo množství dat, která jsme mohli připravit před GPU. Snížení špičkového využití tréninkové paměti z 1,3 TB na 500 GB nám umožnilo zvýšit počet pracovníků pro načítání dat na GPU a přednačítat více dat. Komprese gradientů do formátu BF16 během komunikace mezi GPU, optimalizace velikosti komunikačního bloku a použití asynchronních přenosů z CPU na GPU nakonec zkrátily dobu epochy na 4,8 hodiny.
Větší datová sada vedla také k širší vrstvě vkládání (embedding layer). Model se rozrostl na přibližně 30 milionů parametrů, což je trojnásobek jeho předchozí velikosti, aniž by se zvýšila latence při jeho použití v zátěžových testech nebo v produkčním prostředí. Nyní jsme mohli trénovat v požadovaném měřítku a přitom stále rychle rozhodovat, aby byly splněny naše požadavky na latenci.
Bohužel, větší model zpočátku vypadal lépe, ale tento výsledek se změnil, jakmile dorazilo více hlášení o podvodech.

Potřebujete pomoc s webem nebo aplikací?
Ozvěte se mi — do 24 hodin se Vám ozvu zpět s návrhem dalšího postupu.
Nový model se v offline testech a raných produkčních experimentech jevil jako lepší. S příchodem dalších hlášení o podvodech však jeho měřený výkon klesl pod úroveň předchozího modelu, což nás donutilo vrátit se k modelu trénovanému s původní strategií vzorkování.
U platby provedené s ukradenou kartou může trvat týdny, než si držitel karty všimne podvodu a nahlásí ho své bance. Jakmile platforma obdrží hlášení o podvodné transakci, získáváme štítek „podvod“ pro platbu, kterou jsme ohodnotili týdny dříve. Štítky v našich tréninkových datových sadách byly přiřazovány na základě dostupných hlášení podvodů v daném okamžiku. Nejnovější týdny tréninkových dat proto obsahovaly nejméně zralé štítky, neboť na doručení všech hlášení ještě neuplynula dostatečná doba.
Museli jsme najít rovnováhu mezi rychlostí, s jakou se model učí nové podvodné vzory, a spolehlivostí těchto štítků. Nedávné platby pomáhaly modelu držet krok s útočníky, ale zahrnutí příliš mnoha z nich znamenalo trénink na podvodech, které byly nesprávně označeny jako legitimní. Čekání na hlášení nám poskytlo spolehlivější štítky, avšak za cenu pozdějšího učení se novým typům chování.
Tok hlášení o podvodech je pozvolný. Platby, které se v nedávné tréninkové nebo vyhodnocovací datové sadě jeví jako legitimní, mohou získat štítky „podvod“ až o několik týdnů později. Soubor plateb, které jsme podvzorkovali, obsahoval jak legitimní platby, tak i podvody, které ještě nebyly nahlášeny. Ponechání pouze zlomku tohoto souboru také udrželo většinu chybně označených podvodů mimo trénink.
Když jsme se pokusili odstranit podvzorkování, přidali jsme sice více legitimních příkladů, jak bylo zamýšleno, ale také zhruba 20krát více podvodných příkladů označených jako legitimní. Počet známých podvodných příkladů zůstal stejný, protože ty jsme již všechny zachovávali. Model následně viděl mnohem více příkladů, které ho učily, že podvodné vzory hlášené se zpožděním jsou legitimní, zejména v nejnovějších týdnech tréninku. Stal se horším v detekci podvodů, které by byly nahlášeny až o týdny později. Pochopení takovýchto selhání vyžadovalo opakované experimenty s daty a tréninkem modelu. Rychlejší trénink tyto experimenty usnadnil, ale každý z nich stále vyžadoval značné inženýrské úsilí od hypotézy k výsledku.
Každý experiment se řídil známým cyklem v inženýrství strojového učení: prozkoumat selhání, formulovat hypotézu, implementovat změnu a vyhodnotit ji. Příprava tréninkových dat, monitorování úloh a ladění chyb zabíraly čas v každém experimentu.
Vyvinuli jsme systém nazvaný Agentic MLE (zkratka pro Machine Learning Engineer), aby převzal větší část této práce. Jedná se o sadu nástrojů a instrukcí, které umožňují agentům AI fungovat v existující infrastruktuře strojového učení, a provádět experiment od nápadu až po výsledek: prozkoumávat data, implementovat funkce, počítat jejich historické hodnoty, trénovat model a vyhodnocovat ho oproti základnímu stavu.
Agenti pracují napříč celým životním cyklem experimentu. Inženýři kontrolují hypotézy a výsledky a rozhodují, co se nasadí. Experimenty s funkcemi jsou budovány na naší platformě pro funkce, která počítá historické tréninkové funkce a obsluhuje jejich online ekvivalenty ze stejných definic.
Bylo nutné zpřístupnit operační znalosti agentům. Potřebují mít správné datové sady, klíče entit, časová razítka a pravidla vzorkování pro experimenty s funkcemi, být schopni reprodukovat znalosti v okamžiku plateb pro historické doplňování funkcí a diagnostikovat selhané distribuované tréninkové úlohy před jejich opětovným spuštěním. Tyto znalosti jsme uspořádali do opakovaně použitelných procedur pro platformu a do dokumentace specifické pro model, kterou agent načítá pro daný úkol.
Systém Agentic MLE využívá nástroje pro dotazování dat, inspekci provádění pracovních toků a čtení výsledků experimentů. Píše kód pro kandidátskou funkci a spouští úlohy potřebné k jejímu testování. Inženýři kontrolují navržený experiment a jeho výsledky v definovaných bodech. Během běhu kontroluje selhání, správné konfigurace a opakovaně zkouší selhání, podobně jako by to udělal člověk.
Tyto nástroje jsme nasadili při řešení podvodného útoku, kdy model chybně přiřazoval nízká riziková skóre podvodným platbám. Agentům jsme poskytli data o útoku a výsledky z dřívějších experimentů a šetření chování modelu, včetně naší práce na škálování. Agent využil vysvětlení modelu k identifikaci, které funkce ovlivňovaly skóre nahoru nebo dolů u přehlédnutých podvodů, což nám poskytlo testovatelné hypotézy. Mohli jsme odstranit funkce, které transakce činily bezpečnými, nebo explicitněji definovat kombinace podezřelých aktivit. Lidští experti pomohli prioritizovat 38 nápadů, poté agenti implementovali změny, trénovali modely, ladili selhané běhy a vyhodnocovali výsledky.
Několik agentů navrhlo experimenty se stochastickým průměrováním vah (Stochastic Weight Averaging – SWA), které průměruje snímky parametrů z tréninkového běhu do jednoho modelu. Model SWA již používal, ale průměrování začínalo až v druhé polovině běhu. Tréninková ztráta klesala, zatímco validační ztráta rostla, což dalo agentům důvod k testování, zda by zahrnutí dřívějších snímků mohlo snížit přeučení.
Předčasné zastavení tréninku zlepšilo celkové řazení, ale snížilo recall v našem úzkém rozsahu falešně pozitivních výsledků. Nejlepší výsledky kombinovaly průměrování od epochy 0 a zkrácení tréninkového běhu na osm epoch.
V kontrolovaném srovnání nová konfigurace zlepšila recall o více než 8 %, což se pro obchodníky promítá do odhadovaných desítek milionů dolarů ročně v dodatečné prevenci podvodů.
Z každého experimentu se učíme, zejména z těch, které nevedou k produkčnímu nasazení, a tyto poznatky využíváme ke zlepšování našich modelů a systémů. Vylepšení infrastruktury, která urychlila náš trénink, nám umožnila rychle testovat širokou škálu hypotéz prostřednictvím systému Agentic MLE. Naším cílem je, aby agenti prováděli delší šetření mezi kontrolami, zatímco inženýři budou stanovovat priority, vyhodnocovat důkazy a rozhodovat o tom, co se uvolní.
