뉴럴 엔진 | [눈 감고 듣는] Npu, 뉴럴엔진, Tpu 개념 정리 94 개의 정답

당신은 주제를 찾고 있습니까 “뉴럴 엔진 – [눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 VLSI Korea 이(가) 작성한 기사에는 조회수 799회 및 좋아요 3개 개의 좋아요가 있습니다.

뉴럴 엔진 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리 – 뉴럴 엔진 주제에 대한 세부정보를 참조하세요

자막 사용을 권합니다. 내용에 대한 이의는 댓글로 남겨주세요.

뉴럴 엔진 주제에 대한 자세한 내용은 여기를 참조하세요.

m1 뉴럴엔진이 어떤 역할을 하는거죠? – 클리앙

뉴럴엔진은 그냥 신경망의 역할을 한다고 하는데 정확히 컴퓨터 프로세스에서 어떤 이익을 가져다 주는지 설명하는 것을 본 적이 없는 것 같네요 ㅜ.

+ 더 읽기

Source: www.clien.net

Date Published: 7/12/2022

View: 4156

뉴럴 엔진

뉴럴 엔진은 애플의 코어 ML(Core ML) 개발자 도구로 작업할 수 있도록 설계되어 있다. 앱 개발자들이 머신러닝의 힘을 쉽게 활용할 수 있게 해주는 도구다. 이 탁월한 AI …

+ 자세한 내용은 여기를 클릭하십시오

Source: www.ciokorea.com

Date Published: 3/13/2022

View: 195

[기술용어] Neural Engine(뉴럴 엔진)

Neural Engine(뉴럴 엔진)은 이 A11 Bionic Chip에 적용돼 있는 머신러닝, 추론 모델, 이미지 인식, 모션 인식 등 인공신경망 추론 연산에 특화한 …

+ 여기를 클릭

Source: journal.kobeta.com

Date Published: 10/21/2021

View: 8533

Apple A 시리즈 – 리브레 위키

뉴럴엔진은 TrueDepth 카메라가 30000개의 보이지않는 도트를 투하해 얼굴의 독특한 기하학적 형태를 매핑하면 그 데이터를 분석하는데 사용하고 모자나 …

+ 여기에 자세히 보기

Source: librewiki.net

Date Published: 11/29/2021

View: 5168

뉴럴 엔진 – LG CNS

뉴럴 엔진에 대한 1개의 태그 검색결과가 있습니다. 블로그 인공지능(AI)과 증강현실(AR)로 성큼 다가온 컴퓨터 비전 컴퓨터 비전은 인간의 시각을 컴퓨터가 가질 수 …

+ 여기에 보기

Source: www.lgcns.com

Date Published: 9/3/2022

View: 5924

모바일 GPU에서 뉴럴 네트워크를 더 효율적으로 만들기

NVIDIA GPU와 모바일 GPU 사양 간단 비교 ; 283억 · 328 TensorCore · 24GB ; 85억 · 8 Neural engine (TFLite x) · 시스템 메모리 공유.

+ 여기를 클릭

Source: engineering.linecorp.com

Date Published: 9/6/2021

View: 1734

M1 뉴럴엔진 성능맛보기 – 커뮤니티 게시판 – 기글하드웨어

굳이 벌칸이 있는데 뉴럴엔진 API로 CoreML을 만든거 보면 괜히 애플이 만든건 아닌가보네요. 성능이…. ㅎㄷㄷ 물론 전용 코어에서 디코딩만 하니까 …

+ 여기에 표시

Source: gigglehd.com

Date Published: 3/2/2021

View: 7601

M1 max 딥러닝 뉴럴엔진 어쩌고하는 애들은 이거 봐라 – 노트북 …

근데 문제는 대부분의 개발자 중 gpu 쓰는 사람들은 gpu + neural engine으로 프로그램 돌리는게 아님. 딥러닝 잘돌아간다는 말도 분명히 할 필요가 있음.

+ 여기에 더 보기

Source: m.dcinside.com

Date Published: 12/11/2021

View: 8205

애플, 자체 개발 2세대 M2 칩 공개…M1 대비 CPU 성능 18% 향상

또 인공지능 연산을 위한 뉴럴 엔진(Neural Engine)의 속도는 40% 향상됐다. 이번 M2 칩은 5나노미터 기술을 활용하며, M1 대비 25% 확장된 규모의 …

+ 여기를 클릭

Source: it.chosun.com

Date Published: 4/18/2021

View: 2654

주제와 관련된 이미지 뉴럴 엔진

주제와 관련된 더 많은 사진을 참조하십시오 [눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리
[눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리

주제에 대한 기사 평가 뉴럴 엔진

  • Author: VLSI Korea
  • Views: 조회수 799회
  • Likes: 좋아요 3개
  • Date Published: 2021. 9. 17.
  • Video Url link: https://www.youtube.com/watch?v=84X78n3Amb8

m1 뉴럴엔진이 어떤 역할을 하는거죠? : 클리앙

m1이 이런 어마어마한 성능을 뽑아내는데는

뉴럴이가 큰 몫을 하는 것 같은데

이게 정확히 어떤 일을 처리하는지 아시는 분 계신가요?

cpu는 두뇌다, 램은 책상이다, 저장장치는 저장공간이다 뭐 대충 이런 역할이 있는것 같은데

뉴럴엔진은 그냥 신경망의 역할을 한다고 하는데 정확히 컴퓨터 프로세스에서 어떤 이익을 가져다 주는지 설명하는 것을 본 적이 없는 것 같네요 ㅜ

[기술용어] Neural Engine(뉴럴 엔진)

[방송기술저널] Apple의 아이폰 8, 아이폰 8 플러스, 아이폰 X에는 A11 바이오닉 칩이 내장돼 있다. Neural Engine(뉴럴 엔진)은 이 A11 Bionic Chip에 적용돼 있는 머신러닝, 추론 모델, 이미지 인식, 모션 인식 등 인공신경망 추론 연산에 특화한 전용 하드웨어 회로다.

아이폰 X는 홈 버튼을 없애는 과감한 변화를 선보였으며, 혼 버튼에 손가락 지문을 인식하는 ‘Touch ID’ 대신 ‘Face ID’라는 새로운 보안 기술 시스템을 공개했다. 이를 가능하게 하는 것이 바로 뉴럴 엔진이다.

‘Face ID’는 True Depth 카메라를 이용해 사용자의 얼굴에 3만 개 이상의 보이지 않는 도트를 투사하고 이를 분석해 정밀한 심도 맵을 만드는 원리로 작동한다. 뉴럴 엔진은 실시간 프로세싱을 위해 초당 최대 6천억 번의 작업을 수행하며 이를 계산하고 분석할 뿐만 아니라 머신러닝을 통해 사용자가 안경이나 모자를 쓰고, 수염을 길러도 알아볼 수 있도록 한다.

이러한 기능을 수행하기 위해서는 컴퓨팅 파워와 전력 효율이 중요하며, 특히 전력 공급이 한정적이고 여러 제약이 많은 모바일 기기에 이를 적용하기란 더욱 어렵다. Apple은 그러한 어려움을 극복하고 on-device의 인공지능(AI) 제품을 개발했을 뿐만 아니라 실제 제품에 적용하고 있는 것으로, AI 산업에서 Apple의 확고한 저력을 보여준다.

Apple A 시리즈

Apple A 시리즈는 애플에서 자사의 아이폰, 아이패드, 아이팟과 애플 워치 등의 모바일 기기에서 사용하기 위한 목적으로 설계한 SoC 및 SiP이다.

1 특징 [ 편집 ]

ARM사의 CPU 아키텍처로 설계하거나 아예 명령 어셋을 받아서 자체 커스텀 프로세서를 내장하고 있고, GPU는 이매지네이션 테크놀로지의 PowerVR 시리즈를 선호한다.

2 뉴럴 엔진 [ 편집 ]

아이폰X에 탑재된 A11 바이오닉(바이오닉은 신경망이라는 뜻 즉뉴럴엔진이 들어갔다는 의미이다.)부터 뉴럴엔진이 들어간다.

뉴럴엔진은 인간의 뇌의 신경망을 모방한 AI (인공지능) 엔진이다. 뉴럴엔진은 TrueDepth 카메라가 30000개의 보이지않는 도트를 투하해 얼굴의 독특한 기하학적 형태를 매핑하면 그 데이터를 분석하는데 사용하고 모자나 안경을 쓰거나 얼굴이 변화하는 것을 FACE ID가 학습할 때도 사용된다.

아이폰11의 야간모드 역시 A13바이오닉의 뉴럴엔진으로 사용된다

개발자들 역시 자신이 만든 AR앱에서 뉴럴엔진을 사용하게 할 수 있다.

다음은 애플이 아이폰XS 공홈에서 밝힌 뉴럴엔진의 주 사용용도다.

“Apple의 Neural Engine은 첨단 실시간 머신 러닝을 수행하도록 만들어졌습니다. 이 말인즉슨 iPhone XS도 당신과 마찬가지로 패턴을 인식하고, 예측하고, 경험을 통해 배울 수 있다는 것이죠. Neural Engine은 놀랍도록 빠릅니다. 초당 수행하는 연산 수가 무려 5조 번이나 되죠. 또한 효율성도 굉장하기 때문에 여러 가지 새로운 일들을 실시간으로 가능하게 합니다. 스마트함도 이루 말할 수 없어 사용자로 하여금 실감 나는 AR 경험에 바로 빠져들게 해주거나, 사진 앨범에서 강아지 사진만 따로, 혹은 해변 사진이나 아기 사진만 따로 찾는 걸 도와주기도 하죠. 우리는 개발자가 Neural Engine의 장점을 활용해 자신의 앱에 강력한 실시간 머신 러닝을 도입할 수 있는 Core ML 플랫폼까지 공개했습니다. 이를 통해 iPhone에서 수행되는 작업들을 앱이 학습하게 할 수 있죠.”

애플은 아이폰 X 공개부터 특히 인공지능(AI)과 증강현실(AR)에 대해 많이 강조했으며 iOS를 더욱 거대한 증강현실 플랫폼으로 만들기위해 노력하고 있다.

3 상세 스펙 [ 편집 ]

3.1 스마트폰, 태블릿, TV용 A 시리즈 [ 편집 ]

아이폰 3GS 보다 이전 세대의 아이폰에 탑재된 AP는 삼성 S3C, S5L, S5P 라인업 항목으로.

S5PC100 (허밍버드)

아이폰 3GS에 탑재되었고 그 당시 가장 높은 성능을 가진 모바일 AP중 하나였다. 아주 가끔씩 Apple A3 이라고 불리는 경우가 있다. 자세한 기술 제원은 엑시노스 항목으로.

Apple A4

CPU GPU ARM Cortex-A8 싱글코어 800 ~ 1000MHz IT PowerVR SGX 535 ***MHz 생산 공정 램 대역폭 삼성 45nm LPDDR1 듀얼채널 통신 칩 없음 아이폰 4(0.8 Ghz), 아이패드/1세대(1 Ghz)

삼성전자의 LSI 사업부와 애플이 후에 인수한 인트리시티에서 설계한 AP이다. 같은 회사에서 설계된 사촌 AP인 허밍버드(S5PC100, 엑시노스 3110)과 매우 유사한 스펙을 가지고 있다.

CPU는 애플의 전작 제품에 끼워진 S5PC100과 같이 ARM Cortex-A8 싱글코어를 탑재하였지만, 공정 미세화로 클럭을 더욱 상승시킬수 있었다. 전작의 600MHz에서 800MHz ~ 1 Ghz까지 성능을 끌어 올렸고, 그 당시 고성능 AP의 한 축에 들었다.

GPU는 삼성전자의 엑시노스 3110의 PowerVR SGX 540 보다 낮은 성능을 가진 SGX 535를 탑재했지만, 이 정도 성능으로도 아이패드/1세대의 XGA 해상도를 구동시키기에는 충분한 성능이었다.

설계 주체에 관한 논란은 아래 항목에서 볼 수 있다.

Apple A5

Apple A4의 설계는 밑 항목에 적힌것 처럼 삼성전자의 기여분이 매우 크다는 것이 정설이지만 Apple A5의 설계사가 어느 쪽인지, 양사 간의 기여분이 어느 정도였는지는 아직도 알려진 바가 없다. 아마 일반 소비자 입장에서는 영원히 알 수 없는 정보일듯 하다.

Apple A4의 후속으로 삼성의 45nm 팹에서 생산되었다가 후기 생산품에는 삼성의 32nm HKMG LP 공정으로 변경되었다. 이 공정은 HKMG 기술이 적용되어 퀄컴의 28nm SiON LP 공정보다도 훨씬 전력 효율이 좋았다.[2]

CPU는 Cortex-A9를 듀얼코어 구성으로 탑재되었다. 애플 TV 3세대에 탑재될때는 코어 하나를 비활성화 시키는 것으로 알려져 있다.

탑재된 Cortex-A9가 비교적 낮은 클럭으로 작동하고 IPC 자체도 낮은 편이라서 Apple A5(1 Ghz)의 최상위 벤치 결과와 경쟁 AP인 엑시노스 4210, TI OMAP 4460[3]와의 벤치마크로 측정된 연산 성능이 꽤나 차이가 난다. 심지어는 Cortex-A9와 Cortex-A8 사이의 IPC가 큰 차이가 있음에도 불구하고 800MHz로 작동하는 Apple A5이 동일한 클럭으로 작동하는 Apple A4의 CPU 싱글코어 성능과 동일한 수준으로 측정되고 있다.

그러나 순수한 연산성능이 아닌 실제 벤치마크에서는 저런 단점이 드러나지 않고, 오히려 각종 벤치마크에서 모바일 AP 사이에서 높은 자리를 차지하고 있다.

GPU로는 당대 AP에 탑재된 GPU중 가장 강력한 PowerVR의 SGX 543을 듀얼코어 구성으로 탑재해서 다른 모바일 AP를 우주관광 보냈다. 동 시대의 AP중 엑시노스 4210만이 지속적인 최적화로 동급의 자리까지 올라왔지만 그 사이의 기간 동안 A5가 차지한 성능 우위나 실제 체감으로 느껴지는 성능 면에서는 A5가 판정승. 자세한 기술적 제원은 PowerVR 문서에 볼 수 있다.

Apple A5X

CPU GPU ARM Cortex-A9 듀얼코어 1000MHz IT PowerVR SGX 543 쿼드코어 ***MHz 생산 공정 램 대역폭 삼성 45nm 2 x 듀얼채널 LPDDR2 800MHz 통신 칩 없음 아이패드/3세대

Apple A 제품군중 최초로 태블릿 전용의 모바일 AP이다. 태블릿용 AP는 네이밍 뒤에 “X”자가 붙고, 기존 A 시리즈의 AP보다 GPU 성능이 크게 강화되어 있고 그만큼 소비전력, 열 배출량, 다이 사이즈, 메모리 대역폭 등등이 늘어난다.

일단 Apple A5X의 CPU 성능과 구성은 기존의 Apple A5와 동일하다. 기존의 Apple A5보다 강화된 부분인 GPU 성능은 Apple A5에 비해 GPU 성능을 2배 상승 시켰고, 램 대역폭 또한 A5의 2배인 12.8 GB/s 까지 끌어 올려서 2K 해상도를 감당할 수 있게 되었다. 이러한 성능 향상으로 이 시기에 2K 해상도 화면 출력을 담당할 수 있는 모바일 AP는 엑시노스 5250과 Apple A5X 이외에는 존재하지 않았다.

물론 공정 미세화가 동반되지 않은 성능향상이 이루어 졌기 때문에 다이사이즈도 현용 PC의 CPU 수준인 163mm²까지 상승했다. 램도 PoP 구성으로 탑재되는게 불가능해서 AP에서 따로 분리되었다.

A5X에 탑재된 PowerVR SGX 543 쿼드코어의 성능은 당연히 타 모바일 AP를 압살하는 수준이었다. A5의 SGX 543 듀얼코어로도 상대하기 벅찼는데 GPU 코어 수가 2배로 상승한 A5X의 GPU 성능은 다음 세대의 AP와 비견될 수준. 자세한 기술적 제원은 PowerVR 문서에서 볼 수 있다.

Apple A6

CPU GPU Apple Swift 듀얼 코어 1300MHz IT PowerVR SGX543MP3 ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) 통신 칩 없음 아이폰 5, 아이폰 5c

(AP 상세 설명)

Apple A6 출시 이래로 일어진 유구한 논란인 싱글코어 vs 멀티코어 성능 우위론은 밑의 기타 항목에서 볼 수 있다.

Apple A6X

CPU GPU Apple Swift 듀얼 코어) ****MHz (GPU 종류) ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) 통신 칩 없음 아이패드/4세대

(AP 상세 설명)

Apple A7

CPU GPU Cyclone 듀얼코어 1300 ~ 1400MHz IT PowerVR G6430 450MHz 생산 공정 램 대역폭 삼성 28nm HKMG 싱글채널 LPDDR3 통신 칩 없음 아이폰 5s, 아이패드 에어

모바일 AP중 최초로 64비트 명령어셋을 지원하는 CPU 아키텍처인 Cyclone을 탑재했다. 이번 Apple A7에 자사의 새로운 자체 아키텍처를 사용하면서 지금까지의 평가를 뒤집게 되었다. 이때부터 모션 감지 역할을 하는 M7 보조 프로세서가 추가되었다.

Geekbench 3 싱글코어 점수 Geekbench 3 멀티코어 점수

CPU의 구조는 고 IPC에 상대적으로 낮은 클럭으로 작동하는 64비트 사이클론 아키텍처를 듀얼코어 구성으로 탑재하였다. 애플은 이 CPU가 전작인 Apple A6 대비 2배의 성능을 가진다고 언급했고, 실제로 Anandtech에서 측정한 결과 위에서 볼수 있듯이 싱글코어 점수는 1400점대, 멀티코어 점수는 2500점대의 점수를 보여준다.

같은 2013년 말에 경쟁하는 퀄컴 스냅드래곤 800과 엑시노스 5420이 둘 다 싱글코어 점수 900점 후반에 멀티코어 점수 2000점대 후반~3000점대 초반을 기록한거와 비교하면 Apple A7은 코어수를 2개로 제한하면서 극단적으로 싱글코어 성능을 올렸다는 것을 알 수 있다.

GPU는 이매지네이션 테크놀로지社의 PowerVR 6 시리즈의 G6430을 탑재하고 있고 이는 4 클러스터 구조의 GPU이다. 동작 클럭은 450MHz으로 작동한다고 한다. 다른 경쟁사의 AP에 비해 GPU 성능으로는 우위를 점하고 있다. 자세한건 PowerVR 문서에서 볼 수 있다.

2015년 10월 13일에 A7 프로세서의 전력효율을 향상시키는 branch predictor가 미국 위스콘신 대학의 특허를 침해했다는 판결이 나왔다. 배상액은 한화로 약 9200 억원이라고 한다.

Apple A8

2014년 말에 공개된 애플의 AP이다. 엄청난 판매 실적을 거둔 아이폰 6과 몇몇의 다른 제품에 탑재되었다. 기존 애플의 AP는 Apple A7까지 삼성의 팹에서 양산되었는데, A8이 최초로 TSMC 공정에서 양산된 AP이다. 애플은 A8이 전작 대비 25%의 CPU 성능 향상, 50%의 GPU 성능 향상을 이루었다고 했다.

CPU는 Cyclone 아키텍처를 개선한 Typhoon 아키텍처를 듀얼코어 구성으로 탑재하였다. Cyclone과 Typhoon의 차이는 Swift와 Cyclone의 차이처럼 급진적인 차이가 나는 새로운 아키텍처는 아니지만 몇몇 차이점이 존재한다. 단지 Cyclone에서 클럭을 올린 정도로 취급될 아키텍처는 아니다. 처음에는 IT 웹진에서 ‘Enhanced Cyclone’으로 언급되었으나, 후에 Typhoon이라고 불리게 되었다.

CPU의 성능은 CPU 아키텍처 자체적인 개선과 메모리 대역폭의 미세한 상승, 그리고 L3 캐시, 메모리 레이턴시 쪽의 개선으로 인해 동클럭에서 Cyclone보다 약 8~10% 높은 성능을 가진다고 한다. 클럭 향상으로 인해 Geekbench 3에서의 CPU 점수 측정치는 아이폰 5s의 A7 대비 싱글코어에서 +14%, 멀티코어에서 +12%라고 한다. 이 자료는 애플의 공식 발표 수치와 좀 차이가 있지만, 아난드텍의 Geekbench 측정치를 보면 어느 정도 맞아 떨어진다. 그 외에 공정 미세화로 인해 쓰로틀링 감소를 기대해 볼 수 있다고 한다.

GPU는 역시 이매지네이션 테크놀로지의 PowerVR 시리즈 6XT에 속하는 GX6450을 탑재했다고 한다. 똑같은 450MHz의 클럭으로 작동한다고 알려져 있지만 GFX벤치 3.0 맨해튼 기준 1fps 정도 아이폰 6 플러스의 결과가 더 높게 나온다고 한다. 다만 미세한 차이라서 별로 신경쓸것은 없다. OpenGL ES 3.1 상의 성능이 유독 낮지만, 나머지 API 상에서는 경쟁 AP들보다 더 높은 성능을 보여준다. 자세한 기술적인 사항은 PowerVR 문서에서 볼 수 있다.

Apple A8X

CPU GPU Apple Typhoon 듀얼 코어) ****MHz (GPU 종류) ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) 통신 칩 없음 (이 AP를 사용하는 기기)

(AP 상세 설명)

Apple A9

14/16nm 공정에 생산된 최초의 AP인 삼성전자의 엑시노스 7420이 출시된지 반년 후에 애플에서 설계하고 14/16nm 공정에서 생산된 두번째 AP이다. 반년간의 수율 증가로 인해 78mm²의 면적을 가진 엑시노스 7420보다 더 넓은 100mm²대의 다이사이즈를 가질수 있게 되었다.

CPU의 구성은 많은 IT 웹진과 리뷰어의 예상을 깨고 기존의 듀얼코어 구성을 그대로 유지하였다. 대다수의 예측은 Cyclone/Typhoon 아키텍처의 동작 클럭을 올리고 트리플코어 구성으로 내놓을 거라는 의견이 대세였으나, ARMv7 기반의 Swift와 ARMv8-A 기반의 Cyclone/Typhoon 아키텍처에 이어 애플이 3번째로 개발한 새로운 자체 ARM 아키텍처인 Twister를 사용하였다. 기존의 애플 AP의 설계 사상에 부합하게 저클럭, 고 IPC로 높은 싱글코어 성능을 지향했다.

Geekbench 3에서 측정된 CPU 성능을 보면, 1.85 Ghz 라는 낮은 클럭에도 불구하고, 싱글코어 성능이 2500점대 후반으로 측정된다. 타사의 자체 아키텍처인 Kryo 2.15 Ghz보다 7% 높고, Exynos M1(몽구스) 2.6 Ghz보다 약 15% 높은 성능으로 실사용시 2016년 초에 나오는 AP와 비교해도 부족하지 않는 모습을 보여주고 있다. 멀티코어 성능은 4400점 후반으로 측정되고 세부 점수에서의 멀티코어 효율은 약 1.9배 초반으로 양호한 수준이다.

GPU는 역시 이매지네이션 테크놀로지社의 PowerVR 7XT 시리즈의 GT7600을 탑재하고 있고 이는 6 클러스터 구조이다. 600MHz로 작동하고 준수한 GPU 성능을 보여준다. 성능 비교에 대한 자세한 정보는 PowerVR 문서에서 볼 수 있다.

Apple A9 AP의 생산공정 혼용에 대한 논란은 아래의 문서에서 볼 수 있다.

Apple A9X

CPU GPU (CPU 종류, 코어 수) ****MHz (GPU 종류) ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) 통신 칩 없음 아이패드 프로(12.9인치, 9.7인치 모델)

(AP 상세 설명)

Apple A10 Fusion

CPU GPU Apple Hurricane 2300MHz, Apple Zephyr ****MHz (GPU 종류) ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) 통신 칩 없음 iPhone 7, iPhone 7+

4코어다.

A10 Fusion 칩의 CPU는 두 개의 고성능 코어와 두 개의 고효율 코어를 갖추었습니다.

A10 Fusion

아이폰7과 아이패드6세대,7세대에 탑재되었으며 고성능 코어2개와 고효율코어 2개로 구성되어있다. 그래서 고성능코어와 고효율코어의 융합이라는 뜻으로 Fusion이라는 접미어가 붙었다.

애플에 의하면 CPU성능은 A9대비 40% GPU 성능은 50% 증가하였다.

A11 Bionic

아이폰X에 탑재되었으며 인공지능(AI) 뉴럴엔진을 탑재했다. 따라서 Face ID에서는 주인의 얼굴을 뉴럴엔진이 스스로 학습하게 해준다. 뉴럴엔진은 TrueDepth 카메라가 30000개의 보이지않는 도트를 투하해 얼굴의 독특한 기하학적 형태를 매핑하면 그 데이터를 분석하는데 사용하고 모자나 안경을 쓰거나 얼굴이 변화하는 것을 스스로 학습한다.바이오닉은 신경망이라는 뜻 즉 인간의 뇌의 신경망을 모방한 (인공지능이 인간의 뇌를 모방했다는 뜻) 뉴럴엔진을 탑재했다는 것을 의미한다. A11 Bionic의 뉴럴엔진은 초당6000억번 연산하는 성능을 지녔다.

A12 Bionic

애플 공홈 출처에 따르면 2세대 뉴럴엔진이 탑재되었다.

아이폰 XS, 아이패드 에어 3세대, 아이패드 미니 5세대 에 탑재되었으며 초당 6000억번 연산했던 A11의 뉴럴엔진에 비해 초당 5조번 연산하는 뉴럴엔진으로 업그레이드 되었다.

A12X Bionic

아이패드 프로 3세대에 탑재되었다.

A13 Bionic

애플 공홈 출처에 따르면 3세대 뉴럴엔진이 탑재되었다.

아이폰11/11 pro/ 11 pro max에 탑재되었으며 더욱 강력해진 뉴럴엔진의 성능에 따라 야간모드 기능을 사용할 수 있으며 딥퓨전 기능같은 카메라의 성능이 획기적으로 업그레이드 되었다.

다음은 애플이 뉴럴엔진으로 어떻게 야간모드를 구현하는지에 대한 설명이다.

야간 모드는 어두울 때 자동으로 활성화되어 지금껏 본 적 없는 멋진 저조도 사진을 촬영하게 해주는 새로운 기능입니다. 플래시를 쓰지 않고도 색감은 훨씬 자연스럽고, 사진은 더욱 밝죠.

사진 기술의 오래된 숙원 하나, 바로 저조도 환경에서도 훌륭한 사진을 찍는 일이죠. 셔터를 오랫동안 열어야 하는데, 그러면 흔들림도 담게 됩니다. 명부의 과다 노출 없이 암부의 디테일을 살려내기도 여간 까다로운 일이 아니죠. 여기에 자연스러운 색감을 구현해야 하는 부담감도 추가됩니다. iPhone 11과 iPhone 11 Pro의 새로운 와이드 카메라 센서는 똑똑한 소프트웨어와 A13 Bionic을 연동해 지금까지 불가능했던 일을 iPhone에서 가능케 해줍니다. 극단적인 저조도 환경에서도 사진에 아름다운 디테일을 담을 수 있게 됩니다. 촛불이 켜진 로맨틱한 레스토랑 등 진가를 발휘할 순간이 오면 야간 모드는 자동으로 활성화됩니다. 셔터를 누르면 카메라가 여러 장의 사진을 촬영하고, 동시에 광학 이미지 흔들림 보정(OIS) 기능이 렌즈 떨림을 방지해주죠. 그 이후는 카메라 소프트웨어의 몫입니다. 촬영한 이미지들을 정렬해 움직인 부분을 조정하고, 심하게 흔들린 부분은 버리고, 더 선명한 부분들로 조합하는 동시에, 명암비를 조절해 전체적인 밸런스를 잡아줍니다. 그리고 정밀 보정을 거쳐 자연스러운 색감을 연출합니다. 끝으로 스마트하게 노이즈를 없애고, 디테일을 보강해 최종 이미지를 만들어내죠. 그 결과, 디테일은 더 풍부하고 노이즈는 더 적으면서 셔터가 눌린 순간의 시간과 장소의 감각을 충실히 살린 독보적인 야간 사진을 완성합니다.

3.2 스마트 워치 전용 S 시리즈 [ 편집 ]

Apple S1

CPU GPU (CPU 종류, 코어 수) ****MHz (GPU 종류) ***MHz 생산 공정 램 대역폭 (파운드리 회사) ** nm (공정명) (램 대역폭) (통신 규격) (이 AP를 사용하는 기기)

(AP 상세 설명)

4 논란과 비판 [ 편집 ]

4.1 설계 주체에 대한 논란 [ 편집 ]

Apple A4를 보면 삼성전자의 허밍버드(엑시노스 3110)과 많은 유사점이 보이고 있다. 그후 애플이 인트리시티를 인수하고, Apple A5 시리즈까지는 삼성전자에서 설계를 맡기고 삼성전자의 팹에서 생산이 되었지만 Apple A6부터는 자체 설계인 Swift CPU 아키텍처를 이용해서 애플이 자체적으로 설계했다는게 중론이다. 그 후 Apple A8부터 파운드리 쪽도 탈 삼성전자 기조를 유지하고 있는 것으로 보인다.

4.2 Apple A9의 TSMC, 삼성 팹 혼용 [ 편집 ]

아이폰 6s에 사용된 Apple A9가 삼성전자와 TSMC 양쪽 팹에서 동시에 생산이 되고 성능차이가 있냐 없냐로 논란이 있었지만 Geekbench 3에서 풀로드로 구동되는 상황을 제외하고 실사용에서는 두쪽 다 별 차이가 없다. GFX 벤치의 배터리 테스트에서도 비슷한 결과가 나와서 GPU 풀로드시에는 전력소모 차이가 눈에 안띄는데 CPU 풀로드시에는 전력소모가 차이가 나는 상황이어서 팹의 문제가 아닌 설계사인 애플의 설계미스라는 주장도 있다. 삼성전자와 애플 어느쪽이 잘못인지 책임론으로 논란이 있었지만 시간이 지나고 떡밥이 식었다. 저클럭에서는 삼성팹이 유리하고 고클럭에서는 TSMC 팹이 유리할 가능성도 제기되는 상황. MLC vs TLC 논란과는 다르게 이번 팹 논란은 실사용에서는 차이가 없으니 안심하고 그냥 써도 된다.

2016년 3월 말 기준, 현재까지의 아이폰 6s 및 아이폰 6s 플러스에 탑재된 A9의 파운드리사 별 비율은 삼성제가 약 60%, TSMC제가 약 40%를 차지하고 있다. 이 사이트에서 5분마다 갱신되는 비율을 볼 수 있다. 총 표본수가 40만개 후반대에 달하므로 신뢰도가 매우 높은 표본조사이다.

이 후에 Geekbench 3을 통한 CPU 쓰로틀링 테스트를 시행한 웹진에서 표본수를 조금 더 늘리고 측정한 결과, 팹 회사간의 편차보다 그냥 각각의 칩 간의 편차가 훨씬 더 크다는 것으로 드러났다.

뉴럴 엔진 – LG CNS

블로그

인공지능(AI)과 증강현실(AR)로 성큼 다가온 컴퓨터 비전

컴퓨터 비전은 인간의 시각을 컴퓨터가 가질 수 있도록 하는 컴퓨터 과학과 인공지능(AI)의 한 분야입니다. 1960년대부터 오랜 시간 연구되어 온 긴 역사와 방대한 응용 분야를 고려하면 상용화에 가까워졌다고도 할 수 있습니다. 스마트폰의 카메라를 이용한 신용카드 스캔 등의 기술이 익숙한 예입니다. 컴퓨터 비전은 인공지능(AI)과 증강현실(AR) 등의 기술이 발전하면서, 응용 분야가 본격적으로 확장되고 있습니다. 지난 11월에 출시된 애플의 아이폰X가 좋은 사례입니다. 아이폰X에는 얼굴을 인식하는 기능인 ‘페이스 ID(Face ID)’가 탑재되었습니다. 아이폰X 전면의 트루뎁스(TrueDepth) 카메라가…

모바일 GPU에서 뉴럴 네트워크를 더 효율적으로 만들기

안녕하세요. LINE+ Camera AI 팀의 손재범입니다. Camera AI 팀에서는 주로 비전 문제를 다루며 숏폼 플랫폼과 카메라 앱에서 사용하는 AI 적용 콘텐츠를 연구하고 개발합니다. 예를 들어, 카메라에 비친 내 얼굴을 만화 캐릭터처럼 바꿔주는 애니메이션 필터 기능이나 립싱크 기능과 같은 신기하면서 재미있는 카메라 필터를 연구하고 개발하는 팀입니다. 또한, LINE 앱에서 쉽게 사용할 수 있도록 AI 기능을 최적화하고 경량화하는 일도 병행하고 있습니다.

저희 팀에선 서버 환경이 아닌 모바일 환경에서 AI 모델을 추론해야 하는 상황이 자주 있는데요. 이에 모바일 GPU 환경에서 ‘최소한의 성능 감소와 최대한의 속도 향상’을 탐색하는 과정에서 세운 여러 가지 가설과 이를 증명하기 위한 실험 내용을 공유하면 좋겠다는 생각이 들어서 글을 쓰게 되었습니다. 비록 NVIDIA GPU와 Apple 칩셋 하나씩만 사용해 진행했지만, 개별 연산 단위에서부터 여러 연산으로 구성한 모델까지 실험하고 비교했습니다. 저희가 세운 가설과 실험 그리고 결론을 아래와 같은 순서로 공유해 보려고 합니다.

모바일과 데스크톱 GPU의 스펙을 간단히 비교합니다.

뉴럴 네트워크에서 자주 사용하는 연산들의 속도를 간단히 비교하고 결과를 분석합니다.

널리 사용되는 백본 네트워크들을 모바일 GPU에서 실행하고 그 결과를 분석합니다.

실험으로 비교하는 종목은 ‘RTX3090 Pytorch’와 ‘A13 TFLite’, 그리고 ‘A13 CoreML’입니다. 성능을 최적화하기 위한 연산자 분석과 데스크톱과 모바일 GPU를 비교하기 위한 프레임워크로는 아래와 같은 이유로 각각 Pytorch와 TFLite, CoreML을 사용했습니다.

Pytorch: Tensorflow를 포함한 다른 딥러닝 학습 프레임워크보다 사용하기 편하면서 Python과 잘 어울리고 저희 팀을 포함한 많은 AI 연구원들이 이용하고 있습니다.

TFLite: 참고할 수 있는 문서와 자료가 많고, Android와 iOS 모두에서 사용할 수 있고 훌륭한 추론 성능을 보여줍니다.

CoreML: Apple 기기에서 사용할 수 있습니다.

NVIDIA GPU와 모바일 GPU 사양 간단 비교

아래는 RTX3090과 A13 Bionic 칩셋(iPhone SE2)의 사양을 간단하게 비교한 표입니다. RTX3090는 사양과 관련 자료가 상세히 공개돼 있지만 Apple 칩셋들은 그렇지 않습니다. 이에 비교적 쉽게 살펴볼 수 있는 사양들만 비교했습니다.

RTX3090 A13 Bionic(iPhons SE2) GPU 기본 클록 1.40 – 1.70 GHz 1.35 GHz Shading units(cuda cores) 10,496 256 트랜지스터 283억 85억 NPU(Neural Processing Unit) 328 TensorCore 8 Neural engine (TFLite x) 메모리 24GB 시스템 메모리 공유 Performance FP32(Float) 35.5 TFLOPS(A13 약 51배) 691.2 GFLOPS 표 1. RTX3090과 A13 Bionic 칩셋(iPhone SE2) 비교

연산별 비교

이번 글에서는 기기와 프레임워크 간 성능을 비교하고 어떤 파라미터와 레이어 구성이 모델을 더 효율적으로 설계하는 데 도움이 될지 알아보기 위해 진행한 여러 가지 실험을 소개할 예정입니다. 비교하기 위해선 먼저 비교에 사용할 기준을 정해야 하는데요. 이번 글에서는 초당 수행한 부동 소수점 연산의 개수를 계산하는 FLOPS와 추론에 걸린 시간을 평균 낸 지연시간(latency, ms)을 사용하겠습니다.

자주 사용하는 연산자 비교

우선 A13과 NVIDIA GPU의 성능 차이를 대략적으로 가늠하기 위해서, 자주 사용하는 연산 몇 개를 골라 같은 입력과 같은 파라미터 조건에서 단순히 지연 시간을 비교해 보는 실험을 진행했습니다. 두 기기 간의 대략적인 성능 차이를 보기 위한 이번 실험에서는 자주 사용하는 몇 가지 연산자들을 샘플링했는데요. 이번 실험에서는 FLOPS라는 기준 대신 지연 시간을 사용해 비교하겠습니다. 메모리를 읽고 쓰는 시간이 대부분인 ReLU(Rectified Linear Unit)나 전치(transpose)와 같은 레이어들과 지수 연산이 들어가는 몇몇 활성 함수(activation function)에서는 FLOPS를 사용하기 어렵기 때문입니다.

또한, NVIDIA GPU와 iPhone SE2 칩의 코어를 최대한 활용할 수 있는 크기의 연산을 실행하려 했으나, 입력 크기가 너무 크면 상대적으로 메모리가 적은 모바일 환경에서는 실험 진행이 불가능했습니다. 또한 단일 연산 모델을 실행할 때에는 기기와 TFLite 프레임워크의 구조 때문이라고 추정되는 성능 왜곡 현상이 발생하기 때문에 작은 연산을 3개 층으로 연달아 쌓아 성능을 측정했습니다. 두 기기 간 비교에 사용한 입력 형태는, 선형(linear) 레이어에서는 (4, 4096) 텐서를 사용했고, 나머지 레이어에서는 (1, 32, 32, 128) 텐서를 사용해 속도를 측정했습니다.

Conv2d ReLU Linear BatchNorm LayerNorm Upsample(Bilinear) Upsample(Nearest) Transpose RTX3090 Pytorch 지연 시간(ms) 0.1678 0.0171 0.2775 0.04438 0.4516 0.1403 0.0731 0.00579 A13 TFLite 지연 시간(ms) 3.75897 1.94035 6.89408 1.97055 7.28187 29.4306 29.7508 2.21463 A13 CoreML 지연 시간(ms) 3.0794 1.3940 6.218 1.402174 3.21639 11.3971 7.16235 2.401145 표 2. RTX3090, iPhoneSE2(CoreML, TFLite GPU) 에서 자주 사용되는 연산들 속도 측정

단일 레이어로 구성된 TFLite 모델 중에서 특히 수행해야 할 연산이 적거나 아예 없는 ReLU와 전치 레이어는 데스크톱 GPU보다 모바일에서의 성능이 낮았습니다. 지연 시간을 측정하기 전에 모바일 GPU를 초기화하는 과정과 웜업 세션을 수차례 거쳤지만, 그럼에도 입력 텐서를 GPU로 옮기는 과정에서 많은 시간이 소요된 것으로 보입니다. 2차원 합성곱(Convolution2D, Conv2d)과 선형 레이어 또한 데스크톱 GPU에 비해 모바일에서 속도가 20배 이상 느렸으나, LayerNorm 레이어에서는 데스크톱 GPU와의 성능 차이가 줄어들었습니다. 기기 문제라기보단 알고리즘 문제로 보입니다. 위 표에 실험 결과로 추가하진 않았지만 같은 연산을 모바일에서 GPU가 아닌 CPU로 진행했을 때 2차원 합성곱과 선형 레이어를 제외한 다른 연산은 오히려 속도가 빨랐는데요. 이와 같은 결과를 고려해 볼 때 처음 연산에서 CPU ↔ GPU 간 데이터 스위칭에 많은 시간이 소요된 것으로 보입니다.

코어의 처리 능력 외에도 성능에 영향을 미치는 변수가 많아 두 기기의 성능을 정확하게 비교하는 것은 어렵습니다. 다만, 입출력의 크기가 지나치게 크지 않고, 연산량이 많은 선형 레이어의 속도 차이가 약 20배 정도였는데요. 저는 이를 두 기기 간의 성능 차이로 보려고 합니다. 물론 RTX3090 기기가 TensorCore라는 행렬곱에 특화된 특성 덕분에 가속 효과를 받았고, NVIDIA GPU가 최대한으로 활용되기엔 연산의 크기가 적다는 점은 감안해야겠지만요.

선형 레이어

이번 실험부터는 모바일 GPU에서의 레이어들의 성능을 분석하고, GPU 활용률을 증가시키는 조건을 찾아보며 정리하려고 하는데요. 먼저 두 개의 행렬을 곱하는 행렬곱으로 구성된 선형 레이어부터 살펴보겠습니다.

선형 레이어는 2차원 형태의 입력과 2차원 형태의 파라미터를 곱하는 행렬곱 연산입니다. 이와 같은 행렬곱은 뉴럴 네트워크에서 가장 기본적인 연산 중 하나인데요. 자연어 처리에서 주로 사용하는 트랜스포머(transformer) 구조에서도 행렬곱을 주 연산으로 사용하며, 영상 처리 분야에서 사용하는 CNN(Convolutional Neural Network)도 내부 합성곱(convolution) 연산을 행렬곱으로 바꿔 수행할 수 있습니다. 선형 레이어 실험은 (MxK)와 (KxN) 행렬곱 연산에서 세 파라미터 M, N, K를 바꿔가며 파라미터를 어떻게 조정했을 때 가장 좋은 성능이 발휘되는지 알아보는 형태로 진행하겠습니다. 여기서 M, N, K는 각각 배치 크기(batch_size)와 입력 차원(input_dimension), 출력 차원(output_dimension)을 의미합니다.

우선 배치 크기에 해당하는 M 파라미터를 1로 고정한 뒤 M 과 N 중에서 하나의 파라미터만 증가시키며 성능을 측정해 봤습니다. 아래 실험 결과 그래프를 보시겠습니다. 파란색 선이 N을 고정했을 때의 결과이고, 빨간색 선이 K를 고정했을 때의 결과입니다.

그림 1. 지연 시간 측정 결과(왼쪽)와 GFLOPS(GFLOPs/sec) 측정 결과(오른쪽)

M과 K 두 파라미터 중 어느 하나만 증가할 때는 뚜렷한 성능 차이가 관측되지 않았습니다만, 한 번에 수행하는 연산의 크기가 증가하는 상황에서는 K가 커질 때보다는 N이 커질 때가 조금 더 성능이 좋았습니다. 또한 실험에서는 연산의 크기가 작을수록 FLOPS가 급격히 떨어지는 모습을 보였는데요. 모바일 환경이라는 특성 때문에 큰 연산을 사용하기 쉽지 않은 상황에서 작은 연산의 효율도 좋지 않다는 아쉬운 점이 관측됐습니다. 지연 시간 측면에서도 극단적으로 작은 크기의 연산은 장점이 없다고 생각하기 때문에 GPU를 사용해 추론할 때는 너무 작지 않은 레이어 크기를 유지하는 것이 좋을 것이라고 예상합니다.

다음으로 선형 레이어 행렬곱 연산시 TFLite와 모바일 GPU 구조의 특성 때문에 발생할 수 있는 차원 양자화(dimension quantization) 문제가 있는지 확인하기 위한 실험을 진행했습니다. GPU에서 연산을 수행할 때는 병렬화하기 위해 같은 명령어를 여러 스레드로 나누어 수행하는데 이때 동시에 실행되는 스레드 숫자의 최소치가 생깁니다. 예를 들어 최소치가 4개라고 가정한다면, 길이가 3인 벡터 두 개를 내적할 때 실제로는 나머지 부분이 자동으로 0으로 패딩돼 길이가 4인 벡터 두 개의 내적 연산을 수행하는 것과 같이 동작합니다. 이를 차원 양자화 문제라고 합니다.

이와 같은 차원 양자화 문제가 TFLite에 존재하는데요. 이것이 결과에 얼마나 큰 영향을 미치는지 확인하고자 N과 K 중 하나를 4096으로 고정하고, 나머지 파라미터를 248부터 256까지 하나씩 증가시키며 실험을 진행했습니다. 아래는 그 결과 그래프입니다.

그림 2. 지연 시간 측정 결과(왼쪽)와 GFLOPS(GFLOPs/sec) 측정 결과(오른쪽)

실험 결과, 실제로 체감할 수 있을 정도의 문제는 아닌 것으로 나타났습니다. 비슷한 실험을 더 작은 연산으로도 진행해 보았으나 유의미한 성능 감소는 관측할 수 없었습니다.

2차원 합성곱

선형 레이어와 마찬가지로 합성곱 레이어 역시 특정 파라미터만 조절하는 실험을 진행해 어떤 파라미터를 어떻게 설정하는 것이 성능 향상에 좋을지 관찰해 보기로 했습니다. 이번 실험에서는 H와 W, in_channel, out_channel의 네 가지 파라미터를 조절하며 어떤 파라미터가 성능에 더 민감하게 영향을 끼치는지 결과를 관찰했습니다. 각 파라미터는 순서대로 입력 텐서의 높이(H)와 너비(W), 채널 수(in_channel), 그리고 합성곱 필터의 개수(out_channel)를 의미합니다. 이번 비교 실험에서 합성곱 커널 크기는 3, 패딩은 0, 스트라이드(stride)는 1로 통일했습니다. 아래 결과 그래프를 보시겠습니다.

그림 3. in & out_channel 파라미터 고정 결과(왼쪽), H, W, out_channel 파라미터 고정 결과(가운데), H,W, in_channel 파라미터 고정 결과(오른쪽)

실험 결과 H와 W 파라미터가 커질 때 전체적으로 성능이 저하됐습니다. 크기가 큰 연산을 수행할 때 입력 텐서의 높이와 너비가 큰 경우보다는, 입력 텐서의 채널 수가 크거나 합성곱 필터의 개수가 많아 출력 텐서의 채널이 큰 경우에 같은 연산량 대비 성능이 좋은 것을 관측할 수 있었습니다.

이어서 이전 실험에서는 진행하지 않았던, 커널 크기 파라미터를 조절하며 성능 변화를 관찰하는 실험도 진행했습니다. 실험에 사용하는 연산들이 최대한 비슷한 크기가 되도록 H와 W를 조절해가며, 네 가지 커널 크기(3, 5, 7, 9)로 실험을 진행했습니다.

커널 크기 1 3 5 7 H, W 128 44 26 18 채널 수 512 512 512 512 A13 TFLite 지연 시간(ms) 53.3681 15.0811 18.9144 16.678 A13 CoreML 지연 시간(ms) 13.8979 8.4727 10.3622 9.9478 FLOPs 약 85억 약 91억 약 88억 약 83억 표 3. 합성곱 커널 크기에 따른 속도 변화량 측정

실험 결과 커널 크기가 커질수록 성능이 좋아지는 경향이 나타났는데요. 특이하게도 커널 크기가 3일 때 가장 성능이 좋았습니다. 이는 TFLite에서 3×3 필터를 사용하는 합성곱 연산이 Winograd 합성곱 알고리즘의 가속을 받아 성능이 크게 향상된 것으로 보입니다. Winograd 합성곱 알고리즘은 특정 커널 크기에서 일반적으로 사용하는 행렬곱 기반의 합성곱보다 수행해야 할 곱셈 연산을 현저히 줄여주는데요. TFLite에서는 4배 정도 곱셈 연산이 줄어든 Winograd 알고리즘을 사용하고 있습니다.

다음으로 패딩 유무에 따른 성능 변화가 있는지 확인하고자 추가 실험을 진행했는데요. H와 W는 32, in_channel과 out_channel은 64로 고정한 작은 연산과, 파라미터의 크기가 두 배인 큰 연산으로 나누어 진행했습니다. 또한 커널 크기 파라미터를 변경해가며 패딩이 들어간 경우는 입력 텐서의 높이 및 너비와 같은 크기를 가진 출력 텐서가 생성되도록 패딩 파라미터를 조절했습니다. 아래는 실험 결과 그래프입니다.

그림 4. in & out_channel=128, W, H=64일 때의 결과(왼쪽)와 in & out_channel=64, W, H=32일 때의 결과(오른쪽)

실험 결과 커널 크기가 3인 경우에 성능이 가장 좋았고, H와 W가 작고 커널 크기가 커서 패딩이 많이 들어간 경우에는 성능이 상당히 저하됐습니다. 패딩 유무에 따른 지연 시간 차이는 큰 연산과 작은 연산 모두에서 관측됐지만, 특히 작은 합성곱 연산에서 커널 크기가 커질 때 지연 시간이 많이 증가하는 것을 확인할 수 있었습니다.

다음으로 입출력 채널 크기의 비율이 1:1에서 점점 벗어날 때 메모리 접근 비용이 증가하는 것을 TFLite GPU에서도 관측할 수 있는지 실험했습니다. 실험에서 H와 W 파라미터는 64로 고정하고, 커널 크기 또한 3으로 고정했습니다. 또한 최대한 비슷한 FLOPs를 유지해 가며 채널 비율이 1:1에서 벗어나는 2차원 합성곱 레이어를 하나 생성하고 속도를 측정했습니다.

H, W In channel Out channel A13 TFLite 지연 시간(ms) RTX3090 지연 시간(ms) 64 128 128 6.376 0.0612 64 90 180 5.446 0.0884 64 52 312 6.519 0.1246 64 36 432 7.828 0.1280 표 4. 입력과 출력 채널의 비율에 따라 변화하는 속도 관측 실험

RTX3090은 채널 비율이 1:1에서 벗어나는 만큼 지연 시간이 선형적으로 증가하는 모습을 보였지만, TFLite GPU에서는 입출력 채널의 비율이 1:2일 때 가장 성능이 좋았습니다. 다만 비율이 1:1에서 크게 벗어나면 연산 수행 비용이 증가하는 것 또한 확인할 수 있었습니다.

메모리 레이아웃 변환

다음으로 메모리 레이아웃을 변환할 때의 지연 시간을 측정해 봤습니다. 특별히 TFLite의 공식 가이드라인에도 GPU에서의 메모리 레이아웃 변환은 느린 연산이기 때문에 가급적이면 사용을 자제하라고 언급하고 있는데요. 실제로 세 가지(전치, Reshape, PixelShuffle) 레이어에서 속도가 얼마나 느린지 확인하기 위해 아래와 같은 연산을 진행하며 지연 시간을 측정했습니다.

(1, 64, 64, in_channel) 형태의 입력 텐서를 전치 연산으로 (1, in_channel, 64, 64) 형태의 텐서로 변환

(1, 64, 64, in_channel) 형태의 입력 텐서를 Reshape 연산으로 (in_channelx64x64, 1) 형태의 텐서로 변환

(1, 64, 64, in_channel) 형태의 입력 텐서를 PixelShuffle 연산으로 (1, 128, 128, in_channel/4) 형태의 텐서 변환

결과는 아래와 같습니다. 단일 레이어 모델을 TFLite에서 추론할 때 초기화 오버헤드가 있는 것처럼 보여 실험 결과에 왜곡이 있을 수 있으나, PixelShuffle과 전치 연산에 비해 Reshape 연산이 비교적 비용이 높게 나타났습니다.

그림 5. TFLite GPU에서 메모리 레이아웃 변환 연산 지연 시간 측정 결과

우선 세 레이어 모두 작은 텐서 변환에서조차 2ms 이상 소요되는 것으로 나타났으며, 텐서의 크기가 클수록 변환하는 데 오래 걸렸습니다. 특히 Reshape 연산은 다른 두 레이어에 비해서 훨씬 오래 걸리는 것으로 나타났습니다.

모델 아키텍처와 디자인별 성능 측정

다음으로 세 가지 종류의 네트워크를 변환해 TFLite GPU로 실행 시간 및 모바일 기기에서의 성능을 측정했고, 비교하기 위해 CoreML과 Nvidia GPU에서의 지연 시간도 측정해 봤습니다. 실험할 때는 모바일로 한정 짓지 않고 다른 분야에서도 백본 네트워크로 많이 사용하는 Resnet 계열과, MobileNet 계열, 그리고 Efficientnet 계열의 모델로 실험했습니다.

모델 resnet34 resnet50 resnet101 mobilenet_v2 mobilenet_v3_large mobilenet_v3_small efficientnet_b0 efficientnet_b1 efficientnet_b2 efficientnet_b3 RTX3090 Pytorch 지연 시간(ms) 3.497 4.767 9.398 3.775 4.444 3.538 5.798 8.264 8.366 9.546 A13 TFLite 지연 시간(ms) 31.8827 32.4437 50.1975 9.43992 10.1454 5.805 24.1116 34.5493 49.2367 60.753 A13 CoreML 지연 시간(ms) 8.413 9.882 12.5296 2.542 18.184 6.494 21.496 24.560 37.799 49.358 TFLite 그래프 노드 개수 90 91 202 83 161 147 320 457 457 517 FLOPs 약 36억 약 41억 약 78억 약 3.2억 약 2.2억 약 0.6억 약 4억 약 7.1억 약 10억 약 19억 표 5. RTX3090와 iPhone SE2(CoreML, TFLite GPU)에서 다양한 네트워크의 속도를 측정한 결과

EfficientNet과 MobileNet은 비교적 최근에 등장한 네트워크지만, 나온 지 더 오래된 단순한 구조의 ResNet이 GFLOPS 측면에서 훨씬 나은 결과를 보여줬습니다. 이와 같은 결과가 나온 원인을 유추하기 위해 TFLite 연산 그래프 노드 위 숫자를 확인해 보았는데요. 아무래도 구조가 더 복잡한 MobileNet과 EfficientNet 계열의 모델이 FLOPs 대비 노드의 숫자가 많은 경향을 보였습니다. 또한 EfficientNet과 MobileNet은 TFLite에서 큰 가속 효과를 받는 3×3 합성곱 커널 대신 5×5와 1×1을 주로 사용하고, TFLite 모델로 변환할 때 사용된 컨버터가 ReLU를 제외한 다른 활성 레이어 퓨즈 기능을 지원하지 않았기 때문에 전체적으로 빠른 성능을 발휘하지 못한 것으로 보입니다. 그에 비해 ResNet 계열의 모델은 3×3과 1×1 합성곱 커널을 주로 사용했고, 각각의 레이어가 비교적 큰 연산을 수행하기 때문에 좋은 성능을 보여준 것으로 확인됩니다.

모바일 GPU 환경에서 백본 네트워크 성능을 분석하다 보니 TFLite 그래프의 노드 숫자가 성능과도 관련이 있겠다고 추측할 수 있었습니다. 이미 ShuffleNet v2 모델을 제안한 논문에서 여러 개의 작은 레이어를 많이 사용하는 것보다 큰 레이어를 하나 사용하는 게 속도 측면에서 더 효율이 좋다고 보고된 바 있습니다. 추측을 확인하기 위해 총 연산 횟수를 최대한 비슷하게 유지하면서 입출력 채널 수와 H, W 파라미터를 조절하며 레이어 숫자를 늘린 모델을 생성해 지연 시간과 FLOPS를 측정해 보았습니다. 커다란 하나 혹은 소수의 연산과, 다수의 작은 연산의 효율을 비교해 본 실험 결과는 아래와 같습니다.

그림 6. RTX3090 GPU(왼쪽)에서는 레이어를 잘게 쪼갤수록 효율성이 낮아졌으며, TFLite GPU(오른쪽)에서는 3개의 합성곱 레이어로 쪼개졌을 때 가장 성능이 좋았고 그 이상으로 쪼개면 효율이 떨어지는 것으로 나타났습니다.

NVIDIA GPU에서는 노드의 숫자가 늘어날수록 성능이 감소한다는 것을 관측할 수 있었습니다. 하지만 모바일 GPU에서는 레이어의 개수가 1이나 2인 얕은 깊이의 네트워크에서는 그런 경향이 나타나지 않았고, 레이어 개수 3개 이상부터는 다소 노이즈가 섞여 있지만 레이어 숫자가 늘어날수록 성능이 감소하는 현상을 관측할 수 있었습니다. 이 결과가 수백 개의 레이어로 구성된 모델을 대표할 수는 없겠지만, 수행해야 할 총 연산 횟수가 적고 합성곱 커널의 크기가 최적화되지 않았으며 노드 수가 비교적 많은 MobileNet과 EfficientNet 계열의 모델은 GPU에서 효율이 좋지 않을 수 있다는 것을 알 수 있었습니다. 추가로 MobileNet v2는 TFLite CPU에서 XNNPACK을 사용하고 스레드 숫자를 늘려 가속 효과를 받으면, GPU 가속을 사용했을 때 보다 모델 추론을 1.3배에서 최대 1.7배까지 더 빠르게 할 수 있었고, Apple CoreML을 사용할 경우엔 지연 시간 3ms 이하의 빠른 성능을 보여줬습니다. 이처럼 작고 복잡한 네트워크에서는 GPU보다 CPU와 전용 장비의 가속을 받는 것이 더 효율적이었습니다.

CoreML의 경우 다른 GPU와 프레임워크 대비 MobileNet v2와 ResNet 계열에서 굉장히 빠른 속도를 보여줬습니다. 이에 CoreML이 특별한 구조에 최적화돼 있어서 빠르게 동작하는 게 아닌지 궁금해졌는데요. 이를 확인하기 위해 MBConv 블록(EfficientNet)과 Inverted Residual 블록(MobileNet v2), Residual 블록(ResNet)으로 블록 단위 테스트를 진행했습니다. 블록의 입력 텐서로는 (1, 112, 112, 24) 형태의 텐서를 사용했습니다. 아래는 각 블록을 시각화한 그림입니다. 그림에서 볼 수 있듯 EfficientNet 블록인 MBConv 블록이 다른 두 블록보다 노드가 많고 구조가 복잡합니다.

그림 7. 왼쪽부터 MBConv 블록, Inverted Residual 블록, Residual 블록을 시각화한 그림

아래는 RTX3090와 iPhone SE2(CoreML, TFLite GPU)에서 각 블록 추론 속도를 측정한 결과입니다.

EfficientNet(MBConv 블록) MobileNet v2(Inverted Residual 블록) ResNet(Residual 블록) FLOPs 약 1.1억 약 1.1억 약 1.3억 TFLite 그래프 노드 개수 16 5 5 RTX3090 Pytorch 지연 시간(ms) 0.3400 0.2088 0.1515 A13 TFLite 지연 시간(ms) 5.8261 4.27251 4.10687 A13 CoreML 지연 시간(ms) 9.4856 2.53574 1.87518 표 6. RTX3090와 iPhoneSE2(CoreML, TFLite GPU)에서 각 블록 속도 측정 결과

TFLite와 CoreML, RTX3090 모두 MBConv 블록을 추론할 때 가장 오래 걸렸는데요. 특히 CoreML에서 MBConv 블록을 추론할 때 Residual 블록을 추론할 때보다 5배 정도 많은 시간이 걸렸습니다. RTX3090에서의 실험도 CoreML 실험과 비슷했지만 성능 차이의 폭은 더 좁았습니다. 원인을 따져 보면, 가장 구조가 복잡한 MBConv 블록에서 노드 숫자가 가장 많았을뿐더러 연산 그래프에서 연산이 직렬로 구성되지 않고 부분적으로 나누어지고 합쳐지는 과정이 많았는데요. 이 때문에 동기화 이슈와 같은 간접 비용이 증가해서 이런 결과가 나온 것이 아닐까 생각합니다.

CoreML의 MobileNet v2 추론 시간이 굉장히 빨랐기 때문에 혹시 모델 단위로 최적화돼 있는 것은 아닌지 궁금했습니다. 이에 단순히 프로파일러를 사용해 지연 시간 분포를 확인하는 게 아니라 블록마다 모델을 만드는 실험을 진행했습니다. 구체적으로 MobileNet v2 모델을 20개의 블록으로 나누고, 첫 번째 블록부터 층층이 쌓아나가며 지연 시간을 측정했는데요. 다만, 실험의 특성 때문에 환경을 통제하기가 쉽지 않았고, CoreML은 CPU와 GPU, 뉴럴 엔진 중 어떤 유닛을 계산에 사용할지 알 수 없어서 실험 결과에 약간의 노이즈가 나타났습니다.

그림 8. 녹색 선(TFLite GPU)과 파란색 선(CoreML)은 지연 시간, 빨간색 선은 층층이 쌓인 레이어들의 FLOPs를 나타냅니다. 일종의 밀도 함수라고 봐도 무방합니다.

이번 실험은 TFLite GPU에서도 같이 진행했습니다. 블록 개수를 쌓아갈 때마다 점점 지연 시간이 증가하는 것으로 보아 완성된 MobileNet v2 자체에 특별히 최적화하지는 않은 것으로 보입니다. 하지만 CoreML과 TFLite GPU 모두 첫 번째 블록이 전체 모델의 연산 횟수 중에서 4% 미만의 크기를 차지함에도 불구하고 첫 번째 블록을 추론하는 데 걸리는 지연 시간이 연산량 대비 높게 나타났습니다. 이런 결과로 미루어 짐작해 볼 때, 모델 추론 시 초기화 오버헤드가 존재한다고 유추할 수 있고, 이것이 단일 연산 레이어를 실행할 때 비정상으로 보일 만큼 성능이 떨어지는 이유가 될 것이라고 생각합니다. 또한 CoreML의 추론 속도는 A13 칩 뉴럴 엔진의 프로세서 유닛 자체가 뉴럴 네트워크에 최적화됐기 때문에 셰이더(shader) 프로그램으로 실행되는 TFLite GPU보다 빨랐습니다. 하지만 모든 네트워크나 블록에서 항상 빠른 것은 아니므로 특정 구조나 연산에 최적화돼 있는 것으로 생각됩니다.

마지막으로 비슷한 실험을 EfficientNet b0에서도 반복했습니다. 이번에는 CoreML만 사용해서 실험을 진행했으며, MobileNet v2 실험과 비슷하게 CoreML을 사용해 EfficientNet b0 네트워크를 블록 단위로 나누고, 첫 번째 블록부터 층층이 쌓아나가며 지연 시간을 측정했습니다.

그림 9. FC(Fully Connected) 레이어를 추가한 네트워크(주황색)와 추가하지 않은 네트워크(파란색)

신기하게도, 마지막 19번째 블록에서 선형 레이어가 추가돼 FLOPs가 늘었음에도 오히려 지연 시간은 이전 블록까지의 지연 시간인 25.6ms에서 22.3ms로 크게 감소하는 현상을 관측했습니다. 이 실험만으로는 원인을 파악할 수 없어서 추가로 블록을 층층이 쌓아나갈 때 매 블록 마지막에 FC 레이어를 추가해 출력 텐서가 1000 길이의 벡터 형태가 되도록 모델을 설정한 후 실험을 반복했습니다. 그 결과 대부분의 경우에서 레이어를 추가했음에도 많게는 1.5ms까지 지연 시간이 감소하는 모습이 나타났습니다.

이런 현상이 발생하는 원인으로 두 가지 정도를 추측해 볼 수 있었습니다. 첫 번째로 마지막에 선형 레이어를 추가했을 때 CoreML 컨버터가 소프트웨어 관점에서 모델 최적화 과정을 추가로 진행했다고 가정해 볼 수 있습니다. 두 번째로 모델 추론 결과물을 저장해 놓은 버퍼에서 메모리로 데이터를 가져오는 과정에서 시간이 많이 소요된 것이라고 생각해 볼 수 있습니다. 만약 후자라면, 선형 레이어가 없는 18번째 이전 모델들에서는 결과값으로 큰 텐서를 출력하기 위해 많은 양의 데이터를 옮기는 데 걸린 시간이 선형 레이어 하나가 더 들어가면서 추가된 시간보다 훨씬 많았다고 생각해 볼 수 있겠습니다.

마치며

여기까지 뉴럴 네트워크 모델을 모바일 GPU에서 효율적으로 만들기 위한 가설과 실험 내용, 결과를 공유드렸습니다. 간단하게 정리해 보면, TFLite GPU 엔진은 모델의 개별 레이어의 연산 크기가 클수록, 모델의 깊이가 얕아 노드의 숫자가 적을수록 같은 시간에 더 효율적으로 연산을 수행할 수 있습니다. 여기에 합성곱 커널 크기도 되도록 3을 유지하는 게 좋고, 연산 그래프가 여러 가지로 나뉘고 병합되는 구조를 지양해야 더 효율적으로 연산할 수 있습니다. 또한 실험을 통해 자주 사용하는 연산들과 모델을 사용할 때 CoreML이 좋은 성능을 보여주는 것도 확인할 수 있었는데요. 이번 실험에 사용한 네트워크 외에도 다양한 구조의 네트워크 모델이 많이 있고, 그중 어떤 모델들은 TFLite GPU에서 더 좋은 성능을 보여주기도 하기 때문에 항상 CoreML만을 고집할 필요는 없다고 생각합니다.

아직 모바일 기기에 대한 이해가 부족하고 기기와 모델 실행 환경을 완벽하게 통제하지 못했기 때문에 TFLite 모바일 GPU를 잘 사용하기 위한 가이드라인이 이렇다고 확실하게 제시할 수는 없습니다. 이번 실험이 넓은 범위의 연산자들과 수많은 기기를 대표할 수는 없으며, TFLite GPU 사용과 관련해서도 아직 남아 있는 의문이 많은 상태이기도 합니다. 하지만 향후 모바일에 사용할 뉴럴 네트워크를 설계할 때 이번 실험과 결과를 참고한다면 성능 향상에 의미 있는 도움이 될 수 있다고 생각합니다. 아직 Android 기기는 실험해 보지 않았는데요. 이 글에 많은 관심을 보여주시고, 또 Android에 맞춰 모델 개선이 필요한 시점이 온다면 Android 기기도 추가로 실험해서 올려보겠습니다. 긴 글 읽어주셔서 감사합니다.

M1 뉴럴엔진 성능맛보기

오랜만에 waifu2x를 쓸일이 생겨서, 설치하는 김에 여러 기기에서 동일 이미지로 waifu2x를 돌려서 시간을 측정해봤습니다. 구현체별로 퀄리티 차이가 있을수도 있고 시간도 폰 스탑워치로 대충 쟀으니 그냥 재미로 봐주세요.

측정에 사용한 이미지(모바일 데이터주의)

사실 원본 이미지는 6000×2248인데, 그대로 돌리면 재미없으니 한번 2x 돌리고 나온 이미지를 사용했습니다.

옵션은 모든 측정에서 동일하게 no tta 모드에 노이즈1, 배율2x 입니다.

데스크탑 사양: 2700x+1070+32gb

CPU로 돌리면 한참걸리는건 당연한거고 Vulkan API를 사용하는 백엔드가 cuDNN을 사용하는 caffe보다 빠른게 신기하네요.

Vulkan 구현

CoreML 구현

둘다 로제타 없이 돌아가는 유니버설 바이너리입니다. 결과물의 퀄리티는 잘 모르겠는데 CoreML이 매우 빠르네요. Vulkan통해서 GPU로 돌린 결과도 생각보다 나쁘지 않습니다.

* 돌리고 나니 하판에서 프로세서부분이 약간 뜨뜻합니다.

ios CoreML 구현

M1에서 CoreML이 보여준 시간이 인상깊어서 아이폰도 혹시? 해서 돌려봤는데 그렇게 빠르지는 않네요. A13이랑 M1간의 체급차이도 있고 스마트폰 폼팩터의 한계도 있으니 어쩔수 없지 싶습니다.

M1 max 딥러닝 뉴럴엔진 어쩌고하는 애들은 이거 봐라

일단 m1max가 단정밀도(Single precision)기준으로 10Tflops

M1 pro 5.3 Tflops

1080ti가 10 Tflops

2080 11 tTflops

3060이 13 Tflops

3070 20.3

일단 gpu 깡성능으로 M1 max는 3060 밑임. 이건 분명함.

딥러닝 활용한 upscaling 등이 잘 돌아가보이는거는 cpu에 neural engine이 같이 돌아가기 때문임(이건 gpu가 아닐 뿐더러 이걸 딥러닝한다고 부르지 않음, 이건 그냥 추가적인 병렬계산의 이점임)

근데 문제는 대부분의 개발자 중 gpu 쓰는 사람들은 gpu + neural engine으로 프로그램 돌리는게 아님.

딥러닝 잘돌아간다는 말도 분명히 할 필요가 있음. 모델링할때 neural engine은 안 돌아감.

neural engine 이름 붙어있다고 헷갈리는건 알겠는데 구별은 제대로 하자고

애플, 자체 개발 2세대 M2 칩 공개…M1 대비 CPU 성능 18% 향상

애플이 자체 개발한 프로세서인 M시리즈 2세대 ‘M2’ 칩을 공개했다. 애플은 이번 M2 칩 출시로 맥을 위한 자체 개발 프로세서 혁신을 이어간다고 밝혔다.

애플의 두 번째 자체 개발 프로세서 ‘M2’ 이미지 / 애플

애플이 7일 WWDC(세계개발자회의) 2022에서 공개한 M2 칩은 2020년 출시했던 첫 자체 개발 프로세서 M1 칩 대비 CPU 성능이 18%, GPU 성능이 35% 향상됐다. 또 인공지능 연산을 위한 뉴럴 엔진(Neural Engine)의 속도는 40% 향상됐다.

이번 M2 칩은 5나노미터 기술을 활용하며, M1 대비 25% 확장된 규모의 200억개 트랜지스터를 사용해 제작된다. 애플 측에 따르면 트랜지스터 추가 활용으로, M1 대비 50% 확장된 메모리 대역폭과 최대 24GB의 고속 통합 메모리를 제공한다.

M2 칩 CPU는 8코어, GPU는 10코어로 설계됐다. 타 CPU 대비 코어 수는 적지만 전력 효율성을 강화했다는 설명이다. GPU는 M1 대비 25% 향상된 그래픽 성능을, 최대 전력일 때 35% 향상된 성능을 제공한다.

M1 대비 40% 향상된 속도의 뉴럴 엔진은 초당 최대 15조8000억 회의 연산을 처리한다. 미디어 엔진은 확장된 대역폭의 동영상 디코더를 포함하며 8K H.264 및 HEVC 동영상을 지원한다.

M2 칩은 M1 대비 CPU, GPU, 뉴럴 엔진 등이 크게 향상됐다. / 애플

키워드에 대한 정보 뉴럴 엔진

다음은 Bing에서 뉴럴 엔진 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리

  • SoC
  • ASIC
  • FPGA
  • 반도체
  • AI
  • RISC-V
  • 4차산업혁명
  • VLSI
  • 시스템반도체
  • 전자공학
  • 인공지능
  • 지능형반도체
[눈 #감고 #듣는] #NPU, #뉴럴엔진, #TPU #개념 #정리


YouTube에서 뉴럴 엔진 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [눈 감고 듣는] NPU, 뉴럴엔진, TPU 개념 정리 | 뉴럴 엔진, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment