[Tensorflow]딥러닝용 컴퓨터 2way 구동 방식

물렁곈   
   조회 1788   추천 0    

 안녕하십니까 선배님들 텐서플로우로 CNN을 하기위해 컴퓨터 준비중인 학생입니다.


다름이 아니라 무작정 컴퓨터 견적만 알아보다 2WAY 구동시 코딩조건을 다르게 한다고 아주 친절하게 답변해주신분이 계십니다.

그리고 제가 알아본 결과 SLI라는 하드웨어를 사용하면 2WAY로 돌아간다고 하는데 여기서 문제는 대부분이 게이밍으로 사용한다는 것입니다.


제가 드리고 싶은 질문은 이 SLI를 사용해서 NVIDA사용하는 VGA를 2WAY으로 별다른 코딩없이 사용가능한건지 궁금합니다. 

혹시나 알고계신 지식에 대한 출처(사이트)를 알고 계신다면 함께 알려주시면 감사하겠습니다!! 


감사합니다.

성훈 06-17
SLI를 사용하는 것이 아닙니다.
여러 GPU를 사용하는 경우 각각의 독립적인 GPU에서 작업을 수행하며, 두개의 Node처럼 프로그래밍을 구현해야합니다.
즉 코드상에서 각 GPU에서 작업할 내용을 지정해야하며, 일반적으로 Batch size를 증가시킨다면, 동일한 모델이 여러 GPU로 각각 복사되어 연산을 수행하고 연산 결과를 CPU혹은 GPU중 하나로 모아서 전체 결과를 수행하게 됩니다.

Model 병렬화를 사용하는 경우 GPU마다 다른 작업을 수행시킬수 도 있으며, 구현하기 나름입니다.
2-way 혹은 n-way로 GPU작업을 하기위해서는 CPU-GPU 대역폭 및 GPU-GPU 대역폭이 중요하게 되며, 이따금 대역폭에 병목이 생기는 경우가 있습니다. 이것때문에 NVIDIA에서 NVLINK를 주장하고 있는것이고 실제로 효과가 있는 것이지요

즉 SLI는 전혀 신경쓰실 필요 없으며, 2-way를 위한 최소한의 조건은 각각의 GPU가 인식되어 시스템상에서 2개 GPU가 보인다면 가능합니다. (물론 빠방한 파워도 필요하죠)
그뒤 대역폭을 신경쓰기 위해서 PCIE 레인의 수 / NVLINK를 체크하면 됩니다.
     
물렁곈 06-17
댓글 감사합니다. 혹시나 성킴님이 아니신지 할 정도로 자세하게 설명해 주셔서 감사합니다.
대략적으로 앞의 내용은 data 병렬, 뒤의 내용은 model병렬에 대해 설명해주신거 같은데 맞는지 여쭤보고싶습니다.
만약 data 병렬이 맞다면... GPU에서 각각 지정해줘야하는 코드도 tensorflow에서 대략적으로 보았습니다.
위의 내용이 맞다면 1-way로 견적을 알아봐야할 것 같습니다.
도움을 주셔서 대단히 감사합니다!!!
          
성훈 06-17
data 병렬 / model 병렬화 맞습니다.
병렬화를 하지 않더라도 여러 실험을 동시에 수행하기 위해서 여러 GPU를 사용하는 경우는 많습니다.
(실험당 1-GPU / 4 way 머신이라면 4개의 실험을 동시에 수행)

사족입니다만, 제 경험상 1-way의 경우 따로 웍스 / 실험용 서버를 사용하지 않더라도 일반 i7 CPU with 16~32G메모리 정도 PC 에 GPU를 설치하여 수행하여도 무방합니다. 그렇다면 이경우는 서버용 제품으로 새로 구축할 필요가 없겠지요. (그냥 뻥파워 아니고, 적당한 보드에 쿨링만 신경써주면 됩니다.)
제 경험상 서버를 구축하면 편한 이유는 linux 가 오피셜하게 지원되는 하드웨어이기에 리눅스 환경잡는데 편했던 특히 드라이버쪽이 가장 크게 기억나네요. 게이밍용 메인보드는 가끔 이상한 트윅 하드웨어사용해서 드라이버가 불안정하거나 없는 경우가 있었습니다. 대표적으로 킬러랜....

데이터 페러럴의 경우 tf, pytorch의 대중적인 라이브러리상에서는 한줄의 wrapper function으로 기본적인 구현이 가능하기에 구현에 대한 부담은 크게 없는 편입니다.

RTX titan의 경우 SLI 포트가 빠지고 NVLINK가 들어가있으니 gpu-gpu 커뮤니케이션은 기존 GPU (Titan 시리즈들)대비 이득은 있을것 같네요.
SLI포트는 없어진것 같습니다. 정확한 기억은 아니지만 향후 SLI는 없어지고 NVLINK가 그자리를 대체한다는것 같던데요

정리하자면 SLI: 게임에서 사용되는 기술 (이쪽은 잘 모릅니다.)
NVLINK: gpu-gpu간 통신에서 사용되는 전용 고속 버스 (모델 파라미터 등 모든 gpu-gpu 전송의 고속화)
라고 할수 있을것 같습니다.
               
물렁곈 06-17
"병렬화를 하지 않더라도 여러 실험을 동시에 수행하기 위해서 여러 GPU를 사용하는 경우는 많습니다.
(실험당 1-GPU / 4 way 머신이라면 4개의 실험을 동시에 수행) "
이말은 즉, 한 구조에 대해서 0번 GPU, 또 다른 새로운 구조에 대해서 1번 GPU를 사용하는 방식으로 돌릴 수 있다는 말이시지요 ?
그리고 이경우가 모듈 병렬화 인것입니까..?
만약 이 경우라면 1-way에 대해 깊게 생각해봐야할 것 같습니다.(추후에 필요시 2-way로 연결 가능하기 때문)

만약 RTX Titan을 사용하게 된다면 오로지 1way 뿐일것 같습니다. 추가적인 지원 금액은 없을것으로 예상되기 때문입니다.
그리고 SLI와 NVLINK에 대해서 자세하게 설명해주셔서 감사합니다.
덕분에 애매하고 답답했던 부분이 뻥 뚫리는 기분입니다!!
                    
성훈 06-17
네 맞습니다. 제 경험을 바탕으로 말씀드리면 8way 장비에서 1gpu 실험 세팅으로 8개의 실험을 동시에 수행(각각 별개 프로그램을 gpu마다 할당해서 돌려줄수 있습니다. E.g., 하나는 이미지 클래시피케이션 다른건 디텍션)하거나 2개씩 묶어서 4개 실험돌리거나 아니면 2개는 인퍼런스용 6개는 러닝용 이런식으로 구성도 가능합니다.

때때로 멀티지피유 학습이 필요한 경우가 있어 많은 gpu가 들어가는 서버가 편한경우가 있습니다. 말씀하신대로 하나씩쓰다가 필요하면 여러 gpu사용해서 빠르게 돌릴수도 있으니깐요.

단일 머신에서 여러 실험을 동시에 돌릴때 이슈가 cpu와 memory, io세개가 생기는데, cpu는 데이터 프리프로세싱(data augmentation) 에서 주로 사용되서 병목이 생길수 있고 memory는 데이터 prefetching io역시 스토리지에서 데이터 읽어서 램에 올리는 부분이죠. 실험이 8개면 8개에의 독립적인 러닝 프로그램이 돌아가니깐 gpu 제외한 나머지의 로드가 1개 대비 8배가 된다고 생각하시면 됩니다.

8way 머신에서는 이부분의 고려가 필요해서 스펙에서 벨런싱을 맞출 필요가 있습니다.
                         
물렁곈 06-18
누가들어도 이해하기 쉽게 설명해주셔서 감사합니다.
덕분에 1way방식의 컴퓨터 견적을 뽑기로 했습니다!
gpu뿐만 아니라 cpu 와 memory 등을 잘 고려해서 구매하도록 하겠습니다.
많은 도움 주셔서 진심으로 감사합니다.
박문형 06-17
하드웨어적으로도 SLI는 비디오 사이의 커넥터 외에 보드에서도 SLI가 인증되어 있어야 하는데

GPU 서버용 시스템에서 SLI가 인증되어 있는 것은 없는 것으로 알고 있습니다..
     
물렁곈 06-17
댓글 달아주셔서 감사합니다.
우선 제가 큰 착각을 하고 있었던것 같습니다.
부족한 저에게 도움을 주셔서 감사합니다.
박문형 06-17
https://www.bodnara.co.kr/bbs/article.html?num=72952

SLI에 대해서는 옛날 이야기 밖에 없군요..
     
물렁곈 06-17
추가글 감사합니다. 우선적으로 사이트에서도 오래되었듯 SLI에 대해서는 더이상 알아볼 필요가 없어졌군요...!
조언해주신 부분 잘 반영해서 좋은 딥러닝용 맞추도록 하겠습니다.
수라 06-21
브릿지 없이 돌립니다 채굴도 마찬가지~ 멀티 GPU 인식은 보드 호환성이 좀 타더라구요 여러개 꼽을 경우




제목Page 1/6
2014-04   2527668   회원K
2015-12   12170   백메가
09-18   179   자연
09-02   422   백만스물하나
08-18   1032   딥린이
08-11   1350   비와서코털…
08-11   799   긍정공돌이
08-09   864   오월의행복
07-29   1611   deepdi
07-29   840   워터보이
07-20   1367   김지철
07-04   2054   crom1024
07-03   1606   worrma
07-03   1426   worrma
07-02   1317   TeslaK40
06-28   1741   MOONL
06-27   1147   김지철
06-17   1789   물렁곈
06-13   1916   물렁곈
05-30   2022   DeepBoy
05-23   1593   김버리
05-14   2093   JW마르니