[Technology Toolkit 2021]
GPU, 이젠 모자라지 않다!

GPU, 이젠 모자라지 않다!

Technology Toolkit 2021은 삼성SDS 연구소에서 연구개발 중인 주요 기술들을 설명하는 기술 소개서입니다.
AI, Blockchain, Cloud, Security 기술 분야의 총 7개 기술에 대해서 각각 기술 정의, 주요 기능, 차별화 포인트 및 Use Cases를 소개하여 독자 여러분께 인사이트를 제공하고자 합니다.

R&D Cloud for AI

Kubernetes 기반 AI 연구개발용 GPU 클러스터링 기술

문서 다운로드

1. 기술 소개

기술 동향 및 배경

PC의 상용화가 도래한 이후로 컴퓨팅 리소스 수요는 나날이 급증하고 있습니다. 현재 기본적인 사무나 개인용 문서 작업에 쓰이는 리소스조차 과거에 비하면 매우 방대합니다. 당연히 고용량의 이미지나 영상 작업에는 사무나 문서 작업과는 비교할 수 없을 정도로 많은 컴퓨팅 리소스가 필요합니다.

지금까지 CPU는 주요한 컴퓨팅 자원으로 활용하고 있습니다. 컴퓨터의 각종 장비들이 빠르게 발전하고 사양이 높아진 만큼, CPU도 점점 더 막강한 사양으로 무장하며 사용자들의 요구를 충족하고 있습니다. 하지만 AI 시대가 도래하면서 이제 CPU만으로는 필요한 컴퓨팅 리소스를 감당할 수 없게 되었습니다. 이전까지와는 다른 압도적인 수준의 고용량, 고사양 작업이 필요해졌기 때문입니다. CPU가 복잡한 연산을 처리하는 역할을 담당하는 동안, GPU는 단순하지만 많은 양의 반복 작업을 병렬로 처리하는 역할을 담당하게 되었습니다. AI 시대 이전까지의 GPU가 CPU를 보조하며 그래픽처리만 돕던 역할을 담당했던 것과는 판이합니다.

    Central Processing Unit, Graphics Processing Unit [그림 1] CPU와 GPU 비교

딥러닝으로 문제를 해결할 때, 레이어가 많아질수록 컴퓨팅 리소스는 더 많은 변수를 고려해야 하고 반복된 계산을 통해 더 정확한 답을 도출합니다. 레이어가 많아지면 많아질수록 결과는 점점 더 정확해집니다. 하지만 레이어가 많아지는 만큼 필요한 리소스는 기하급수적으로 늘어나게 됩니다. GPU의 병렬 처리가 없으면 사실상 딥러닝은 기존 CPU만으로 연구가 불가능합니다.

    Input layer, Hidden Layer 1, Hidden Layer 2, Hidden Layer 3, Output Layer [그림 2] 레이어가 늘어남에 따라 기하급수적으로 증가하는 파라미터

AI 연구개발에 필요한 GPU는 여전히 가격이 높습니다. 기업이나 학교에서 AI 연구를 위해 섣불리 대량의 GPU를 구매하기에는 부담이 큽니다. 그렇다고 구매한 GPU 자원이 24x7 동안 단 1초도 쉬지 않고 돌아가지는 않습니다. 사용자가 없거나 작업을 지시하지 않은 때에는 GPU가 유휴 장비로 남아있게 됩니다.

R&D Cloud for AI는 GPU 장비들을 최대한 효율적으로 활용하기 위해 만들어졌습니다. GPU를 클러스터링하여 하나로 묶고 통합하여 활용하고 관리하는 기술입니다. GPU를 통합하면 전체 가용량이 늘어납니다. 클러스터링 된 자원에 분배 기술을 적용하여 필요한 사용자가 필요한 시점에 필요한 만큼 효과적으로 활용할 수 있게 제공합니다. 또한 AI 개발 환경에 드는 시간을 줄일 수 있도록 자동 환경 세팅을 지원합니다.

이제 사용자가 필요한 만큼 무조건 GPU를 구매하지 않아도 됩니다. R&D Cloud for AI를 통해 이미 마련된 GPU를 최대한 활용할 수 있습니다. 장비를 구매하고 환경을 세팅하는 데 걸리는 시간을 줄이고, 효율적인 AI 연구개발에 훨씬 가까이 다가갈 수 있습니다.

기술 정의

R&D Cloud for AI의 개념은 간단합니다. 여러 GPU를 묶어서 사용 가능한 자원의 모수를 늘리고, 분리 운영할 때 발생하는 자산의 유휴 시간을 줄이는 기술입니다. R&D Cloud for AI를 서비스로 제공하기 위해서는 크게 클러스터링과 자원의 분배, 그리고 사용자의 편의성과 확장성 강화 기술이 필요합니다. GPU 클러스터링으로 컴퓨팅 리소스를 통합하고, 사용자가 서비스를 사용하고자 할 때 필요한 자원을 편리하고 효율적으로 활용하도록 지원합니다.

① GPU 클러스터링

GPU 클러스터링은 여러 GPU 서버를 Kubernetes 기반 기술로 통합합니다. R&D Cloud for AI의 가장 근간이 되는 기술로서, 단지 여러 자원을 묶어놓는 데 그치지 않고, 여러 자원이 통합된 상태에서 안정적으로 자원 활용을 가능하게 하는 것이 핵심입니다.

    클러스터링 전, Job A, Job B, Job C, Job D 병렬처리, 클러스터링 후, Job A, Job B, Job C, Job D Kubernetes [그림 3] 단순화하여 표현한 GPU 클러스터링 적용 전후

② Job 스케줄링

클러스터링 된 GPU를 활용하여 사용자가 작업을 시작한다고 가정해 봅시다. 사용자가 적을 경우에는 GPU를 활용하여 작업을 진행하는 데 아무 문제가 없습니다. 하지만, 사용자가 많을 경우, 클러스터링 된 GPU는 모든 사용자의 요구에 맞춰서 한 번에 Job을 처리할 수 없습니다. Job의 크기나 필요 리소스, 예상 시간에 따라 어떤 Job은 바로 처리되기도, 또 어떤 Job은 대기시간이 필요하기도 합니다.

Job 스케줄링은 클러스터링 된 GPU 서버에서 스스로 현재의 가용 자원량을 판단하고, 인입되는 Job의 특성을 파악하여 어떤 순서로 Job을 배분하고 처리할지 결정하는 기술입니다. R&D Cloud for AI는 Kubernetes에서 제공하는 기본 스케줄러를 연구환경에 맞게 변형하고, 필요한 방식의 Scheduler를 추가로 개발하여 적용했습니다.

    Default방식(Kubernetes) Job C Fail, Job Scheduling 적용 Job C 수행 [그림 4] Job 스케줄링 적용 효과

③ 분산 컴퓨팅(Distributed Computing)

Deep Neural Network(DNN) 기술이 발전하면서 점차 처리해야 할 연산이 늘어나고 있습니다. 최신의 언어 처리 모델 등은 고가의 GPU가 있어도 적절한 시간에 연산할 수 없을 정도로 복잡합니다. DNN은 복잡한 연산을 통하여 파라미터를 찾는 작업을 수행하는 것인데, 1998년에 발표된 LeNet-5는 6만 개의 파라미터를 찾지만, 2020년에 발표한 GPT-3는 1,750억 개의 파라미터를 찾습니다. 분산 컴퓨팅 기술은 GPU 한 장으로 처리할 수 없는 복잡한 연산을 여러 개의 GPU를 동시에 활용하여 처리하는 기술입니다. 실제로 GPT-3를 연구에 사용하려면 여러 개의 머신에 있는 1,000장 이상의 GPU를 동시에 쓸 수 있는 기술이 필요합니다.

R&D Cloud for AI는 다양한 AI Framework에서 사용 가능한 분산 학습 기술을 도입하여 복잡한 연산을 해야 하는 연구자가 성과를 빨리 낼 수 있게 도와줄 수 있습니다.

    Job E 4.7Jobs per day, Job E Knubernetes 활용하여 35 Jobs per day, with 8GPUs, 106 Jobs per day with 3X8GPUs [그림 5] 멀티노드 GPU를 동시 활용하여 분산 학습

2. 주요 기능

삼성SDS R&D Cloud for AI는 클러스터링 된 GPU를 사용자들에게 더 편하고 효과적으로 사용할 수 있도록 다양한 기능을 제공합니다.

개인화된 머신러닝 연구개발 환경

머신러닝 연구와 같이 대량의 GPU를 활용하여 프로젝트를 수행해야 한다면, 당연히 필요한 사양의 GPU 장비를 구매해야 합니다. 하지만, GPU 장비를 막상 구매해도 사용자별로 환경과 패턴이 다르기 때문에 구매된 장비를 사용할 수 있는 사용자는 제한될 수밖에 없습니다. 만약 누군가 해당 GPU를 활용하여 새로운 개발을 하려 해도 필요한 환경을 구성하고 세팅하는데 어려움이 생깁니다.

    개인화 컨테이너 TensorFlow, Pandas, Anaconda, 개인화 컨테이너 PyTorch, Numpy, Beautifulsoup, 개인화 컨테이너 TensorFlow, Pandas, Beautifulsoup [그림 6] R&D Cloud for AI에서 제공하는 개인화 컨테이너의 예시

R&D Cloud for AI는 사용자가 원하는 환경을 가상화된 컨테이너로 제공하여 환경 세팅에 드는 시간을 줄여줍니다. 또한 클러스터링 환경의 특성을 활용하여 다른 사용자가 세팅해 놓은 환경을 재사용하거나 필요한 구성으로 변경하여 활용하는 것도 가능합니다.

AI Optimized Job Scheduling

클러스터링 된 GPU가 모든 사용자와 Job을 항상 감당할 수 있다면 좋겠지만, 현실은 그렇지 않습니다. 대다수의 기업이나 학교는 항상 리소스가 모자라며, GPU를 클러스터링하여 제공한다고 해도 클러스터링 된 자원의 총량이 Job의 총량보다 부족한 경우는 당연히 발생합니다. 스케줄링 기술은 대기가 필요한 Job을 어떤 순서로 어떤 노드에서 처리할 것인지, 설정된 정책(Policy)에 따라 분배하는 기술입니다.

  Default 방식(Kubernetes), Bin Packing Scheduler 적용시 [그림 7] Kubernetes에서 기본 제공하는 스케줄러와 R&D Cloud for AI에 적용된 Bin Packing 방식의 스케줄러 비교

R&D Cloud for AI는 AI 연구에 특화된 3개의 스케줄러를 보유하고 있습니다. 각각의 스케줄러는 공정성이나 Job의 특징에 따라 가장 효율적으로 처리할 수 있게 분배합니다. R&D Cloud for AI는 지금까지 개발한 다양한 스케줄러를 바탕으로 AI Optimized Scheduler를 개발하고 있습니다. 삼성SDS가 목표하는 스케줄링 기술 수준에 도달하면, R&D Cloud for AI는 Job의 순서와 배치를 조정하여 자원 활용 효율성을 극대화하여 전체 Job 수행 완료 시간을 줄일 수 있게 됩니다.

실시간 모니터링

R&D Cloud for AI는 필요에 따라 GPU를 추가로 확보하고 클러스터링 할 수 있습니다. 서비스 공급자는 현재 클러스터링 된 GPU 서버가 과잉 공급되고 있는지, 적절한지, 혹은 추가로 구비해야 되는지를 결정해야 합니다. R&D Cloud for AI는 서버별, 노드별로 사용량과 사용자를 확인할 수 있게 실시간 모니터링을 제공합니다. 서비스 제공자와 운영자는 필요 수요를 집계할 때, 코드를 뜯어보는 불필요한 작업 없이, 해당 모니터링 툴을 통해 자산들이 어느 정도 수준으로 활용하고 있는지 쉽게 확인할 수 있습니다.

모니터링 기능은 사용자들에게도 유용합니다. 작업 시, 모니터링을 통해 R&D Cloud for AI의 적절한 활용 시점을 판단할 수 있고, 실시간으로 어떤 프로젝트에서 어느 노드를 점유하고 있는지 확인할 수 있습니다. 또한 할당 받은 GPU의 Core 사용률을 보여주어 학습 작업이 효율적인지 I/O 등으로 인한 성능 저하가 있는지 확인하고 개선할 수 있습니다.

    Cluster 평균 GPU사용률 80.25%, Cluster의 노드별 평균 GPU 사용률 대시보드 [그림 8] R&D Cloud for AI의 실시간 모니터링 화면 중 일부

3. 차별화 포인트

삼성SDS R&D Cloud for AI는 기존의 Kubernetes 기반 기술을 비롯해 다양한 기술을 그대로 활용하지 않고, AI 연구개발 환경에 맞춰서 최적화된 환경을 구축했다는 데 의의가 있습니다. 운영 강화를 위해 스케줄러와 모니터링 툴을 위한 별도의 페이지를 제공합니다. 그리고 AI 연구원들이 가장 많이 필요로 하는 AI 프레임워크가 적용되어 있고, 머신러닝 환경을 쉽게 셋업할 수 있도록 10종의 Environment Asset을 제공하는데, 이는 R&D Cloud for AI만의 차별화 포인트입니다.

4. Use Case

삼성SDS 연구소 AI 연구개발 환경 지원

R&D Cloud for AI 구축 이전까지 삼성SDS의 연구소는 GPU 구매와 관리에 어려움을 겪었습니다. 프로젝트마다 필요한 GPU 사양과 수량에 대해 예측하여 구매하지만, 프로젝트가 종료되거나 범위가 변경될 때마다 GPU의 관리 주체가 모호해지기 때문입니다. 또한 각각의 개인 좌석에서 GPU 서버를 놓고 개발하다 보니 발열과 소음 문제까지 발생했습니다.

R&D Cloud for AI 구축 이후, 이렇게 갖춰진 자산을 물리적으로 데이터센터에 통합하여 보관, 관리할 수 있게 되었고, 프로젝트 런칭 시 자산의 구매 절차를 거칠 필요 없이 R&D Cloud for AI를 활용함으로써 곧바로 개발이 가능해졌습니다. 자산의 구매와 관리는 R&D Cloud for AI가 일괄적으로 담당하기 때문에, 연구원들은 AI 연구 자체에 집중할 수 있게 되었고, 부가적으로 환경 준비에 들이는 시간을 줄일 수 있게 되었습니다.

2020년 1차 개발을 완료하고 삼성SDS 연구소 자체적으로 시범 서비스를 적용하여 AI 연구개발자들에게 상당히 만족스러운 편리를 제공하였으며, 이들로부터 받은 VoC(Voice of Customer)를 통해 기능과 성능을 개선하였습니다. 2021년에는 장비 개수를 대폭 늘려 연구개발을 가속하는 것과 동시에 Kubernetes 기반으로 사용 가능한 Computing, Network, Storage를 같이 연구할 예정입니다.

5. 맺음말

지속적으로 수요가 급증하고 있는 GPU 기반의 연구 환경을 구축하는 데 R&D Cloud for AI는 현실적인 대안을 제공합니다. AI 연구개발을 위해 제공하는 각종 기능은 서버를 구매해야 할 때, 한 번에 엄청난 양의 자원을 구매하지 않고도 점진적으로 서버를 늘려가며 확보된 자원을 최대한 활용할 수 있습니다. 다만, 현재의 R&D Cloud for AI는 보완하고 개선해야 할 부분이 남아 있습니다. 특히, 네트워크은 성능 향상을 위해 필요한 연구 분야입니다.

삼성SDS R&D Cloud for AI는 단순 명료한 포인트를 개선하여 기술적인 성과를 이룩했다는 데 큰 의의가 있습니다. ‘통합 사용’이라는 단순한 개념에서 출발하여 더욱 현실적이고 효과적인 해결 방안을 찾아내고자 계속해서 기술을 확장하고 있습니다.

Kubernetes 기반 AI 연구개발용 GPU 클러스터링 기술 동영상 캡쳐 화면 [Technology Toolkit 2021] R&D Cloud for AI - Kubernetes 기반 AI 연구개발용 GPU 클러스터링 기술
동영상 보기


▶  해당콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶  해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

서인석
서인석 클라우드 전문가

삼성SDS 연구소 클라우드연구팀, 삼성SDS 기자

삼성SDS 클라우드연구팀의 기획 담당입니다. 삼성SDS 기자를 겸하고 있습니다. R&D Cloud for AI를 비롯한 클라우드 기술을 어렵지 않게 소개합니다.

Technology Toolkit 2021에 소개한 기술에 대해 문의사항이 있으시거나, 아이디어, 개선사항 등 의견이 있으시면, techtoolkit@samsung.com으로 연락해 주세요.