본문 바로가기
딥러닝\머신러닝

[pytorch, 딥러닝] pin_memory 란 무엇인가?

by 인포메틱스 2022. 8. 10.
반응형

 

Pin memory란 무엇인가?

 

 우리가 모델을 제작을 함에 있어서 GPU를 사용하려면 GPU에 데이터를 로드를 해줘야 하는데, 이때 빠르게 데이터를 옮기기 위해 사용하는 것이  pin memory입니다(대부분의 데이터는 cpu + RAM에서 작동이 되기 때문에 이를 GPU에 세팅을 해줘야합니다.)

 

 좀 더 자세히 이야기하자면(제가 이해하는데로 말하겠습니다.) 우리가 일반적으로 분석할때에는 CPU + RAM을 이용합니다. 변수를 DRAM에 할당시켜서 분석이 이루어집니다.

 

 이때 GPU의 경우 DRAM에 할당된 데이터를 사용하지 못합니다. 그렇기 때문에 GPU 전용 메모리 쪽에 옮기기 위해서는 pinned memory를 사용하게 됩니다. 즉 DRAM (pageable Memory)에서 pinned memory로 옮기고, 그리고 VRAM(GPU 전용 메모리)으로 옮기는 과정을 거치게 되기 때문에 과정이 많아지고 느려지게 됩니다(데이터가 작다면 큰 문제는 없습니다.).

 이 부분을 보완해주기 위해서 pytorch에 Dataloader에는 pin_memory 라는 옵션이 있는데, 이는 DRAM을 거치지 않고, 바로 VRAM으로 할당시켜주는 역활이라고 생각하시면 될듯 합니다(제가 이해한 것은 이정도인데, 내용이 다르다면 댓글남겨주세요!).

 

출처 : https://towardsdatascience.com/optimize-pytorch-performance-for-speed-and-memory-efficiency-2022-84f453916ea6

 

728x90
반응형

댓글