2017.06.13

"더 빠르고, 더 간편하게" 딥 러닝의 미래

Serdar Yegulalp | InfoWorld
머신러닝의 하위 분야들 가운데 가장 많은 기대와 관심을 받고, 또 인공지능의 정수라고 할 만한 분야가 있다면 그것은 아마도 딥 러닝(deep learning)일 것이다. 심층신경망(deep neural networks)라고 불리는 딥 러닝은 이미지 식별에서 자동 번역에 이르기까지 다양하고 복잡한 패턴을 인식해낸다.

딥 러닝은 특히 비정형 데이터 분석에서 유용하게 쓰일 것으로 기대된다. 단, 3가지 문제가 있다. 첫째, 딥 러닝을 이용한 데이터 분석이 쉽지 않다. 둘째, 그렇게 하기 위해서는 막대한 양의 데이터가 필요하다. 셋째, 아주 많은 프로세싱 파워가 소모된다. 때문에 우리 시대의 전문가들이 해결하기 위해 애쓰는 문제들도 주로 이런 것들이다.

현재 딥 러닝 분야에서 일어나는 일들은 그저 구글의 텐서플로(TensorFlow)와 바이두의 패들(Paddle)처럼 딥 러닝 프레임워크 간의 패권 다툼 정도가 아니다. 다수의 소프트웨어 프레임워크 간에 라이벌 관계가 형성되는 것은 딥 러닝이 아니어도 모든 IT 분야에서 일어나는 일이다.

근래에 주목해야 할 의문들은 하드웨어와 소프트웨어에 관한 것들이다. 향후 딥 러닝의 진일보를 이끌어 나갈 주역은 모델 훈련과 예측에 적합하게 설계된 전용 하드웨어의 발전이 될 것인가, 아니면 더 효율적이고 스마트해진 알고리즘이 하드웨어의 도움 없이도 딥 러닝 기술의 발전을 이끌어 나갈 수 있을 것인가? 앞으로 딥 러닝이 좀 더 일반인들에게 친숙한 기술이 될 수 있을까? 아니면 앞으로도 딥 러닝은 여전히 컴퓨터 과학 전문가들에게 유보된 영역으로 남아 있을 것인가?

텐서플로의 대항마, 마이크로소프트 코그니티브 툴킷
세상을 바꿀 만한 중요한 기술적 발전이 일어날 때마다 그 흐름 속에서 뒤쳐지지 않기 위한 IT 기업들의 경쟁과 노력은 매우 치열하다. NoSQL, 하둡 때도 그랬고 스파크도 마찬가지였으며, 딥 러닝 프레임워크 역시 예외는 아니다. 구글의 텐서플로는 강력한 범용 솔루션인 동시에, 딥 러닝 앱을 구글 클라우드와 구글의 자체 하드웨어 가속기에 종속시키려는 시도이기도 하다.

마이크로소프트는 이에 대한 라이벌 역할을 자처했다. 딥 러닝 전선에서 마이크로소프트는 코그니티브 툴킷(Cognitive Toolkit, CNTK)을 앞세워 구글에 대항하고 있다. CNTK의 2.0 리비전은 여러 가지 측면에서 텐서플로에 대항하고 있다. CNTK는 현재 자바 API를 제공해 스파크 프로세싱 프레임워크 등과의 좀 더 직접적인 통합을 가능케 하며, 텐서플로의 프론트 엔드라 할 수 있는 심층 신경망 라이브러리 '케라스(Keras)'의 코드를 지원한다. 덕분에 케라스 사용자들은 구글에서 마이크로소프트로 어려움 없이 솔루션을 전환할 수 있다.

그러나 무엇보다도 CNTK는 텐서플로보다 더 빠르고 정확하며, 저수준 및 고수준 기능을 모두 보이는 파이썬 API를 제공했다는 것에 의미가 있다. 심지어 마이크로소프트는 텐서플로보다 CNTK가 더 나은 이유들을 열거하며 이러한 장점을 가장 상위에 올리기도 했다.

더 빠르고 정확하다는 것은 단순히 자랑하기 위한 미사여구가 아니다. 정말로 CNTK가 텐서플로보다 더 빠르다면, 이제 구글의 자체적인 커스텀 TPU 프로세서를 통한 텐서플로의 하드웨어 가속화처럼, 하드웨어 측면에 호소하지 않고도 문제를 해결할 수 있는 길이 열렸다는 의미가 된다.

또한 텐서플로와 CNTK 모두와 인터페이스 가능한 스파크 같은 서드파티 프로젝트들에게 더 넓은 가능성이 열렸음을 의미하기도 한다. 야후로 인해 텐서플로와 스파크의 조합은 널리 이용되고 있지만, 만일 CNTK와 스파크가 더 효율적임이 증명된다면, CNTK는 이미 스파크가 개척해놓은 영역이 어려움 없이 무혈 입성할 수 있게 된다.

그래프코어와 웨이브 컴퓨팅: 하드웨어가 핵심이다.
구글 TPU의 단점 가운데 하나는 구글 클라우드에서만 쓸 수 있다는 것이다. GCP 유저들의 경우 문제가 되지 않을 수도 있지만, 절대 다수의 나머지 유저들에게 있어 이는 상당한 불편함이 아닐 수 없다. 엔비디아의 범용 GPU처럼 딥 러닝에 최적화되어 있으면서도 훨씬 제약이 덜한 솔루션도 있기 때문이다.

다른 기업들 역시 딥 러닝 애플리케이션 용으로 GPU를 능가할 솔루션을 내놓고 있다. 스타트업 그래프코어(Graphcore)는 신경망에 이용된 그래프 데이터를 처리할 수 있는 특수 딥 러닝 프로세서를 개발했다. 그래프코어에 따르면, 이런 프로세서 개발의 가장 어려운 부분은 상호간에 혹은 다른 네트워크와 피드를 주고받거나 회귀하는 네트워크에 최적화된 하드웨어를 만드는 것이다.

그래프코어가 처리 속도를 앞당기는 방법은 네트워크를 모델을 최대한 실리콘 가까이 위치시키고, 외부 메모리로의 전송을 피하는 것이다. 머신러닝의 속도를 높이기 위해 많이 사용하는 방법 가운데 하나가 데이터의 이동을 최소화하는 것이지만, 그래프코어는 전혀 새로운 측면에서 이에 접근한 것이다.

또 다른 스타트업 웨이브 컴퓨팅(Wave Computing) 역시 특수 목적 딥러닝 하드웨어가 있다. 그래프코어와 마찬가지로, 웨이브 컴퓨팅도 이런 애플리케이션에 있어 GPU는 본질적인 제약이 드러나는 지점까지만 밀어붙일 수 있다고 판단했다. 웨이브 컴퓨팅은 2.9페타옵(petaops)의 연산력을 전달할 수 있는 맞춤형 실리콘을 사용해 '데이터플로우 어플라이언스' 랙마운트 시스템을 구축할 계획이다(부동 소수점 연산인 '페타플롭(petaflops)'이 아니라 고정 소수점 연산을 의미하는 '페타옵'임에 주목하자). 이는 구글 TPU가 제공하는 92테라옵(teraops)보다 훨씬 빠른 수준이다.

이런 주장들 역시 객관적 검증을 거치기 위한 나름의 테스트 기준이 필요한 상태이며, 페타옵 단위의 가격책정이 다른 솔루션에 비해 가격 경쟁력을 가질 수 있을지 의문스럽다. 하지만 웨이브는 가격적인 측면을 제쳐놓고 보더라도, 잠재적 고객에 대한 아낌없는 지원을 장담한다. 텐서플로 지원은 CNTK, 아마존의 MXNet 등과 함께 해당 제품이 지원하는 첫 번째 프레임워크가 될 것이다.

브로드맨17, 더 빨라진 스피드
그래프코어나 웨이브 컴퓨팅이 더 나은 하드웨어를 통해 TPU를 개선하려 시도했다면, 더 나은 프레임워크와 알고리즘을 통해 강력한 머신러닝을 구현하고자 하는 서드파티 솔루션들도 존재한다. 일부는 스마트폰과 같은 프로세싱 파워에 대한 액세스가 제한된 환경 문제를 개선하기 위한 솔루션도 있다.

구글 역시 텐서플로가 모바일 기기에서 제대로 작동하도록 최적화 하려는 시도를 해왔다. 브로드맨17(Brodmann17)이라는 스타트업도 스마트폰 등급 하드웨어에서 "다른 솔루션들이 사용하는 리소스(컴퓨트, 메모리, 훈련 데이터)의 5%만을 활용해" 딥 러닝 애플리케이션을 구현할 수 있는 방법을 고민 중이다.

브로드맨17 공동창업자이자 CEO인 아디 핀하스에 따르면, 브로드맨17은 기존의 표준 신경망 모듈을 활용해 훨씬 더 작은 모델을 만드는 방식을 택하고 있다. 핀하스는 "이렇게 만들어진 작은 모델들 덕분에 다른 유명 딥 러닝 아키텍처들보다 10%도 되지 않는 데이터로, 그러나 비슷한 기간 안에 훈련이 가능해졌다"고 말한다. 속도와 정확성을 약간 맞바꿔야 하긴 했지만, 예측 시간이 훨씬 빨라졌을 뿐 아니라 파워 소모량도 훨씬 줄어들고 메모리도 더 적게 필요하게 되었다.

적어도 처음에는 이런 것들이 오픈소스로 가능하리라는 기대는 버려야 한다. 브로드맨17의 비즈니스 모델은 클라우드 솔루션에 API를, 로컬 컴퓨팅에 SDK를 제공하는 것이다. 핀하스 역시 이런 상업적 목적의 제공은 초기 단계일 뿐이며 "미래에는 이러한 더욱 스펙트럼을 넓혀가고 싶다"고 말한 바 있다.

새로운 불씨를 지피다
올해 초, 제임스 코비엘러스는 딥 러닝 프레임워크의 스파크에 대한 지원을 예측한 바 있다. 앞서 언급했듯 텐서플로와 스파크의 조합은 널리 이용되고 있지만, 스파크의 주요 상업적 공급업체라 할 수 있는 데이터브릭스(Databricks)는 딥 러닝 프레임워크와 스파크 간 통합을 위해 자사의 오픈소스 패키지를 제공하고 있다.

딥 러닝 파이프라인스(Deep Learning Pipelines)라고 불리는 이 프로젝트는 딥 러닝과 스파크 간 통합을 스파크의 자체 ML 파이프라인의 관점에서 접근한다. 스파크 워크플로우는 텐서플로나 케라스(그리고 아마도 CNTK)같은 라이브러리를 활용할 수 있다. 이러한 프레임워크 모델은 스파크의 자체적인 데이터 및 딥 러닝 모형 메타포를 통해 스파크와 마찬가지로 확장 훈련이 가능하다.

수많은 데이터 랭글러(data wranglers)들은 이미 스파크에 익숙하다. 이들의 손에 딥 러닝을 쥐어주기 위해 데이터브릭스는 텐서플로를 처음부터 익힐 필요 없이 현재 각자 자신이 속한 지점에서부터 시작할 수 있도록 하고 있다.

모두를 위한 딥 러닝?
이들 발표와 이니셔티브를 관통하는 공통적 주제는 데이터브릭스가 기자회견에서 표현했듯 "이들 이니셔티브가 어떻게 인공지능과 데이터 과학의 민주화를 이루어 낼 것인가"이다. 마이크로소프트의 역시 CNTK 2.0가 "인공지능 기술 개발을 언제, 어디서나, 누구에게나 액세스 가능한 기술로 만들기 위한 마이크로소프트의 장기적인 큰 그림"이라고 설명한 바 있다.

하지만 딥 러닝은 이처럼 태생적인 복잡함 외에도 여러 가지 난관이 많다. 딥 러닝 전체의 워크플로우 자체가 임시 방편적 성격을 지닌다. 채워야 할 공백도 있고, 모든 플랫폼, 프레임워크, 클라우드 이면의 상업적 장식들이 앞다투어 엔드-투-엔드 솔루션과 유사한 솔루션을 통해 이러한 공백을 메우려 하고 있다.

이 다음 단계는 단순히 단 하나의 진정한 딥 러닝 프레임워크를 찾는 것은 아닐 것이다. 지금까지의 추세로 살펴보면, 다양한 프레임워크를 위한 공간은 충분히 마련되어 있다. 문제는 '이런 워크플로우의 이면에 무엇이 있는 지에 관계 없이, 다수의 프레임워크가 어우러질 수 있는 하나의 일관된 워크플로우를 찾을 수 있는가'이다. editor@itworld.co.kr  


2017.06.13

"더 빠르고, 더 간편하게" 딥 러닝의 미래

Serdar Yegulalp | InfoWorld
머신러닝의 하위 분야들 가운데 가장 많은 기대와 관심을 받고, 또 인공지능의 정수라고 할 만한 분야가 있다면 그것은 아마도 딥 러닝(deep learning)일 것이다. 심층신경망(deep neural networks)라고 불리는 딥 러닝은 이미지 식별에서 자동 번역에 이르기까지 다양하고 복잡한 패턴을 인식해낸다.

딥 러닝은 특히 비정형 데이터 분석에서 유용하게 쓰일 것으로 기대된다. 단, 3가지 문제가 있다. 첫째, 딥 러닝을 이용한 데이터 분석이 쉽지 않다. 둘째, 그렇게 하기 위해서는 막대한 양의 데이터가 필요하다. 셋째, 아주 많은 프로세싱 파워가 소모된다. 때문에 우리 시대의 전문가들이 해결하기 위해 애쓰는 문제들도 주로 이런 것들이다.

현재 딥 러닝 분야에서 일어나는 일들은 그저 구글의 텐서플로(TensorFlow)와 바이두의 패들(Paddle)처럼 딥 러닝 프레임워크 간의 패권 다툼 정도가 아니다. 다수의 소프트웨어 프레임워크 간에 라이벌 관계가 형성되는 것은 딥 러닝이 아니어도 모든 IT 분야에서 일어나는 일이다.

근래에 주목해야 할 의문들은 하드웨어와 소프트웨어에 관한 것들이다. 향후 딥 러닝의 진일보를 이끌어 나갈 주역은 모델 훈련과 예측에 적합하게 설계된 전용 하드웨어의 발전이 될 것인가, 아니면 더 효율적이고 스마트해진 알고리즘이 하드웨어의 도움 없이도 딥 러닝 기술의 발전을 이끌어 나갈 수 있을 것인가? 앞으로 딥 러닝이 좀 더 일반인들에게 친숙한 기술이 될 수 있을까? 아니면 앞으로도 딥 러닝은 여전히 컴퓨터 과학 전문가들에게 유보된 영역으로 남아 있을 것인가?

텐서플로의 대항마, 마이크로소프트 코그니티브 툴킷
세상을 바꿀 만한 중요한 기술적 발전이 일어날 때마다 그 흐름 속에서 뒤쳐지지 않기 위한 IT 기업들의 경쟁과 노력은 매우 치열하다. NoSQL, 하둡 때도 그랬고 스파크도 마찬가지였으며, 딥 러닝 프레임워크 역시 예외는 아니다. 구글의 텐서플로는 강력한 범용 솔루션인 동시에, 딥 러닝 앱을 구글 클라우드와 구글의 자체 하드웨어 가속기에 종속시키려는 시도이기도 하다.

마이크로소프트는 이에 대한 라이벌 역할을 자처했다. 딥 러닝 전선에서 마이크로소프트는 코그니티브 툴킷(Cognitive Toolkit, CNTK)을 앞세워 구글에 대항하고 있다. CNTK의 2.0 리비전은 여러 가지 측면에서 텐서플로에 대항하고 있다. CNTK는 현재 자바 API를 제공해 스파크 프로세싱 프레임워크 등과의 좀 더 직접적인 통합을 가능케 하며, 텐서플로의 프론트 엔드라 할 수 있는 심층 신경망 라이브러리 '케라스(Keras)'의 코드를 지원한다. 덕분에 케라스 사용자들은 구글에서 마이크로소프트로 어려움 없이 솔루션을 전환할 수 있다.

그러나 무엇보다도 CNTK는 텐서플로보다 더 빠르고 정확하며, 저수준 및 고수준 기능을 모두 보이는 파이썬 API를 제공했다는 것에 의미가 있다. 심지어 마이크로소프트는 텐서플로보다 CNTK가 더 나은 이유들을 열거하며 이러한 장점을 가장 상위에 올리기도 했다.

더 빠르고 정확하다는 것은 단순히 자랑하기 위한 미사여구가 아니다. 정말로 CNTK가 텐서플로보다 더 빠르다면, 이제 구글의 자체적인 커스텀 TPU 프로세서를 통한 텐서플로의 하드웨어 가속화처럼, 하드웨어 측면에 호소하지 않고도 문제를 해결할 수 있는 길이 열렸다는 의미가 된다.

또한 텐서플로와 CNTK 모두와 인터페이스 가능한 스파크 같은 서드파티 프로젝트들에게 더 넓은 가능성이 열렸음을 의미하기도 한다. 야후로 인해 텐서플로와 스파크의 조합은 널리 이용되고 있지만, 만일 CNTK와 스파크가 더 효율적임이 증명된다면, CNTK는 이미 스파크가 개척해놓은 영역이 어려움 없이 무혈 입성할 수 있게 된다.

그래프코어와 웨이브 컴퓨팅: 하드웨어가 핵심이다.
구글 TPU의 단점 가운데 하나는 구글 클라우드에서만 쓸 수 있다는 것이다. GCP 유저들의 경우 문제가 되지 않을 수도 있지만, 절대 다수의 나머지 유저들에게 있어 이는 상당한 불편함이 아닐 수 없다. 엔비디아의 범용 GPU처럼 딥 러닝에 최적화되어 있으면서도 훨씬 제약이 덜한 솔루션도 있기 때문이다.

다른 기업들 역시 딥 러닝 애플리케이션 용으로 GPU를 능가할 솔루션을 내놓고 있다. 스타트업 그래프코어(Graphcore)는 신경망에 이용된 그래프 데이터를 처리할 수 있는 특수 딥 러닝 프로세서를 개발했다. 그래프코어에 따르면, 이런 프로세서 개발의 가장 어려운 부분은 상호간에 혹은 다른 네트워크와 피드를 주고받거나 회귀하는 네트워크에 최적화된 하드웨어를 만드는 것이다.

그래프코어가 처리 속도를 앞당기는 방법은 네트워크를 모델을 최대한 실리콘 가까이 위치시키고, 외부 메모리로의 전송을 피하는 것이다. 머신러닝의 속도를 높이기 위해 많이 사용하는 방법 가운데 하나가 데이터의 이동을 최소화하는 것이지만, 그래프코어는 전혀 새로운 측면에서 이에 접근한 것이다.

또 다른 스타트업 웨이브 컴퓨팅(Wave Computing) 역시 특수 목적 딥러닝 하드웨어가 있다. 그래프코어와 마찬가지로, 웨이브 컴퓨팅도 이런 애플리케이션에 있어 GPU는 본질적인 제약이 드러나는 지점까지만 밀어붙일 수 있다고 판단했다. 웨이브 컴퓨팅은 2.9페타옵(petaops)의 연산력을 전달할 수 있는 맞춤형 실리콘을 사용해 '데이터플로우 어플라이언스' 랙마운트 시스템을 구축할 계획이다(부동 소수점 연산인 '페타플롭(petaflops)'이 아니라 고정 소수점 연산을 의미하는 '페타옵'임에 주목하자). 이는 구글 TPU가 제공하는 92테라옵(teraops)보다 훨씬 빠른 수준이다.

이런 주장들 역시 객관적 검증을 거치기 위한 나름의 테스트 기준이 필요한 상태이며, 페타옵 단위의 가격책정이 다른 솔루션에 비해 가격 경쟁력을 가질 수 있을지 의문스럽다. 하지만 웨이브는 가격적인 측면을 제쳐놓고 보더라도, 잠재적 고객에 대한 아낌없는 지원을 장담한다. 텐서플로 지원은 CNTK, 아마존의 MXNet 등과 함께 해당 제품이 지원하는 첫 번째 프레임워크가 될 것이다.

브로드맨17, 더 빨라진 스피드
그래프코어나 웨이브 컴퓨팅이 더 나은 하드웨어를 통해 TPU를 개선하려 시도했다면, 더 나은 프레임워크와 알고리즘을 통해 강력한 머신러닝을 구현하고자 하는 서드파티 솔루션들도 존재한다. 일부는 스마트폰과 같은 프로세싱 파워에 대한 액세스가 제한된 환경 문제를 개선하기 위한 솔루션도 있다.

구글 역시 텐서플로가 모바일 기기에서 제대로 작동하도록 최적화 하려는 시도를 해왔다. 브로드맨17(Brodmann17)이라는 스타트업도 스마트폰 등급 하드웨어에서 "다른 솔루션들이 사용하는 리소스(컴퓨트, 메모리, 훈련 데이터)의 5%만을 활용해" 딥 러닝 애플리케이션을 구현할 수 있는 방법을 고민 중이다.

브로드맨17 공동창업자이자 CEO인 아디 핀하스에 따르면, 브로드맨17은 기존의 표준 신경망 모듈을 활용해 훨씬 더 작은 모델을 만드는 방식을 택하고 있다. 핀하스는 "이렇게 만들어진 작은 모델들 덕분에 다른 유명 딥 러닝 아키텍처들보다 10%도 되지 않는 데이터로, 그러나 비슷한 기간 안에 훈련이 가능해졌다"고 말한다. 속도와 정확성을 약간 맞바꿔야 하긴 했지만, 예측 시간이 훨씬 빨라졌을 뿐 아니라 파워 소모량도 훨씬 줄어들고 메모리도 더 적게 필요하게 되었다.

적어도 처음에는 이런 것들이 오픈소스로 가능하리라는 기대는 버려야 한다. 브로드맨17의 비즈니스 모델은 클라우드 솔루션에 API를, 로컬 컴퓨팅에 SDK를 제공하는 것이다. 핀하스 역시 이런 상업적 목적의 제공은 초기 단계일 뿐이며 "미래에는 이러한 더욱 스펙트럼을 넓혀가고 싶다"고 말한 바 있다.

새로운 불씨를 지피다
올해 초, 제임스 코비엘러스는 딥 러닝 프레임워크의 스파크에 대한 지원을 예측한 바 있다. 앞서 언급했듯 텐서플로와 스파크의 조합은 널리 이용되고 있지만, 스파크의 주요 상업적 공급업체라 할 수 있는 데이터브릭스(Databricks)는 딥 러닝 프레임워크와 스파크 간 통합을 위해 자사의 오픈소스 패키지를 제공하고 있다.

딥 러닝 파이프라인스(Deep Learning Pipelines)라고 불리는 이 프로젝트는 딥 러닝과 스파크 간 통합을 스파크의 자체 ML 파이프라인의 관점에서 접근한다. 스파크 워크플로우는 텐서플로나 케라스(그리고 아마도 CNTK)같은 라이브러리를 활용할 수 있다. 이러한 프레임워크 모델은 스파크의 자체적인 데이터 및 딥 러닝 모형 메타포를 통해 스파크와 마찬가지로 확장 훈련이 가능하다.

수많은 데이터 랭글러(data wranglers)들은 이미 스파크에 익숙하다. 이들의 손에 딥 러닝을 쥐어주기 위해 데이터브릭스는 텐서플로를 처음부터 익힐 필요 없이 현재 각자 자신이 속한 지점에서부터 시작할 수 있도록 하고 있다.

모두를 위한 딥 러닝?
이들 발표와 이니셔티브를 관통하는 공통적 주제는 데이터브릭스가 기자회견에서 표현했듯 "이들 이니셔티브가 어떻게 인공지능과 데이터 과학의 민주화를 이루어 낼 것인가"이다. 마이크로소프트의 역시 CNTK 2.0가 "인공지능 기술 개발을 언제, 어디서나, 누구에게나 액세스 가능한 기술로 만들기 위한 마이크로소프트의 장기적인 큰 그림"이라고 설명한 바 있다.

하지만 딥 러닝은 이처럼 태생적인 복잡함 외에도 여러 가지 난관이 많다. 딥 러닝 전체의 워크플로우 자체가 임시 방편적 성격을 지닌다. 채워야 할 공백도 있고, 모든 플랫폼, 프레임워크, 클라우드 이면의 상업적 장식들이 앞다투어 엔드-투-엔드 솔루션과 유사한 솔루션을 통해 이러한 공백을 메우려 하고 있다.

이 다음 단계는 단순히 단 하나의 진정한 딥 러닝 프레임워크를 찾는 것은 아닐 것이다. 지금까지의 추세로 살펴보면, 다양한 프레임워크를 위한 공간은 충분히 마련되어 있다. 문제는 '이런 워크플로우의 이면에 무엇이 있는 지에 관계 없이, 다수의 프레임워크가 어우러질 수 있는 하나의 일관된 워크플로우를 찾을 수 있는가'이다. editor@itworld.co.kr  


X