I den kontext som WAF Attack Score, som är Cloudflares maskininlärningsbaserade lager byggd ovanpå deras Web Application Firewall (WAF), har funktionens popularitet drivit behovet av prestandaförbättringar. Funktionens mål är att komplettera WAF och upptäcka attackövergångar som inte har upptäckts tidigare, att catcha zero-day-vulnerabilities och att öka kundskyddet mot framväxande och okända hot.
För att optimera prestandan för WAF ML-modellen vidtogs flera steg. Först optimerades förbehandlingsfasen genom att använda Aho-Corasick DFA för att ersätta hash-kartsläges, vilket minskade latensen med 47,84% till 1,64x. Sedan användes en match-baserad metod, vilket ytterligare minskade latensen med 53,45% till 2,15x. Därefter utvecklades en ny bokstäver-ersättning-implementering, vilket dubblade förbehandlingshastigheten och gjorde den fyra till fem gånger snabbare än den ursprungliga versionen.
Efter det implementerades en grenlös ngram-sökning, vilket minskade latensen med 91,33% till 11,54x. Detta uppnåddes genom att förberäkna offset-söktabeller och använda dem för att ersätta jämförelseoperationer med direkt minnesåtkomst, vilket är mycket snabbare och inte involverar grenar.
Slutligen optimerades modellinferensen genom att aktivera SIMD-matris-multiplication och använda XNNPack, vilket minskade latensen med 77,17% till 4,38x. Dessutom implementerades en LRU-cache för att hoppa över redundant exekvering och ytterligare minska latensen. Sammanlagt minskade WAF ML-exekveringstiden med cirka 81,90%, från 1519 till 275 mikrosekunder, eller 5,5 gånger snabbare.
blog.cloudflare.com
Making WAF ML models go brrr: saving decades of processing time
Create attached notes ...