아이폰 X를 비롯한 모바일 신경망 프로세싱의 움직임
애플은 A11 SoC를 9월 12일에 발표한 아이폰 패밀리, 아이폰 X, 아이폰 8, 아이폰 8 플러스에 사용합니다. 신경망 프로세싱 코어 뉴럴 엔진(Neural Engine)은 아이폰 X의 얼굴 인식 기반 인증 기능인 페이스 ID에서 어떻게 쓰이는지 설명이 없으나, 아키텍처의 방향성은 추측이 가능합니다.
현재 컴퓨팅은 신경망의 가속으로 빠르게 진행되고 있습니다. 스마트폰 등의 모바일 디바이스에선 애플 뿐만 아니라 구글, 퀄컴, 하이실리콘, 삼성, 후지쯔 등 대부분의 회사들이 신경망 하드웨어 개발을 진행하고 있습니다.
모바일 SoC에 신경망 프로세서를 도입
신경망 하드웨어 가속은 CPU나 GPU 등의 기존 프로세서 아키텍처를 확장하는 방법, 신경망 전용 프로세서 코어를 탑재하는 방법, 이 두가지를 모두 쓰는 하이브리드까지 3가지 방법이 있습니다. 또 적용 범위로 따지면 학습에 최적화, 추론에 최적화, 두가지를 모두 지원하는 방법의 3가지가 있습니다. 시장 범위도 대형 컴퓨터, 모바일, 임베디드까지 다양합니다.
신경망 텐서 코어를 장착한 NVIDIA 볼타
볼타의 텐서 코어
딥 러닝에 쓰이는 신경망 전용 프로세싱 유닛은 아직까지 딱히 정해진 이름이 없습니다. CPU나 GPU같은 명확한 호칭이 없다는 소리죠. 애플은 이를 뉴럴 엔진(Neural Engine)이라 부르지만 다른 곳에서는 이렇게 부르기도 합니다.
· DLU (Deep Learning Unit)
· DLPU (Deep Learning Processing Unit)
· DLP (Deep Learning Processor)
· NPU (Neural Processing Unit)
· DNPU (Deep Neural Network Processing Unit)
· DNNE (Deep Neural Network Engine)
· TPU (Tensor Processing Unit)
· DLA (Deep Learning Accelerator)
지금은 호칭이 하나로 통일될 일이 없습니다. 그만큼 많은 아이디어가 나와 있지요. 여기에선 이들 프로세서의 이름을 NPUNeural Processing Unit)로 임의 표기합니다.
애플의 뉴럴 엔진은 그 자세한 내용이 알려져 있지 않습니다. 그러나 스마트폰 모바일 SoC에 NPU를 붙였다는 점에서 아키텍처의 방향성은 예측하기 쉽습니다. 사실 모바일 SoC가 어떤 방식으로던 신경망 처리 장치를 탑재하는 방향으로 나아가고 있으며, 애플의 움직임은 그 중 하나에 불과합니다. 그리고 모바일 SoC에 내장되는 NPU는 전력과 다이 영역에 한계가 있습니다.
추론에 최적화된 설계로 나아가는 모바일 NPU
모바일에서 NPU에 원하는 건 매우 명확합니다. 초 저전력, 작은 다이(내장 메모리 포함), 실시간 처리가 가능한 빠른 속도입니다. 낮은 전력 사용량을 위해 외부 메모리 액세스를 줄이고 내부 메모리를 많이 써야 합니다. 그래서 다이 영역에 내장 메모리를 넣는 게 중요합니다. 그리고 개별 유닛을 낮은 전력으로 구현하면 연산 유닛 수를 늘려 응답성을 높일 수 있습니다. 이 세가지 요소는 서로 밀접하게 얽혀 있습니다.
모바일과 임베디드에서 딥 러닝 신경망에 대한 요구. Deep Learning-Deep Neural Networks, Architectures and SoC Implementations(Hoi-Jun Yoo, KAIST, VLSI Symposium 2017)
그럼 애플의 뉴럴 엔진은 어떤 목적, 어떤 기능을 가진 코어라 할 수 있을까요? 이걸 정리해 보면 우선 첫번째는 신경망의 위상에 있습니다. 딥 러닝은 신경망 모델을 구축하는 학습 페이즈와, 학습의 결과로 인식을 수행하는 추론 페이즈가 있습니다. 모바일 디바이스에서 NPU는 추론에 특화한 방향으로 나아가고 있습니다. 전력 소비와 다이 영역, 메모리 대역폭의 제약 때문이죠.
학습과 추론의 2가지 페이즈
학습과 추론에는 전력과 다이 크기를 따져야 합니다. 모바일 디바이스의 전력과 비용 범위 안에서 정밀 인식 처리를 실현하려면 추론에 어느정도 최적화된 NPU 설계를 쓰지 않을 수 없습니다. 모바일에서는 딥 러닝과 추론을 모두 지원하는 범용 코어가 아닌 추론에 최적화한 설계가 대부분입니다. 애플의 뉴럴 엔진 역시 추론 프로세서라고 해야 합니다.
CNN 외에 신경망 지원
또 다른 중요한 요소는 다양한 신경망 구조에 대한 대응입니다. 구체적으로는 이미지 인식에 많이 쓰이는 Convolutional Neural Network (CNN) 뿐만 아니라, 음성이나 동작 같은 비주얼 데이터에 적합한 Recurrent Neural Network(RNN), 자연 언어 처리에 쓰이는 특수한 RNN인 Long / Short-Term Memory Network(LSTM)까지도 지원하는 유연성을 갖췄느냐가 중요합니다. 이들 네트워크 모델의 목록은 앞으로도 더 늘어날 가능성이 있습니다. 특정 네트워크 모델에 특화된 구조나 다양한 모델을 지원할 수 있는 유연성을 갖추는 게 핵심입니다.
문제는 여기에 있습니다. 특정 모델에 특화시키면 전력 효율과 영역 효율이 높은 NPU를 설계할 수 있습니다. 유연성을 갖추면 효율이 떨어지고 다이 영역도 커집니다. 이러면 신경망 연산 어레이 아키텍처에 영향을 줄 수 있습니다.
또 추론을 위한 NPU를 보면 용도에 따라 지원하는 네트워크 모델의 방향성이 달라지고 있습니다. 딥 러닝이 처음 나왔을 당시엔 이미지 인식 CNN이 성공하면서 하드웨어도 CNN에 특화시키는 방향이었습니다. CCTV와 드론에 탑재하는 AI 이미지를 대상으로 한 NPU는 지금도 CNN의 주요 용도입니다. 그러나 스마트폰에 탑재되는 NPU는 방향이 좀 다릅니다. 음성, 동작, 자연 언어까지 대상으로 삼기 때문입니다.
이러한 배경을 감안할 때 모바일 NPU의 모벨은 유연성이 있는 아키텍처 위주로 나아가는 듯 합니다. 실제 하드웨어에서 어떨지는 아직 명확하지 않지만 그렇게 예상 가능합니다. 무엇보다 애플의 첫 뉴럴 엔진이 그런 유연성을 갖췄을지는 모릅니다. 지곤의 흐름에선 CNN을 위한 프로세서라는 쪽에 가까웠기에 NPU 아키텍처 개발에 걸리는 시간을 감안하면 바뀔 수도 있습니다.
신경망의 정밀도
애플은 뉴럴 엔진의 성능이 600 billion operations per second, 추론용 NPU는 FLOPS (Floating Operations Per Second) 대신 OPS (Operations Per Second)를 단위로 사용합니다. 이것은 연산 데이터가 부동소수점이 아닌 정수인 경우가 많아서입니다.
부동소수점 연산 위주의 GPU라면 성능의 단위는 TFLOPS (Tera Floating Operations Per Second)가 됩니다. 그러나 정수 연산의 NPU라면 TOPS (Tera Operations Per Second)와 GOPS를 단위로 씁니다. 애플이 뉴럴 엔진의 성능을 이야기할 때 operations per second라는 단위를 쓴다는 건 이게 정수 연산 코어임을 암시합니다. 애플 뉴럴 엔진의 추론 성능을 일반적인 프로세서의 단위로 바꾸면 600 GOPS (Giga Operations Per Second)가 됩니다. 100 GOPS의 신경망 성능은 지금의 모바일 NPU에서 표준 범위에 속하나 앞으로는 TOPS 단위로 늘어날 것입니다.
딥 러닝에선 데이터의 수치 정밀도에 대한 개념이 빠르게 바뀌고 있습니다. 어느 정도 데이터 정확도를 떨어트려도 실제 추론 정밀도가 그리 떨어지지 않아서입니다. 딥 러닝에선 데이터 정확도를 32비트 부동소수점에서 16비트 부동소수점, 16비트 정수로 낮춰가는 추세입니다. 추론에선 학습보다 데이터 정밀도를 더 낮춰도 되기에 16비트 부동소수점/정수에서 8비트 정수, 4비트 정수, 더욱 극단적으로는 바이너리, 혼합 정밀도까지 나오고 있습니다.
신경망의 수치 정밀도
추론 단계에서는 데이터의 정확도를 상당 수준 떨어뜨려도 추론 정확도가 그만큼 떨어지진 않습니다. 그리고 데이터의 수치 정밀도, 연산 코어의 전력 소비, 다이 크기, 데이터 전송 대역폭, 외부 메모리 대역폭과도 밀접한 관련이 있습니다. 데이터 정확도를 낮출수록 전력과 공간 효율성은 높아집니다. 그만큼 연산 유닛 수를 늘려 추론 성능을 높일 수 있습니다. 따라서 추론의 정확성과 성능/전력/비용(PPA : Performance, Power, Area) 중에서 균형을 잡아야 합니다. 하지만 정밀도를 어디까지 낮춰야 좋을지 판별하기 어렵기에, 상황을 봐가면서 서서히 낮추고 있습니다.
모바일과 임베디드을 대상으로하는 추론 NPU에선 정수 연산을 쓰는 경우가 늘어나고 있습니다. 이것은 부동 소수점 연산 유닛이 정수 유닛보다 훨씬 더 많은 전력과 다이 영역을 차지해서입니다. 모바일 NPU에서 몇 백 GOPS와 몇 TOPS의 성능을 달성해 실시간 응답성을 높이려면 정수 계열의 데이터를 쓰는 게 알맞습니다. 다만 정확도를 정하는 건 아직 시행 착오의 단계입니다.
신경망의 데이터를 압축 정리
신경망의 데이터 타입과 수치 정밀도를 조절해 연산 유닛과 데이터 전송의 전력 소비를 낮출 수 있습니다. 모바일 NPU에서 전력 절약과 공간 절약의 기술은 그 외에도 여러가지 방법이 있습니다. 이런 기술은 2017년 6월에 개최된 반도체 학회인 2017 Symposia on VLSI Technology and Circuits에서 카이스트의 H.-J. Yoo가 설명했습니다.
모바일과 임베디드, 저전력/공간 절약의 관점에서 NPU에 대한 다양한 접근. Deep Learning-Deep Neural Networks, Architectures and SoC Implementations(Hoi- Jun Yoo, KAIST, VLSI Symposium 2017)
이러한 접근 방식 중에서도 데이터의 압축도가 높고 중요하게 여겨지는 건 추론의 가지치기(Pruning)입니다. 추론을 위해 학습된 신경망에서 중요도거 떨어지는 연결을 쳐내는 것. 이로서 신경망의 가중치 데이터 용량이 극적으로 줄어들게 됩니
사실 이런 정리는 인간의 뇌에서 실제로 이루어지는 현상이며, 유아일 때는 신경 세포의 모든 부분이 결합됐으나, 점차 성장하면서 쓰지 않는 시냅스 결합이 사라지고 간단한 네트워크로 변해갑니다. 아래는 VLSI Symposia에서 퀄컴이 설명한 그림인데, 사람의 뇌에서 이루어지는 현상을 신경망에 응용했다는 것입니다.
사람의 뇌 변화. Deep Learning for Mobile and Embedded Devices "(Mickey Aleksic, Qualcomm, VLSI Symposium 2017)
신경망 정리의 기본. Deep Learning-Deep Neural Networks, Architectures and SoC Implementations "(Hoi-Jun Yoo, KAIST, VLSI Symposium 2017)
신경망을 압축해서 정리
데이터 정밀도의 감소와 가지치기, 그 외 여러 방법을 더해서 학습된 신경망 데이터를 극적으로 압축하는 것이 가능합니다.모바일 NPU에선 이것이 매우 중요한데, 그러먼 신경망의 데이터를 온칩 메모리에 넣을 수 있기 때문입니다.
일반적으로 엄청난 용량인 웨이트 데이터를 몇십분의 일로 압축해 내장 메모리에 저장하면 효과가 매우 큽니다. 외부 메모리의 액세스를 대폭 줄일 수 있기 때문입니다. 소비 전력이 크게 줄어들어 모바일에 알맞는 전력 범위 안에서 높은 수준의 응답 추론이 가능합니다. 또 내장 메모리 아키텍처 자체를 신경망에 최적화하기도 쉬워집니다.
가지치기의 하드웨어 지원도 압축된 데이터를 메모리에서 그대로 처리하는 것과, 연산 과정에서의 대응 방법(예를 들면 0을생략한다던가) 등이 있습니다.
후지쯔가 발표한 컴퓨테이션의 밀도를 높이는 방법. Advanced Techniques for High-Speed Deep Learning on Large-scale Neural Networks in the Cloud '(Yasumoto Tomita, Fujitsu Laboratories LTD., VLSI Symposium 2017)
가지치기를 하드웨어적으로 지원하는 NVIDIA의 DLA. 자동차용 프로세서인 자비에르에 내장
지금은 아이폰 X에 내장된 뉴럴 엔진의 확실한 정보를 알 수 없습니다. 그러나 모바일 NPU의 개발 방향을 통해 그 내역을 짐작할 수 있습니다.
2017년 전반까지의 NPU에 대한 논문. NVIDIA DLA의 기반이 된 것으로 보이는 스탠포드 대학의 EIE. Deep Learning for Mobile and Embedded Devices"(Mickey Aleksic, Qualcomm, VLSI Symposium 2017)