포럼에 올릴만한 물건은 아니라고 생각되어서 사진게시판으로 갑니다. 어렵네요 @_@
오래간만에 유지보수 작업을 합니다.
아래 4U 케이스는 제가 4U 랙 케이스 중에서 개인적으로 좋아하는 씨엠코포레이션의 ZACR EYE-4860B 모델입니다.
아쉬운게 있다면 최대 장착 가능 GPU 3개가 최대라는 정도?
슈마와 같이 메인보드 레이아웃까지 짜져서 나오는 쪽이 훨씬 효율적이긴 하지만.. 기본 가격에 대한 선입견 및 슈마보드에 대한 안좋은 경험이 있어서 잘 안쓰고 있습니다. 아무것도 없이 4U 케이스와 상용 제품을 사서 조립하기에는 이 케이스가 그나마 가장 좋았었습니다. 혹시 더 좋은 녀석이 있다면 알려주시면 감사하겠습니다..
보드는 아수스 프라임 X299에 CPU는 Core i9-7960X입니다. 16C 32T를 제공하는 녀석이죠. 쿨러는 해당 소켓을 지원하는 쿨마의 라인업 중에서 가장 저렴한 쪽으로 선택되었던걸로 기억합니다. 인입공기의 온도가 상대적으로 낮은 편이라, idle에서 29도~30도를 보여줍니다. 물론 high에서는 꽤 높겠지만, 온도 때문에 스로틀링을 관측해본 적은 없으니 괜찮습니다. 메인보드를 들어내는 작업은 몹시 귀찮아서, 나중에 정말 할 일 없을 때 교체해볼까 합니다.
교체 가능한 타입의 120mm 팬 3개를 중간에 넣고 있어, 4U 사이즈 중에서 깊이가 꽤 깊은 편에 속합니다. 3pin 팬을 교체 가능하게 만들어놨기 때문에, 유지보수도 나쁘지 않습니다.
120mm 쿨러는 Y.S.TECH의 것이고, 아.. 모델명은 깜빡했네요. 풍량도 괜찮고, 번들 쿨러도 먼지가 크지 않은 공간에서 굴렸을 때 4~5년 가까이 그럭저럭 잘 버텨줍니다. 소음은 좀 있는 편이나, 4U나 2U 사이즈에 들어가는 고RPM 팬에 비하면 매우 순진하다고 여겨지는 정도입니다.
1~2년 사이 DL 쪽에서는 큰 사이즈의 VRAM을 요구하는 경향이 짙어졌습니다. interconnect 속도가 주요한 요인이겠지만, 병렬성은 여전히 Data parallelism에 의존하고 있습니다. 많은 여유의 VRAM은 피딩할 수 있는 배치의 크기를 키울 수 있고, 성능도 일반적으로 배치가 크면 클 수록 일종의 정규화 효과를 받을 수 있어, GPU 세대간 속도의 증가는 크게 없지만, VRAM 확대로도 할 수 있냐 없냐가 바뀌는 경우가 있어서 작업을 하기로 합니다.
그래서 오늘 하는 작업은 Titan V(12GB HBM2)에서 RTX (24GB GDDR6)로 옮겨가는 작업입니다.
오늘 작업한 놈입니다. 3-slot NVLINK bridge와 RTX 2장입니다. 집에서도 이렇게 쓸 수 있으면 얼마나 좋을까요... 라고 하고 싶지만 집에서는 불필요한 녀석입니다. 오히려 집에서는 i5-4960에 채굴노동자 버전 RX580을 메인으로 쓰고 있습니다.
얼굴이 반사되지는 않았으면 좋겠네요. 적출된 Titan V는 더 저렴한 GPU를 사용하는 다른 호스트의 업그레이드로 사용됩니다.
타이탄 V는 주 사용 타겟(?)과 다르게 NVLINK 브릿지를 연결하는 것을 포기시키기 위해 백플레이트를 90년대 양아치 스타일로 colar를 올리듯이 끝까지 올려놓았습니다. 뭐 소프트웨어로도 막아놨겠지만요. 아쉽고 꼬우면 V100 사라고 합니다. 쳇..
이제 장착할 오늘의 주인공 RTX입니다. 튜링 세대의 레퍼런스 스타일로 황동 가스레인지 두개가 올라갑니다. 2-slot으로 타이트하게 장착하면, 위쪽의 GPU는 90도를 순식간에 찍어대는 불덩이가 됩니다. 타이트할 때는, 차라리 Titan V처럼 시스템 쿨러로 인입공기를 밀어주면 카드의 끝에 뚫려있는 부분으로 쉽게 들어갈 수 있기 때문에, 이 때는 블로워팬 디자인이 좀 더 나은 온도를 보여줬었습니다. 하지만 이건 뭐다? 3-slot 갭이 있으니 괜찮습니다.
이제 브릿지를 끼워줄 차례입니다. 이 삐삐삐-들이 V에는 안주더니 RTX에서는 NVLINK Bridge를 같이 팝니다. 뒤집어서 찍은 것도 있지만 시리얼 번호 등을 처리하기가 귀찮아서 생략합니다. 어쨌건 장착 완료.
그리고 뭐 전용처럼 판매하는데, 생긴건 튜링 2080Ti에 달린거, 그리고 조텍 등에서 판매하는 2080Ti용 브릿지랑 모양이 같고, 장착 호환성도 그대로 존재합니다. 저 놈 말고 게이밍용이라고 LED 빤딱빤딱하게 들어오는 브릿지를 받아서 처음에 걱정했다가, 대충 각 보고 끼우고 테스트 해봤더니 이상 없더라구요.
암튼, 브릿지의 사용 여부는 순수하게 수치만 따지면 꽤 큰 차이가 납니다.
CUDA 샘플에 포함되어 있는 p2pBandwidthLatencyTest를 좀 볼까요? 스크린 샷은 안된다고 하셔서, 텍스트로 일부만 옮깁니다. 동일 보드, 동일 CPU에 Titan V / RTX간 차이만 한번 볼께요. 동종 GPU간 비교는 아니라서, 참고만 하시길 바랍니다.
Titan V to V, 브릿지 없을 경우, Unidirectional P2P=Enabled Bandwidth Matrix (GB/s) : 0 -> 1 : 1.82GB/s , (1->0) : 1.84GB/s
Titan V to V, 브릿지 없을 경우, Bi-directional P2P=Enabled Bandwidth Matrix (GB/s) : 0->1: 10.78GB/s, 1->0 : 10.79GB/s
사실 브릿지가 없을 때는 P2P disabled가 bandwidth는 잘 나옵니다. 하지만 latency는 P2P enabled시 7.37us, disabled 16.19us가 나옵니다.
Titan RTX to RTX, NVLink HB 브릿지, Unidirectional P2P=Enabled Bandwidth Matrix (GB/s) : 0->1: 46.95 GB/s, 1->0: 46.94GB/s
Titn RTX to RTX, NVLink HB 브릿지, Bidirectional P2P=Enabled Bandwidth Matrix (GB/s), 0->1: 93.52GB/s, 1->0: 93.56GB/s
Latency는 P2p Enabled시 1.77us가 나옵니다. 그런데, CUDA 10에서는 GPU와 CPU를 거치는 latency가 따로 나오네요. CUDA 9에서는 안보이던 녀석인데..
이와 같이 브릿지를 달고 안달고는 꽤 큰(!) 차이가 납니다만, 학습된 모델로 inference할 때는 당연히 차이가 안나고, 학습 때는, Data parallism을 사용하는 병렬화 방법을 사용하고, 2장이니 Synchoronus 하게 weight를 머징할겁니다. 동기화 주기를 늘리는 방식으로 동기화에 들어가는 비용을 줄이면 브릿지의 유무로 벌어지는 성능 갭을 좁힐 수 있습니다.
물론 있으면 기본적으로 나아지긴 합니다. 주로 쓰고 있는 모델에서 생각없이 사용하면 대충 잘 쳐줘서 5~10% 미만 정도 쯤 될 듯 합니다. 이걸로 특별히 수치화하고 싶지는 않아, 느낌적으로 추산한거지만... 아무리 생각해도 브릿지 구매 비용(약 15만원?)을 들여서 얻을 수 있는 게인 치고는 크지 않는 것 같아요.
이전 세대랑 다르게 nvlink를 달면 비램이 두배로 뻥튀기되는 장점은 없나요?