Skip to content

Instantly share code, notes, and snippets.

@choiseoungho
Last active October 7, 2020 10:34
Show Gist options
  • Save choiseoungho/f2e8cfa373bfe8d99f92573dafdbdec2 to your computer and use it in GitHub Desktop.
Save choiseoungho/f2e8cfa373bfe8d99f92573dafdbdec2 to your computer and use it in GitHub Desktop.
신경망의 정밀도
애플은 뉴럴 엔진의 성능이 600 billition operations per second, 추론용 NPU는 (Floating Operations Per Second) 대신 Ops (Operations Per Second)를 단위로 사용
이것은 연산 데이터가 부동소수점이 아닌 정수인 경우가 많아서
부동 소수점 연산 위주의 GPU라면 성능 단위는 TFLOPS (Tera Floating Operations Per Second)가 된다. 그러나 정수 연산의 NPU라면 TOPS(Tera Operations Per Second)와 GOPS를 단위로 쓴다.
CCTV 와 드론에 탑재되는 NPU는 방향이 좀 다르다. 음성, 동작, 자연 언어까지 대상으로 삼기 때문이다.
이러한 배경을 감안할때 모바일 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라는 단위를 쓴다는 건 이게 정수 연산 코어임을 암시한다. 애플 뉴럴 엔진의 추론 성능을 일반적인 프로세서의 단위로 바꾸면 600GOPS(Giga Operations Per Second)가 된다.
신경망의 수치 정밀도
추론 단계에서는 데이터의 정확도를 상당 수준 떨어뜨려도 추론 정확도가 그만큼 떨어지진 않는다. 그리고 데이터의 수치 정밀도, 연산 코어의 전력 소비, 디이 크기, 데이터 전송 대역폭, 외부 메모리 대역폭과도 밀접한 관련이 있습니다. 데이터 정확도를 낮출수록 전력과 공간 효율성은 높아진다.
그만큰 연산 유닛 수를 늘려 추론 성능을 높일 수 있다. 따라서 추론의 정확성과 성능 / 전력 / 비용 (PPA: Performance, Power, Area)중에서 균형을 잡아야 한다. 하지만 정밀도를 어디까지 낮추야 좋을지 판별하기 어렵기에, 상황을 봐가면서 서서히 낮추고 있다.
모바일과 임베디드를 대상으로하는 추론 NPU 에서는 정수 연산을 쓰는 경우가 늘어나고 있다. 이것은 부동 소수점 연산 유닛이 정수 보다 훨씬 더 많은 전력과 다이 영역을 차지해서 이다. 모바일 NPU에서 몇 백 GOPS와 몇 TOPS의 성능을 달성해 실시간 응답성을 높이려면 정수 계열의 데이터를 쓰는 게 알맞습니다.
신경망의 데이터를 압축 정리
신경망의 데이터 타입과 수치 정밀도를 조절해 연산 유닛과 데이터 전송의 전력 소비를 낮출 수 잇다. 모바일 NPU에서 전력 절약과 공간 절약의 기술은 그 외에도 여러가지 방법이 있다.
Core ML에는 기본적인 머신 러닝, 딥 러닝 모델들이 포함되어 있으며, Xcode 10에 추가된 Create ML을 통해 개발자가 간단한 모델을 학습시킬 수 있고, tensorflow 등 범용 딥러닝 프레임워크로 구축한 네트워크를 옮겨오는 것 역시 가능하다. 
인터넷 연결이 반드시 전제되어야 하고, 데이터를 반드시 서버에 전송해야 한다. 그리고 이런 불편함과 찝찝함 외에도 인터넷 망이 가지는 지연때문에 실시간 처리에 적합하지 못하다는 단점 역시 존재
https://gigglehd.com/gg/mobile/1905675
https://gigglehd.com/gg/mobile/1905675
https://developer.apple.com/download/
LUT (Lookup Table) 룩업 테이블
룩업테이블이란?
룩업테이블은 주어진 연산에 대해 미리 계산된 결과들의 집합을 가리킨다. 이 집합은 주어진 연산에 대한 결과를
아이폰 X를 비롯한 모바일 신경망 프로세스
애플은 A11 SoC를 9월 12일에 발표한 아이폰 패밀리, 아이폰 X, 아이폰 8, 아이폰 8 플러스에 사용하빈다. 신경망 프로세싱 코어 뉴럴 엔진(Neural Engine)은 아이폰 X의 얼굴 인식 기반 인증 기능인 페이스 ID에서 어떻게 쓰이는지 설명이 없으나, 아키텍처의 방향성은 추측이 가능합니다.
신경망 하드웨어 개발을 진행하고 있다.
Deep Learning Processing Core
모바일 SoC 에 신경망 프로세서를 도입
신겸망 하드웨어 가속은 CPU나 GPU등의 기조 프로세서 아키텍처를 확장하는 방법, 신경망 전용 프로세서 코어를 탑재하는 방법, 이 두가지를 모두 쓰는 하이브리드까지 3가지 방법이 있습니다.
적용 범위로 따지면 학습에 최적화, 추론에 최적화, 두가지를 모두 지원하는 방법의 3가지가 있습니다.
신경망 텐서 코어를 장착한 NVIDIA 볼타
볼타의 텐서 코어
딥러닝에 쓰이는 신경망 전용 프로세스 유닛은 아직까지 딱히 정해진 이름이 없습니다. CPU나
https://gigglehd.com/gg/mobile/1905675
아이폰 XS의 두뇌 A12 Bionic 판을 엎어라.
칩에 붙는 접미어는 애플이 강조하고 싶은 내용을 반영한다.
A11 바이오닉 칩 살펴보기
https://macnews.tistory.com/5542
구글이 전력대 성능비를 강조하는 이유는 일반적인 데스크탑 사용과는 달리 서버, 데이터 센터에 소모전력 역시 매우 중요한 요소이다. 데이터 센터는 매우 에너지를 많이 쓰는 곳이고, 많은 비용이 사용하는 에너지의 규모에 의해 발생한다. 더 많은 전력을 소모한다는 것은 단순 전기세가 더 많이 드는 것을 넘어서 더 강력한 쿨링 시스템을 갖춰야 한다는 이야기다.
모바일 컴퓨터들은 배터리를 통해 전력을 공급받기 때문에 더 많은 전력소모는 그 자체로 짧은 사용시간을 뜻한다. 모바일 컴퓨터에서 사용시간이 짧다는 것은 치명적인 단점이 되기에 충분하죠. 따라서 모바일 컴퓨터들은 전력대 성능비를 중시하고, 소비전력을 줄이기 위해서는 성능을 기꺼이 제한한다.
Face ID는 도트 프로젝터가 3000개 이상의 점을 얼굴에 뿌리면, 적외선 카메랄가 이 점들의 위치를 파악하고, 이를 미리 수억장의 이미지로 학습한 뉴럴 네트워크를 사용하여 얼굴의 기하학적인 형태를 추론하는 방식으로 동작합니다. 이과정에서 엄청난 양의 연산이 발생하게 되고, 이는 뉴럴 엔진에 의해 가속된다.
현재 시점에서 뉴럴 엔진의 성능을 추론할 자료는 애플이
Core ML등의 API를 통해 머신 러닝 기능을 적극적으로 상요하는 앱들이 증가할 것이다. A11 바이오닉 칩의 뉴럴엔진의 추가는 이렇듯 아이폰의 가치를 높여주고 있다.
보통 이런 연산성능의 경우 16비트 부동소수점 자료형에 대한 연산 성능을 밝히지만, 모바일 기기에서 주로 이뤄지는 추론 연산의 경우 8비트 정수 자료형을 통해서도 가능하다.
 특히 전력이라는 제한이 있는 모바일 분야에서는 같은 일을 좀 더 전력 효율적으로 처리할 수 있는 전용 회로의 매력은 더 올라간다.
현재 모바일 시장에서 애플의 뉴럴 엔진뿐 아니라 화웨이의 NPU, 구글의 픽셀 비주얼 코어 등이 머신 러닝 연산에 특화된 연산 장치이다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment