Micro 2017

Introduction && Empirical study

이 논문은 CoSMIC이라는 language, compiler, system software, template architecture 그리고 circuit generator의 역활을 distributed system에서 수행하는 과정의 개발을 어떻게 하였는가에 대한 논문이다.

현재 존재하는 Hadoop이나 Spark와 같은 시스템은 distributed computing에 특화된 것은 맏지만, 목표가 general-purpose platform이라는 공통점이 있다. 또한 일러한 방법들의 문제는 이러한 방식들의 optimization이 보통 데이터 베이스 처리와, CPU의 활용에 초점을 맞추었다는 사실이다. 따라서 Accleration Unit과 GPU에 초점을 맞춘 새로운 system stack의 개발이 필요한 시점이 왔다. CoSMIC은 이러한 software stack에 더해서 주어진 DSL (Domaing Specific Language)에 의거한 맞춤형 ASIC의 생성까지 한번의 stack으로 개발할 수 있게 하였다.

이러한 점은 기존의 Multi-node Accelerator들이 가지고 있었던 공통적인 문제점인, 이러한 노드들을 활용할 수 있는 Programming Framework가 부재한다는 점을 해결할 수 있게 해준다. 이러한 Distributed system을 효율적으로 이용하기 위해서 처음부터 뛰어난 개발자가 모든 것을 개발하는 것이 아니라 CoSMIC과 같은 Framework를 이용하면 쉽게 Distrubuted system 을 이용할 수 있게 된다. 또한 Cosmic은 원하는 학습에 대한 DSL을 생성하기 때문에, FPGA나 P-ASIC같은데 적용하여 그때마다 손쉽게 최적화된 하드웨어를 이용할 수 있도록 하였다. 이러한 하드웨어도 기존에는 뛰어난 엘리트들이 만드는 것이었는데, CoSMIC과 같은 프레암 워크를 이용하여 미리 정의된 Flexible한 Template을 이용하여 생성되어 CoSMIC stack의 최상단만으로 Hardware도 최적화 될 수 있도록 하였다. 그러나 기존의 Template based방식은 1. Distributed system에 적용할 수 없거나 2. 기능이 한정된 문제가 있었다. 따라서 변화하는 Distributed system에 초점을 맞춘 새로운 DSL의 개발이 필요하고 이러한 DSL을 이용할 수 있는 software stack과 template의 개발이 필요한 것이다.

Scale-Out Acceleration을 개발하기 위해서 CoSMIC은 ML에서 많은 연산이 SGD(Stocastic optimization problem)이라는 점에 초점을 맞추었다. 이러한 연산은 단순히 Linear Operator들의 합이기 때문에, 병렬처리할 수 있도록 분산화 시킬 수 있는데 (여러 GD의 Aggregation임으로), 이러한 대표적인 예가 Mini batch SGD이다. Mini batch SGD는 여러 배치들을 이용하여 SGD연산을 처리하는 것을 말한다. SGD 연산에 필요한 Hyper Variable들을 프로그래머가 정하면 (예를 들면 Input Image의 size와 mini batch size b), Compiler가 이 연산들을 어떻게 distributed accelerator에서 처리할 지 정하고,CoSMIC Runtime에서 각각의 Accelerator들에게 role과 task를 할당함으로써 연산들이 이루어 질 수 있도록 하였다. 이러한 연산에 있어서 마지막 CoSMIC stack들은 각각의 Accelerator들에서 thread들의 활용이 자동적으로 이루어 질 수 있도록 하였다.

또한 Customizable Accelerator들을 활용하기 위해서, Cosmic은 미리 잘 정의잘 Template들이 사용자가 사용할 장치 (FPGA, P-ASIC ...)들에 따라서 적절하게 생성될 수 있도록 하였다. 결과는 RTL Verilog code로 생성되어서, 사용자에게 전달 될 수 있도록 하였다. 이 Template은 MIMD(Multiple Instruction Multiple Data)원칙과, Tree like bus를 이용한 Communication cost의 절약이라는 두가지 목표를 가지고 설계하여 코드의 Unit이 늘어나더라도 효과적으로 대응할 수 있도록 하였다.

Generality를 위해서 Acclerator 사이의 특별한 링크가 없다고 가정하였다. CoSMIC은 각각의 Accerator과의 통신을 위하여 Specialized된 layer를 집어 넣었다. 이 레이어는 CoSMIC이 partial gradient calculation을 여러 노드들에 자동적으로 분산시킴으로써 Parallerization을 달성 할 수 있도록 하였다. CoSMIC의 각각의 노드들은, thread를 이용하여 주어진 DataPartition을 효율적으로 처리할 수 있도록 하였고, 각각의 노드에 달린 CPU는 NIC을 이용하여 학습된 partial weight들을 모든 것을 총괄하는 MasterNode에 전송하여 weight들이 Aggregation될 수 있도록 하였다.

Point of the pape

이 논문은 기존의 distributed system에서 사용되던 frame work들이 ML을 계산하기 위한 Accerlerator들이 Distributed 된 시스템에는 최적으로 적용시킬 수 없다는 점을 착안하여, distributed system에서 사용할 수 있는 ML Framework를 개발하였다는 데에서 의마가 있다. 이 ML Framework는 추상화된 여러개의 stack으로 구성되어 DSL만을 가지고 개발자가 최적화된 Distributed FPGA cluster에서 이용할 수 있는 Verilog RF 까지 만들어 낼 수 있는 프레임 워크를 제공하여 ML에서 이러한 Distributed FPGA 에서 사용할 수 있는 프레임 워크의 필요성과, 구조적인 고찰을 제공하였다는 점에서 큰 의미가 있는 것 같다.

Weakness of the paper

1. 이 방식은 기존에 존재하는 SOC에 사용될 수 없다. 즉 General Purpose가 엄밀히 말하면 아니다. 이 방식을 이용하기 위해서는 새로 FPGA를 이용한 클러스터를 구축하던가, 아니면 Template에 따라서 생성되는 것을 P-ASIC에 이식하여 이용하여야 한다. 2. 이 방식을 사용하면 확실이 Computation Time이 감소한다. 그렇다면 Network stack과 Computation 간에 BottleNeck이 생길텐데, 이 부분을 어떻게 해결하였는지 명확하게 나와있지 않다.

Paper critique

What future addressed in the paper, describes the proposed solution, and summarizes research directions should be explored?

현재는 GPU Cluster를 사용하여 회사들이 ML을 구축하고 있다. 그러나 GPU는 이제는 점점 Energy Efficiency와 Acceleration에 대하여 특화된 FPGA나 ASIC에 대해서 메리트가 없는 것도 사실이다. 따라서 미래에는 FPGA나 ASIC와 같은 것을 클러스터화하여 ML처리를 할 것이라는 것을 짐작할 수 있다. 더 나아가 P-ASIC이나 FPGA를 이용하여 필요에 따라 직접 DSL을 이용해 Customizing된 Hardware Acceleration을 이용할 수 있게 될 것이다. 이러한 과정에 드는 전문지식이나, 시간과 노력이 점차 감소할 것이며 사람들은 특정한 규격화된 DSL나 아니면 라이브러리를 이용하여 이러한 FPGA를 프로그래밍 하여 쉽게 ML Accelertor를 만들고 이용할 수 있을 것이다. 따라서 이러한 분산 시스템에 어떻게 최적화 할 수 있을지, 또한 각각의 노드들은 어떻게 통신할지, Template과 같은 경우는 어떻게 하여야 더 구조화 할 수 있을지에 대한 연구들이 필요해 보인다.

What questions remain open?

1. Distributed 된 시스템에서 효과적으로 Weight이나 Partial Gradient들을 전송할 수 있는 기법의 개발. 2. Python과 같이 대중적인 언어를 DSL로 이용하여, TABLA와 같은 조금은 대중적이지 않을 수 있는 언어를 대체할 수 있는 가에 대한 연구.