미니 배치 처리는 특히 수치 계산 및 기계 학습 작업을 위해 JAX와 같은 프레임 워크를 사용할 때 풀 배치 처리에 비해 몇 가지 이점을 제공합니다. 다음은 몇 가지 주요 장점입니다.
1. 메모리 효율 : 미니 배치 처리는 풀 배치 처리에 비해 메모리가 적습니다. 이는 데이터 세트의 일부만 주어진 시간에 메모리에로드되므로 메모리에 맞지 않는 대형 데이터 세트를 처리 할 수 있기 때문입니다 [3] [4].
2. 더 빠른 그라디언트 업데이트 : 미니 배치를 통해 모델 매개 변수를보다 빈번하게 업데이트 할 수 있습니다. 이는 전체 데이터 세트가 처리되기를 기다리지 않고 각 미니 배치 후에 그라디언트가 계산 및 업데이트되기 때문입니다. 이것은 많은 경우에 더 빠른 수렴으로 이어진다 [3] [4].
3. 소음 주입 및 안장 지점 피 : 미니 배치 처리는 그라디언트 업데이트에 노이즈를 도입하여 최적화 중에 로컬 최소 또는 안장 점을 피할 수 있습니다. 이 소음은 풀 배치 처리의 결정 론적 업데이트와 비교하여보다 강력한 수렴으로 이어질 수있다 [3] [4].
4. 유연성 및 확장 성 : 미니 배치는 대규모 데이터 세트를 처리하거나 계산 자원이 제한 될 때 특히 유용합니다. 그들은 병렬 처리를 가능하게하고 여러 GPU 또는 기계에 쉽게 분산되어 확장 성을 향상시킬 수 있습니다 [2] [4].
5. 실시간 또는 거의 실시간 처리 : 스트림 처리만큼 즉각적이지는 않지만 미니 배치 처리는 거의 실시간으로 결과를 제공 할 수 있으므로 적시에 통찰력이 중요하지만 반드시 즉각적인 것은 아니지만 응용 프로그램에 적합합니다 [2] .
JAX에서는 미니 배치를 사용하는 것은`vmap`과 같은 도구를 사용하여 효율적으로 관리 할 수 있으며, 이는 명시 적 루프 나 배치 치수 처리 없이도 데이터 배치에 기능을 적용 할 수 있습니다. 이것은 코드를 단순화하고 GPU 및 TPU와 같은 하드웨어 가속기에서 병렬 실행을위한 JAX의 최적화를 활용합니다 [1] [9].
인용 :[1] https://apxml.com/courses/getting-started-with-jax/chapter-4-vectorization-with-jax/batch-processing
[2] https://www.upsolver.com/blog/batch-stream-a-cheat-sheet
[3] https://datascience.stackexchange.com/questions/16807/why-mini-batch-size-is-better-with with-bath-batting-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-regression/
[6] https://www.kaggle.com/code/residentmario/full-batch-batch-batch-nline-learning
[7] https://www.reddit.com/r/machinelearning/comments/st8b11/d_should_we_be_using_jax_in_2022/
[8] https://www.baeldung.com/cs/mini-batch-vs-singlebatch-training-data
[9] https://stackoverflow.com/questions/75020544/is-vmap-efficient-as-comed-tobatched-ops