Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon JAX는 TPU에 비해 ​​GPU에서 메모리 파편화를 어떻게 다르게 처리합니까?


JAX는 TPU에 비해 ​​GPU에서 메모리 파편화를 어떻게 다르게 처리합니까?


JAX는 이러한 장치의 고유 아키텍처 및 설계로 인해 TPU에 비해 ​​GPU에서 메모리 조각화를 다르게 처리합니다.

GPU의 메모리 조각화

- PrealLocation 전략 : JAX는 첫 번째 조작이 실행될 때 기본적으로 총 GPU 메모리의 75%를 기본적으로 PREALLOCATED로집니다. 이 전략은 할당 오버 헤드 및 메모리 조각화를 최소화하지만 제대로 관리하지 않으면 메모리가없는 오류로 이어질 수 있습니다 [1] [3].
- 메모리 조각화 문제 : GPU에는 복잡한 메모리 계층이있어 메모리 조각화 문제를 악화시킬 수 있습니다. 이러한 복잡성으로 인해 JAX는 조각화없이 메모리를 효율적으로 관리하는 것이 어렵습니다 [6].
- 자동 해제 부족 : TPU와 달리 GPU는 JAX에 자동 메모리 탈퇴가 내장되어 있지 않습니다. 이러한 기능을 구현하는 것은 고려되지만 현재 계획되지 않은 것으로 간주됩니다 [7].

메모리 조각화 TPU

- 단순화 된 메모리 계층 : TPU는 GPU에 비해 ​​더 간단한 메모리 계층을 가지고있어 중요한 메모리 조각화 문제의 가능성을 줄입니다 [6].
- 자동 메모리 분할 : TFRT TPU 백엔드는 자동 메모리 탈퇴를 지원하여 효율적인 메모리 사용을 유지하고 단편화를 줄이는 데 도움이됩니다 [7].
- 순차적 처리 : TPUS 프로세스 데이터는 순차적으로 데이터를 순차적으로 처리하며, 이는 GPU의 병렬 처리와 비교하여보다 예측 가능한 메모리 사용 패턴과 잠재적으로 덜 단편화 될 수 있습니다 [8].

전반적으로, GPU에 대한 JAX의 메모리 관리는 자동 탈퇴 및 복잡한 GPU 메모리 계층의 부족으로 인해 단편화가 더 발생하는 반면, TPU는 내장 분할 기능을 갖춘보다 간소화 된 접근 방식을 제공합니다.

인용 :
[1] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://arxiv.org/pdf/2309.07181.pdf
[3] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://proceedings.neurips.cc/paper_files/paper/2023/file/42c40aff7814e9796266e12053b1c610-paper-conference.pdf
[5] https://docs.jax.dev/en/latest/device_memory_profiling.html
[6] https://massedcompute.com/faq-answers/?question=how+dodia+gpus+ handle+memory++ fragmentation+to +tpus%3f
[7] https://github.com/google/jax/issues/9064
[8] https://docs.jax.dev/en/latest/pallas/tpu/details.html
[9] https://app.studyraid.com/en/read/11969/381958/memory-management-best-practices