반응형
인공지능할때 GPU 메모리를 나눠쓰고 싶어요.
- AI 서비스를 운영하려고 하면, GPU 메모리를 나눠써야 하는 경우가 있다.
- 관련링크 : [kubernetes] Extended Resource로 나만의 리소스 제약 (request, limit) 만들어서 사용하기 - GPU RAM 나눠쓰기
- 예전글에 적었다시피, 운영하는 장비의 GPU memory이 너무 큰데 한놈이 다 쓴다거나,
- 혹은 한 놈이 비정상적 동작으로 인해서 GPU memory를 너무 많이 쓴다면 다른 애들에 문제가 생길거다.
Tensorflow 에서는 나눠쓰는것을 옛날부터 지원했다.
- tensorflow에서는 1.x 대 부터
per_process_gpu_memory_fraction
를 사용해서 process당 사용할 수 있는 GPU 메모리를 지정할 수 있었다. - tensorflow 2.x 대 부터는
tf.config.LogicalDeviceConfiguration
의 설정으로 MB 단위로 설정가능 하다. (현재는 GPU 일때만 지원) - 관련링크 : https://www.tensorflow.org/api_docs/python/tf/config/LogicalDeviceConfiguration
PyTorch는 없었으나, 1.8이 릴리즈되면서 가능하도록 추가 되었다.
- 파이토치에서는 몇년전부터 텐서플로우는 있는데 왜 PyTorch에는 지원해 주지 않느냐~ 라면서 꾸준히 많은 사람들이 이슈를 제기했다.
- 그리고 2020년 11월 18일, Pull Request를 통해서 코드가 제출 되었고, 2021년 3월 4일 PyTorch 1.8 이 릴리즈되면서 해당 기능이 추가 되었다. ( torch.cuda.set_per_process_memory_fraction )
- 관련링크 : https://github.com/pytorch/pytorch/pull/48172/commits/ada19609a4f61cac69bd772cafd6c89471ff5253
- 위 그림에 이미 사용법이 나와 있지만, 그래도 해당 기능의 함수형태와 사용법은 아래와 같다.
- 관련링크 : https://pytorch.org/docs/stable/cuda.html
그래서?
- 서비스를 운영할때 좀 더 유연하게 운영할 수 있게 되었다. 비정상적인 애들은 걍 걔 혼자만 문제가 될 거고 다른애들에게는 영향을 안 줄 수 있기 때문에 ㅎㅎ.
- 문제가 있다면, 지금까지 동작중인 애들이 PyTorch 1.8 에서 별 이상 없이 잘 도는지 테스트 해야 하는데... 그건... 음... 그래.. 우선 넘어가자. ㅎ.
반응형