PyTorch를 사용하여 총 GPU 메모리와 사용 가능한 메모리량을 얻는 방법

2024-04-02

PyTorch를 사용하여 총 GPU 메모리와 사용 가능한 메모리량을 얻는 방법

필요한 라이브러리

  • Python
  • PyTorch
  • CUDA (선택 사항)

코드

import torch

# 전체 GPU 메모리 용량 확인
total_mem = torch.cuda.get_device_properties(0).total_memory

# 사용 가능한 GPU 메모리 용량 확인
free_mem = torch.cuda.memory_allocated(0)

# 사용 중인 GPU 메모리 용량 확인
used_mem = total_mem - free_mem

# 메모리 정보 출력
print(f"총 GPU 메모리: {total_mem / 1024**3:.3f} GB")
print(f"사용 가능한 GPU 메모리: {free_mem / 1024**3:.3f} GB")
print(f"사용 중인 GPU 메모리: {used_mem / 1024**3:.3f} GB")

코드 설명

  • torch.cuda.get_device_properties(0): 첫 번째 GPU 장치의 속성을 가져옵니다.
  • total_memory: 전체 GPU 메모리 용량 (바이트)
  • torch.cuda.memory_allocated(0): 첫 번째 GPU 장치에서 할당된 메모리 용량 (바이트)
  • used_mem: 사용 중인 GPU 메모리 용량 (바이트)

참고

  • CUDA를 설치하지 않은 경우 CPU 메모리만 사용할 수 있습니다.
  • 여러 GPU 장치가 있는 경우 torch.cuda.get_device_properties(i)를 사용하여 다른 장치의 메모리 정보를 확인할 수 있습니다.
  • torch.cuda.memory_allocated(i)는 특정 GPU 장치에서 할당된 메모리만 반환합니다. CPU 메모리 사용량은 포함하지 않습니다.



예제 코드

import torch

# GPU 사용 가능 여부 확인
if torch.cuda.is_available():
    # GPU 사용
    device = torch.device("cuda")

    # GPU 메모리 정보 확인
    total_mem = torch.cuda.get_device_properties(device).total_memory
    free_mem = torch.cuda.memory_allocated(device)
    used_mem = total_mem - free_mem

    # 메모리 정보 출력
    print(f"총 GPU 메모리: {total_mem / 1024**3:.3f} GB")
    print(f"사용 가능한 GPU 메모리: {free_mem / 1024**3:.3f} GB")
    print(f"사용 중인 GPU 메모리: {used_mem / 1024**3:.3f} GB")
else:
    # CPU 사용
    device = torch.device("cpu")

    # CPU 메모리 정보 확인
    total_mem = psutil.cpu_info().total_memory
    free_mem = psutil.virtual_memory().available
    used_mem = total_mem - free_mem

    # 메모리 정보 출력
    print(f"총 CPU 메모리: {total_mem / 1024**3:.3f} GB")
    print(f"사용 가능한 CPU 메모리: {free_mem / 1024**3:.3f} GB")
    print(f"사용 중인 CPU 메모리: {used_mem / 1024**3:.3f} GB")

설명

  • 이 코드는 GPU 사용 가능 여부를 확인하고 사용 가능한 경우 GPU 메모리 정보를 출력합니다.
  • GPU를 사용할 수 없는 경우 CPU 메모리 정보를 출력합니다.
  • psutil 라이브러리는 CPU 및 메모리 사용량과 같은 시스템 정보를 가져오는 데 사용됩니다.

참고

  • psutil 라이브러리는 설치해야 사용할 수 있습니다.



총 GPU 메모리와 사용 가능한 메모리량을 얻는 다른 방법

nvidia-smi 명령어 사용

nvidia-smi
  • nvidia-smi 명령어는 GPU 정보를 출력하는 명령어입니다.
  • 출력 결과에서 Total MemoryFree Memory 항목을 확인하면 총 GPU 메모리와 사용 가능한 메모리량을 알 수 있습니다.

시스템 정보 도구 사용

  • macOS: 시스템 정보 > 하드웨어 > 메모리

  • Linux: free 명령어

  • 시스템 정보 도구는 시스템 메모리 정보를 출력합니다.

  • 출력 결과에서 GPU 메모리 정보를 확인할 수 있습니다.

PyTorch 라이브러리 사용

import torch

# 사용 가능한 GPU 장치 목록 확인
devices = torch.cuda.device_count()

# 각 GPU 장치의 메모리 정보 확인
for i in range(devices):
    total_mem = torch.cuda.get_device_properties(i).total_memory
    free_mem = torch.cuda.memory_allocated(i)
    used_mem = total_mem - free_mem

    # 메모리 정보 출력
    print(f"** GPU 장치 {i} **")
    print(f"총 GPU 메모리: {total_mem / 1024**3:.3f} GB")
    print(f"사용 가능한 GPU 메모리: {free_mem / 1024**3:.3f} GB")
    print(f"사용 중인 GPU 메모리: {used_mem / 1024**3:.3f} GB")
  • 이 코드는 사용 가능한 모든 GPU 장치의 메모리 정보를 출력합니다.

참고

  • nvidia-smi 명령어는 CUDA가 설치되어 있어야 사용할 수 있습니다.
  • 시스템 정보 도구는 운영 체제에 따라 다릅니다.

결론

본 문서에서는 Python, PyTorch, GPU를 사용하여 총 GPU 메모리와 사용 가능한 메모리량을 얻는 방법을 설명했습니다. 또한,

  • nvidia-smi 명령어 사용
  • 시스템 정보 도구 사용
  • PyTorch 라이브러리 사용

등의 대체 방법도 소개했습니다.


python pytorch gpu


코딩 스타일 가이드: 작은 따옴표 vs 큰 따옴표 사용

언제 어떤 것을 사용해야 할까요?간단히 말하면, 문자열 안에 작은 따옴표가 포함되는 경우 큰 따옴표를 사용하고, 문자열 안에 큰 따옴표가 포함되는 경우 작은 따옴표를 사용합니다.예시:큰 따옴표 사용: "Python 프로그래밍은 정말 재밌어요!"...


Ellipsis 사용하기

다음은 Numpy에서 차원 정보 손실 없이 인덱싱 슬라이스하는 방법에 대한 설명입니다.:은 모든 요소를 선택하는 데 사용됩니다. 차원 정보를 유지하려면 :를 각 차원에 사용해야 합니다. 예를 들어, 다음 코드는 2차원 배열의 모든 요소를 선택하면서 차원 정보를 유지합니다...


두 NumPy 배열을 효율적으로 셔플하는 더 나은 방법 (Python, NumPy, random)

문제:두 개의 NumPy 배열 arr1과 arr2가 있다고 가정합니다. 두 배열의 길이는 동일하고, 각 요소는 서로 일대일 매칭되어야 합니다. 목표는 두 배열을 동시에 셔플하는 것입니다. 즉, arr1의 순서가 변경되면 arr2의 해당 요소도 동일한 순서로 변경되어야 합니다...


쉽게 따라하는 네이버 뉴스 크롤링(python) - title, URL 가져오기

본 프로세스를 진행하기 위해서는 다음 라이브러리가 설치되어 있어야 합니다:NumPy: 수치 계산을 위한 기본적인 Python 라이브러리입니다.SciPy: 통계, 수학, 최적화 알고리즘 등을 제공하는 Python 라이브러리입니다...


NumPy where 함수를 활용한 다양한 조건 처리

where 함수는 다음과 같은 기본 구조를 가지고 있습니다.condition: 조건을 나타내는 배열 또는 스칼라 값입니다.true_values: condition이 참일 때 반환할 값들의 배열입니다.false_values: condition이 거짓일 때 반환할 값들의 배열입니다...


python pytorch gpu

파이토치에서 GPU 사용 확인 방법

다음은 파이토치에서 GPU 사용 여부를 확인하는 몇 가지 방법입니다.torch. cuda. is_available() 사용가장 간단한 방법은 torch. cuda. is_available() 함수를 사용하는 것입니다