당니이
다은이의 컴퓨터 공부
당니이
전체 방문자
오늘
어제
  • 분류 전체보기 (139) N
    • 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 🤖 (3) N
    • 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 (11)
      • Article 📑 (1)
    • Algorithms 💻 (22)
      • Basic (8)
      • BAEKJOON (8)
      • Programmers (2)
    • ML (1)
      • 통계적 머신러닝(20-2) (1)
    • SQL (3)
    • 기초금융 💵 (1)

블로그 메뉴

  • 홈
  • About me

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당니이

다은이의 컴퓨터 공부

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

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

2023. 6. 6. 16:40
반응형

 

 

모델 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 해결  (5) 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)
    당니이
    당니이
    씩씩하게 공부하기 📚💻

    티스토리툴바