Deep Learning Workstation을 직접 구축하게 된 이유

soonhyung·2021년 12월 24일
1

Overview

클라우드 시대에 왜 나는 별도의 DL server(workstation)을 직접 구성하고 운영하게 되었을까

현재 주로 하고 있는 일은 데이터를 적재/처리/분석하고 DL model을 학습하고, 이를 서비스하는 일이다. 그리고 이 모든 것을 클라우드에서 처리 하였다. reserved instance와 onDemand instance 비용은 내가 리소스를 사용할때만 비용을 지출하는 꽤나 합리적인 방식으로 굴러가기 때문에 나 처럼 소규모 토이 프로젝트를 개발/운영하거나 공부하는 목적으로 적합하다. 하지만 어느 시점부터 토이 프로젝트 규모가 점점 커지고 데이터의 양과 DL모델의 크기가 커지면서 컴퓨팅 리소스는 급속도로 증가했고 매달 지출되는 클라우드 비용이 부담스러운 수준까지 치솟았다. 결단이 필요한 시점이 온 것이다.

결론 부터 말하자면 이 경제적인 부분의 부담을 줄이고자 Workstation(베어 메탈)을 구축 하고 클라우드와 함께 사용하는 hybrid 환경으로 전환을 결심하게 됬다. 그 동안 고민했던 내용을 기록해 본다.

사용성 분석과 경제성

내가 주로 computing resource를 사용하는 목적은 다음과 같다.

  • Data ingestion and processing (ETL, Preprocessing)
  • Machine Learning and Deep Learning (training and serving)
  • Data Analytics
  • Service
    • API server
    • Service server
    • ML Ops
  • multi user dev env (including shared workspace)
  • Video Encoding

주로 DS 도메인에서 취미, 공부, 그리고 개인 프로젝트를 목적으로, 그리고 Position상 DS, MLE, DE 영역을 다 커버하려다 보니 Computing resource를 사용하는 항목이 꽤나 다양하다. 당연히 혼자 모든 인프라 구성과 플랫폼 구축, 솔루션 설치 또는 개발을 하는 것은 시간적으로 매우 낭비라 생각해왔고 그래서 대부분의 resource는 Cloud를 최대한 활용해왔다. 이전 직장들에서 사용해온 경험을 포함해 6~7년 이상 Cloud 환경(주로 AWS)을 잘 활용하다보니 편이성과 완성도 높은 SaaS, PaaS, IaaS 를 제공해주는 이 환경의 만족도가 매우 높았다.

그러나 이 좋은 Cloud 환경에도 큰 단점이 있었으니 바로 비용 문제다. 개인 Cloud를 사용하는 초기에는 큰 리소스를 사용하지 않아서 크게 비용을 걱정 할 정도는 아니었다. 문제는 최근 Data의 규모가 커지고 DL 모델의 크기가 커지다 보니 Data를 적재하고 처리하고 학습하는데 매우 큰 리소스를 사용하게 되었고 그 빈도가 점점 늘어났고 이것을 결국 비용의 부담으로 다가오게 된다.

물론 사용한 만큼 비용을 지불(on-demand)하는 합리적인 가격 방식을 취하고 있고 적당한 전략 수립만 잘 한다면 Cloud내에 유휴 resource를 싼 비용을 지불(Spot instance)하는 방식도 존재한다. 회사의 업무로써 한다면 당연히 심사 숙고하고 많은 시간을 들여 spot instance를 활용하는 다양한 방안을 설계하겠지만 간간히 짬을 내서 개인 취미/공부/프로젝트를 하는 경우라면 매우 불규칙적일 수 있는 spot instance를 마냥 사용하는 것도 한계가 있었다.

Computing Resource를 가장 많이 소비하는 항목

  • Data ingestion and processing (ETL, Preprocessing)
  • Deep Learning (training)

위의 2개 항목을 위해 Cloud에서 EMR, S3(object storage), p3.2xlarge ~ p3.16xlarge(GPU accelation instance) 정도의 서비스를 주로 활용하고 있고 Apache spark, pandas(dask, modin..), TF, torch 등의 Framework를 사용하고 있다. 이 부분에서 대부분의 비용이 지출되고 있고 때문에 비용을 줄이면서 위에 나열된 Cloud 서비스 수준의 인프라를 확보하고 프레임워크가 원할히 돌아갈 수 있는 환경이 필요하게 되었고, 이로 인해 Deep Learning / Processing Workstation을 구축하는 것과 Resource 소비가 크지 않은 경우 cloud를 사용하는 hybrid 전략을 추진하기로 한다.

Cloud 와 Workstation(베어메탈)의 공존

Deep Learning / Processing Workstation 에서 지원해야 하는 항목

  • Data ingestion and processing (ETL, Preprocessing)
  • Machine Learning and Deep Learning (training)
  • Data Analytics
  • multi user dev env (including shared workspace)
  • Storage service
  • Video Encoding
  • ML Ops (hybrid)

AWS 인프라에서 지원해야 하는 항목

  • Service
    • API server
    • Service server (include inference)
    • ML Ops (hybrid)
  • Storage service (S3)

운영을 위한 Service는 기존에 사용하던 AWS 인프라는 그대로 활용하고 ETL, Modeling 등의 운영 외 대부분의 서비스 항목은 Workstation에서 지원하는 방향으로 한다. 즉 클라우드는 서비스 차원에서 product 환경(이하 prd) 전반을 담당하고 적은 컴퓨팅 자원을 사용하는 인스턴스 위주로 유지하여 클라우드의 비용을 최소한으로 줄이면서 운영 안정성과 서비스 확장성(scalability)를 확보한다. 그리고 workstation은 매우 헤비한 컴퓨팅 파워를 필요로 하는 job을 위주로 담당하여 분석에 필요한, 그리고 빠른 엑세스가 필요로 하는 데이터 적재, 처리, 분석하고 모델 트레이닝을 할 수 있게 하여 analytics, dev 단계의 처리 전반을 처리하게 한다. 이를 통해 GPU리소스를 활용해 장시간 모델링을 하는 등의 작업에서 비용적인 부담을 덜 수 있으며 클라우드보다 상대적으로 적은 비용을 투입되면서도 분석 데이터 처리가 가능하게 한다.

Workstation을 구성시 고려한 구체적인 내용은 다음글에서 계속 이어나갈 예정이다.

0개의 댓글