Apple Neural Engine 4분 소요

애플 뉴럴 엔진, LLM에서도 GPU보다 유리할까

핵심 요약

  • 뉴럴 엔진 같은 NPU의 장점은 모델에 쓰이는 연산이 칩의 지원 기능과 잘 맞을 때 드러납니다.
  • LLM은 입력을 읽을 때와 답변을 생성할 때 서로 다른 성능 특성을 보입니다.
  • 소수의 요청에 답변을 생성할 때는 연산량보다 메모리 대역폭이 병목이 될 수 있습니다.
  • NPU와 GPU를 비교하려면 같은 모델과 품질 조건에서 응답 속도와 에너지 소비를 함께 봐야 합니다.

기기 안에서 AI를 직접 실행하려다 보면 이런 기대를 하게 됩니다. “AI 전용칩이 있으니, GPU보다 잘 돌리지 않을까?” 애플 뉴럴 엔진도 그런 기대를 받지만, 실제 성능은 어떤 작업을 어떤 조건에서 실행하느냐에 따라 달라집니다.

전용칩은 무엇을 전용으로 처리할까요?

애플의 뉴럴 엔진은 신경망 연산을 처리하도록 만든 NPU입니다. NPU는 신경망 처리 장치를 뜻합니다. GPU도 신경망 계산에 쓰이지만, 그보다 다양한 종류의 병렬 계산을 처리합니다.

전용 설계는 반복되는 계산을 효율적으로 처리하는 데 유리합니다. 신경망에서 자주 쓰는 행렬 연산에 맞춰 계산 장치와 데이터 이동 방식을 구성할 수 있기 때문입니다. 필요한 데이터를 칩 내부에서 잘 재사용하면 메모리를 오가는 비용도 줄일 수 있습니다.

다만 ‘신경망’이라고 해서 모두 같은 작업을 하지는 않습니다. 사진을 분류하는 모델과 긴 대화를 이어가는 언어 모델은 계산 순서도, 필요한 메모리도 다릅니다.

그래서 모델이 실행 환경과 잘 맞는지 확인해야 합니다. 우선 칩이 모델에 쓰이는 연산을 지원해야 합니다. 입력 크기가 바뀌어도 효율을 유지하는지 살펴야 하고, 모델을 칩에 맞게 변환하는 소프트웨어도 제 역할을 해야 합니다. 지원하지 않는 연산을 다른 처리 장치에서 실행해야 한다면, 장치를 연결하고 동기화하는 비용까지 생길 수 있습니다.

AI 전용이라는 이름은 무엇을 위해 설계했는지 알려줍니다. 모든 AI 모델에서 가장 빠르다는 뜻은 아닙니다.

LLM은 읽을 때와 답할 때 다르게 움직입니다

LLM 추론은 크게 두 단계로 나눠 볼 수 있습니다.

먼저 질문과 첨부 문서를 읽는 프리필 단계입니다. 입력을 토큰 단위로 처리해 답변을 만드는 데 필요한 정보를 준비합니다. 토큰은 모델이 글을 다루는 단위로, 단어나 단어의 일부에 해당할 수 있습니다.

이 단계에서는 여러 입력 토큰의 계산을 묶어서 처리할 여지가 큽니다. 입력이 충분히 길면 칩의 행렬 계산 능력을 그만큼 잘 활용할 수 있습니다.

그다음은 답변을 이어 쓰는 디코딩 단계입니다. 일반적인 자기회귀 LLM은 앞서 생성한 토큰을 바탕으로 다음 토큰을 결정합니다. 이런 구조에서는 답변 전체를 처음부터 한꺼번에 계산하기 어렵습니다.

특히 한두 개의 요청을 처리할 때는 계산 장치를 충분히 쓰기도 전에 데이터를 가져오는 속도가 병목이 될 수 있습니다. 다음 토큰을 만들 때마다 모델의 가중치를 반복해서 읽는 데 드는 비용이 크기 때문입니다. 이때 메모리 대역폭이 중요해집니다. 일정 시간 동안 메모리에서 가져올 수 있는 데이터의 양을 뜻합니다.

대화가 길어지면 이전 토큰의 어텐션 계산에 필요한 정보를 보관하는 KV 캐시도 영향을 줍니다. KV 캐시가 있으면 과거 내용을 매번 처음부터 계산하지 않아도 되지만, 문맥이 길어질수록 저장하고 읽어야 할 데이터는 늘어납니다.

계산 능력을 높여도 모든 단계가 같은 만큼 빨라지지는 않습니다. 계산대가 많아도 물건을 공급하는 통로가 좁으면 기다려야 하는 것과 비슷합니다.

역공학에서는 성능이 꺾이는 조건을 살핍니다

칩을 ‘뜯어본다’고 해서 반드시 회로를 직접 관찰하는 것은 아닙니다. 입력과 실행 조건을 바꿔가며 처리 시간이나 동작이 어떻게 달라지는지 측정하고, 이를 바탕으로 내부 제약을 추론하는 것도 역공학의 한 방법입니다.

이런 방식으로 뉴럴 엔진을 살펴볼 때는 최고 속도만큼이나 성능이 달라지는 조건을 눈여겨봐야 합니다.

예를 들어 입력 길이를 늘릴 때 지연 시간도 일정하게 늘어나는지 확인할 수 있습니다. 행렬 크기만 조금 바꿨는데 속도가 크게 달라질 수도 있습니다. 수치 정밀도를 바꿔보는 방법도 있습니다. 바꾼 정밀도로 실행할 수 있는지, 처리 효율은 어떻게 달라지는지가 단서가 됩니다.

다만 관찰한 결과와 그 원인은 구분해야 합니다. 특정 크기에서 느려졌다는 사실만으로 내부 메모리 용량이나 회로 구조를 단정할 수는 없습니다. 컴파일러가 계산을 나누는 방식이나 실행 중 메모리를 관리하는 방식도 영향을 줄 수 있기 때문입니다.

측정한 성능에는 하드웨어와 소프트웨어의 영향이 함께 반영됩니다. 역공학은 그 결과가 어디에서 비롯됐는지 범위를 좁혀가는 데 도움이 됩니다. 한 번의 벤치마크만으로 NPU 전체의 가능성을 판단하기는 어렵습니다.

NPU와 GPU 중 어느 쪽이 유리한지는 사용 조건에 달렸습니다

NPU가 지원하는 범위에 잘 맞는 모델을 반복해서 실행한다면 전용 설계의 효율을 기대할 수 있습니다. 모델 구조나 연산을 자주 바꾸는 환경에서는 GPU 실행 환경의 유연성이 더 중요할 수 있습니다. 어느 쪽이 유리한지는 실제로 쓸 모델과 소프트웨어를 조합해 확인해야 합니다.

LLM을 비교할 때는 모델 이름을 맞추는 것만으로 부족합니다. 같은 가중치를 사용하는지부터 확인해야 합니다. 수치를 저장하는 정밀도도 같아야 하고, 입력과 출력 길이도 비슷해야 합니다. 숫자를 표현하는 정밀도를 낮추는 양자화를 적용했다면 답변 품질까지 살펴야 합니다.

사용자가 느끼는 속도도 숫자 하나로 설명할 수는 없습니다. 질문을 보낸 뒤 첫 토큰이 나올 때까지의 시간과 답변이 시작된 뒤의 생성 속도를 나눠 봐야 합니다. 문서를 길게 읽히는 작업인지, 짧은 대화를 반복하는 작업인지에 따라 두 지표의 중요도가 다릅니다.

배터리로 쓰는 기기라면 같은 작업을 끝내는 데 에너지가 얼마나 드는지도 중요합니다. 순간 소비전력이 낮아도 실행 시간이 길면 총에너지는 적게 들지 않을 수 있습니다. 한 사람이 대화할 때와 여러 요청을 묶어서 처리할 때도 칩을 활용하는 정도가 달라집니다.

애플 뉴럴 엔진의 성능을 평가할 때도 어떤 작업에 쓸지부터 정해야 합니다. LLM에서는 연산 능력뿐 아니라 데이터가 얼마나 잘 이동하는지, 모델을 제대로 지원하는지 확인해야 합니다. 실제로 응답을 받아보는 경험도 중요합니다. 긴 문서를 읽고 첫 답을 내놓는 속도가 필요한지, 배터리를 아끼며 대화를 오래 이어가는 능력이 필요한지에 따라 평가 기준이 달라집니다.

Apple Neural Engine NPU LLM

댓글

    댓글을 불러오는 중...