2017.08.03

“웹 브라우저에서 머신러닝을” 텐서파이어, GPU 기반 머신러닝 대중화 선언

Serdar Yegulalp | InfoWorld
웹 페이지 내에서 신경 네트워크를 실행하는 자바스크립트 라이브러리가 등장했다. 최신 웹 브라우저라면 누구나 이용할 수 있는 하드웨어 가속 그래픽 API를 사용한다.

MIT 대학원생팀이 개발한 텐서파이어(TensorFire)는 텐서플로우 방식의 머신러닝 모델을 모든 GPU 상에서 구동할 수 있다. 일반적으로 머신러닝 라이브러리에서 일반적으로 필요한 GPU 전용 미들웨어도 필요없다.

텐서파이어는 머신러닝을 좀 더 폭넓은 사용자층이 이용할 수 있도록 확산하는 데 크게 기여할 것으로 평가된다. 사람들이 이미 보유하고 있는 하드웨어와 소프트웨어를 사용하며, 기존에 필요했던 자원의 극히 일부만으로 정확한 모델 예측을 서비스할 수 있기 때문이다.

텐서파이어는 브라우저에서 GPU 가속 그래픽을 렌더링하는 크로스플랫폼 시스템인 WebGL 표준을 사용해 동작한다. WebGL은 셰이더를 작성하는 데 사용하는 C 비슷한 언어인 GLSL을 지원하는데, GLSL은 데이터를 GPU 상에서 바로 변형하는 데 사용하는 짧은 프로그램이다.

셰이더는 보통 WeGL 파이프라인에서 그래픽을 렌더링하는 방법을 변형하는 데 사용한다. 예를 들어 그림자를 렌더링하거나 다른 시각적인 효과를 만들어내는 등이다. 하지만 텐서파이어는 셰이더를 텐서플로우 모델의 예측 생성에 필요한 병렬 연산을 실행하는 데 사용한다. 또한 기존 텐서플로우와 케라스 모델을 가져오는 데 사용하는 라이브러리도 갖추고 있다.

이 프레임워크를 이용하면 훈련된 모델을 웹브라우저에 바로 배치할 수 있으며, 예측 분석을 브라우저에서 로컬로 서비스할 수 있다. 사용자는 다운로드나 설치, 컴파일 작업이 필요없으며, 모든 작업은 브라우저에서 직접 이루어진다. 예측 분석을 만드는 데 사용하는 데이터 역시 모두 클라이언트 상에서 처리한다. GPU의 종류도 상관없으며, AMD와 엔비디아 GPU 모두 지원한다.

텐서파이어를 이용한 웹 기반 예제 중 하나는 스타일을 전송하는 신경망인데, 예술작품 하나의 스타일을 다른 이미지에 매핑할 수 있다. 이 시연에서 가장 느린 부분은 모델을 다운로드하고 셰이더 파이프라인을 컴파일하는 것이며, 실제 실행은 1~2초밖에 걸리지 않는다.

텐서파이어 개발팀은 다른 어떤 솔루션보다 빠르다고 강조했다. GPU와 CPU 사이에 데이터를 주고받는 것이 보통 성능 병목인데, 텐서파이어는 가능한 많은 데이터를 GPU 상에서 한 번에 처리하는 방식으로 이런 문제를 해결했다.

텐서파이어 접근 방법의 가장 두드러진 이점은 이식성과 편의성이다. 현대적인 웹 브라우저는 대부분 운영체제와 하드웨어 플랫폼에서 동작하며, 여기에 더해 보급형 스마트폰에도 충분한 양의 GPU 성능이 남아 있다. 또 머신러닝 모델에서 유용한 결과를 얻기 위한 작업의 많은 부분은 머신러닝 파이프라인을 설정하는 것이다. 이 과정의 상당 부분을 그저 웹 브라우저를 열어 뭔가를 클릭하는 것으로 단순화하는 것은 매우 유용하다.

텐서파이어 개발팀이 주장하는 또 하나의 장점은 예측 분석의 배치를 온전히 클라이언트에서 할 수 있다는 것이다. 교육을 마친 모델이나 데이터가 이미 클라우드에 배치된 경우에는 이점이 그리 크지 않지만, 배치된 모델이 작고 데이터가 클라이언트 측에 있고 사용자가 뭔가를 업로드하는 것이 편하지 않은 애플리케이션에 안성맞춤이다.

세 번째 이점은 이론적으로 머신러닝에 사용할 수 있는 그래픽 카드의 상표에 대한 제약을 완화한다는 것이다. 그동안 엔비디아 CUDA 표준은 GPU를 통해 머신러닝을 가속화할 때 많이 찾는 것이었는 것, 좀 더 개방적인 OpenCL 표준보다 더 높은 성능을 제공하기 때문이다. 하지만 OpenCL은 폭넓은 하드웨어를 지원한다. AMD는 OpenCL 성능 문제 관련 처리 계획이 있지만, 텐서파이어는 사용자나 개발자가 이 문제를 완전히 비켜갈 수 있도록 해 준다.

텐서파이어는 최근 증가하고 있는 또 하나의 현상에도 부합한다. 바로 머신러닝 모델을 약간의 정확성을 희생해 더 작고 효율적으로 만드는 것이다. 이처럼 정확도를 낮추는 접근법은 더 작은 모델을 클라이언트에 배치해 예측 분석을 더 빨리 수행할 수 있다는 것을 의미한다.

텐서파이어 개발팀은 이런 접근법으로 소프트웨어를 더 다양한 GPU와 브라우저에서 실행할 수 있고, 특히 WebGL 확장 프로그램을 온전히 지원하지 않는 환경에서도 이용할 수 있다고 강조했다.

마지막으로 텐서파이어 개발팀은 해당 라이브러리를 MIT 라이선스 기반의 오픈소스 프로젝트로 발표할 계획인데, 텐서파이어에서 진행한 가속화 작업을 다양한 애플리케이션, 심지어 텐서플로우나 머신러닝과 아무런 관련이 없는 애플리케이션에도 사용할 수 있다.

개발팀은 텐서파이어의 저수준 GLSL API는 “임의의 범용 병렬 연산에도 사용할 수 있다”고 설명했는데, 이는 GPU 기반의 브라우저 내 클라이언트 측 연산을 위한 다른 프레임워크를 텐서파이어 상에 구축할 수도 있다는 의미이다.  editor@itworld.co.kr

2017.08.03

“웹 브라우저에서 머신러닝을” 텐서파이어, GPU 기반 머신러닝 대중화 선언

Serdar Yegulalp | InfoWorld
웹 페이지 내에서 신경 네트워크를 실행하는 자바스크립트 라이브러리가 등장했다. 최신 웹 브라우저라면 누구나 이용할 수 있는 하드웨어 가속 그래픽 API를 사용한다.

MIT 대학원생팀이 개발한 텐서파이어(TensorFire)는 텐서플로우 방식의 머신러닝 모델을 모든 GPU 상에서 구동할 수 있다. 일반적으로 머신러닝 라이브러리에서 일반적으로 필요한 GPU 전용 미들웨어도 필요없다.

텐서파이어는 머신러닝을 좀 더 폭넓은 사용자층이 이용할 수 있도록 확산하는 데 크게 기여할 것으로 평가된다. 사람들이 이미 보유하고 있는 하드웨어와 소프트웨어를 사용하며, 기존에 필요했던 자원의 극히 일부만으로 정확한 모델 예측을 서비스할 수 있기 때문이다.

텐서파이어는 브라우저에서 GPU 가속 그래픽을 렌더링하는 크로스플랫폼 시스템인 WebGL 표준을 사용해 동작한다. WebGL은 셰이더를 작성하는 데 사용하는 C 비슷한 언어인 GLSL을 지원하는데, GLSL은 데이터를 GPU 상에서 바로 변형하는 데 사용하는 짧은 프로그램이다.

셰이더는 보통 WeGL 파이프라인에서 그래픽을 렌더링하는 방법을 변형하는 데 사용한다. 예를 들어 그림자를 렌더링하거나 다른 시각적인 효과를 만들어내는 등이다. 하지만 텐서파이어는 셰이더를 텐서플로우 모델의 예측 생성에 필요한 병렬 연산을 실행하는 데 사용한다. 또한 기존 텐서플로우와 케라스 모델을 가져오는 데 사용하는 라이브러리도 갖추고 있다.

이 프레임워크를 이용하면 훈련된 모델을 웹브라우저에 바로 배치할 수 있으며, 예측 분석을 브라우저에서 로컬로 서비스할 수 있다. 사용자는 다운로드나 설치, 컴파일 작업이 필요없으며, 모든 작업은 브라우저에서 직접 이루어진다. 예측 분석을 만드는 데 사용하는 데이터 역시 모두 클라이언트 상에서 처리한다. GPU의 종류도 상관없으며, AMD와 엔비디아 GPU 모두 지원한다.

텐서파이어를 이용한 웹 기반 예제 중 하나는 스타일을 전송하는 신경망인데, 예술작품 하나의 스타일을 다른 이미지에 매핑할 수 있다. 이 시연에서 가장 느린 부분은 모델을 다운로드하고 셰이더 파이프라인을 컴파일하는 것이며, 실제 실행은 1~2초밖에 걸리지 않는다.

텐서파이어 개발팀은 다른 어떤 솔루션보다 빠르다고 강조했다. GPU와 CPU 사이에 데이터를 주고받는 것이 보통 성능 병목인데, 텐서파이어는 가능한 많은 데이터를 GPU 상에서 한 번에 처리하는 방식으로 이런 문제를 해결했다.

텐서파이어 접근 방법의 가장 두드러진 이점은 이식성과 편의성이다. 현대적인 웹 브라우저는 대부분 운영체제와 하드웨어 플랫폼에서 동작하며, 여기에 더해 보급형 스마트폰에도 충분한 양의 GPU 성능이 남아 있다. 또 머신러닝 모델에서 유용한 결과를 얻기 위한 작업의 많은 부분은 머신러닝 파이프라인을 설정하는 것이다. 이 과정의 상당 부분을 그저 웹 브라우저를 열어 뭔가를 클릭하는 것으로 단순화하는 것은 매우 유용하다.

텐서파이어 개발팀이 주장하는 또 하나의 장점은 예측 분석의 배치를 온전히 클라이언트에서 할 수 있다는 것이다. 교육을 마친 모델이나 데이터가 이미 클라우드에 배치된 경우에는 이점이 그리 크지 않지만, 배치된 모델이 작고 데이터가 클라이언트 측에 있고 사용자가 뭔가를 업로드하는 것이 편하지 않은 애플리케이션에 안성맞춤이다.

세 번째 이점은 이론적으로 머신러닝에 사용할 수 있는 그래픽 카드의 상표에 대한 제약을 완화한다는 것이다. 그동안 엔비디아 CUDA 표준은 GPU를 통해 머신러닝을 가속화할 때 많이 찾는 것이었는 것, 좀 더 개방적인 OpenCL 표준보다 더 높은 성능을 제공하기 때문이다. 하지만 OpenCL은 폭넓은 하드웨어를 지원한다. AMD는 OpenCL 성능 문제 관련 처리 계획이 있지만, 텐서파이어는 사용자나 개발자가 이 문제를 완전히 비켜갈 수 있도록 해 준다.

텐서파이어는 최근 증가하고 있는 또 하나의 현상에도 부합한다. 바로 머신러닝 모델을 약간의 정확성을 희생해 더 작고 효율적으로 만드는 것이다. 이처럼 정확도를 낮추는 접근법은 더 작은 모델을 클라이언트에 배치해 예측 분석을 더 빨리 수행할 수 있다는 것을 의미한다.

텐서파이어 개발팀은 이런 접근법으로 소프트웨어를 더 다양한 GPU와 브라우저에서 실행할 수 있고, 특히 WebGL 확장 프로그램을 온전히 지원하지 않는 환경에서도 이용할 수 있다고 강조했다.

마지막으로 텐서파이어 개발팀은 해당 라이브러리를 MIT 라이선스 기반의 오픈소스 프로젝트로 발표할 계획인데, 텐서파이어에서 진행한 가속화 작업을 다양한 애플리케이션, 심지어 텐서플로우나 머신러닝과 아무런 관련이 없는 애플리케이션에도 사용할 수 있다.

개발팀은 텐서파이어의 저수준 GLSL API는 “임의의 범용 병렬 연산에도 사용할 수 있다”고 설명했는데, 이는 GPU 기반의 브라우저 내 클라이언트 측 연산을 위한 다른 프레임워크를 텐서파이어 상에 구축할 수도 있다는 의미이다.  editor@itworld.co.kr

X