지금은 조금 익숙해 졌지만, 예전에는 몰랐던 머신러닝을 위해 클라우드를 사용할 때 장단점에 대해 써보려고 합니다.
클라우드의 큰 장점은 머신을 구입할 초기 비용을 들일 필요 없이 고사양 서버를 가질 수 있다는 것입니다. 또한 서버를 둘 공간도 필요가 없이 서버를 24시간 언제든지 가동할 수 있습니다. 더욱이 그 서버는 언제든지 원하는 사양으로 업그레이드 가능한데 64기가 메모리에서 128기가 메모리로 업그레이드 할 수도 있고, NVidia T4 GPU를 1개 사용하다가 2개로 올리는것도 가능합니다. 데이터 저장용 디스크의 공간을 50기가에서 100기가로 순식간에 올릴 수 있고 필요하다면 다시 50기가로 내릴 수도 있습니다. 손쉽게 서버 CPU를 바꿀 수도 있습니다.
단점은 비용이 든다는 것인데 개인 프로젝트에는 내가 사용할 노트북 또는 데스크탑의 비용 + 클라우드의 비용이 듭니다. 클라우드를 24시간 365일 돌리기에는 비용이 만만하지 않습니다. 따라서 일부는 노트북으로 코딩하다가 계산량이 높아질때 클라우드를 쓰는게 좋습니다. 그러려면 노트북 자체도 어느 정도 이상의 성능 (저는 64기가 메모리, 쓸만한 GPU가 필요하다고 봅니다)을 가져야 하기에 계산을 잘 해보셔야합니다. 또 다른 단점은 클라우드를 배우는데는 시간이 든다는 점입니다. 예를들면 서버에 웹 서버를 띄울 경우 내 클라이언트에서 그 서버에 접속하는 것도 복잡합니다 (그냥 방화벽을 열 것인가 vs ssh tunneling과 port forwarding을 할 것인가 – vscode가 이를 자동으로 지원해서 깜짝 놀랐습니다). 어떨 때는 서버 자원이 특정 지역에 부족하여 지역간 머신 이미지를 전송해서 다른 지역에 서버를 띄워야합니다. 쿼타라거나, 방화벽 같은 골치아픈 일도 다뤄야합니다. (물론 클라우드 서비스가 좋은 기본값을 제공합니다)
그런데 역시 비용이 문제입니다. 머신 러닝 리소스의 필요에 따라 어쩌면 좋은 노트북을 1-2년 마다 구입 및 중고 판매 하는게 더 싸게 먹힐 수도 있습니다. 데스크탑이 아닌 “노트북”이어야 하는 이유는 하드웨어의 발전에 맞게 머신을 새로 업그레이드 할때 기존 머신을 쉽게 팔 수 있어야 하기 때문입니다. 제 편견일 수 있는데 데스크탑은 역시 판매하기가 까다롭습니다. 거래하려고 들고 가는 것만 해도 그렇죠.
서버 하드웨어 지원과 그 비용이 지역 (대만 서버, 한국 서버 등)에 따라 다르고 요즘같으면 GPU 비용까지 계산해봐야하기에 비용은 각잡고 따져봐야합니다. 그러나 역시 쉽지 않습니다. vCPU가 뭔지, 평소 생각해보지도 않았던 skylake는 뭔지… 각 클라우드가 제공하는 계산기를 써봐도 좋고 (물론 계산기가 원하는 파라미터를 다 지정하는 것도 배경지식이 아직 부족할때는 쉽지 않습니다), 조금씩 써보면서 감을 잡아가는 것도 좋습니다.