[PyTorch] 모델 efficiency 측정하기 (used gpu memory / parameter 개수 / Inference time)

2023. 6. 6. 16:40·PyTorch👩🏻‍💻
반응형

 

 

모델 efficiency를 측정하다가, 아래와 같은 수치가 필요해져서 한번 정리해놓는다. 

 

# GPU memory consumption

참고 doc

def to_MB(a):
    return a/1024.0/1024.0
    
print(f"After model to device: {to_MB(torch.cuda.memory_allocated()):.2f}MB")

위에서 출력된 nividia-smi 와 다르니 주의해아한다. 왜냐면 nvidia-smi는 reserved memory를 반환하고, 위 코드는 allocated memory를 반환하기 때문이다. 흔히 reserved memory는 캐시까지 포함한 메모리를 일컫는다고 한다. 

 

# Parameter count 

이건 단순 trainable parameter의 개수를 count 해주는 코드이다.

model_parameters = filter(lambda p: p.requires_grad, model.parameters())
params = sum([np.prod(p.size()) for p in model_parameters])

 

# Training/Inference time

아래와 같이 python의 time 모듈로 측정하지 않도록 주의하자. 

 s = time.time()
 _ = model(dummy_input)
curr_time = (time.time()-s )*1000

그 대신 아래와 같이 torch.cuda.Event를 이용하면 된다.

starter, ender = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True)   # Time evaluation 
starter.record()

# 측정하고 싶은 모델 프로세스  

ender.record()
torch.cuda.synchronize()
curr_time = starter.elapsed_time(ender)
print(curr_time)

이 글을 보는 사람들의 연구와 paper 작성을 응원합니다 !!! 🔥

반응형
저작자표시 (새창열림)

'PyTorch👩🏻‍💻' 카테고리의 다른 글

[PyTorch] 데코레이터랑 친해지기 @torch.jit.script / @torch.no_grad..  (0) 2023.07.29
[PyTorch] mmcv 설치하기 / cuda 버전에 맞게 mmcv downgrade하기 / mmcv._ext error 해결  (4) 2023.05.19
[PyTorch] nvcc가 안될 때 ~/.bashrc 수정해 환경변수 설정하기  (1) 2023.03.27
[PyTorch] Multi-GPU 사용하기 (torch.distributed.launch)  (0) 2022.06.10
[TIL] OpenPCDet 가상환경 세팅하기 (cuda11.1 + spconv)  (1) 2022.06.10
'PyTorch👩🏻‍💻' 카테고리의 다른 글
  • [PyTorch] 데코레이터랑 친해지기 @torch.jit.script / @torch.no_grad..
  • [PyTorch] mmcv 설치하기 / cuda 버전에 맞게 mmcv downgrade하기 / mmcv._ext error 해결
  • [PyTorch] nvcc가 안될 때 ~/.bashrc 수정해 환경변수 설정하기
  • [PyTorch] Multi-GPU 사용하기 (torch.distributed.launch)
당니이
당니이
씩씩하게 공부하기 📚💻
  • 당니이
    다은이의 컴퓨터 공부
    당니이
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Achieved 👩🏻 (14)
        • 생각들 (2)
        • TIL (6)
        • Trial and Error (1)
        • Inspiration ✨ (0)
        • 미국 박사 준비 🎓 (1)
      • Computer Vision💖 (39)
        • Basic (9)
        • Video (5)
        • Continual Learning (7)
        • Generative model (2)
        • Domain (DA & DG) (5)
        • Multimodal (8)
        • Multitask Learning (1)
        • Segmentation (1)
        • Colorization (1)
      • RL 🤖 (1)
      • Autonomous Driving 🚙 (11)
        • Geometry (4)
        • LiDAR 3D Detection (1)
        • Trajectory prediction (2)
        • Lane Detection (1)
        • HDmap (3)
      • Linux (15)
      • PyTorch👩🏻‍💻 (10)
      • Linear Algebra (2)
      • Python (5)
      • NLP (10)
        • Article 📑 (1)
      • Algorithms 💻 (22)
        • Basic (8)
        • BAEKJOON (8)
        • Programmers (2)
      • ML (1)
        • 통계적 머신러닝(20-2) (1)
      • SQL (3)
      • 기초금융 💵 (1)
  • 블로그 메뉴

    • 홈
    • About me
  • 링크

    • 나의 소박한 github
    • Naver 블로그
  • 공지사항

  • 인기 글

  • 태그

    domain generalization
    코딩테스트
    domain adaptation
    Incremental Learning
    CV
    til
    백트래킹
    continual learning
    Linux
    pytorch
    conda
    Python
    자료구조
    NLP
    알고리즘
    백준
    dfs
    리눅스
    LLM
    CL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당니이
[PyTorch] 모델 efficiency 측정하기 (used gpu memory / parameter 개수 / Inference time)
상단으로

티스토리툴바