머신 러닝에 특화된 Arm ML 프로세서
Arm이 머신 러닝(ML) 전용 프로세서 IP를 정식으로 발표했습니다. Arm의 Arm ML 프로세서(Machine Learning Processor) 는 최근 여러 회사에서 속속들이 등장한 신경망 프로세서(NPU)처럼 신경망(Neural Network : NN)를 저전력 고성능으로 실행합니다. CPU 나 GPU, DSP의 확장이 아니라 처음부터 ML 처리 전용으로 설계된 전용 아키텍처입니다. Arm은 Arm ML를 올해 2월에 출시한다고 발표했는데 그 세부 내용이 드디어 공개됐습니다.
Arm ML은 다른 Arm IP 코어와 마찬가지로 확장 가능한 코어입니다. 16코어까지 확장할 수 있어 IoT(The Internet of Things), 자동차, 심지어 서버에도 사용 가능합니다.
IoT과 모바일에 맞춰 전력 효율은 7nm 공정에서 1W 당 3TOPS(trillion operations per second)로 매우 높습니다. 머신 러닝의 추론에 최적화된 아키텍처로 최대 구성에서 4.6TOPS(Trillion Operations Per Second)의 성능이 나옵니다.
모바일에 포함된 NPU(Neural Processing Unit)는 많지만 Arm ML은 몇 가지 두드러진 특징이 있습니다. 신경망은 CNN(Convolutional Neural Network)에 적합한 구조를 갖고 있으나 Recurrent Neural Network(RNN)나 Long/Short-Term Memory Network(LSTM) 등 다른 네트워크 모델에도 대응할 수있는 유연성을 가집니다. 따라서 CNN으로 이미지 인식을 하거나 LSTM과 RNN을 써서 음성 인식 처리에 사용하는 것이 가능하고, 앞으로 나올 새로운 NN도 지원합니다.
Arm ML은 전력 효율을 높이기 위해 데이터 정확도는 INT8(8비트 정수)만 지원하며 부동소수점 연산은 아예 지원하지 않습니다. 유연한 처리를 위해 곱셈(Multiply-Accumulate : MAC) 유닛 어레이와 MAC 확장 프로세서의 2개의 유닛을 갖춥니다. 추론의 전력 효율 향상에서 중요한 가지 치기(Pruning)는 하드웨어로 지원하며, 정리된 데이터를 압축해서 저장되는 SRAM이 포함됩니다. 또 여러 컴퓨팅 엔진의 구성으로 확장 가능한 제어용 동기화 유닛(Sync Unit)를 포함합니다.
한마디로 말하자면, Arm ML은 현재 나온 NPU 중에서는 최첨단 기능과 성능을 갖췄습니다. 예를 들어 가지 치기는 메모리 압축뿐만 아니라 컴퓨테이션의 압축도 지원합니다. 성능으로 따지면 아이폰 X/8에 내장된 NPU인 뉴럴 엔진은 600 GOPS(Giga Operations Per Second)인데 Arm ML의 최대 구성은 그 7배 이상입니다.
그러나 Arm ML은 올해 중반에 소프트 매크로인 RTL(Register Transfer Level)이 출시되며 Arm ML을 탑재한 칩의 등장은 2019년입니다. 지금은 대단한 성능이지만 2019년이 되면 평범한 수준이 될지도 모릅니다.
하드웨어 인식 MAC 컨볼루션 엔진
Arm ML 프로세서는 연산 코어인 컴퓨팅 엔진(Compute Engine)을 중심으로 구성됩니다. Arm ML은 최대 16개의 컴퓨팅 엔진으로 구성됩니다. 각 컴퓨팅 엔진은 128개의 8비트 곱셈 유닛(Multiply-Accumulate : MAC)를 갖춘 어레이, MAC 컨볼 루션 엔진(MAC convolution engine)과 16-way의 MAC 유닛을 갖춘 프로세서, 프로그래머블 레이어 엔진(Programmable layer engine : PLE)을 포함합니다.
컴퓨팅 엔진의 개요
Arm ML은 ML 프로세서 전체를 제어하는 MCU 제어 장치가 각 컴퓨팅 엔진에 태스크를 파견합니다. 컴퓨팅 엔진끼리는 브로드 캐스트 네트워크로 연결되며, 동기화 장치가 컴퓨팅 엔진 사이의 동기화를 제어합니다. 호스트 인터페이스는 ACE-Lite에서 CPU와 I/O 일관성을 가집니다. 즉 Arm ML 코어가 CPU 코어의 캐시를 스누핑할 수 있으나 그 반대는 안 됩니다.
각각의 컴퓨팅 엔진은 데이터를 저장하는 용량을 조절 가능한 SRAM을 포함합니다. weight와 activation 데이터의 저장과 처리를 내부 SRAM에서 진행합니다. 컴퓨팅 엔진에서 기능 로딩 유닛이 SRAM에서 map을 읽고 웨이트 디코더에서 정리해 압축된 데이터를 불러와 디코딩을 진행합니다.
0 값의 데이터를 압축해 메모리 용량을 줄임
피처 맵과 웨이트의 압축으로 전력 절감
추론 프로세서 효율 향상의 핵심
데이터를 공유해 불필요한 메모리 읽기를 줄임
데이터는 연산 어레이인 MAC 컨볼루션 엔진에 보내집니다. MAC 컨볼루션 엔진은 1D의 벡터 구성의 MAC 유닛이 배열됩니다. NN의 2D 매트릭스 연산이 1D 배열에 매핑되는 점은 볼타 외에 다른 GPU의 구현과 비슷합니다. NPU에 많은 2D 어레이 구성을 넣지 않은 건 가지치기의 하드웨어 지원 때문일지도 모릅니다.
MAC 어레이는 인풋과 아웃풋은 8비트지만 내부 정밀도는 그보다 확장됩니다. 8비트인 이유는 현재 NN 도구에서 추론 레퍼런스 용으로 지원하는 정밀도가 대부분 8비트라 그렇습니다. MAC 배열은 룩업 테이블을 사용해 정리된 부분의 연산을 건너 뛰고 빈 연산 슬롯을 채워 처리량을 올리는 구조입니다. 따라서 Arm ML의 ML 성능은 겉으로 표기한 성능 이상으로 높아집니다.
다용도 프로세서 PLE도 탑재
Arm ML 컴퓨팅 엔진은 MAC 배열과는 별도로 프로그램 레이어 엔진(Programmable layer engine : PLE)이라고 부르는 마이크로 컨트롤러를 포함합니다. PLE의 실체는 Arm의 MCU(마이크로 컨트롤러)를 기반으로 신경망을 위한 확장 엔진을 추가한 프로세서입니다. 벡터 명령과 NN위한 명령을 추가하고 16레인의 벡터 엔진을 갖춥니다. PLE는 MAC 배열에서 독립적 인 프로세서이며 전용 SRAM 워킹 메모리도 내장합니다.
컴퓨팅 엔진에 탑재 된 PLE
임베디드 프로세서를 확장한 PLE 아키텍처
PLE는 신경망에서 MAC 어레이에 적합하지 않은 모든 작업을 수행하는 장치입니다. NN 풀링과 활성화 제어, 가지치기 등의 압축 데이터 실행 제어를 PLED가 합니다. NPU는 이 부분의 전용 하드웨어입니다. Arm은 프로그래머블 프로세서를 넣어유연성을 갖췄습니다. 컴퓨팅 엔진을 제어하는 마이크로 컨트롤러에 NN 연산 기능까지 넣은 것이 PLE이라고 볼 수 있습니다.
Arm ML의 전체 디자인을 보면 이미지 인식 CNN을 초기 목표로 삼아 개발한 듯 합니다. 하지만 PLE를 통해 다른 신경망 모델에도 유연하게 대응할 수 있습니다. 이것은 어떤 모델이 유행할지 예상하기 어려운 현재의 ML에서 중요한 기능입니다.다만 지금의 추론 NPU는 다른 신경망 모델에 유연하게 대응해나가고 있어 Arm ML이 등장할 무렵에는 다른 NPU도 비슷한 유연성을 갖출 확률이 높습니다.
Arm 머신 러닝 솔루션을 보조하는 OD 프로세서
Arm은 머신 러닝에서 Arm ML 프로세서의 도입에 맞춰 객체 인식 전용 프로세서인 Object Detection도 준비합니다. Arm은 OD 프로세서를 이미 출시 중이며, Hive와 Hikvision의 보안 카메라에 내장 코어로 도입된 바 있습니다. Arm은 Arm ML과 함께 OD 프로세서도 2세대로 강화해 Arm ML과 조합할 수 있도록 합니다.
실시간 처리의 OD 프로세서
Arm ML이나 GPU와 조합도 가능
OD 프로세서는 이미지와 동영상에서 사람의 얼굴이나 자동차, 도로 표지판 등을 확인합니다. 객체 탐지 전문이라 실시간으로 정확한 감지가 가능합니다. 2세대 OD 프로세서는 풀 HD 60프레임 동영상에 나온 군중 속에서 실시간으로 얼굴 하나하나를 감지하는 처리가 가능합니다. 개체 크기는 50x60 픽셀까지, Arm ML과 함께 개체 탐지를 맡아 NN 수준을 높일 수 있습니다.
ML을 위한 소프트웨어 스택도 정비
Arm은 머신 러닝에 대한 대응을 급격히 진행 중입니다. CPU에선 Cortex-A 시리즈에 머신 러닝을 지원하기 위한 dot product 명령을 추가했습니다. GPU에서도 이런 명령을 추가해 머신 러닝 성능을 대폭 향상시켰습니다. 이번에는 머신 러닝 전용 Arm ML을 내놓아, Arm은 머신 러닝에서 CPU, GPU, NPU의 세가지 솔루션을 나란히 갖췄습니다. 이들 솔루션은 성능과 전력 효율이 크게 다릅니다. 추론에서 효율이 가장 높은 건 Arm ML이지만 학습을 장치 쪽에서 수행한다면 CPU와 GPU가 적합합니다.
Arm ML은 우선 스마트폰과 태블릿용 모바일 SoC에 구현될 것이라 보여집니다. CPU와 GPU 외에 제 3의 프로세서로서 Arm ML NPU 코어가 탭재되는 것입니다. 머신 러닝 워크로드의 전력 효율이 매우 높은 Arm ML 코어로 오프로드해 머신 러닝의 인식 처리가 쉬워집니다.
또한 Arm ML은 차지하는 공간을 줄일 수도 있기에 IoT 칩에 넣을 수도 있습니다. Arm ML의 최대 구성이라면 자동차 탑재도 가능합니다. 서버 쪽의 추론에서는 높은 에너지 효율성이 필요합니다.
Arm은 머신 러닝을 위한 소프트웨어 스택도 내놓습니다. Arm의 머신 러닝 솔루션에 최적화한 라이브러리를 제공해 기존의프레임워크인 텐서플로우, Caffe/Caffe2, mxnet, 안드로이드 NNAPI에서 Arm이나 파트너의 머신 러닝 하드웨어에 액세스할 수 있습니다.
Arm의 머신 러닝 솔루션을 추상화하는 라이브러리를 제공
Arm의 이종 혼합 머신 러닝 솔루션을 지원하는 소프트웨어 스택
Arm의 종합 머신 러닝 솔루션
안드로이드의 NNAPI 지원
런타임에 최적화된 하드웨어를 선택