2018.05.10

조금 더 가까워진 실시간 AI··· MS 프로젝트 브레인웨이브란?

Simon Bisson | InfoWorld
마이크로소프트의 프로젝트 브레인웨이브는 애저 ML을 데이터센터 및 네트워크 하드웨어에까지 연장시킬 수 있다. 데이터가 소재한 현장에서 머신러닝 처리를 할 수 있다는 의미다. 

마이크로소프트는 클라우드에서 머신러닝 애플리케이션을 개발하는 애저 ML 플랫폼(Azure ML platform)을 보유하고 있다. 또 윈도우 ML에 의해 ONNX 표준을 이용해 데스크톱 PC와 엣지 시스템에서 모델을 이용할 수 있도록 지원한다.

그리고 앞으로는 머신러닝이 새로운 플랫폼, 즉 프로젝트 브레인웨이브 서비스 퍼블릭 베타 버전과 애저의 고성능 FPGA(Field-Programmable Gate Array) 시스템에서 구현되도록 지원할 것이다. 이미 1년 전에 발표된 내용이다.



FPGA : 머신러닝 하드웨어
일반 PC나 데이터센터, 퍼블릭 클라우드와 같은 곳에 쓰이는 범용 CPU는 데이터를 처리하는데 있어 가장 빠른 도구가 아니다. 이는 다수의 상이한 워크로드를 실행할 수 있는 적응성을 갖도록 설계된다. 제조업체는 용도에 관계 없이 수백만 개를 만들 수 있기 때문에 경제적 이점이 있다. 그러나 최고의 속도를 가진 시스템은 단일 용도로서, 전용 실리콘을 이용해 특정 문제를 해결하는 시스템이기 마련이다.

하지만 오늘날 단일 용도 머신을 제작할 예산을 가진 분야는 한정돼 있다. 과학 연구나 군사 부분이 아니라면 위의 방식은 가능하지 않다. 그렇다면 슈퍼 컴퓨터의 성능을 양산 하드웨어 상에서 클라우드에 부여할 수는 없을까? 특히 고성능이 요구되는 예컨대 머신러닝과 같은 분야에서 말이다.

다행히, 프로그램 가능 실리콘(programmable silicon)이라는 방법이 있다. FPGA는 특정 기능을 이행하기 위해 연결될 수 있는 기능 블록들로 가설된 재구성형 논리 게이트 어레이다. 전통적 논리 회로와 달리 메모리 소자를 포함하는 경우가 많아 실행할 수 있는 기능의 복합성이 우수하다.

그러나 FPGA를 누구나 이용할 수 있는 것은 아니다. 일반적인 개발 툴을 통한 익숙한 언어로 프로그램 될 수 없기 때문이다. FPGA를 활용하려면 FPGA에서 구현하고자 하는 기능을 정의하는 실리콘 설계 툴과 언어, 관련 역량을 확보해야 한다.

마이크로소프트는 애저의 FPGA를 프로그래밍하기 위해 C에서 파생된 언어를 개발했고, 아마존도 자사의 AWS FPGA 시스템에서 그렇게 하고 있다. 신생기업인 리컨피규어닷아이오(Reconfigure.io)는 AWS의 F1 인스턴스를 대상으로, 구글의 고(Go) 언어를 이용해 FPGA를 프로그래밍하는 툴을 개발 중이다. 이들은 모두 의미 있는 첫걸음이다. 그러나 주의해야 할 점이 있다. 프로그래밍 오류에 의해 하드웨어가 물리적으로 손상될 수 있다.

일단 프로그램 되면 FPGA는 위력적인 툴이다. 최신 CPU를 흉내낼 수 있고, 복잡한 수학 연산을 취급할 수 있다. 심지어 소프트웨어 코드를 크랙 할 수 있다. 애저의 경우 이들은 마이크로소프트의 프로젝트 올림푸스 오픈 하드웨어 설계로 FPGA 기반 코프로세서를 지원하면서 퍼블릭 클라우드를 가속화하는데 사용된다. 아울러 빙(Bing) 검색 하드웨어의 요소들은 물론 애저의 첨단 네트워크 기능의 여러 부분들을 구동한다.

그렇다면, 퍼블릭 클라우드에 쓰이는 FPGA를 프로그래밍할 때 위험을 줄이는 보다 쉬운 방식은 없을까? 프로젝트 브레인웨이브(Project Brainwave)에 관심을 가질 만한 이유 중 하나다.

이는 고급 머신러닝 모델을 위한 런타임 호스트로서 FPGA를 이용하며 마이크로소프트가 ‘리얼 타임 AI 시스템’이라고 부르는 것을 개발하려고 시도한다. 따로 FPGA 코드를 쓸 필요가 없다. 대신 FPGA를 하드웨어 가속기로 이용해 모델을 실행하기만 하면 된다. 마이크로소프트의 자체 개발자들이 FPGA를 프로그래밍하고 업데이트하는 복잡한 일을 수행하고, 기저 신경망을 제공한다.

이는 애저의 직접 부착된 FPGA 하드웨어를 이용해 도착 즉시 분석되어야 할 데이터를 처리할 수 있게 해준다. 어찌됐든, 전체 생산 라인에 걸쳐 수십 또는 심지어 수백 개의 카메라에서 들어오는 데이터를 취급할 때, 한 프레임을 처리하는데 수백 밀리 초가 걸린다면 클라우드 기반 머신러닝을 이용할 이유가 없는 것이다.

프로젝트 브레인웨이브 : 신경망 가속기
프로젝트 브레인웨이브의 핵심은 하나의 FPGA 상에 구현된 직접 신경망 엔진이다. 이 FPGA는 애저의 고성능 네트워크에 연결된 FPGA 집합의 일부가 된다. 브레인웨이브를 이용하는 애플리케이션은 위의 디지털 신경망 집합(Digital Neural Networks, DNNs)을 소환할 수 있는 전용 서버 인스턴스 상에서 구동되면서 사전 학습된 머신러닝 모델을 실행한다. 데이터가 서버로부터 DNN으로 직접 들어오고, 데이터가 도착하는 즉시 결과가 전송된다. 이는 회선 최대 속도로 가동하는 극도로 빠른 머신러닝 시스템일 수 있다. 또 리소스가 더 필요하다면, 위 집합에 FPGA를 새롭게 추가해 적소에 배정하면 그만이다.

구글의 TPUs와 달리 브레인웨이브의 FPGA는 유연성이 있고, 재프로그램될 수 있기에 신종 DNN의 장점을 이용할 수 있다. 그 결과, 애저는 데이터 용량과 신경망 종류의 변화에 머신러닝 엔진의 성능을 맞출 수 있다.

마이크로소프트가 이용하는 FPGA는 ASIC기반 신호 처리 유닛과 논리 블록의 조합이고, 새로운 코드가 개발되어 하드웨어에 구현되기까지 몇 주 정도의 소요시간을 갖는다. 마이크로소프트는 애저 데이터센터에 이미 배치되어 있는 FPGA를 변경할 수 있다. 이와 대조적으로, 구글의 TPU와 같은 디바이스는 새로운 세대의 하드웨어로 재설계되어야 하고, 제조되어야 하고, 배치되어야 한다.

일반 애플리케이션에서 브레인웨이브 이용
마이크로소프트가 퍼블릭 베타를 공개하며 유료 고객들에게 브레인웨이브를 제공하기 시작했다. 전체 가격은 발표되지 않았지만 고객은 기존 머신러닝 모델을 플랫폼에서 실행할 수 있다. 현재 마이크로소프트 CNTX와 구글의 텐서플로(TensorFlow)를 지원하고 있고, 다른 시스템들로 지원을 확대할 예정이다.

머신러닝 모델은 브레인웨이브 서버 상의 소프트웨어를 이용해 FPGA 상에서 실행될 수 있도록 전송되고 변환된다. 이는 비교적 단순한 과정이고, ONNX를 통해 다른 플랫폼으로부터의 전송과 변환을 이행할 수도 있다. 모델을 가져오기 하여 애저ML 상에서 CNTK로 변환한다. 그리고 테스팅을 거쳐 브레인웨이브 FPGA 집합으로 다운로드 한다.

현재 브레인웨이브는 ResNet-50-DNN만을 이용하지만, 이는 충분히 보편화된 신경망이기에 훈련을 통해 다양한 머신러닝 모델을 취급하도록 할 수 있다.

FPGA 기반 디지털 신경망(DNN)은 엣지 상에서의 이용에도 적합하다. 사티야 나델라 CEO의 인텔리전트 엣지(intelligent edge) 개념에 새로운 차원의 인텔리전스를 제공하는 주인공일 수 있다는 의미다. 마이크로소프트는 현재 브레인웨이브 FPGA를 에지 서버에 배치하여 고속 머신러닝 시스템을 적소에서 제공하기 위한 작업을 제휴 회사들과 진행 중이다. 이는 독립형 시스템으로 기능하거나, 미래에는 애저 스택(Azure Stack) 또는 애저 데이터 박스(Azure’s Data Box) 데이터 수집 하드웨어 등의 플랫폼의 일부로서 이용될 전망이다.

엣지 상의 AI
프로그램 가능 하드웨어를 클라우드로부터 로컬 데이터센터나 네트워크 엣지로 가져오는 선택은 합리적이다. 리얼-타임 머신러닝 시스템의 효과를 최대화하려면, 모델이 데이터와 가까이 있어야 한다. 짧은 대기시간이 사업 상 필수적이며 대용량 데이터 소스를 취급하는 경우라면 특히 그러하다.

클라우드 머신러닝 시스템 상의 모델 훈련은 클라우드 컴퓨트 리소스가 저렴할 때 이를 이용한다. 반면 훈련된 모델을 데이터 출처로 가져온다면 대역폭과 스토리지 비용을 절감할 수 있다.

실시간 AI는 컴퓨트, 네트워크, 스토리지 사이의 절충이다. 프로젝트 브레인웨이브는 이들 간의 균형을 잡는데 유용하고, 고성능 머신러닝 하드웨어를 적소에 배치할 수 있게 해준다. 일반적 머신러닝 환경에의 지원은 위험을 줄이고, 머신러닝을 하나의 크로스 플랫폼, 크로스 클라우드 자원으로 취급할 수 있게 해준다.

회사의 애플리케이션을 아마존 웹 서비스나 구글 클라우드 플랫폼에서도 실행할 수 있다. 이게 나쁘다는 것은 아니다. 다만 엣지에서 프로젝트 브레인웨이브를 이용한다면 클라우드 접속을 위한 MLPS WAN 이용료를 지불하지 않으면서 TPU와 F1 서버로 비슷한 리소스를 이용할 수 있다.

애저ML은 원래 클라우드 전용 서비스로 의도됐겠지만, 프로젝트 브레인웨이브에 의해 이를 필요한 곳에 배치할 수 있게 되었다. 인텔리전트 엣지를 가진 인텔리전트 클라우드에 배치할 수 있는 것이다.

* Simon Bisson는 학계 및 통신 업계에서의 경력을 보유했으며 스타트업 기업의 CTO로도 근무한 바 있다. 현재 기술 전략 컨설팅 비즈니스도 운영하고 있다. ciokr@idg.co.kr 
2018.05.10

조금 더 가까워진 실시간 AI··· MS 프로젝트 브레인웨이브란?

Simon Bisson | InfoWorld
마이크로소프트의 프로젝트 브레인웨이브는 애저 ML을 데이터센터 및 네트워크 하드웨어에까지 연장시킬 수 있다. 데이터가 소재한 현장에서 머신러닝 처리를 할 수 있다는 의미다. 

마이크로소프트는 클라우드에서 머신러닝 애플리케이션을 개발하는 애저 ML 플랫폼(Azure ML platform)을 보유하고 있다. 또 윈도우 ML에 의해 ONNX 표준을 이용해 데스크톱 PC와 엣지 시스템에서 모델을 이용할 수 있도록 지원한다.

그리고 앞으로는 머신러닝이 새로운 플랫폼, 즉 프로젝트 브레인웨이브 서비스 퍼블릭 베타 버전과 애저의 고성능 FPGA(Field-Programmable Gate Array) 시스템에서 구현되도록 지원할 것이다. 이미 1년 전에 발표된 내용이다.



FPGA : 머신러닝 하드웨어
일반 PC나 데이터센터, 퍼블릭 클라우드와 같은 곳에 쓰이는 범용 CPU는 데이터를 처리하는데 있어 가장 빠른 도구가 아니다. 이는 다수의 상이한 워크로드를 실행할 수 있는 적응성을 갖도록 설계된다. 제조업체는 용도에 관계 없이 수백만 개를 만들 수 있기 때문에 경제적 이점이 있다. 그러나 최고의 속도를 가진 시스템은 단일 용도로서, 전용 실리콘을 이용해 특정 문제를 해결하는 시스템이기 마련이다.

하지만 오늘날 단일 용도 머신을 제작할 예산을 가진 분야는 한정돼 있다. 과학 연구나 군사 부분이 아니라면 위의 방식은 가능하지 않다. 그렇다면 슈퍼 컴퓨터의 성능을 양산 하드웨어 상에서 클라우드에 부여할 수는 없을까? 특히 고성능이 요구되는 예컨대 머신러닝과 같은 분야에서 말이다.

다행히, 프로그램 가능 실리콘(programmable silicon)이라는 방법이 있다. FPGA는 특정 기능을 이행하기 위해 연결될 수 있는 기능 블록들로 가설된 재구성형 논리 게이트 어레이다. 전통적 논리 회로와 달리 메모리 소자를 포함하는 경우가 많아 실행할 수 있는 기능의 복합성이 우수하다.

그러나 FPGA를 누구나 이용할 수 있는 것은 아니다. 일반적인 개발 툴을 통한 익숙한 언어로 프로그램 될 수 없기 때문이다. FPGA를 활용하려면 FPGA에서 구현하고자 하는 기능을 정의하는 실리콘 설계 툴과 언어, 관련 역량을 확보해야 한다.

마이크로소프트는 애저의 FPGA를 프로그래밍하기 위해 C에서 파생된 언어를 개발했고, 아마존도 자사의 AWS FPGA 시스템에서 그렇게 하고 있다. 신생기업인 리컨피규어닷아이오(Reconfigure.io)는 AWS의 F1 인스턴스를 대상으로, 구글의 고(Go) 언어를 이용해 FPGA를 프로그래밍하는 툴을 개발 중이다. 이들은 모두 의미 있는 첫걸음이다. 그러나 주의해야 할 점이 있다. 프로그래밍 오류에 의해 하드웨어가 물리적으로 손상될 수 있다.

일단 프로그램 되면 FPGA는 위력적인 툴이다. 최신 CPU를 흉내낼 수 있고, 복잡한 수학 연산을 취급할 수 있다. 심지어 소프트웨어 코드를 크랙 할 수 있다. 애저의 경우 이들은 마이크로소프트의 프로젝트 올림푸스 오픈 하드웨어 설계로 FPGA 기반 코프로세서를 지원하면서 퍼블릭 클라우드를 가속화하는데 사용된다. 아울러 빙(Bing) 검색 하드웨어의 요소들은 물론 애저의 첨단 네트워크 기능의 여러 부분들을 구동한다.

그렇다면, 퍼블릭 클라우드에 쓰이는 FPGA를 프로그래밍할 때 위험을 줄이는 보다 쉬운 방식은 없을까? 프로젝트 브레인웨이브(Project Brainwave)에 관심을 가질 만한 이유 중 하나다.

이는 고급 머신러닝 모델을 위한 런타임 호스트로서 FPGA를 이용하며 마이크로소프트가 ‘리얼 타임 AI 시스템’이라고 부르는 것을 개발하려고 시도한다. 따로 FPGA 코드를 쓸 필요가 없다. 대신 FPGA를 하드웨어 가속기로 이용해 모델을 실행하기만 하면 된다. 마이크로소프트의 자체 개발자들이 FPGA를 프로그래밍하고 업데이트하는 복잡한 일을 수행하고, 기저 신경망을 제공한다.

이는 애저의 직접 부착된 FPGA 하드웨어를 이용해 도착 즉시 분석되어야 할 데이터를 처리할 수 있게 해준다. 어찌됐든, 전체 생산 라인에 걸쳐 수십 또는 심지어 수백 개의 카메라에서 들어오는 데이터를 취급할 때, 한 프레임을 처리하는데 수백 밀리 초가 걸린다면 클라우드 기반 머신러닝을 이용할 이유가 없는 것이다.

프로젝트 브레인웨이브 : 신경망 가속기
프로젝트 브레인웨이브의 핵심은 하나의 FPGA 상에 구현된 직접 신경망 엔진이다. 이 FPGA는 애저의 고성능 네트워크에 연결된 FPGA 집합의 일부가 된다. 브레인웨이브를 이용하는 애플리케이션은 위의 디지털 신경망 집합(Digital Neural Networks, DNNs)을 소환할 수 있는 전용 서버 인스턴스 상에서 구동되면서 사전 학습된 머신러닝 모델을 실행한다. 데이터가 서버로부터 DNN으로 직접 들어오고, 데이터가 도착하는 즉시 결과가 전송된다. 이는 회선 최대 속도로 가동하는 극도로 빠른 머신러닝 시스템일 수 있다. 또 리소스가 더 필요하다면, 위 집합에 FPGA를 새롭게 추가해 적소에 배정하면 그만이다.

구글의 TPUs와 달리 브레인웨이브의 FPGA는 유연성이 있고, 재프로그램될 수 있기에 신종 DNN의 장점을 이용할 수 있다. 그 결과, 애저는 데이터 용량과 신경망 종류의 변화에 머신러닝 엔진의 성능을 맞출 수 있다.

마이크로소프트가 이용하는 FPGA는 ASIC기반 신호 처리 유닛과 논리 블록의 조합이고, 새로운 코드가 개발되어 하드웨어에 구현되기까지 몇 주 정도의 소요시간을 갖는다. 마이크로소프트는 애저 데이터센터에 이미 배치되어 있는 FPGA를 변경할 수 있다. 이와 대조적으로, 구글의 TPU와 같은 디바이스는 새로운 세대의 하드웨어로 재설계되어야 하고, 제조되어야 하고, 배치되어야 한다.

일반 애플리케이션에서 브레인웨이브 이용
마이크로소프트가 퍼블릭 베타를 공개하며 유료 고객들에게 브레인웨이브를 제공하기 시작했다. 전체 가격은 발표되지 않았지만 고객은 기존 머신러닝 모델을 플랫폼에서 실행할 수 있다. 현재 마이크로소프트 CNTX와 구글의 텐서플로(TensorFlow)를 지원하고 있고, 다른 시스템들로 지원을 확대할 예정이다.

머신러닝 모델은 브레인웨이브 서버 상의 소프트웨어를 이용해 FPGA 상에서 실행될 수 있도록 전송되고 변환된다. 이는 비교적 단순한 과정이고, ONNX를 통해 다른 플랫폼으로부터의 전송과 변환을 이행할 수도 있다. 모델을 가져오기 하여 애저ML 상에서 CNTK로 변환한다. 그리고 테스팅을 거쳐 브레인웨이브 FPGA 집합으로 다운로드 한다.

현재 브레인웨이브는 ResNet-50-DNN만을 이용하지만, 이는 충분히 보편화된 신경망이기에 훈련을 통해 다양한 머신러닝 모델을 취급하도록 할 수 있다.

FPGA 기반 디지털 신경망(DNN)은 엣지 상에서의 이용에도 적합하다. 사티야 나델라 CEO의 인텔리전트 엣지(intelligent edge) 개념에 새로운 차원의 인텔리전스를 제공하는 주인공일 수 있다는 의미다. 마이크로소프트는 현재 브레인웨이브 FPGA를 에지 서버에 배치하여 고속 머신러닝 시스템을 적소에서 제공하기 위한 작업을 제휴 회사들과 진행 중이다. 이는 독립형 시스템으로 기능하거나, 미래에는 애저 스택(Azure Stack) 또는 애저 데이터 박스(Azure’s Data Box) 데이터 수집 하드웨어 등의 플랫폼의 일부로서 이용될 전망이다.

엣지 상의 AI
프로그램 가능 하드웨어를 클라우드로부터 로컬 데이터센터나 네트워크 엣지로 가져오는 선택은 합리적이다. 리얼-타임 머신러닝 시스템의 효과를 최대화하려면, 모델이 데이터와 가까이 있어야 한다. 짧은 대기시간이 사업 상 필수적이며 대용량 데이터 소스를 취급하는 경우라면 특히 그러하다.

클라우드 머신러닝 시스템 상의 모델 훈련은 클라우드 컴퓨트 리소스가 저렴할 때 이를 이용한다. 반면 훈련된 모델을 데이터 출처로 가져온다면 대역폭과 스토리지 비용을 절감할 수 있다.

실시간 AI는 컴퓨트, 네트워크, 스토리지 사이의 절충이다. 프로젝트 브레인웨이브는 이들 간의 균형을 잡는데 유용하고, 고성능 머신러닝 하드웨어를 적소에 배치할 수 있게 해준다. 일반적 머신러닝 환경에의 지원은 위험을 줄이고, 머신러닝을 하나의 크로스 플랫폼, 크로스 클라우드 자원으로 취급할 수 있게 해준다.

회사의 애플리케이션을 아마존 웹 서비스나 구글 클라우드 플랫폼에서도 실행할 수 있다. 이게 나쁘다는 것은 아니다. 다만 엣지에서 프로젝트 브레인웨이브를 이용한다면 클라우드 접속을 위한 MLPS WAN 이용료를 지불하지 않으면서 TPU와 F1 서버로 비슷한 리소스를 이용할 수 있다.

애저ML은 원래 클라우드 전용 서비스로 의도됐겠지만, 프로젝트 브레인웨이브에 의해 이를 필요한 곳에 배치할 수 있게 되었다. 인텔리전트 엣지를 가진 인텔리전트 클라우드에 배치할 수 있는 것이다.

* Simon Bisson는 학계 및 통신 업계에서의 경력을 보유했으며 스타트업 기업의 CTO로도 근무한 바 있다. 현재 기술 전략 컨설팅 비즈니스도 운영하고 있다. ciokr@idg.co.kr 
X