Dette er det vi har brukt de siste 9 månedene: få MoEs-treningen til å gå ~2 ganger raskere og ~2 ganger mindre hukommelse! Høydepunkter: - MoE tar vanligvis mest tid og minne i moderne modeller. Det viser seg at man matematisk kan omskrive MoE-bakoverpasset for å redusere aktiveringsminnet du må lagre i forhjulsoperasjonen med ~2x, noe som gir de samme gradientene uten ekstra matmul-omregning. Jeg liker virkelig dette resultatet, da det kombinerer både algoritmiske og systeminnsikter. - Analyse av flaskehalser i MoE-laget fører til en naturlig optimaliseringsstragegi: reduser minnelesinger/skrivinger så mye som mulig! Å samle inn input for forhjulsdrift og output grad for bakhjulsdrift kan noen ganger ta like lang tid som de grupperte GEMM-ene. Vi fusjonerer gather med gruppert GEMM + overlapp, minnetilgang og beregning for å få hele laget til å gå ~2 ganger raskere. - Å beregne top-k for ekspertruting kan ta overraskende lang tid, ~15-20 % av hele MoE-laget! Standard top-k impl bruker radix top-k algoritme, flott for store k, men suboptimale for små k. Vi skrev om top-k med bitonisk top-k-algoritme, og det er noen ganger 20-30 ganger raskere enn pytorchs top-k! Alle hovedkjernene er skrevet i Cute-DSL, så de bør være enkle å utvide (og installere :D). Hopper-kjernene er ute, Blackwell-kjernene er nesten klare. MoE-modeller pleide å være dobbelt så maskinvareeffektive å trene på, forhåpentligvis vil Sonic-MOE endre på det.