심층 신경망(Deep Neural Networks, DNN)의 발전은 데이터 과학자들이 인공 지능(AI)을 이용해 데이터를 활용할 수 있도록 알고리즘과 툴의 물꼬를 터주었습니다. 향상된 알고리즘, 대규모의 데이터세트, 그리고TensorFlow와 같은 프레임워크를 통해 데이터 과학자들은 자율주행차, 자연 언어 처리 등과 같은 새로운 AI 사례를 해결하기 위해 노력 하고 있습니다.
데이터는 현대의 딥 러닝(Deep Learning) 알고리즘의 심장부에 위치합니다. 학습 과정을 시작하기 전에 해결해야 할 어려운 문제로는, 정확한 AI 모델 교육에 핵심적일 수 있는 라벨링 된 데이터를 수집해야 한다는 문제가 있습니다. 그리고 완전한 규모의 AI 구현은 지속적으로 방대한 양의 데이터를 수집, 클리닝, 전환, 라벨링 및 저장할 것을 요구하게 됩니다. 더 많은 고품질의 데이터를 수집하는 것은 더 정확한 모델과 더 나은 인사이트를 확보하는 것과 직결됩니다.
이 글에서는 데이터 엔지니어와 데이터 과학자들이 딥 러닝 시스템에서 데이터 추출/저장, 처리 및 활용하는 다양한 방법들과 그 의미를 살펴보고 데이터 아키텍트가 실제 AI 운영 시스템을 위한 스토리지 인프라를 어떻게 설계할 수 있는지에 대해 자세히 알아 보도록 하겠습니다.
데이터 수명주기
데이터 샘플은 다음과 같은 일련의 처리 단계를 거칩니다.
- 외부 소스로부터 학습 시스템으로 데이터가 추출 및 저장(Ingest)됩니다. 각 데이터는 대부분 파일 또는 오브젝트입니다. 이 데이터는 추론과정을 거칠 수도 있습니다. 추출/저장 단계 후, 데이터는 원시 형태(Raw Form)로 저장되며 이 형태로 백업이 되기도 합니다. 모든 관련된 라벨(기준값)이 데이터와 함께 또는 별도의 추출/저장 과정을 통해 유입됩니다.
- 데이터를 정제하고 변환한 후, 데이터 샘플과 관련 라벨을 연동하고 학습에 편리한 포맷으로 저장 합니다. 이 데이터의 두 번째 복사본은 필요한 경우 다시 계산하면 되기 때문에 백업이 되지 않습니다.
- 파라미터와 모델들을 탐색하고 더 작은 규모의 데이터세트로 신속하게 테스트한 뒤, 가장 유망한 모델들에 융합이 되도록 운영 클러스터로 내보냅니다.
- 학습 단계에서는 입력 데이터의 새로운 샘플과 기존 샘플이 포함된 랜덤 배치가 선택되어 운영 GPU 서버로 보내지며 모델 파라미터의 업데이트를 위한 계산이 수행됩니다.
- 평가 단계에서는 학습에 사용되지 않은 데이터의 잔여 부분을 사용하여 잔여 데이터를 대상으로 모델의 정확성을 평가합니다.
이러한 수명주기는 신경망이나 딥 러닝뿐만 아니라 모든 병렬화된 머신 러닝 유형에 적용됩니다. 예를 들어, Spark MLlib 같은 표준 머신 러닝 프레임워크는 GPU가 아니라 CPU에 의존하지만, 데이터 추출/저장과 학습 과정은 동일합니다.
위에서 살펴보았듯이, AI 데이터 파이프라인의 각 단계에는 스토리지 아키텍처에 대한 다양한 요구사항이 존재합니다. AI 알고리즘을 혁신시키고 향상시키려면, 스토리지는 대/소규모 파일, 무작위/순차적 액세스 패턴, 그리고 낮거나 높은 동시성까지 모든 액세스 패턴에 매우 뛰어난 성능을 제공해야 하며, 선형적인 확장이 가능하여야 하고 무중단으로 용량과 성능을 업그레이드할 수 있어야 합니다. 레거시 스토리지 시스템의 경우, 이는 설계 시점에서 해결하기 어려운 과제이므로, 데이터 아키텍트는 복잡한 구성의 인프라스트럭처를 도입할 수 밖에 없고 결국에는 개발 과정이 지연됩니다. FlashBlade는 이상적인 AI 데이터 허브입니다. 현대의 비정형 워크로드를 염두에 두고 특수 설계되었기 때문입니다.
첫 번째 단계에서 데이터는 동일한 데이터 허브에 이상적으로 추출 및 저장되기 때문에 다음 단계에서 과도한 데이터 복사가 필요하지 않습니다. 다음 단계들은 GPU를 선택적으로 포함할 수 있는 일반적인 계산용 서버에서 수행될 수 있습니다. 그리고 네 번째와 마지막 단계에서, 완전한 학습 운영 작업은 DGX-1과 같은 강력한 GPU 가속 서버에서 실행됩니다. 동일한 데이터세트에 실험 파이프라인과 운영 파이프라인이 함께 존재하는 경우도 종종 있습니다. 이외에도, 각 DGX-1 GPU는 여러 다른 모델에서 독립적으로 사용되거나 함께 결합되어 더 큰 하나의 모델을 교육할 수 있습니다. 분산 학습을 위해 다수의 DGX-1 시스템들을 결합하는 경우도 있습니다.
단일한 공유 스토리지 데이터 허브는 수명주기 전반에 걸쳐서 사용됩니다. 데이터 추출/저장, 처리 및 학습 단계들에서 추가적인 데이터 복사본이 필요하지 않습니다. 추출/저장된 데이터가 하나의 목적에만 사용되는 경우는 드뭅니다. 또한 공유 스토리지는 데이터를 다양한 방법으로 해석하고, 다수의 모델을 교육시키며, 데이터에 기존 분석을 적용할 수 있는 유연성을 제공합니다.
공유 스토리지 계층이 느리면, 데이터는 각 처리단계를 위해 로컬 스토리지로 복사되어야 합니다. 결과적으로 데이터를 다른 서버들에서 사용 가능하도록 준비시키느라 시간이 허비됩니다. AI 학습 파이프라인을 위한 이상적인 데이터 허브는 데이터가 시스템 RAM에 저장된 경우와 유사한 성능을 제공하는 동시에 모든 파이프라인 단계들이 동시에 구동될 수 있도록 단순함과 뛰어난 성능을 제공해야 합니다.
데이터 과학자의 워크플로우
데이터 과학자는 더 많은 데이터, 더 나은 데이터, 더 스마트한 학습, 더 심도 있는 모델 등 광범위한 접근방식을 통해 학습된 모델의 유용성을 향상시키려고 합니다. 많은 경우, 데이터 과학자 팀들은 새롭고 향상된 학습 모델을 생성하기 위해 동일한 데이터세트를 공유하며 병렬적으로 작업할 것입니다.
데이터 과학자와 데이터 엔지니어들의 일상적인 워크플로우는 다음과 같습니다.
- 교육용 데이터를 정렬, 클리닝, 필터링, 프로세싱하여 모델 교육에 사용될 수 있는 형태로 변환
- 교육용 데이터의 소규모 서브셋에서 모델을 테스트 및 디버깅
- 전체 교육용 데이터세트로 모델을 교육
이러한 워크플로우는 개발, 실험, 디버깅 단계들 간에 반복됩니다. 핵심 개발 툴은 TensorFlow, Caffe2, CNTK 같은 딥 러닝 프레임워크입니다. 이 프레임워크들은 데이터 처리 및 모델 구축을 위한 유틸리티를 제공하며 이들은 분산된 GPU 하드웨어에서의 실행에 최적화되어 있습니다.
많은 경우 데이터 과학자들은 공유되는 동일한 데이터세트로 이러한 단계들을 동시에 처리합니다. 데이터 처리, 실험 및 대규모의 트레이닝 계층에 있는 다수의 동시적 워크로드는 스토리지 계층에서의 액세스 패턴과 요구사항이 서로 다릅니다. 다시 말하면, 스토리지는 대규모 파일 읽기만 충족시켜서 되는 것이 아니라 대/소규모의 파일 읽기와 쓰기가 섞여 있는 요구들을 처리할 수 있어야 합니다.
마지막으로, 다수의 데이터 과학자들이 데이터세트와 모델을 탐색하는 경우 데이터를 원래의 포맷으로 저장하는 것이 중요합니다. 이는 각 사용자가 고유한 방식으로 데이터를 전환, 클리닝 및 사용할 수 있는 유연성을 제공합니다. 궁극적으로, 이러한 워크플로우의 반복과 실험을 통해 더 강력한 모델이 탄생합니다.
FlashBlade는 데이터세트가 자연스럽게 공유되는 스토리지 허브를 제공합니다. 또한 다수의 개발자와 다수의 실험을 위한 공통 액세스 지점이 되는데 필요한 성능과 데이터 보호용 이중화 기능(RAID6 활용)을 제공합니다. FlashBlade를 사용하면 로컬 작업을 위해 데이터 하위세트를 복사할 필요가 없기 때문에 DGX-1 시스템의 사용 시간과 엔지니어링 작업이 감소됩니다. 이러한 데이터 복사본을 가지는 경우, 원시 데이터 세트가 지속적으로 변환되고 업데이트되면 큰 부담이 됩니다.
확장 가능한 데이터세트
딥 러닝의 성공률이 급격히 높아진 근본적인 이유는 더 큰 규모의 데이터세트를 통해 모델이 지속적으로 향상되기 때문입니다. 이에 반해서, 로지스틱 회귀(logistic regression) 같은 기존 머신 러닝 알고리즘은 작은 규모의 데이터세트에서는 정확도가 더 이상 향상되지 않습니다.
선도적인 AI 연구원의 말은 이러한 필요를 강조해줍니다.
“2016년을 기점으로, 지도학습(Supervised Deep Learning) 알고리즘은 카테고리 별로 약 5,000개의 라벨링된 예시를 갖추어 허용할 만한 수준의 성능을 달성할 것이며, 라벨링된 예시가 1천만 개에 달하는 데이터세트로 학습한다면 인간의 능력과 대등하거나 훨씬 능가할 것이다.” 이안 굿팰로우(Ian Goodfellow) 2016년
Google의 최근 연구에 따르면 데이터세트의 크기 증가는 여러 장점으로 이어집니다. 데이터세트의 크기가 3억 개의 이미지로 늘어나면 이미지 인식작업의 성능이 크게 증가했습니다. 이뿐만 아니라, 이 연구는 용량이 더 큰 모델은 이와 비례하여 더 큰 데이터세트를 필요로 한다는 사실도 밝혀냈습니다.
컴퓨트(DGX-1)와 스토리지(FlashBlade)를 분리하면, 각 계층의 독립적인 확장이 가능해지기 때문에 둘을 함께 관리함으로써 발생하는 다양한 복잡성을 제거할 수 있습니다. 데이터세트 크기가 커지거나 새로운 데이터세트가 고려되면, 스케일 아웃 스토리지 시스템은 쉽게 확장될 수 있어야 합니다. 마찬가지로, 더 많은 동시적 트레이닝이 필요한 경우 내부적인 스토리지에 대한 걱정 없이 더 많은 GPU 또는 DGX-1 서버가 추가될 수 있습니다.
왜 FlashBlade인가
딥 러닝 아키텍처에서 중앙화된 데이터 허브는 데이터 과학자들의 생산성을 향상시켜 주고, 데이터 아키텍트를 위해 확장과 운영을 보다 간단하고 민첩하게 만들어줍니다. FlashBlad는 다음과 같은 이유로 특히 AI 시스템을 보다 쉽게 구축, 운영 및 확장할 수 있게 해줍니다.
· 성능: 플래시블레이드는 섀시당 15GB/초의 랜덤 읽기 대역폭과 최대 대역폭 합계 75GB/초의 성능으로 AI 워크플로우를 동시에 처리할 수 있습니다
· 소규모 파일 처리: 하나의 FlashBlade 섀시(50GB/초, 블레이드 75개)에서 무작위로 소규모 파일(50KB)을 10GB/초의 속도로 읽을 수 있기 때문에, 스토리지에 맞춰 더 큰 파일을 만들기 위해 개별적인 데이터들을 통합하는 수고가 필요하지 않습니다.
· 확장성: 소규모 시스템으로 시작하고, 데이터세트나 처리 요구사항이 증가하면 블레이드를 추가하여 용량과 성능을 증가할 수 있습니다.
· 네티이브 객체 지원(S3): 입력 데이터는 파일이나 객체로 저장될 수 있습니다.
· 간단한 관리: 파일의 규모에 따라 성능을 조정할 필요가 없으며 파일 시스템을 프로비저닝할 필요가 없습니다.
· 모든 것이 무중단 업그레이드(NDU): 소프트웨어 업그레이드와 하드웨어 확장은 언제나 가능합니다. 물론 운영 모델을 트레이닝시키는 중에도 가능합니다.
· 관리의 손쉬움: 퓨어스토리지의 클라우드 관리 및 지원 플랫폼인 Pure1은 사용자들이 모든 기기를 사용하여 스토리지를 모니터링할 수 있도록 해주며, 예측적 지원을 통해 파악된 문제가 영향을 미치기 전에 미리 시정합니다. Pure1은 사용자들이 스토리지 관리 가 아닌 데이터 이해에 주력할 수 있도록 해줍니다.
· 미래를 위한 시스템: 플래시를 위해 특수 설계되어 새로운 세대의 NAND 기술(향상된 집적도, 비용 및 속도)을 손쉽게 활용할 수 있습니다.
텍스트, 오디오 또는 이미지처럼 소규모 파일로 저장되는 많은 입력 유형에는 스토리지 계층의 소규모 파일 처리 성능이 매우 중요합니다. 스토리지 계층이 소규모 파일을 효과적으로 처리하지 못하면, 사전 처리와 샘플들을 더 큰 파일로 그룹화하는 등 추가적인 작업단계가 필요해집니다. 대부분의 레거시 스케일 아웃 스토리지 시스템은 소규모 파일 성능에 맞게 설계되지 않았습니다.
데이터를 하드디스크에 저장하고 SSD를 캐시로 사용하는 하이브리드 스토리지는 필요한 성능을 충분히 내지 못합니다. 대량의 랜덤 데이터 처리를 통한 학습과정을 이용해서 정확한 모델이 생성되기 때문에, 전체 데이터세트는 높은 성능을 제공하고 쉽게 액세스될 수 있어야 합니다. SSD 캐시는 데이터의 소규모 하위세트를 위해서만 높은 성능을 발휘합니다. 또한 하드디스크 드라이브의 레이턴시를 효과적으로 줄여주지 못합니다.
궁극적으로 FlashBlade의 성능과 동시처리 성능은 데이터 과학자가 데이터 복사에 시간을 허비하지 않고 작업 단계들을 빠르게 전환할 수 있도록 해줍니다. 또한 FlashBlade는 동일한 데이터에 대해서 동시에 여러 다른 실험들을 수행할 수 있도록 합니다.