딥러닝 서버 만들기
서버용 Tesla K80 GPU를 이용하여 딥러닝 서버 만들기 방법에 대해서 설명드립니다. Nvidia Tesla GPU 가속기는 데스크탑 용도가 아닌 서버와 워크스테이션 에서 사용될 목적으로 개발되었습니다. 하지만 이 글에서는 Tesla K80을 데스크탑에서 사용될 수 있도록 딥러닝 서버 구축 방법에 대해서 설명드립니다. Tesla K80에 대한 자세한 스펙은 아래의 페이지를 참고해 주시기 바랍니다.
하드웨어
서버 메인보드를 사용한 것이 아니고, 일반 데스크탑용 메인보드 등을 사용하였습니다. 하드웨어 사양은 아래와 같습니다.
- 메인보드 : ASUS X99-A
- CPU : i7-5930K
- 메모리 : 64GB
- GPU : Tesla K80
그리고 Tesla K80을 조립하기 위한 필요한 추가 부품들 입니다. 아래의 부품들은 다시 자세히 설명드리도록 하겠습니다.
파워 커넥터
데스크탑에서 사용되는 일반적인 GPU는 PCIe 파워 커넥터를 사용합니다. 하지만 Tesla K80 은 CPU 파워케이블인 EPS 케이블을 사용합니다.
저는 2× 8-pin PCIe를 하나의 8-pin CPU 케이블로 변환해주는 컨버터가 없었습니다. 그리고 CPU 파워케이블이 파워서플라이에 각각 하나 밖에 없어서, 2개의 파워서플라이를 붙여서 사용하였습니다.
커넥터 또한 맞지 않아서, 아래의 이미지 처럼 강제로 휘어서 사용하였습니다.
냉각 시스템
추가적으로 Tesla K80 서버 또는 워크스테이션이 아니고, 데스크탑에서 사용하기 위해서는 먼저 냉각 시스템에 대해서 이해 하셔야 합니다.
아래의 GTX1080Ti 처럼 일반 데스크탑용으로 개발된 GPU는 쿨러가 함께 포함되어 있는 형태가 일반적입니다. 쿨러가 포함되어 있는 형태의 냉각 시스템을 엑티브 쿨링(Active Cooling)이라고 합니다.
하지만, NVIDIA Tesla 가속기는 서버용으로 개발된 GPU로 아래의 이미지 처럼 쿨러가 없습니다.
열이 적게 나서 쿨러가 없는 것이 아닙니다. Tesla K80 은 GPU가 2개가 있기 때문에 열 또한 많이 발생하게 됩니다. 따라서 냉각 시스템이 없을 경우 GPU가 다운 되게 됩니다.
냉각 쿨러가 없는 이유는 서버내의 공간을 효율적으로 사용하기 위해서 쿨러가 없습니다. 이러한 방식의 냉각 방법을 패시브 쿨링(Passive Cooling) 방식이라고 부릅니다.
위의 서버 이미지에서는 내부 냉각 팬들이 GPU의 열을 식혀주게 됩니다. 따라서 위의 이미지 처럼 Tesla K80에 냉각 팬을 붙여 냉각을 해줘야 합니다.
많은 분들이 냉각팬을 고민을 해왔고, 현재 몇가지 냉각 팬 상품들이 이베이에 판매되고 있습니다.
냉각팬과 Tesla K80 을 연결해주는 부품을 3D모델로 판매 또한 되고 있었습니다. 저는 글루건으로 바로 이어 붙였습니다.
성능 테스트
Tesla K80 가속기를 조립 한 다음 성능을 테스트 해보았습니다. 성능측정은 Tensorflow의 benchmark 소스코드를 이용하였습니다.
ResNet-50 모델로 각각 1개와 2개의 GPU 코어를 이용하여 성능 측정을 하였고, benchmark 결과와 비슷하게 나타났음을 확인 할 수 있었습니다.
업그레이드
Nvidia Tesla K80을 조립하여 사용을 해보니, 기존의 쿨러의 세기가 약하여, 2개의 GPU 코어의 온도차이가 있었습니다.
쿨러하고 멀리 떨어져 있는 GPU 코어의 열이 제대로 식혀지지 않는 문제가 있어서, 서버용 쿨러 팬을 구매하여 2단으로 붙였습니다.
냉각 효과가 확실 한 만큼, 쿨러 소음이 엄청납니다. 소음 문제로 환불할 수 없다는 조건에 동의하고 구입하였습니다.
K80 전용 파워케이블 또한 함께 연결하였습니다. 그리고 쿨러가 붙은 GPU가 너무 커서, 본체 케이스 전면 패널은 뜯어 내었습니다. 최종적으로 완성된 서버는 아래와 같습니다.
한계점
엄청난 소음과 냉각팬이 항상 최고 속도로 돈다는 문제가 있습니다.
이외에 따로 추가 한계점 없이 파워서플라이를 업그레이드하거나 추가하면, 1~2개의 GPU를 사용하는 경우 Geforece GTX, RTX 그래픽카드 뿐만 아니라, 서버용 Tesla GPU 등으로 데스크탑 환경에서 조립이 가능합니다.
하지만 4개의 GPU를 사용하는 환경에서 CPU 레인 수 부족으로, 4개의 GPU가 지원되는 서버로 업그레이드 하였습니다. 이와 관련해서는 아래의 글을 참고하실 수 있습니다.