Apple Neural Engine: Architecture, Programming, and Performance
이 논문은 공식적인 문서가 부재한 상황에서 온디바이스 연구를 위한 기초 자료를 제공하기 위해, 사용자 공간 직접 접근과 역컴파일을 통해 여러 세대의 애플 뉴럴 엔진(ANE)에 걸친 아키텍처, 소프트웨어 스택, 그리고 성능 특성을 상세히 기술하며 이를 포괄적으로 역공학한 결과를 제시한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
현대 세계에서 우리의 스마트폰과 컴퓨터는 특정 문제를 빠르게 해결하기 위해 설계된 전문화된 도구들로 가득 차 있습니다. 중앙 프로세서가 일반적인 작업을 처리하고 그래픽 프로세서가 이미지를 렌더링하는 한편, 기기에서 직접 인공지능을 실행하기 위해 필수적인 세 번째 구성 요소가 종종 숨겨진 채 존재합니다. 이 구성 요소는 방대한 양의 단순한 수학적 계산, 구체적으로는 사진 속 얼굴을 인식하거나 음성 명령을 텍스트로 변환하는 작업의 핵심인 숫자의 곱셈과 덧셈을 수행하도록 설계된 전용 엔진입니다. 수년 동안 이 엔진은 블랙박스였습니다. 소프트웨어 개발자들이 컴퓨터에 이 엔진을 사용하도록 요청할 수는 있었지만, 그것이 어떻게 작동하는지, 실제로 무엇을 할 수 있는지, 또는 복잡한 중간 단계를 거치지 않고 어떻게 직접 대화할 수 있는지 알 방법이 없었습니다.
한 연구자가 이제 그 블랙박스를 열었습니다. 애플 기기에서 실행되는 소프트웨어를 면밀히 조사하고 하드웨어 자체를 측정함으로써, 물리적인 실리콘 칩부터 이를 구동하는 보이지 않는 명령어에 이르기까지 전체 시스템을 매핑했습니다. 그들의 연구는 이 엔진이 범용 컴퓨터가 아니라, 특정 유형의 수학을 극도로 빠른 속도와 낮은 전력 소비로 처리하도록 구축된 고도로 전문화된 기계라는 점을 밝혀냈습니다. 그들은 이 엔진이 특정 작업에는 믿을 수 없을 정도로 빠르지만, 계산할 수 있는 내용과 숫자를 처리하는 방식에 엄격한 제한이 있다는 것을 발견했습니다. 이러한 이해는 개발자들이 더 빠르고 배터리를 적게 사용하는 더 나은 애플리케이션을 구축할 수 있게 해주지만, 동시에 이 엔진이 모든 문제에 대한 마법 같은 해결책이 아니라는 점도 보여줍니다. 그것은 정밀한 도구이며 특정 직무를 가지고 있고, 이를 올바르게 사용하려면 그 고유한 규칙을 이해해야 합니다.
연구자는 일반적으로 엔진을 사용자로부터 숨기는 표준 소프트웨어 계층을 우회하는 것으로 시작했습니다. 작업이 어디에서 실행될지를 결정하도록 고수준 애플리케이션에 요청하는 대신, 그들은 엔진 자체로 가는 직접적인 경로를 찾아내어 명령을 보내고 결과를 완전히 통제하며 측정할 수 있었습니다. 그들은 엔진을 명령 세트를 받고, 이를 실행한 다음, 완료되었음을 신호하는 독립적인 기계로 취급했습니다. 그들은 엔진이 표준 컴퓨터처럼 명령을 하나씩 처리하는 것이 아니라, 작업이 시작되기 전에 미리 계획된 데이터 이동과 계산의 시퀀스를 실행한다는 것을 발견했습니다. 이는 엔진이 실행되는 동안 처리 중인 데이터에 따라 결정을 내릴 수 없음을 의미합니다. 즉, 경로는 사전에 배치되어야 합니다.
가장 중요한 발견 중 하나는 엔진이 숫자를 처리하는 방식에 관한 것입니다. 엔진은 대부분의 컴퓨터에서 사용하는 표준 형식보다 숫자를 저장하는 데 더 적은 비트를 사용하는 하프 프리시전(half-precision)이라는 형식을 사용하여 계산을 수행합니다. 이 선택은 엔진이 데이터를 훨씬 더 빠르게 이동시키고 에너지를 덜 사용하게 해주지만, 정밀도라는 대가를 따릅니다. 연구자는 엔진이 계산의 누적 합계를 유지하기 위해 매우 넓은 내부 레지스터를 사용하여 이를 보완한다는 것을 발견했습니다. 이 넓은 레지스터는 안전망 역할을 하여, 개별 단계에서는 작은 숫자를 사용하더라도 최종 결과가 정확하게 유지되도록 합니다. 그러나 이 시스템에는 한계점이 있습니다. 만약 계산이 큰 양수에서 큰 음수를 상쇄하여 아주 작은 차이를 구하는 과정을 포함한다면, 초기 큰 숫자들의 반올림 과정에서 작은 차이가 손실되기 때문에 엔진은 정밀도를 잃게 됩니다. 이러한 특정 사례의 경우, 엔진을 사용할 수 없으며 해당 작업은 컴퓨터의 다른 부분으로 넘겨져야 합니다.
연구는 또한 엔진이 수행할 수 있는 연산을 정확히 매핑했습니다. 엔진은 이미지의 형태를 인식하거나 음파를 처리하는 것과 같은 시각 및 음성 관련 작업에 탁월합니다. 엔진은 이미지의 가장자리와 특징을 감지하는 데 사용되는 수학적 연산인 컨볼루션(convolutions)과 같은 복잡한 패턴을 처리할 수 있습니다. 그러나 연구자는 엔진이 모든 것을 할 수 있는 것은 아니라는 점을 발견했습니다. 3차원 데이터나 특정 유형의 메모리 업데이트를 포함하는 특정 유형의 계산은 하드웨어에서 지원되지 않습니다. 또한 그들은 엔진의 역량이 특정 칩 세대에 따라 달라진다는 것을 발견했습니다. 예를 들어, 오래된 칩은 공간을 절약하기 위해 데이터를 특정 방식으로만 압축할 수 있는 반면, 최신 칩은 더 많은 형식으로 데이터를 압축할 수 있어 정보를 더 빠르게 이동시키고 전력을 더 적게 사용할 수 있습니다.
성능 측정 결과, 엔진이 적절한 종류의 작업에 사용될 때 유사한 작업을 위해 자주 사용되는 그래픽 프로세서보다 훨씬 더 빠르고 효율적이라는 것이 나타났습니다. 특정 유형의 이미지 처리 작업에서 엔진은 그래픽 프로세서보다 거의 4배 더 빠르면서도 에너지 소비는 아주 일부분만을 사용하는 것으로 나타났습니다. 이러한 효율성은 데이터를 메모리와 계산 유닛 사이에서 불필요한 정지 없이 직접 이동시키는 엔진의 설계 덕분입니다. 그러나 이 속도는 데이터를 메인 메모리에서 가져오는 속도에 의해 제한됩니다. 만약 작업이 엔진의 작은 빠른 내부 메모리에 담을 수 있는 것보다 더 많은 데이터를 요구한다면, 엔진이 데이터를 받기 위해 기다려야 하므로 성능이 떨어집니다.
연구자는 또한 엔진이 자신의 메모리와 상태를 어떻게 관리하는지 밝혀냈습니다. 엔진은 대화의 기억이나 학습 과정의 상태와 같은 특정 데이터를 내부에 저장해 둘 수 있습니다. 이는 일련의 단계들을 거치는 동안 엔진이 데이터를 메인 컴퓨터로 다시 주고받을 필요가 없음을 의미하며, 이는 엄청난 시간을 절약해 줍니다. 그들은 엔진이 여러 단계에 걸쳐 이 데이터를 보유할 수 있음을 발견했으며, 이를 통해 중단 없이 정보의 스트림을 연속적으로 처리할 수 있습니다. 이러한 능력은 실시간 언어 번역이나 텍스트 생성과 같이, 엔진이 다음에 무엇을 말할지 결정하기 위해 방금 자신이 말한 내용을 기억해야 하는 애플리케이션에 매우 중요합니다.
그 강력함에도 불구하고, 이 엔진은 보편적인 해결책이 아닙니다. 연구자는 한 번에 처리할 수 있는 데이터 크기에 대한 명확한 한계를 확인했습니다. 만약 작업이 2메가바이트보다 큰 작업 세트를 요구한다면, 엔진은 빠른 메모리에 필요한 모든 정보를 담을 수 없기 때문에 멈추게 됩니다. 이 한계는 개발자들이 큰 작업을 더 작은 조각으로 나누도록 강요하며, 이는 소프트웨어의 복잡성을 더합니다. 더욱이, 엔진은 범용 프로세서가 아닙니다. 임의의 프로그램을 실행할 수 없습니다. 그것은 하드웨어에 맞게 세심하게 최적화된 특정 컴파일된 명령만을 실행합니다. 이는 엔진을 위한 소프트웨어가 엔진의 특정 제약 사항을 염두에 두고 구축되어야 함을 의미하며, 기존의 어떤 프로그램이든 가져와서 단순히 더 빠르게 실행할 수는 없다는 것을 뜻합니다.
연구는 또한 엔진을 둘러싼 복잡한 보안 및 액세스 제어도 밝혀냈습니다. 연구자는 엔진과 직접 대화할 수 있는 방법을 찾아냈지만, 이 경로가 제조사에 의해 공식적으로 지원되지 않는다는 점도 발견했습니다. 엔진은 소프트웨어가 실행되기 전에 서명되고 검증되어야 하는 시스템에 의해 보호되며, 이를 통해 신뢰할 수 있는 프로그램만이 하드웨어에 접근할 수 있도록 보장합니다. 이 보안 모델은 승인되지 않은 코드가 엔진에서 실행되는 것을 방지하지만, 이는 또한 연구자가 사용한 직접적인 경로가 취약하며 소프트웨어 업데이트에 의해 깨질 수 있음을 의미합니다. 엔진은 보안이 적용된 격리된 구성 요소로 설계되었으며, 여기에 도달하는 것은 가능하지만 그러기 위해서는 복잡한 권한과 서명의 지형을 탐색해야 합니다.
결국, 이 작업은 강력하지만 특화된 기계에 대한 명확한 그림을 제공합니다. 애플 뉴럴 엔진(Apple Neural Engine)은 더 이상 신비로운 블랙박스가 아닙니다. 그것은 알려진 강점과 약점을 가진 잘 정의된 구성 요소입니다. 그것은 현대 인공지능을 구동하는 특정 수학적 작업에 탁월하며, 범용 프로세서가 따라올 수 없는 속도와 효율성을 제공합니다. 그러나 모든 문제를 해결할 수 있는 마법 지팡이는 아닙니다. 그것은 수행할 수 있는 계산의 유형, 처리할 수 있는 데이터의 크기, 그리고 유지할 수 있는 정밀도에 대해 엄격한 제한을 가지고 있습니다. 이러한 한계를 이해함으로써, 개발자들은 엔진의 자연스러운 능력에 맞서 싸우는 대신, 엔진의 능력에 완벽하게 부합하는 애플리케이션을 구축할 수 있습니다. 연구는 온디바이스 인텔리전스의 미래가 엔진을 더 범용적으로 만드는 것이 아니라, 그 특화된 설계 안에 완벽하게 들어맞는 소프트웨어를 설계하는 데 있음을 보여줍니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.