image_pdfimage_print

회사에서 데이터 과학자들을 위해 강력한 GPU 서버를 여러 대 구입했다고 가정해 보겠습니다. 데이터 과학자들은 이제 개인 노트북으로 트레이닝 작업이 완료될 때까지 기다릴 필요가 없게 되었다는 생각에 기분이 좋을 것입니다. GPU를 즉시 사용할 수 있다면 좋겠지만, 문제가 그렇게 간단하지는 않습니다. GPU에 액세스하기 전에 IT 팀은 데이터 과학자들에게 다음과 같은 질문을 할 것입니다.

  • CPU 및 GPU 리소스가 얼마나 필요합니까?
  • 예상되는 시작 및 종료 시간은 어떻게 됩니까?
  • 공유 스토리지가 필요하다면 용량이 얼마나 되어야 합니까?
  • 데이터 세트의 크기가 얼마나 되며, 어떻게 업로드합니까?

팀의 누군가가 GPU를 사용하려고 할 때마다 일어날 수 있는 상황입니다.

인공지능(AI)에 액세스할 수 있도록 만드는 것은 그 어느 때보다 쉬워졌습니다. AI는 매우 광범위한 기술입니다. AI는 머신러닝(ML) 모델을 트레이닝하기 위해 파이썬 코드를 작성하는 것 그 이상이 필요합니다. 엔드-투-엔드 AI 인프라와 시스템을 구축하고 운영한다는 것은 대기업에서도 결코 쉽지 않은 일입니다. Google의 연구 자료(영문자료)에도 설명되었지만, ML 코드는 아래 그림의 가운데 있는 작은 검은색 상자처럼 실제 ML 시스템에서 아주 작은 부분을 차지합니다. 필요한 주변 인프라는 방대하고 복잡합니다.

출처: Hidden Technical Debt in Machine Learning Systems – Google

우선 작은 검은색 상자인 이 ML 코드 부분에 집중해 보겠습니다. 모델 트레이닝에는 GPU나 TPU가 사용되기 때문에, 기존 소프트웨어 개발과는 큰 차이가 있습니다. GPU/TPU는 비용이 많이 들고, 드라이버 및 라이브러리를 추가로 설정해야 합니다. 그렇다면 팀에서는 GPU를 어떻게 공유하고 스케줄링 해야 할까요? 서드파티 툴이나 자체적으로 구축한 스크립트, 스프레드시트를 사용하는 경우가 있는데, 이는 현명한 결정은 아닙니다.

최근에 래블업(Lablup)의 직원들과 AI의 도전과제, 기회 및 기술에 대해 대화를 나눌 기회가 있었습니다. 래블업 팀은 또한 AI에 쉽게 접근할 수 있도록 해주는 최신 AI/ML용 오픈소스 컴퓨팅 리소스 오케스트레이터 ‘Backend.AI(영문자료)’를 보여주었습니다. 팀이 달성한 성과에 깊은 인상을 받아 이에 관한 블로그 글을 써야겠다고 생각하게 되었습니다.

AI 접근성을 향상시키는 방법

AI를 도입할 때, 많은 기업이 데이터 과학자들을 고용하고 이들에게 단일 GPU 카드가 내장된 노트북을 제공합니다. 나쁜 방법은 아니지만, 팀이 더 큰 데이터 세트와 모델에 대한 작업을 시작하면 더 많은 GPU가 필요해 집니다. 데이터센터나 클라우드에 GPU 서버가 필요합니다. 그리고 이 부분에서 인프라 문제가 노출됩니다. 모든 기업이 GPU 리소스를 효과적으로 관리할 수 있는 것은 아닙니다.

Backend.AI는 이러한 AI 시스템의 기본적인 문제를 해결하도록 설계되었습니다. GPU를 비롯한 컴퓨팅 리소스를 데이터 과학자들이 쉽게 액세스하고 공유할 수 있도록 만드는 것입니다. 데이터 과학자들이 더 나은 모델을 구축하는 데만 집중할 수 있도록, GPU 관리와 공유의 복잡성을 처리해줍니다. 여러 서버에서 GPU 리소스를 컴퓨팅 풀(computing pool)이라는 개념으로 추상화하여 복잡성을 해결합니다. 요청이 있을 때마다 간단한 UI를 통해 GPU 리소스를 여러 컴퓨팅 세션에 할당할 수 있습니다.

Backend.AI에서 새로운 세션 시작

새로운 세션은 단일 GPU나 여러 GPU, 또는 GPU의 일부에서도 실행할 수 있으며, 이는 소규모 모델 트레이닝과 추론에 유용합니다. 단 몇 번의 클릭으로, 브라우저에서 선호하는 ML 프레임워크를 사용해 GPU 지원 세션을 시작할 수 있습니다. GPU 드라이버, 라이브러리, 프레임워크 등 아무것도 설치할 필요가 없습니다.

Backend.AI에서 다양한 툴을 클릭 한 번으로 실행

Backend.AI는 또한 브라우저에서 일반적으로 사용되는 ML 툴을 실행할 수 있도록 지원합니다. 평소에 Jupyter를 많이 사용하기 때문에, 버튼을 클릭해 JupyterLab 인스턴스를 시작해보았습니다. 거기에서 즉시 ML 코드 작성을 시작할 수 있습니다.

Backend.AI에서 JupyterLab 인스턴스 시작

한 번의 클릭으로 세션 내에서 터미널을 시작할 수도 있습니다. 브라우저에서 실행되는 CLI를 사용하면 세션을 유연하게 제어할 수 있습니다.

Backend.AI의 웹 기반 CLI

팀원들의 세션 환경과 격리되어 있으므로 충돌이나 리소스 경쟁에 대해 걱정할 필요가 없습니다. 트레이닝 작업이 완료되면, 모델을 저장하고 세션을 종료할 수 있습니다. 그러면 GPU 리소스가 풀로 다시 반환됩니다.

이처럼 Backend.AI는 AI에 쉽게 액세스할 수 있도록 지원합니다. 아무것도 설치할 필요가 없고, 누군가에게 GPU 환경을 제공해달라고 요청할 필요도 없습니다. 클릭 몇 번으로 바로 시작할 수 있습니다! 단일 GPU이든 여러 GPU이든 상관없습니다. GPU 리소스를 서비스형으로 사용하는 것입니다. 모든 데이터 과학자들이 이러한 혜택을 누릴 수 있어야 한다는 생각입니다.

작동 원리

아주 유용한 플랫폼이라는 것을 이해하셨다면, 이제 작동 원리가 궁금하지 않으신가요? 간단히 말하자면, Backend.AI는 많은 서버-클라이언트 시스템처럼 작동합니다. 클라이언트는 서버 측 구성 요소에 대한 요청을 시작하는 SDK와 라이브러리입니다.

모든 마법은 서버에서 일어나지만, 클라이언트 측의 경우 Visual Studio Code와 통합된 것이 특히 마음에 듭니다. 코딩, 메모 등 일상적인 거의 모든 일에 VSCode를 사용하는 사람으로서, 모델을 작성 및 디버깅하고 단일 VSCode 환경에서 많은 GPU로 확장할 수 있다는 것은 매우 편리하고 강력한 역량입니다.

API 요청 라우팅을 위한 API 게이트웨이가 있는 매니저, 요청 실행 및 컨테이너 작동을 위한 에이전트, 다양한 프로그래밍 언어 및 구성으로 명령/코드를 실행하기 위한 커널 등 서버 측에는 여러 구성 요소가 있습니다.

Backend.AI 아키텍처

익숙한 느낌이 드시나요? 이 아키텍처에 대해 처음 들었을 때 가장 먼저 든 생각은 Backend.AI와 도커 + NGC + 쿠버네티스 스택의 차이점은 과연 무엇일까 하는 것이었습니다. 그래서 직접 물어보았습니다. 다음은 Lablup 직원들이 공유해준 주요 차별화 요소입니다.

  • 쿠버네티스가 필요하지 않습니다. 여전히 많은 기업들이 어려워하는 쿠버네티스 기반 솔루션과 비교해, Backend.AI는 클러스터에 쉽게 액세스할 수 있습니다.
  • 하이 엔드/고밀도 노드에서 멀티 테넌트 워크로드의 보다 강화된 컨테이너 수준 격리와 가상화를 통해 HPC 및 AI 워크로드 실행에 최적화 되어있기 때문에, GPU 활용도를 더 쉽게 극대화할 수 있습니다. 반면 쿠버네티스는 소규모 노드 그룹으로 마이크로서비스를 실행하고 원하는 배포 상태를 유지하는 데 더 중점을 둡니다.
  • 토폴로지를 인식하는 리소스 할당처럼, HPC/AI에 최적화된 설계 덕분에 더 높은 성능을 제공합니다.
  • 기존 CUDA 프로그램 및 라이브러리를 수정하지 않고도, GPU의 전용 부분을 개별 컨테이너에 할당하여 GPU 성능을 최대한 활용할 수 있도록 해주는 부분 GPU 스케일링(fractional GPU scaling) 기능이 포함됩니다.
  • 파일 시스템/스토리지 별 가속 기능을 사용해 더 높은 I/O 및 데이터 관리 성능을 가능하게 하는 스토리지 파일 시스템이 내장되어 있습니다.
  • 쿠버네티스 클러스터를 백엔드 컴퓨팅 노드로 사용할 수 있도록 지원합니다. (현재 베타 상태)

스토리지 통합

AI 시스템은 데이터에 코드(모델)를 더한 것입니다. Backend.AI는 다양한 NAS(Network Attached Storage) 제품과의 원활한 통합을 지원합니다. Backend.AI에는 NAS에서 볼륨을 프로비저닝하고 세션에 가상 폴더(vfolder)로 표시하는 스토리지 프록시 구성 요소가 포함되어 있습니다. NAS는 대부분 GPU 서버에서 직접 연결된 SSD보다 느리지만, vfolder가 필요한 이유는 전체 세션에서 영구적이기 때문입니다. 따라서 세션을 종료해도 데이터가 손실되지 않습니다.

퓨어스토리지 플래시블레이드(FlashBlade) NFS는 온-프레미스 Backend.AI 고객에게 권장되는 NAS입니다. 플래시블레이드 NFS 통합을 통해, 고객은 올플래시 스토리지의 빠른 성능과 Rapidfile 툴킷을 활용해 AI 워크로드를 강화할 수 있습니다. 또한 Backend.AI UI에서 플래시블레이드 I/O 통계, CPU/GPU 사용률 및 기타 통계치도 확인할 수 있습니다. 이를 통해 시스템 통계 정보를 한눈에 쉽게 이해할 수 있습니다.

Backend.AI에서의 플래시블레이드 통합 및 모니터링

많은 NAS 옵션이 존재하는데, 왜 플래시블레이드여야 할까요? 데이터 과학자에게 스토리지는 AI/ML 스택에서 그다지 흥미롭지 않은 부분일 수도 있지만, 이는 매우 중요한 부분입니다. 스택에 간단하고 안정적이며 빠른 NAS를 보유하는 것이 중요합니다.

  • 플래시블레이드는 쉽게 사용하고 관리할 수 있습니다.
  • 플래시블레이드는 높은 복원력과 보호를 제공하도록 설계되었습니다.
  • 플래시블레이드는 일관된 낮은 레이턴시와 선형 확장성을 통해 높은 처리 역량을 제공합니다.

단순한 마케팅 메시지로 이용되는 경우가 많기 때문에, 여러 다른 NAS 제품들이 제공하는 GBps를 비교하는 것을 별로 좋아하지 않습니다. AI/ML 워크로드의 경우, NAS는 최소한 GPU가 데이터를 처리할 수 있을 만큼 빨라야 합니다. 그렇지 않으면 고가의 GPU가 데이터가 들어올 때까지 기다리는 것 외에는 아무 일도 하지 못하기 때문입니다. 트레이닝 작업에서 GPU가 초당 4GB를 처리한다면 80GBps는 아무 의미도 없습니다. 하지만 GPU를 포화 시키려면 NAS에서 4GBps가 필요합니다.

머신러닝의 일반적인 데이터 경로

NAS가 필요한 최소 처리량을 지원할 수 있다면, 이제 중요한 것은 간소성, 복원력 및 기능입니다. 래블업 직원들이 명확히 언급한 플래시블레이드의 장점 한가지는 Rapidfile 툴킷입니다.

요즘에는 ML 데이터 세트에 수백만 개의 파일이 포함된 경우가 흔합니다. 데이터 세트를 처음 압축 해제할 때, 가장 먼저 수행하는 작업은 무엇일까요? 아마 권한을 변경하거나 파일 통계를 수집하는 작업일 겁니다. 그렇기 때문에, 이를 위해 chmod 또는 find같은 일부 Linux 명령어를 실행합니다.

하지만, 완료까지 수십 분, 아니 몇 시간이 걸릴 수 있습니다. NAS가 느리기 때문이 아니라, 파일을 하나씩 순차적으로 실행하는 Linux의 명령어 실행 방식 때문입니다. 수백만 개의 파일을 이런 식으로 실행하려다 보니 그만큼의 시간이 걸립니다.

이러한 측면에서 Rapidfile 툴킷이 도움이 됩니다. Rapidfile 툴킷은 퓨어스토리지가 제공하는 소프트웨어 패키지로, 일반적인 Linux 파일 작업을 최대 30배까지 가속화해줍니다. 설치가 되면, Linux에 상응하는 ‘p-명령어’ 세트를 제공합니다.

예를 들어, find에 해당되는 pfind와 Is에 해당되는 pls를 제공합니다. p-명령어는 파일을 병렬로 실행함으로써 기존의 Linux 명령어를 개선합니다. 따라서 한 번에 하나의 파일 권한을 변경하는 대신 여러 스레드의 많은 요청을 NAS에 전송하여 한 번에 여러 파일 권한을 변경할 수 있습니다.

플래시블레이드 NFS에 저장된 120만 개의 파일을 대상으로 한 테스트에서, Rapidfile 툴킷은 가장 일반적인 명령어에 대해 Linux 툴킷에 비해 약 30배 빠른 것으로 나타났습니다.

Rapidfile 툴킷 대비 기존 Linux 명령어, 120만 개 파일을 실행하는 데 걸리는 시간

래블업 팀은 Rapidfile 툴킷이 Backend.AI와 퓨어스토리지의 공동 고객들이 가장 좋아하는 기능 중 하나라고 말합니다.

요약

AI는 대중의 많은 관심을 받고 있으며, 그만큼 기대치도 높습니다. 그러나 기업과 정부기관들은 여전히 AI 인프라를 구축하는 데 어려움을 겪고 있습니다. GPU 리소스와 데이터를 관리 및 공유하는 것은 우리가 해결해야 할 첫 번째 과제 중 하나입니다.

래블업의 Backend.AI는 GPU를 서비스형으로 사용할 수 있도록 해줍니다. 그리고 퓨어스토리지의 플래시블레이드는 간단함과 빠른 속도를 갖춘 서비스형 데이터를 제공합니다. 두 기업은 함께 AI 접근성을 향상시키고 있습니다.