딥러닝에서 mGPU사용방법에 대한 질문입니다~!
조회 2639 추천 0
http://www.2cpu.co.kr/deep/1674 (386)
https://www.tensorflow.org/guide/distributed_training?hl=ko (1007)
"이전에 딥러닝 게시판에 올렸지만 게시판 성격이 안맞는것 같아서 옮겼습니다"
--------------------------------------------------------------------------------------------------------------
안녕하세요~!
딥러닝 업무를 받게되면서 컴퓨터를 맞추기 위해서 하드웨어를 공부중인데 2장의 GPU의 VRAM을 사용하는 방법이 궁금합니다
CUDA나 텐서플로우가 mGPU를 지원한다고 하는데 정녕 자동으로 VRAM을 나눠서 작업을 해주진 않을거라 추측되서 찾아보니 아래같은 내용이 있었습니다.
이런 분산 Strategy을 설정해서 사용하면 될것 같은데 그럼 텐서플로우에서 갖고있는 자원 내에서 알아서 정리가 되는건가요??
보통 n-way로 딥러닝 워크스테이션 맞추시는 분들은 대부분 이런 전략을 사용하거나 수동으로 GPU에 일을 할당하시나요?
3090 2-way로 견적을 맞출 예정인데 2개의 VRAM과 GPU를 사용하려면 그에 맞는 코딩을 하는게 맞는건지
아니면 신경 안써도 자동으로 2대를 다 사용해주는건지 궁금합니다.
(어차피 SLI이나 CFX는 VRAM 간의 대역폭을 넓혀주는데 도움은 줄 수 있을것 같은데 크게 신경쓰고 있진 않습니다...)
마지막으로 제가 시스템을 구축하면 다른 개발자들이 그 위에서 코딩을 할것 같은데 백엔드는 nvcc 같은걸로 연결해놓고
그 위에 텐서플로우의 distribute 설정된layer을 올릴 수 있을까요?? 개발자들이 distribute관련된 지식없이 텐서플로우 예제만 따라쳐도 알아서 분산처리될 수 있는 환경을 구축할 수 있는지 궁금합니다.
3090nvlink 지원하나요.?
GPU 여러개 꼽혀있는걸 볼 때는 멋있었는데 실제로 쓸려니 험난하네요;;
nvlink을 연결시키면 텐서플로우 상에서도 분산처리를 안해도 되나요???
nvlink는 sli와 같은 기능으로 데이터 버스정도로만 이해하고 있었습니다
(GPU 1번에서 계산된 결과를 GPU 2번으로 모을 때 빠른 데이터 전송이 가능하다 정도로 생각하고 있었습니다)
data parallel은 GPU마다 동일한 네트워크를 올린뒤 1번 데이터에 대한 연산은 1번 gpu에서 2번 데이터에 대한 연산은 2번으로 수행하는 방법이며,
model parallel은 어떤 연산은 1번 gpu에서 나머지 연산은 2번 gpu에서 수행하는 방법입니다.
1번은 data parallel wrapper를 모델에 씌워주기만 하면 구현이 쉽게 되지만, model parallel은 세부적으로 직접 device에 대해서 연산을 지정해주어 구현하여야 합니다.
지식없이 하려면 data parallel쪽으로 고려하시고, data paralle 예제는 많이 공개되어 있으니 참고하시면 될것 같습니다.
처음 시작이니 data parallel부터 시작해서 구조가 익숙해지면 model parallel로 넘어가야겠습니다ㅠ
GPU 잘 쓰려면 엄청 깊게 내려가야겠어요ㅠㅠ