반응형
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으로 할당시켜주는 역활이라고 생각하시면 될듯 합니다(제가 이해한 것은 이정도인데, 내용이 다르다면 댓글남겨주세요!).
728x90
반응형
'딥러닝\머신러닝' 카테고리의 다른 글
[pytorch] 필요한 GPU메모리를 알아봅시다. (0) | 2022.08.25 |
---|---|
[pytorch, 딥러닝] CUDA out of memory 에러 해결방법(이미지분석) (0) | 2022.08.10 |
[딥러닝 연습문제] 딥러닝 연습용 데이터 공유 (0) | 2022.08.08 |
[pytorch, 이미지분석] CustomDataset 제작시 주의해야할 점. (0) | 2022.08.05 |
[pytorch, 딥러닝] 모델 저장하는 방법 (0) | 2022.07.28 |
댓글