2020.08.12

클라우드 머신러닝 플랫폼 선택 기준 12가지

Martin Heller | InfoWorld
효과적인 머신러닝과 딥 러닝 모델을 구축하려면 방대한 양의 데이터, 데이터 정제 및 특성 엔지니어링을 수행할 방법, 그리고 적절한 시간 내에 데이터를 사용해 모델을 학습할 방법이 필요하다. 이후에는 모델을 배포하고 시간 경과에 따른 모델 이탈을 모니터링하고 필요에 따라 재학습할 방법도 필요하다.
 
컴퓨팅 리소스 및 GPU와 같은 가속기에 투자했다면 위의 모든 작업을 온프레미스에서 할 수 있지만, 리소스가 충분하다는 말은 대부분의 시간 동안 그 리소스가 유휴 상태임을 의미하기도 한다. 필요에 따라 대량의 컴퓨팅 리소스와 가속기를 사용해서 전체 파이프라인을 클라우드에서 실행한 후 해제하는 방식이 비용 측면에서 더 효과적인 경우가 있다.
 
ⓒ Getty Images Banks
 
주요 클라우드 제공업체(일부 비주류 업체도)는 프로젝트 계획부터 프로덕션의 모델 유지관리에 이르기까지 머신러닝 라이프사이클 전체를 지원하기 위한 머신러닝 플랫폼을 세심하게 구축했다. 이와 같은 클라우드 중에서 자신의 요구 사항에 맞는 클라우드를 어떻게 확인해야 할까? 엔드투엔드 머신러닝 플랫폼이라면 꼭 제공해야 하는 12가지 기능을 살펴보자.
 

데이터와 가까울 것

정확한 모델을 구축하는 데 필요한 많은 양의 데이터가 있다 해도 그 데이터를 가져오기 위해 지구 반바퀴를 돌아야 한다면 효용이 떨어진다. 문제는 거리가 아니라 시간이다. 데이터 전송 속도의 최대 한계는 빛의 속도다. 무한한 대역폭을 가진 완벽한 네트워크라 해도 그 속도를 넘어설 수는 없다. 긴 거리는 지연을 의미한다.
 
데이터 집합이 매우 클 때 이상적인 것은 데이터가 있는 위치에 모델을 구축해서 대량 데이터를 전송할 필요가 없도록 하는 것이다. 제한된 범위에서 이런 서비스를 제공하는 데이터베이스는 몇 가지 있다.
 
차선책은 데이터가 모델 구축 소프트웨어와 동일한 고속 네트워크에 위치하는 형태로, 일반적으로 같은 데이터센터 내에 위치하는 경우가 여기에 해당한다. 데이터의 용량이 테라바이트 이상인 경우 한 클라우드 가용성 영역 내에서 이뤄지는 데이터센터 간의 데이터 전송에도 큰 지연이 발생할 수 있다. 증분 업데이트를 통해 이 문제를 완화할 수 있다.
 
최악은 대역폭이 제한되고 지연이 높은 경로를 통해 장거리로 대량의 데이터를 전송해야 하는 경우다. 이 문제는 오스트레일리아로 가는 환태평양 케이블에서 특히 두드러진다.
 

ETL 또는 ELT 파이프라인 지원

ETL(내보내기, 변환, 로드) 및 ELT(내보내기, 로드, 변환)는 데이터베이스에서 보편적으로 사용되는 두 가지 데이터 파이프라인 구성이다. 머신러닝과 딥 러닝으로 인해 특히 변환 부분에서 이 두 파이프라인의 필요성이 증폭됐다. 일반적으로 빅데이터에서 가장 많은 시간이 소비되는 단계는 로드 단계이므로 변환을 수정해야 할 때 ELT 쪽이 더 높은 유연성을 제공한다.

일반적으로 실제 환경의 데이터에는 노이즈가 많으므로 필터링이 필요하다. 또한 실제 환경에 사용되는 데이터의 범위는 매우 다양하다. 예를 들어 한 변수의 최댓값은 백만 단위인데 다른 변수의 범위는 0.1~0.001인 경우가 있다. 머신러닝에서는 범위가 큰 변수가 모델을 지배하는 경우를 방지하기 위해 변수를 표준화된 범위로 변환해야 한다. 표준화되는 범위는 모델에 사용되는 알고리즘에 따라 좌우된다.
 

모델 구축을 위한 온라인 환경 지원

과거의 통념은 모델 구축을 위해서는 데스크톱으로 데이터를 가져와야 한다는 것이었다. 그러나 우수한 머신러닝과 딥러닝 모델을 구축하는 데 필요한 엄청난 데이터의 양으로 인해 양상이 바뀌었다. 데스크톱으로 데이터의 작은 샘플을 다운로드해서 데이터 분석과 모델 구축을 탐색할 수 있지만, 프로덕션 모델을 위해서는 전체 데이터에 액세스할 수 있어야 한다.
 
주피터 노트북(Jupyter Notebook), 주피터랩(JupyterLab), 아파치 제플린(Zeppelin)과 같은 웹 기반 개발 환경은 모델 구축에 적합하다. 데이터가 노트북 환경과 같은 클라우드에 있다면 데이터 이동에 따른 시간 낭비를 최소화하면서 데이터를 분석할 수 있다.
 

수직 및 수평 확장 학습 지원

모델 학습을 제외한 나머지 부분에서 노트북의 컴퓨팅 및 메모리 요구 사항은 보통 매우 낮다. 노트북이 여러 개의 큰 가상 머신이나 컨테니어에서 실행되는 학습 작업을 생성할 수 있다면 많은 도움이 된다. 또한 학습에서 GPU, TPU, FPGA와 같은 가속기에 액세스할 수 있는 경우 역시 큰 도움이 된다. 며칠이 걸릴 학습을 몇시간 만에 완료할 수 있기 때문이다.
 

AutoML 및 자동 특성 엔지니어링 지원

모든 사람이 머신러닝 모델을 고르고 특성(모델에 사용되는 변수)을 선택하고 관찰을 통해 새로운 특성을 엔지니어링하는 일에 익숙한 것은 아니다. 또한 능숙하다 해도 많은 시간이 소비되고 상당한 범위까지 자동화가 가능하다.
 
많은 경우 AutoML 시스템은 다수의 모델을 시도해서 최적의 목적 함수 값을 산출하는 모델을 찾는다(예를 들어 회귀 문제의 최소 제곱 오차). 또한 우수한 AutoML 시스템은 특성 엔지니어링을 수행하고 리소스를 효과적으로 사용해서 가능한 최선의 특성 집합을 가진 가능한 최선의 모델을 찾을 수 있다.
 

우수한 머신러닝과 딥 러닝 프레임워크 지원

대부분의 데이터 과학자는 각자 머신러닝과 딥 러닝에 선호하는 프레임워크와 프로그래밍 언어가 있다. 파이썬을 선호하는 경우 머신러닝에 사이킷-런을 사용하는 경우가 많고, 딥 러닝에는 텐서플로우와 파이토치, 케라스, MX넷(MXNet)을 자주 사용한다. 스칼라의 경우 머신러닝에는 스파크 MLlib이 많이 사용된다. R에는 네이티브 머신러닝 패키지가 많고 좋은 파이썬 인터페이스도 있다. 자바에서는 H2O.ai와 자바-ML, 딥 자바 라이브러리가 높게 평가된다.
 
클라우드 머신러닝과 딥 러닝 플랫폼에는 대체로 자체 알고리즘 모음이 있으며, 많은 경우 적어도 하나의 언어로, 또는 특정 진입점이 있는 컨테이너 형태로 외부 프레임워크를 지원한다. 경우에 따라 자체 알고리즘과 통계 방법을 플랫폼의 AutoML 기능에 통합해서 편리하게 사용할 수도 있다.
 
일부 클라우드 플랫폼은 주요 딥 러닝 프레임워크를 튜닝한 자체 버전을 제공한다. 예를 들어 AWS는 최적화된 텐서플로우 버전을 제공하면서 심층 신경망 학습에서 거의 선형적인 확장성을 달성할 수 있다고 주장한다.
 

사전 학습 모델을 제공하고 전이 학습 지원

모두가 많은 시간과 컴퓨팅 리소스를 소비해 자체 모델을 학습시키기를 원하지는 않으며, 사전 학습된 모델이 제공된다면 굳이 그럴 필요도 없다. 예를 들어 방대한 이미지넷(ImageNet) 데이터베이스를 대상으로 한 첨단 심층 신경망 학습에는 몇 주가 소요될 수 있으므로 가능한 경우 사전 학습된 모델을 사용하는 편이 합리적이다.
 
반면, 사전 학습된 모델로 자신이 원하는 객체를 식별하지 못할 수도 있다. 전이 학습은 전체 신경망 학습을 위한 시간 및 비용 소비 없이 자신의 특정 데이터 집합에 맞게 신경망의 마지막 몇 개 계층을 맞춤 설정하는 데 도움이 된다.
 

튜닝된 AI 서비스 제공

주요 클라우드 플랫폼은 이미지 식별뿐만 아니라 많은 응용 분야를 위한 강력하고 튜닝된 AI 서비스를 제공한다. 예를 들어 언어 번역, 음성-텍스트 변환, 텍스트-음성 변환, 예측, 추천 등이 있다.
 
이러한 서비스는 기업에서 일반적으로 사용할 수 있는 것보다 더 많은 데이터를 사용해서 이미 학습 및 테스트를 거쳤다. 또한 전 세계적인 부하 하에서도 우수한 응답 시간을 보장하기 위해 가속기를 포함한 충분한 계산 리소스를 갖춘 서비스 엔드포인트에 이미 구축됐다.
 

실험 관리

데이터 집합에 맞는 최적의 모델을 찾는 유일한 방법은 수동으로 하든 AutoML을 사용하든 모든 모델을 시도해보는 것이다. 여기서 또 다른 문제가 발생한다. 바로 실험 관리다.
 
우수한 클라우드 머신러닝 플랫폼은 학습 집합과 테스트 데이터 모두에 대해 각 실험의 목적 함수 값과 모델의 크기 및 혼동 행렬을 보고 비교할 수 있는 방법을 제공한다. 이러한 모든 요소를 그래프화할 수 있는 기능은 확실히 도움이 된다.
 

예측을 위한 모델 배포 지원

자신의 기준에 맞는 최적의 실험을 선택했다면 모델을 쉽게 배포할 수 있는 방법도 찾아야 한다. 동일한 목적으로 여러 개의 모델을 배포하는 경우 a/b 테스트를 위해 모델 간에 트래픽을 분할할 방법도 필요하다.
 

예측 성능 모니터링

불행히도 세계는 변화하고 데이터도 세계와 함께 변화한다. 즉, 모델 배포가 끝이 아니라는 의미다. 예측을 위해 제출되는 데이터를 계속해서 모니터링해야 한다. 데이터가 원래 학습 데이터 집합의 기준에서 큰 폭으로 바뀌기 시작하면 모델 재학습이 필요하다.
 

비용 통제

마지막으로, 모델에 의해 발생하는 비용을 통제할 방법이 필요하다. 프로덕션 추론을 위한 모델 배포 비용은 많은 경우 딥 러닝 비용의 90%를 차지하며, 학습에 소요되는 비용은 10%에 불과하다.
 
예측 비용을 통제하는 최선의 방법은 모델의 부하 및 복잡성에 따라 다르다. 부하가 높다면 가속기를 사용해서 가상 머신 인스턴스 추가를 피할 수 있다. 부하가 변동되는 경우 부하의 상승 또는 하락에 맞춰 인스턴스나 컨테이너의 크기 또는 수를 동적으로 바꿀 수 있다. 부하가 낮거나 간헐적인 경우에는 아주 작은 인스턴스를 부분 가속기와 함께 사용해서 예측을 처리하는 방법이 있다. editor@itworld.co.kr 


2020.08.12

클라우드 머신러닝 플랫폼 선택 기준 12가지

Martin Heller | InfoWorld
효과적인 머신러닝과 딥 러닝 모델을 구축하려면 방대한 양의 데이터, 데이터 정제 및 특성 엔지니어링을 수행할 방법, 그리고 적절한 시간 내에 데이터를 사용해 모델을 학습할 방법이 필요하다. 이후에는 모델을 배포하고 시간 경과에 따른 모델 이탈을 모니터링하고 필요에 따라 재학습할 방법도 필요하다.
 
컴퓨팅 리소스 및 GPU와 같은 가속기에 투자했다면 위의 모든 작업을 온프레미스에서 할 수 있지만, 리소스가 충분하다는 말은 대부분의 시간 동안 그 리소스가 유휴 상태임을 의미하기도 한다. 필요에 따라 대량의 컴퓨팅 리소스와 가속기를 사용해서 전체 파이프라인을 클라우드에서 실행한 후 해제하는 방식이 비용 측면에서 더 효과적인 경우가 있다.
 
ⓒ Getty Images Banks
 
주요 클라우드 제공업체(일부 비주류 업체도)는 프로젝트 계획부터 프로덕션의 모델 유지관리에 이르기까지 머신러닝 라이프사이클 전체를 지원하기 위한 머신러닝 플랫폼을 세심하게 구축했다. 이와 같은 클라우드 중에서 자신의 요구 사항에 맞는 클라우드를 어떻게 확인해야 할까? 엔드투엔드 머신러닝 플랫폼이라면 꼭 제공해야 하는 12가지 기능을 살펴보자.
 

데이터와 가까울 것

정확한 모델을 구축하는 데 필요한 많은 양의 데이터가 있다 해도 그 데이터를 가져오기 위해 지구 반바퀴를 돌아야 한다면 효용이 떨어진다. 문제는 거리가 아니라 시간이다. 데이터 전송 속도의 최대 한계는 빛의 속도다. 무한한 대역폭을 가진 완벽한 네트워크라 해도 그 속도를 넘어설 수는 없다. 긴 거리는 지연을 의미한다.
 
데이터 집합이 매우 클 때 이상적인 것은 데이터가 있는 위치에 모델을 구축해서 대량 데이터를 전송할 필요가 없도록 하는 것이다. 제한된 범위에서 이런 서비스를 제공하는 데이터베이스는 몇 가지 있다.
 
차선책은 데이터가 모델 구축 소프트웨어와 동일한 고속 네트워크에 위치하는 형태로, 일반적으로 같은 데이터센터 내에 위치하는 경우가 여기에 해당한다. 데이터의 용량이 테라바이트 이상인 경우 한 클라우드 가용성 영역 내에서 이뤄지는 데이터센터 간의 데이터 전송에도 큰 지연이 발생할 수 있다. 증분 업데이트를 통해 이 문제를 완화할 수 있다.
 
최악은 대역폭이 제한되고 지연이 높은 경로를 통해 장거리로 대량의 데이터를 전송해야 하는 경우다. 이 문제는 오스트레일리아로 가는 환태평양 케이블에서 특히 두드러진다.
 

ETL 또는 ELT 파이프라인 지원

ETL(내보내기, 변환, 로드) 및 ELT(내보내기, 로드, 변환)는 데이터베이스에서 보편적으로 사용되는 두 가지 데이터 파이프라인 구성이다. 머신러닝과 딥 러닝으로 인해 특히 변환 부분에서 이 두 파이프라인의 필요성이 증폭됐다. 일반적으로 빅데이터에서 가장 많은 시간이 소비되는 단계는 로드 단계이므로 변환을 수정해야 할 때 ELT 쪽이 더 높은 유연성을 제공한다.

일반적으로 실제 환경의 데이터에는 노이즈가 많으므로 필터링이 필요하다. 또한 실제 환경에 사용되는 데이터의 범위는 매우 다양하다. 예를 들어 한 변수의 최댓값은 백만 단위인데 다른 변수의 범위는 0.1~0.001인 경우가 있다. 머신러닝에서는 범위가 큰 변수가 모델을 지배하는 경우를 방지하기 위해 변수를 표준화된 범위로 변환해야 한다. 표준화되는 범위는 모델에 사용되는 알고리즘에 따라 좌우된다.
 

모델 구축을 위한 온라인 환경 지원

과거의 통념은 모델 구축을 위해서는 데스크톱으로 데이터를 가져와야 한다는 것이었다. 그러나 우수한 머신러닝과 딥러닝 모델을 구축하는 데 필요한 엄청난 데이터의 양으로 인해 양상이 바뀌었다. 데스크톱으로 데이터의 작은 샘플을 다운로드해서 데이터 분석과 모델 구축을 탐색할 수 있지만, 프로덕션 모델을 위해서는 전체 데이터에 액세스할 수 있어야 한다.
 
주피터 노트북(Jupyter Notebook), 주피터랩(JupyterLab), 아파치 제플린(Zeppelin)과 같은 웹 기반 개발 환경은 모델 구축에 적합하다. 데이터가 노트북 환경과 같은 클라우드에 있다면 데이터 이동에 따른 시간 낭비를 최소화하면서 데이터를 분석할 수 있다.
 

수직 및 수평 확장 학습 지원

모델 학습을 제외한 나머지 부분에서 노트북의 컴퓨팅 및 메모리 요구 사항은 보통 매우 낮다. 노트북이 여러 개의 큰 가상 머신이나 컨테니어에서 실행되는 학습 작업을 생성할 수 있다면 많은 도움이 된다. 또한 학습에서 GPU, TPU, FPGA와 같은 가속기에 액세스할 수 있는 경우 역시 큰 도움이 된다. 며칠이 걸릴 학습을 몇시간 만에 완료할 수 있기 때문이다.
 

AutoML 및 자동 특성 엔지니어링 지원

모든 사람이 머신러닝 모델을 고르고 특성(모델에 사용되는 변수)을 선택하고 관찰을 통해 새로운 특성을 엔지니어링하는 일에 익숙한 것은 아니다. 또한 능숙하다 해도 많은 시간이 소비되고 상당한 범위까지 자동화가 가능하다.
 
많은 경우 AutoML 시스템은 다수의 모델을 시도해서 최적의 목적 함수 값을 산출하는 모델을 찾는다(예를 들어 회귀 문제의 최소 제곱 오차). 또한 우수한 AutoML 시스템은 특성 엔지니어링을 수행하고 리소스를 효과적으로 사용해서 가능한 최선의 특성 집합을 가진 가능한 최선의 모델을 찾을 수 있다.
 

우수한 머신러닝과 딥 러닝 프레임워크 지원

대부분의 데이터 과학자는 각자 머신러닝과 딥 러닝에 선호하는 프레임워크와 프로그래밍 언어가 있다. 파이썬을 선호하는 경우 머신러닝에 사이킷-런을 사용하는 경우가 많고, 딥 러닝에는 텐서플로우와 파이토치, 케라스, MX넷(MXNet)을 자주 사용한다. 스칼라의 경우 머신러닝에는 스파크 MLlib이 많이 사용된다. R에는 네이티브 머신러닝 패키지가 많고 좋은 파이썬 인터페이스도 있다. 자바에서는 H2O.ai와 자바-ML, 딥 자바 라이브러리가 높게 평가된다.
 
클라우드 머신러닝과 딥 러닝 플랫폼에는 대체로 자체 알고리즘 모음이 있으며, 많은 경우 적어도 하나의 언어로, 또는 특정 진입점이 있는 컨테이너 형태로 외부 프레임워크를 지원한다. 경우에 따라 자체 알고리즘과 통계 방법을 플랫폼의 AutoML 기능에 통합해서 편리하게 사용할 수도 있다.
 
일부 클라우드 플랫폼은 주요 딥 러닝 프레임워크를 튜닝한 자체 버전을 제공한다. 예를 들어 AWS는 최적화된 텐서플로우 버전을 제공하면서 심층 신경망 학습에서 거의 선형적인 확장성을 달성할 수 있다고 주장한다.
 

사전 학습 모델을 제공하고 전이 학습 지원

모두가 많은 시간과 컴퓨팅 리소스를 소비해 자체 모델을 학습시키기를 원하지는 않으며, 사전 학습된 모델이 제공된다면 굳이 그럴 필요도 없다. 예를 들어 방대한 이미지넷(ImageNet) 데이터베이스를 대상으로 한 첨단 심층 신경망 학습에는 몇 주가 소요될 수 있으므로 가능한 경우 사전 학습된 모델을 사용하는 편이 합리적이다.
 
반면, 사전 학습된 모델로 자신이 원하는 객체를 식별하지 못할 수도 있다. 전이 학습은 전체 신경망 학습을 위한 시간 및 비용 소비 없이 자신의 특정 데이터 집합에 맞게 신경망의 마지막 몇 개 계층을 맞춤 설정하는 데 도움이 된다.
 

튜닝된 AI 서비스 제공

주요 클라우드 플랫폼은 이미지 식별뿐만 아니라 많은 응용 분야를 위한 강력하고 튜닝된 AI 서비스를 제공한다. 예를 들어 언어 번역, 음성-텍스트 변환, 텍스트-음성 변환, 예측, 추천 등이 있다.
 
이러한 서비스는 기업에서 일반적으로 사용할 수 있는 것보다 더 많은 데이터를 사용해서 이미 학습 및 테스트를 거쳤다. 또한 전 세계적인 부하 하에서도 우수한 응답 시간을 보장하기 위해 가속기를 포함한 충분한 계산 리소스를 갖춘 서비스 엔드포인트에 이미 구축됐다.
 

실험 관리

데이터 집합에 맞는 최적의 모델을 찾는 유일한 방법은 수동으로 하든 AutoML을 사용하든 모든 모델을 시도해보는 것이다. 여기서 또 다른 문제가 발생한다. 바로 실험 관리다.
 
우수한 클라우드 머신러닝 플랫폼은 학습 집합과 테스트 데이터 모두에 대해 각 실험의 목적 함수 값과 모델의 크기 및 혼동 행렬을 보고 비교할 수 있는 방법을 제공한다. 이러한 모든 요소를 그래프화할 수 있는 기능은 확실히 도움이 된다.
 

예측을 위한 모델 배포 지원

자신의 기준에 맞는 최적의 실험을 선택했다면 모델을 쉽게 배포할 수 있는 방법도 찾아야 한다. 동일한 목적으로 여러 개의 모델을 배포하는 경우 a/b 테스트를 위해 모델 간에 트래픽을 분할할 방법도 필요하다.
 

예측 성능 모니터링

불행히도 세계는 변화하고 데이터도 세계와 함께 변화한다. 즉, 모델 배포가 끝이 아니라는 의미다. 예측을 위해 제출되는 데이터를 계속해서 모니터링해야 한다. 데이터가 원래 학습 데이터 집합의 기준에서 큰 폭으로 바뀌기 시작하면 모델 재학습이 필요하다.
 

비용 통제

마지막으로, 모델에 의해 발생하는 비용을 통제할 방법이 필요하다. 프로덕션 추론을 위한 모델 배포 비용은 많은 경우 딥 러닝 비용의 90%를 차지하며, 학습에 소요되는 비용은 10%에 불과하다.
 
예측 비용을 통제하는 최선의 방법은 모델의 부하 및 복잡성에 따라 다르다. 부하가 높다면 가속기를 사용해서 가상 머신 인스턴스 추가를 피할 수 있다. 부하가 변동되는 경우 부하의 상승 또는 하락에 맞춰 인스턴스나 컨테이너의 크기 또는 수를 동적으로 바꿀 수 있다. 부하가 낮거나 간헐적인 경우에는 아주 작은 인스턴스를 부분 가속기와 함께 사용해서 예측을 처리하는 방법이 있다. editor@itworld.co.kr 


X