from pynvml import * | |
import psutil | |
""" | |
To track memory allocation, let's take advantage of the nvidia-ml-py3 package and GPU memory allocation from python. | |
ref: https://huggingface.co/docs/transformers/v4.20.1/en/perf_train_gpu_one | |
""" | |
def print_gpu_initialization(): | |
nvmlInit() | |
handle = nvmlDeviceGetHandleByIndex(0) | |
info = nvmlDeviceGetMemoryInfo(handle) | |
print(f"GPU memory occupied: {info.used//1024**2} MB.") | |
return info.used // 1024**2 | |
def print_summary(result): | |
print(f"Time: {result.metrics['train_runtime']:.2f}") | |
print(f"Samples/second: {result.metrics['train_samples_per_second']:.2f}") | |
print_gpu_utilization() | |
def print_memory_usage(): | |
process = psutil.Process(os.getpid()) | |
memory_in_bytes = process.memory_info().rss | |
memory_in_megabytes = memory_in_bytes / (1024 ** 2) | |
#print(f"Memory used by this script: {memory_in_megabytes:.2f} MB") | |
return memory_in_megabytes | |