2017.09.01

머신러닝 분야의 새 바람··· 눈길 끄는 프로젝트 3종

By Serdar Yegulalp | InfoWorld
전통적 강자라 할 수 있는 사이킷-런(scikit-learn)에서부터 거부할 수 없는 흐름인 구글의 텐서플로우(TensorFlow)까지, 머신러닝 하면 떠오르는 많은 프레임워크들이 있다. 하지만 최근에는 이 넓은 머신러닝 분야의 곳곳에서 새로운 혁신의 싹들이 트고 있다.

최근 릴리즈 된 3가지 오픈소스 프로젝트들은 머신러닝을 더 빠르고, 더 확장 가능하며, 사용하기 더 쉽도록 만드는 데 도움을 주는 것들이다. 파이토치(PyTorch)와 아파치 MXNet은 머신러닝과 파이썬 딥러닝에 GPU 지원을 추가했으며, ‘스마일’은 자바 개발자들에게 속도와 편의성, 그리고 머신 러닝 알고리즘의 포괄적 라이브러리를 약속하고 있다.

파이토치 0.2.0(PyTorch 0.2.0)
파이토니스타스(Pythonists)는 아마도 가장 방대한 머신러닝 라이브러리를 보유하고 있을 것이다. GPU 가속화를 겸비한 딥러닝 텐서 라이브러리인 파이토치 역시 강력한 옵션을 제공한다.

파이토치는 일단 파이썬 생태계에서 활용되도록 제작됐다. 파이토치의 많은 기능들이 파이썬의 넘피(NumPy)와 같은 매스-앤-스탯 패키지를 대체하거나 보완하도록 되어 있으며 파이썬의 멀티프로세싱 기능을 확장하여 메모리를 공유할 수 있다. 그러나 파이토치는 딥러닝 및 머신러닝을 사용하는 누구에게나 유용하게 사용될 수 있다. 기존의 교육이 끝난 뉴럴 네트워크를 수정할 수 있는 기능 등이 포함됐 있기 때문이다.

파이토치 0.2.0 릴리즈는 대대적인 아키텍쳐 변화를 보여준다. 이를 가리켜 ‘분산형 파이토치(Distributed PyTorch)’라고 불리고 있다. 파이토치의 텐서는 다양한 기계에서 더욱 빠른 프로세싱을 위한 확장 및 분배가 가능하다. 다수의 네트워크 백 엔드로 인해 네트워크 토폴로지 및 인프라스트럭처에 가장 잘 맞는 모델을 선택할 수 있다. 예를 들어 글루 라이브러리(Gloo library)의 경우 엔비디아의 GPUDirect를 활용해 GPU와 여러 기기들 간의 더욱 빠른 전송을 가능케 한다.

파이토치 0.2.0에 추가된 다른 기능들로는 아래와 같은 것들이 있다.

- 텐서 브로드캐스팅: 파이선의 넘피 라이브러리는 각기 다른 형태의 배열을 동일한 사이즈의 배열처럼 취급할 수 있어 다수의 배열 간 프로세싱 속도를 높여 준다. 브로드캐스팅(broadcasting)’이라 불리는 이러한 기술이 이제는 메모리를 잡아 먹고 퍼포먼스를 저하시키는 오퍼레이션 카피 없이도 파이토치를 통해서 사용할 수 있게 되었다.

- 증가된 오더 그라디언트: 그 동안 수 차례 요구되어 왔던 이 기능은 지금까지와 전혀 다른 기능들(예를 들어 'unrolled generative adversarial networks'와 같은 기능들)을 파이토치를 통해 직접적으로 컴퓨팅 할 수 있게 해준다. 그러나 이 기능을 십분 활용하기 위해서는 새로운 방법론에 의거하여 특정한 파이토치 기능들을 생성해 내야 한다. (물론 기존의 기능들도 여전히 작동한다.)

- 고급 텐서 및 변수 인덱싱: 이 역시 넘피에서 빌려온 아이디어로, 고급 인덱싱 기능이 부가적인 프로그래밍 후프 없이도 임의로 텐스를 선택할 수 있게 해준다.

아파치 MXNet 0.11.0(Apache MXNet 0.11.0)
텐서플로우가 딥러닝에 대한 구글의 해답이었다면, 아파치 MXNet은 아마존이 내놓은 해답이다. MXNet 프레임워크의 최신 버전이라 할 수 있으며 방대한 스케일을 자랑하는 이번 릴리즈에는 그러나 새롭게 추가된 기능은 몇 개 되지 않는다. 새롭게 추가된 두 기능 모두 머신러닝 지능을 사용자 대면 제품에 적용하려 하는 개발자들이 좀 더 쉽게 MXNet을 사용할 수 있도록 도와 줄 것이다.

- 코어 ML 모델 포맷을 통해 애플 기기에서도 MXNet 모델을 지원할 수 있게 되었다. 코어 ML은 스마트폰 등급의 기기에서도 구동될 수 있을 만큼 컴팩트한 머신러닝 모델을 제작할 수 있는 애플의 프레임워크다. MXNet 모델은 코어 ML 포맷으로 변환 가능하기 때문에 클라우드(특히 아마존의 클라우드)에서 교육된 머신러닝 모델이 iOS나 맥OS 기기로 변환 및 디플로이 될 수 있다. 이러한 변환에 사용된 툴셋은 또한 카페(Caffe) 프레임워크의 모델들도 변환할 수 있기 때문에 MXNet이 반드시 코어 ML만을 겨냥한 것은 아니라고 할 수 있다.

- 케라스 1.2 지원: 파이썬 라이브러리인 케라스(Keras)는 텐서플로우, 테아노(Theano), MXNet과 같은 경로를 거쳐 뉴럴 네트워크 프로그래밍을 더욱 용이하게 만든다. MXNet과 케라스 1.2를 통해 케라스가 백 엔드로 사용될 경우 다수의 GPU에 걸친 케라스 확장이 가능해 졌다.

스마일 1.4.0(Smile 1.4.0)
스마일은 ‘통계적 기계 지능 및 학습 엔진(Statistical Machine Intelligence and Learning Engine)’의 약어이다. 스마일은 분류 및 회귀 분석과 같은 단순한 기능에서부터 자연어 프로세싱과 같은 좀 더 복합적인 기능에 이르기까지 다양한 범주의 알고리즘을 제공하고 있다. 우리에게 필요한 것은 자바나 JVM 언어뿐이다.

스마일의 퀵 스타트 도큐먼트에 따르면, 자바 API를 사용하는 이유는 모델 교육과 도입이 같은 환경에서 이루어질 수 있게 하기 위해서 이다. 스마일을 통해 제작된 모델은 아파치 스파크 등 자바의 직렬화 방법을 사용하는 다른 자바 앱에도 활용될 수 있다. 스마일은 또한 데이터 시각화를 위한 스마일 플롯(SmilePlot)이라는 라이브러리를 제공하고 있다.

JVM에서 사용되는 다른 언어들, 특히 스케일라(Scala)의 경우 스마일에서도 사용될 수 있다. 스마일의 자바 중심적 접근 방식이 갖는 단점 중의 하나는 JVM 외의 언어에 대한 자체적 지원이 전혀 되지 않는다는 것이다. 파이썬에 의존하는 머신러닝 메이븐(maven)들은 자체적인 솔루션을 활용하거나 자바로 넘어올 수 밖에 없을 것이다. ciokr@idg.co.kr 

2017.09.01

머신러닝 분야의 새 바람··· 눈길 끄는 프로젝트 3종

By Serdar Yegulalp | InfoWorld
전통적 강자라 할 수 있는 사이킷-런(scikit-learn)에서부터 거부할 수 없는 흐름인 구글의 텐서플로우(TensorFlow)까지, 머신러닝 하면 떠오르는 많은 프레임워크들이 있다. 하지만 최근에는 이 넓은 머신러닝 분야의 곳곳에서 새로운 혁신의 싹들이 트고 있다.

최근 릴리즈 된 3가지 오픈소스 프로젝트들은 머신러닝을 더 빠르고, 더 확장 가능하며, 사용하기 더 쉽도록 만드는 데 도움을 주는 것들이다. 파이토치(PyTorch)와 아파치 MXNet은 머신러닝과 파이썬 딥러닝에 GPU 지원을 추가했으며, ‘스마일’은 자바 개발자들에게 속도와 편의성, 그리고 머신 러닝 알고리즘의 포괄적 라이브러리를 약속하고 있다.

파이토치 0.2.0(PyTorch 0.2.0)
파이토니스타스(Pythonists)는 아마도 가장 방대한 머신러닝 라이브러리를 보유하고 있을 것이다. GPU 가속화를 겸비한 딥러닝 텐서 라이브러리인 파이토치 역시 강력한 옵션을 제공한다.

파이토치는 일단 파이썬 생태계에서 활용되도록 제작됐다. 파이토치의 많은 기능들이 파이썬의 넘피(NumPy)와 같은 매스-앤-스탯 패키지를 대체하거나 보완하도록 되어 있으며 파이썬의 멀티프로세싱 기능을 확장하여 메모리를 공유할 수 있다. 그러나 파이토치는 딥러닝 및 머신러닝을 사용하는 누구에게나 유용하게 사용될 수 있다. 기존의 교육이 끝난 뉴럴 네트워크를 수정할 수 있는 기능 등이 포함됐 있기 때문이다.

파이토치 0.2.0 릴리즈는 대대적인 아키텍쳐 변화를 보여준다. 이를 가리켜 ‘분산형 파이토치(Distributed PyTorch)’라고 불리고 있다. 파이토치의 텐서는 다양한 기계에서 더욱 빠른 프로세싱을 위한 확장 및 분배가 가능하다. 다수의 네트워크 백 엔드로 인해 네트워크 토폴로지 및 인프라스트럭처에 가장 잘 맞는 모델을 선택할 수 있다. 예를 들어 글루 라이브러리(Gloo library)의 경우 엔비디아의 GPUDirect를 활용해 GPU와 여러 기기들 간의 더욱 빠른 전송을 가능케 한다.

파이토치 0.2.0에 추가된 다른 기능들로는 아래와 같은 것들이 있다.

- 텐서 브로드캐스팅: 파이선의 넘피 라이브러리는 각기 다른 형태의 배열을 동일한 사이즈의 배열처럼 취급할 수 있어 다수의 배열 간 프로세싱 속도를 높여 준다. 브로드캐스팅(broadcasting)’이라 불리는 이러한 기술이 이제는 메모리를 잡아 먹고 퍼포먼스를 저하시키는 오퍼레이션 카피 없이도 파이토치를 통해서 사용할 수 있게 되었다.

- 증가된 오더 그라디언트: 그 동안 수 차례 요구되어 왔던 이 기능은 지금까지와 전혀 다른 기능들(예를 들어 'unrolled generative adversarial networks'와 같은 기능들)을 파이토치를 통해 직접적으로 컴퓨팅 할 수 있게 해준다. 그러나 이 기능을 십분 활용하기 위해서는 새로운 방법론에 의거하여 특정한 파이토치 기능들을 생성해 내야 한다. (물론 기존의 기능들도 여전히 작동한다.)

- 고급 텐서 및 변수 인덱싱: 이 역시 넘피에서 빌려온 아이디어로, 고급 인덱싱 기능이 부가적인 프로그래밍 후프 없이도 임의로 텐스를 선택할 수 있게 해준다.

아파치 MXNet 0.11.0(Apache MXNet 0.11.0)
텐서플로우가 딥러닝에 대한 구글의 해답이었다면, 아파치 MXNet은 아마존이 내놓은 해답이다. MXNet 프레임워크의 최신 버전이라 할 수 있으며 방대한 스케일을 자랑하는 이번 릴리즈에는 그러나 새롭게 추가된 기능은 몇 개 되지 않는다. 새롭게 추가된 두 기능 모두 머신러닝 지능을 사용자 대면 제품에 적용하려 하는 개발자들이 좀 더 쉽게 MXNet을 사용할 수 있도록 도와 줄 것이다.

- 코어 ML 모델 포맷을 통해 애플 기기에서도 MXNet 모델을 지원할 수 있게 되었다. 코어 ML은 스마트폰 등급의 기기에서도 구동될 수 있을 만큼 컴팩트한 머신러닝 모델을 제작할 수 있는 애플의 프레임워크다. MXNet 모델은 코어 ML 포맷으로 변환 가능하기 때문에 클라우드(특히 아마존의 클라우드)에서 교육된 머신러닝 모델이 iOS나 맥OS 기기로 변환 및 디플로이 될 수 있다. 이러한 변환에 사용된 툴셋은 또한 카페(Caffe) 프레임워크의 모델들도 변환할 수 있기 때문에 MXNet이 반드시 코어 ML만을 겨냥한 것은 아니라고 할 수 있다.

- 케라스 1.2 지원: 파이썬 라이브러리인 케라스(Keras)는 텐서플로우, 테아노(Theano), MXNet과 같은 경로를 거쳐 뉴럴 네트워크 프로그래밍을 더욱 용이하게 만든다. MXNet과 케라스 1.2를 통해 케라스가 백 엔드로 사용될 경우 다수의 GPU에 걸친 케라스 확장이 가능해 졌다.

스마일 1.4.0(Smile 1.4.0)
스마일은 ‘통계적 기계 지능 및 학습 엔진(Statistical Machine Intelligence and Learning Engine)’의 약어이다. 스마일은 분류 및 회귀 분석과 같은 단순한 기능에서부터 자연어 프로세싱과 같은 좀 더 복합적인 기능에 이르기까지 다양한 범주의 알고리즘을 제공하고 있다. 우리에게 필요한 것은 자바나 JVM 언어뿐이다.

스마일의 퀵 스타트 도큐먼트에 따르면, 자바 API를 사용하는 이유는 모델 교육과 도입이 같은 환경에서 이루어질 수 있게 하기 위해서 이다. 스마일을 통해 제작된 모델은 아파치 스파크 등 자바의 직렬화 방법을 사용하는 다른 자바 앱에도 활용될 수 있다. 스마일은 또한 데이터 시각화를 위한 스마일 플롯(SmilePlot)이라는 라이브러리를 제공하고 있다.

JVM에서 사용되는 다른 언어들, 특히 스케일라(Scala)의 경우 스마일에서도 사용될 수 있다. 스마일의 자바 중심적 접근 방식이 갖는 단점 중의 하나는 JVM 외의 언어에 대한 자체적 지원이 전혀 되지 않는다는 것이다. 파이썬에 의존하는 머신러닝 메이븐(maven)들은 자체적인 솔루션을 활용하거나 자바로 넘어올 수 밖에 없을 것이다. ciokr@idg.co.kr 

X