memory
util.memory
CudaMemoryTracker
특정 구간에서 추가적으로 사용된 최대 GPU 메모리를 측정합니다. 예를 들어 모델을 먼저 GPU에 올린 뒤 __enter__에 진입하면 모델이 점유한 메모리는 제외됩니다. 각 연산의 메모리를 정확하게 트래킹하려면 torch.profiler를 사용하세요.
Example
- Context Manager로 사용하는 경우 with CudaMemoryTracker() as tracker: results = model.inference(batch)
- class로 사용하는 경우 tracker = CudaMemoryTracker() tracker.start() results = model.inference(batch) tracker.end() ...
print(tracker.get_results())
Source code in SaigeToolkit/util/memory.py
get_process_cpu_memory
프로세스가 사용하는 RAM 크기를 바이트 단위로 읽어옵니다.
Parameters:
-
pid(int, default:None) –If None, use current PID.
-
include_virtual(bool, default:False) –to include virtual memory. Defaults to False.
Returns:
-
int(int) –CPU memory in bytes
Note
Use --pid=host flag with Docker.
Source code in SaigeToolkit/util/memory.py
get_process_gpu_memory
프로세스가 사용하는 GPU메모리를 NVML 모듈로부터 바이트 단위로 읽어옵니다.
Parameters:
-
pid(int, default:None) –If None, use current PID.
Returns:
-
int(int) –GPU memory in bytes
Note
Use --pid=host flag with Docker.
Source code in SaigeToolkit/util/memory.py
get_memory_stats
현재 프로세스의 메모리 정보를 MiB 단위로 읽어옵니다. torch_max_allocated gpu mem의 경우 해당 함수 호출 직전까지의 최댓값이며, 해당 함수 호출 시 리셋됩니다.
Returns:
-
Dict[str, int]–Dict[str, int]: description