Spracovanie Mini-Batch ponúka niekoľko výhod oproti spracovaniu v plnom rozsahu, najmä pri používaní rámcov, ako je Jax pre numerické výpočty a úlohy strojového učenia. Tu je niekoľko kľúčových výhod:
1. Účinnosť pamäte: Mini-šartové spracovanie vyžaduje menej pamäte v porovnaní s plným dávkovaním. Dôvodom je skutočnosť, že iba časť súboru údajov sa v ktoromkoľvek danom čase načítava do pamäte, takže je možné spracovať veľké súbory údajov, ktoré sa inak nebudú zmestiť do pamäte [3] [4].
2. Rýchlejšie aktualizácie gradientu: Mini-šarže umožňujú častejšie aktualizácie parametrov modelu. Dôvodom je skutočnosť, že gradienty sa vypočítavajú a aktualizujú po každej mini-šarži, a nie čakanie na spracovanie celého súboru údajov. To vedie k rýchlejšej konvergencii v mnohých prípadoch [3] [4].
3. Vstrekovanie hluku a vyhýbanie sa sedlovým bodom: Mini-šartové spracovanie zavádza do aktualizácií gradientu hluk, čo môže pomôcť vyhnúť sa miestnym minimom alebo sedlovým bodom počas optimalizácie. Tento hluk môže viesť k robustnejšej konvergencii v porovnaní s deterministickými aktualizáciami spracovania plného dávkovania [3] [4].
4. Flexibilita a škálovateľnosť: Mini-šarže sú obzvlášť užitočné pri riešení veľkých súborov údajov alebo pri obmedzení výpočtových zdrojov. Umožňujú paralelné spracovanie a môžu sa ľahko distribuovať na viacerých GPU alebo strojoch, čím sa zvyšuje škálovateľnosť [2] [4].
5. Spracovanie v reálnom čase alebo takmer v reálnom čase: Aj keď nie je také okamžité ako spracovanie toku, spracovanie mini-šarží môže poskytnúť výsledky v takmer reálnom čase, čo je vhodné pre aplikácie, kde sú včasné poznatky rozhodujúce, ale nie nevyhnutne okamžité [2] .
V Jaxe je možné využívať mini-šarže efektívne spravované pomocou nástrojov ako `vmap`, ktoré umožňujú aplikovanie funkcií v rámci dávok údajov bez potreby explicitných slučiek alebo manipulácie s dávkovými rozmermi. Toto zjednodušuje kód a využíva optimalizácie JAX na paralelné vykonávanie hardvérových akcelerátorov ako GPU a TPU [1] [9].
Citácie:[1] https://apxml.com/courses/getting-started-with-jax/chapter-4-ektorization-with-jax/batch-processing
[2] https://www.upsolver.com/blog/batch-pream-a-cheat-sheet
[3] https://datascience.stackexchange.com/questions/16807/why-mini-batch-saze-is-better---one-one-batch-with-alling-all-training-data
[4] https://datascience.stackexchange.com/questions/73656/batch-gradient-descent-vs-mini-batch-in-deep-learning
[5] https://dinocausevic.com/2023/06/18/jax-in-action-linear-regresion/
[6] https://www.kaggle.com/code/residentmario/full-batch-mini-batch-and-learning
[7] https://www.reddit.com/r/machinearning/comments/st8b11/d_should_we_be_using_jax_in_2022/
[8] https://www.baeldung.com/cs/mini-batch-vs-single-batch-trainding-data
[9] https://stackoverflow.com/questions/75020544/is-vmap-effical-as-compared-to-batched-ops