2026년 머신러닝을 위한 Metal
Apple의 M5에는 neural accelerator라는 새로운 하드웨어 블록이 탑재되어 있는데, 이것은 Neural Engine 위에 있지도 않고 어딘가의 코프로세서에 떨어져 있지도 않습니다. 각 GPU 셰이더 코어 내부에, 기존 파이프라인과 나란히 자리하며, LLM의 prefill 단계처럼 밀집되고 연산 병목이 있는 작업을 가속하도록 만들어졌습니다.1 그 배치가 바로 2026년 Metal의 이야기 전부입니다. 삼각형을 그리려고 손을 뻗던 GPU가 이제는 행렬 곱셈을 실행하려고 손을 뻗는 GPU가 되었고, Apple은 WWDC26 내내 개발자에게 그것을 직접 사용할 수 있는 API를 건네주었습니다. Metal은 일급 머신러닝 연산 표면이며, 그래픽스라는 틀로는 더 이상 그것이 하는 일을 담아낼 수 없습니다.
수년 동안 온디바이스 ML 이야기는 Metal 위쪽 계층에서 펼쳐졌습니다. Core ML은 Neural Engine을 대상으로 삼았고, MLX는 GPU를 NumPy 형태의 배열 API로 감쌌으며, MetalFX는 게임에 밀폐된 업스케일러를 제공했습니다. Metal 자체는 이 프레임워크들이 딛고 선 기반이었지, 대부분의 ML 개발자가 직접 작성하는 계층은 아니었습니다. WWDC26은 그 고도를 바꿨습니다. Apple은 텐서 연산을 위한 Metal Shading Language API를 출시했고, 커스텀 커널을 Core AI에 끼워 넣을 수 있게 했으며, 뉴럴 네트워크가 셰이더 내부에서 인라인으로 돌아가는 모습을 보여주었습니다. Metal 수준까지 내려갈 이유는 이제 이름을 댈 수 있을 만큼 구체적입니다.
TL;DR
- M5 neural accelerator는 각 GPU 셰이더 코어 내부에 자리한 새로운 하드웨어 블록으로, LLM prefill 같은 밀집되고 연산 병목이 있는 작업을 가속하도록 설계되었습니다.1
- TensorOps는 GPU에서 텐서 연산(행렬 곱셈, 컨볼루션)을 가속하는 Metal Shading Language API이며, Apple silicon 세대 전반에 걸쳐 사용 가능한 하드웨어 가속을 자동으로 사용합니다.1
- Metal 텐서는 양자화 데이터 타입을 기본적으로 지원합니다. macOS와 iOS 26 업데이트에서 4비트 및 8비트 정수, macOS와 iOS 27에서는 4비트 및 8비트 부동소수점과 2비트 정수 타입에 더해 E8M0 블록 단위 스케일 팩터가 추가됩니다.1
- 뉴럴 렌더링은 Metal 4에서 세 가지 수준에 걸쳐 있습니다. 블랙박스로서의 MetalFX 디노이징, 커맨드 버퍼 안에서 학습된 모델을 돌리는 ML 커맨드 인코더, 그리고 셰이더 안에서 직접 작은 네트워크를 구성하는 TensorOps입니다.2
- MLX Swift는 고수준 수치 계산 경로를 그대로 유지합니다. 수식처럼 읽히는 배열 코드, 지연 평가, 자동 미분, 그리고 기본값으로서의 GPU 실행입니다.4
- 새로운 성능 측정 도구(룩백 트레이스 수집,
metalperftrace, StateReporting API)는 긴 세션 전반에 걸쳐 이 모든 것을 측정하는 고리를 닫습니다.3
Metal 텐서와 커스텀 ML 커널
Apple은 ML 스택을 여러 계층으로 그립니다. 최소한의 코드로 배포하기 위한 맨 위에 Core AI와 MLX, 그 아래에 고성능 커널을 위한 Metal Performance Shaders, 그리고 그 모든 것의 밑에서 저수준 가속을 담당하는 Metal Performance Primitives와 TensorOps 라이브러리가 있습니다.1 Metal 수준까지 내려가는 데에는 명확한 이유가 있습니다. ML 연구는 빠르게 움직이므로 Core AI 같은 고수준 프레임워크에 끼워 넣을 커스텀 연산을 구현하고 싶을 수 있습니다. MLX나 llama.cpp 같은 프레임워크에 기여하고 있을 수도 있습니다. 또는 그 연산을 인라인으로 필요로 하는 Metal 기반 애플리케이션을 작성하고 있을 수도 있습니다.1
Apple의 Shiyao가 M5 neural accelerator에 대해 이야기합니다. 각 셰이더 코어 내부에 자리하며 LLM prefill처럼 밀집되고 연산 병목이 있는 작업을 위해 만들어진 하드웨어 블록입니다 (WWDC26, 세션 330).
TensorOps는 GPU에서 텐서 연산, 그중에서도 행렬 곱셈과 컨볼루션을 가속하는 Metal Shading Language API이며, 세대별 코드를 작성하지 않아도 M5 neural accelerator를 온전히 활용합니다.1 이 라이브러리는 사용 가능한 하드웨어를 읽어 그것을 사용합니다. 특정 GPU에 맞춰 SIMD 그룹 연산을 손수 짜는 대신 TensorOps를 통해 작업하는 의미가 바로 그 이식성에 있습니다.
2026년에 가장 실용적인 추가 사항은 기본 양자화입니다. 모델은 계속 커지고 추론은 대개 메모리 대역폭 병목이 있으므로, 가중치를 압축하면 더 많은 모델을 메모리에 담으면서 대역폭도 절약합니다.1 표준적인 방법은 이렇습니다. 16비트 반정밀도 가중치를 가져와 4비트로 줄이고, 양자화된 값을 연산 시점에 그것들을 원래 범위로 되돌리는 스케일 팩터와 짝지웁니다.1 TensorOps는 이제 양자화 데이터 타입을 기본적으로 다룹니다. macOS와 iOS 26 업데이트에서 4비트 및 8비트 정수 타입이 추가되었고, macOS와 iOS 27에서는 그것이 4비트 및 8비트 부동소수점 타입과 2비트 정수로 확장됩니다.1 양자화 텐서를 만드는 것은 일반 텐서와 거의 똑같습니다. 디스크립터의 속성을 채우고, 양자화된 dataType을 지정한 다음, Metal 디바이스에서 newTensorWithDescriptor를 호출하면 됩니다.1
스케일 팩터에도 깔끔한 자리가 마련되었습니다. macOS와 iOS 27에서는 하나의 MTLTensor가 양자화 데이터와 나란히 자신의 스케일을 추가 스케일 평면으로 가질 수 있게 되어, 각 스케일 요소가 데이터 요소 블록에 적용되는 FP8 E8M0 블록 단위 스케일 팩터 형식을 지원합니다.1 스케일 평면을 위한 디스크립터를 만들고, 그 dataType과 블록 팩터를 설정하고, 보조 평면 맵을 원본 텐서 디스크립터에 붙이면 양자화 데이터, 스케일, 메타데이터가 하나의 텐서 객체에 담깁니다.1 커널 안에서는 스케일 평면을 선언하고(예를 들어 32×1 블록 크기의 fp8_e8m0이라면 32개의 데이터 요소마다 하나의 스케일을 공유합니다), 전체 텐서 타입을 선언하고, 타일 크기를 지정한 matmul2d_descriptor를 준비하고, matmul2d 연산을 만들어 양자화 텐서를 넘기면 TensorOps가 역양자화를 대신 처리해 줍니다.1
라이브러리가 모르는 커스텀 양자화 형식이 필요할 때는 cooperative tensor로 직접 역양자화한 다음 matmul2d 연산에 넘깁니다. cooperative tensor는 자신의 저장소를 matmul에 참여하는 스레드들의 스레드 전용 메모리 전체에 분산시키므로, 데이터가 레지스터에 머무르고 스레드그룹 메모리를 거치는 왕복을 건너뜁니다.1
세션 330의 대표 예시는 모든 트랜스포머의 핵심에 있는 융합 어텐션 커널, FlashAttention입니다. 어텐션은 Q와 K를 곱하고, 중간 행렬의 각 행에 대해 SoftMax를 계산한 다음 V를 곱합니다. FlashAttention은 이 셋을 하나의 커널로 융합합니다.1 execution_simdgroup 연산 스코프를 사용하면 각 SIMD 그룹이 중간 행렬의 완전한 행을 소유하여 그룹 간 데이터 교환 없이 SoftMax를 계산할 수 있고, 중간 행렬을 cooperative tensor에 저장하고, reduce_rows로 행 단위 리덕션을 계산합니다.1 2026년에 가장 중요한 개선은 이것입니다. macOS 26에서는 두 번째 matmul 전에 cooperative tensor를 스레드그룹 메모리에 저장해야 했지만, 이제는 is_compatible_as_left 레이아웃 검사를 통과한 뒤 get_left_input_cooperative_tensor로 곧장 흘려 넣을 수 있습니다.1 검사에 실패하면 스레드그룹 왕복으로 폴백하지만, 어느 쪽이든 op.run은 동일합니다.1
Apple은 그 커스텀 커널을 실제 모델에 통합하여 고리를 닫았습니다. Core AI는 PyTorch 모델을 변환하고 커스텀 Metal 커널을 지원하므로, 팀은 FlashAttention 본체를 Python의 문자열로 정의하고, TorchMetalKernel을 등록하고, Hugging Face의 기본 어텐션을 그 커널을 호출하는 것으로 교체하고, PyTorch에서 이미지 세그멘테이션 모델 SAM 3를 최적화된 Core AI 자산으로 내보내 테스트 이미지 속 자동차를 정확히 세그멘테이션했습니다.1 이것이 손으로 작성한 GPU 커널에서 출시 가능한 모델로 이어지는 경로입니다.
실시간 뉴럴 렌더링
두 번째 전선은 렌더링입니다. 역사적으로 해석적 방법을 사용해 온 많은 기법, 이를테면 뉴럴 디노이징, 뉴럴 텍스처, 학습된 톤 매핑 등은 이제 파이프라인의 어느 단계에서든 머신러닝으로 돌려 품질, 성능, 메모리 사용량을 개선할 수 있습니다.2 Metal 4는 세 가지 제어 수준을 제공하며, 어느 수준을 고를지는 의도적인 절충입니다.
Apple의 Yulia가 Metal 4 렌더링 파이프라인에서 ML의 세 가지 수준을, MetalFX에서부터 M5와 A19 Pro neural accelerator에서 돌아가는 TensorOps 네트워크까지 안내합니다 (WWDC26, 세션 359).
가장 높은 수준에서 MetalFX는 곧바로 사용할 수 있는 뉴럴 디노이저와 업스케일러를 완전히 통합된 블랙박스로 제공하며, 라이브 뷰포트의 저지연 요구에 맞춰 설계되었습니다.2 패스 트레이서에서는 상호작용성을 유지하기 위해 프레임 예산이 픽셀당 한 샘플만 허용할 수 있는데, 한 샘플은 노이즈가 많습니다. MetalFX는 그 노이즈 많은 프레임에 보조 입력(디퓨즈 알베도, 깊이, 그 외 몇 가지)을 더해 공간적 기법과 시간적 기법을 모두 사용하여 깨끗하고 거의 최종에 가까운 이미지를 만들어 냅니다.2 Cinema 4D의 실시간 패스 트레이서인 Maxon의 Redshift Live가 이를 채택했고, Apple은 그 통합을 세 가지 모범 사례로 압축했습니다. 보조 입력을 노이즈 없이 유지할 것(디퓨즈 알베도가 가장 강한 디노이징 신호입니다), 시청자가 실제로 보는 것을 저장할 것(거울에는 일차 표면 대체, 유리에는 Fresnel 블렌드 알베도), 그리고 모션 벡터를 올바르게 맞출 것(MetalFX는 디지터된 모션 벡터를 기대하며, 그렇지 않으면 가장자리가 깜빡입니다)입니다.2
중간 수준은 Metal 4 ML 커맨드 인코더로, 학습된 모델을 컨텍스트 전환 없이 커맨드 버퍼 안에서 직접 실행합니다.2 Apple이 다룬 예시는 뉴럴 톤 매핑입니다. 렌더러의 후처리 체인(톤 매핑, 컬러 그레이드, 필름 에뮬레이션)은 얼마든지 복잡해질 수 있지만, 뉴럴 네트워크는 그 변환 전체를 학습할 수 있습니다. HDRNet(Gharbi와 동료들의 2017년 아키텍처) 같은 네트워크를 PyTorch에서 학습하고, MTLPackage로 내보내고, function descriptor와 machine learning pipeline descriptor로 불러온 다음, argument table로 디스패치합니다.2 그러면 뉴럴 톤 매퍼가 여러 단계의 후처리 체인 전체를 하나의 뉴럴 평가로 대체하고, 패스 트레이서 및 MetalFX와 같은 커맨드 버퍼 안에 인코딩되어 같은 프레임에서 실행됩니다.2
가장 깊은 수준은 셰이더 안의 TensorOps로, 세션 330과 같은 라이브러리이지만 수천 개 이하의 파라미터로 이루어진 작은 네트워크를 구성하는 데 쓰이며, 하나의 장면에서 학습되고 일반화를 의도하지 않습니다.2 네트워크가 ALU와 텍스처 샘플링 명령어 사이에 인라인으로 들어맞기 때문에 온라인 학습이 가능해집니다. 변화하는 세계 조건에 프레임마다 적응하는 모델입니다. Apple의 예시는 이미지 기반 조명을 위한 스카이 프로브로, 동적인 낮밤 주기가 사전 계산된 조명 신호를 낡게 만듭니다. 그 해법이 완전 연결 MLP, 즉 방향을 세 개의 float로 받아 조명을 색으로 반환하는 3-4-4-3 네트워크로, 셰이더 안에서 순방향으로 평가되고 프레임마다 역전파 패스로 온라인 학습됩니다.2 SIMD 그룹 실행 스코프를 사용하면 참여하는 모든 스레드가 같은 행렬 곱셈에 작업하고 저장소가 스레드 전체에 퍼지는 cooperative tensor를 얻으므로, 각 계층을 matmul2d로 통과시키고, 활성화를 제자리에서 적용하고, 메인 메모리로의 왕복 없이 셰이더 안에서 곧바로 출력을 읽습니다. 이것이 세션 330과 같은 neural accelerator 경로가 이제 픽셀에 공급되고 있는 모습입니다.2
측정하기: 성능 도구
GPU에서 ML을 돌린다는 것은 렌더링이 필요로 하는 것과 같은 사이클, 대역폭, 발열 예산을 두고 경쟁한다는 뜻이므로, 측정은 더 이상 선택 사항이 아닙니다. 세션 388은 긴 게임 세션을 다루지만, 그 도구는 ML을 포함한 모든 Metal 워크로드에 적용됩니다. 뉴럴 톤 매핑 패스 도중의 프레임 레이트 하락은 앱이 무엇을 하고 있었는지 볼 수 있게 되기 전까지는 다른 모든 GPU 정체와 똑같아 보이기 때문입니다.3
Apple의 Ruiwei가 시스템이 백그라운드에서 항상 Metal 성능 지표를 기록하는 방식에 대해 이야기합니다. 덕분에 몇 시간을 거슬러 올라가 세션이 끝난 뒤 트레이스를 수집할 수 있습니다 (WWDC26, 세션 388).
iOS와 macOS 27에서의 핵심 변화는 이것입니다. 시스템은 백그라운드에서 항상 Metal 성능 및 리소스 지표를 기록하여 집계 데이터와 선택적인 프레임 단위 데이터(CPU, GPU, FPS, 메모리)를 며칠간 저장합니다.3 수집은 사후에 이루어집니다. macOS에서는 metalperftrace collect --last 5h가 최근 5시간의 트레이스를 가져오고, iOS에서는 한 번의 설정으로 제어 센터에 Performance Trace 버튼이 추가되어 요청 시 룩백 트레이스를 처리합니다.3 분석은 metalperftrace overview로 하며, --json은 회귀 스크립트에 넣거나 AI 에이전트에게 분류를 맡길 수 있는 구조화된 출력을 내놓습니다. Instruments는 모든 것을 타임라인에 표시하고 벗어난 통계치를 색으로 강조합니다.3
원시 FPS 그래프를 실행 가능한 것으로 만드는 핵심은 StateReporting API로, Swift와 Objective-C에서 사용할 수 있습니다.3 도메인을 정의합니다. 각각은 기능의 독립적인 한 영역에 대응하는 유한 상태 기계이며, 전환을 레이블과, 선택적인 안정 메타데이터 및 상태별 휘발성 메타데이터와 함께 보고합니다.3 ML 부하가 큰 앱에서는 어떤 뉴럴 패스가 활성인지 추적하는 도메인을 돌릴 수 있으므로, 프레임 시간이 급등할 때 metalperftrace에 특정 상태 레이블의 FPS를 집계하게 하여 이를테면 톤 매핑 패스가 비용이라는 것을 곧바로 확인할 수 있습니다.3 Apple의 주의 사항은 이렇습니다. 전환은 사용자 행동의 빈도이거나 그보다 느린 수준으로 유지할 것. 고빈도 보고는 시스템이 스로틀링하여 데이터를 잃기 때문입니다.3 출시 후에는 iOS와 macOS 27의 MetricKit이 StateReporting 상태별로 분해된 Metal 프레임 레이트 정보를 디바이스에서 일일 보고서로 전달합니다.3
MLX: 고수준 경로는 남는다
모든 ML 개발자가 GPU 커널을 작성하고 싶어 하는 것은 아니며, Apple은 모두를 그쪽으로 떠밀지 않았습니다. MLX Swift는 Apple silicon에서 수치 및 배열 계산을 위한 표현력 있는 계층으로 남아 있고, 세션 328은 가능할 때 거기에 머무르는 것에 대한 명쾌한 논거입니다.4
Apple의 David Koski가 MLX Swift가 Accelerate, BNNS, Metal Performance Shaders, Swift Numerics 사이에서 어디에 자리하는지 이야기합니다 (WWDC26, 세션 328).
MLX는 NumPy처럼 n차원 배열을 핵심 추상으로 사용하므로, 대부분의 NumPy 코드가 최소한의 변경으로 옮겨지고 코드는 구현하려는 수식처럼 읽힙니다.4 프레임워크를 떠받치는 두 가지 성질이 있습니다. 하나는 지연 평가로, 연산이 계산 그래프를 구축하고 eval을 호출하거나 값을 읽을 때만 실행됩니다. 다른 하나는 지연 평가가 가능하게 하는 함수 변환으로, 자동 미분을 위한 grad를 포함합니다.4 기본값으로 GPU가 작업을 실행하며, Apple의 표현으로는 알고리즘에 따라 스칼라 CPU 루프 대비 10배는 분명히 가능합니다.4 세션 328은 세 가지 예시로 논증합니다. 복소수 그리드 전체에 걸친 두 줄짜리 루프로서의 만델브로 집합, 단일 conv2d 호출이 그리드 전반에 Jacobi 스텐실을 적용하는 열 분포 솔버, 그리고 grad가 손으로 쓴 도함수 없이 정확한 그래디언트를 도출하는 곡선 피팅입니다.4 MLX는 그 외에도 완전한 툴킷을 제공하며, MIT 라이선스의 오픈소스로 Swift, Python, C++, C 프런트엔드가 같은 개념을 공유하므로 Python에서 프로토타이핑하고 Swift로 출시할 수 있습니다.4
Core AI, Core ML, MLX와의 관계
네 세션은 서로 다른 고도에 있는 하나의 스택을 묘사하며, 올바른 멘탈 모델은 사다리입니다.
- Core AI와 Core ML은 배포 계층입니다. 학습된 모델을 변환해 실행하면 가속은 Apple이 담당합니다. Core AI의 커스텀 Metal 커널 지원이 그 다리입니다. 세션 330의 FlashAttention 커널은 Core AI 모델에 끼워지므로, Metal 수준의 최적화가 다시 작성하지 않고도 고수준 배포에 도달합니다.1
- MLX는 배열 계산과 연구 계층으로, 수식 형태의 Swift를 작성하면 자동 미분과 GPU 실행이 공짜로 따라오고, 자신의 모델을 실행하거나 파인튜닝할 수 있습니다. 대부분의 ML 작업이 출발점으로 삼아야 할 계층입니다.4
- Metal Performance Shaders와 TensorOps는 커널 계층입니다. 커스텀 연산이 필요할 때, MLX 자체 같은 프레임워크를 구축하고 있을 때, 또는 네트워크를 셰이더 안에서 인라인으로 돌려야 할 때 여기로 내려옵니다. 커널 계층은 neural accelerator를 가장 직접적으로 드러냅니다.1
하드웨어 기반이 이들을 하나로 묶습니다. neural accelerator는 GPU 셰이더 코어 안에 있고, Metal이 바로 그 GPU에 도달하는 수단이므로, 위쪽의 모든 계층은 결국 Apple의 통합 메모리, 타일 기반 아키텍처 위에서 같은 실리콘에 올라탑니다. 계층을 고르는 것은 MLX냐 Foundation Models냐의 판단과 같은 판단입니다. 한 단계 내려갈 때마다 편리함과 제어를 맞바꾸므로, 위 계층이 주지 못하는 능력에 이름을 댈 수 있을 때만 내려가는 것입니다.
FAQ
M5 neural accelerator란 무엇인가요?
neural accelerator는 M5 칩 제품군의 새로운 하드웨어 블록으로, 각 GPU 셰이더 코어 내부에 다른 GPU 파이프라인과 나란히 직접 자리합니다.1 Apple은 이것을 LLM의 prefill 단계처럼 밀집되고 연산 병목이 있는 작업을 가속하도록 설계했으며, TensorOps 라이브러리는 존재할 경우 이를 자동으로 사용합니다.1 Apple은 뉴럴 렌더링 세션에서도 A19 Pro GPU의 neural accelerator를 언급했습니다.2
Metal 텐서는 어떤 양자화 데이터 타입을 지원하나요?
macOS와 iOS 26 업데이트에서 4비트 및 8비트 정수 타입이 추가되었습니다.1 macOS와 iOS 27에서는 TensorOps가 지원을 4비트 및 8비트 부동소수점 타입과 2비트 정수 타입으로, 더해서 텐서의 스케일 평면에 실리는 FP8 E8M0 블록 단위 스케일 팩터로 확장합니다.1 Apple은 이 작은 타입들이 추가적인 정렬 요구 사항을 동반하므로 채택하기 전에 Metal 문서를 참조하라고 당부합니다.1
Metal 4의 뉴럴 렌더링 세 가지 수준은 무엇인가요?
MetalFX가 가장 높은 수준으로, 곧바로 사용할 수 있는 블랙박스 뉴럴 디노이저이자 업스케일러입니다.2 Metal 4 ML 커맨드 인코더는 중간 수준으로, MTLPackage로 내보낸 학습된 모델을 커맨드 버퍼 안에서 직접 실행합니다.2 TensorOps는 가장 깊은 수준으로, 셰이더 안에 작은 네트워크를 구성할 수 있게 하며, 프레임마다 모델을 적응시키는 온라인 학습도 포함합니다.2
Metal 커널을 작성하는 대신 MLX를 써야 할 때는 언제인가요?
목표가 좋은 성능을 갖춘 표현력 있는 수치 또는 배열 코드이고, 코드가 수식처럼 읽혀야 하며, 자동 미분과 기본값으로서의 GPU 실행을 원할 때는 MLX Swift를 사용하세요.4 MLX나 Core AI가 제공하지 않는 커스텀 연산이 필요할 때, ML 프레임워크에 기여하고 있을 때, 또는 네트워크를 셰이더 안에서 인라인으로 돌려야 할 때는 TensorOps와 Metal 커널로 내려가세요.1
2026년에 GPU에서 ML 성능을 어떻게 측정하나요?
iOS와 macOS 27에서는 시스템이 백그라운드에서 항상 Metal 성능 지표를 기록하므로, 사후에 룩백 트레이스를 수집합니다. macOS에서는 metalperftrace collect --last <duration>, iOS에서는 제어 센터의 Performance Trace 버튼을 사용합니다.3 분석은 metalperftrace overview(스크립트용으로는 --json)나 Instruments로 하고, StateReporting API를 추가해 앱이 무엇을 하고 있었는지 레이블을 붙이면 느려짐을 특정 패스에 귀속시킬 수 있습니다.3
Apple Ecosystem 클러스터는 계속됩니다. 배열 프레임워크 경로는 MLX on Apple Silicon, 그 모든 것의 밑바탕이 되는 GPU 기반은 Apple Silicon TBDR, 온디바이스 모델 실행은 Core AI, 더 넓은 ML 스택은 Core ML on-device inference를 참조하세요. 시리즈 허브는 Apple Ecosystem Series이며, 이 기반 위에서 에이전트 기능을 구축하려면 iOS Agent Development guide를 참조하세요.
References
-
Apple, WWDC26 session 330, “Optimize custom machine learning operations with Metal tensors”. The M5 neural accelerator inside each shader core; TensorOps as a Metal Shading Language API for matrix multiplication and convolution; native quantized data types (4- and 8-bit integers in the macOS/iOS 26 update; 4- and 8-bit floats and 2-bit integers plus FP8 E8M0 block-wise scale factors in macOS/iOS 27); scale planes and auxiliary plane maps;
newTensorWithDescriptor,matmul2d_descriptor,matmul2d,tensor_handle/tensor_inline; cooperative tensors; the FlashAttention kernel (execution_simdgroupscope,reduce_rows,map_iterator,get_left_input_cooperative_tensor,is_compatible_as_left/right_input,op.run); and the SAM 3 / Core AI integration viaTorchMetalKernel. Apple directs developers to the Metal Performance Primitives documentation and programming guide for the full API reference. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC26 session 359, “Build real-time neural rendering pipelines with Metal”. The three levels of neural rendering in Metal 4 (MetalFX, the ML command encoder, TensorOps in a shader); MetalFX denoising/upscaling, its auxiliary inputs, the transparency overlay and denoiser strength mask, and the three best practices (clean inputs, primary surface replacement and Fresnel-blended albedo, dejittered motion vectors) as adopted by Maxon’s Redshift Live; neural tone mapping via HDRNet exported to an
MTLPackage; the sky-probe MLP (3-4-4-3) with online training; SIMD-group execution scope and cooperative tensors; and the reference to the A19 Pro GPU neural accelerator. Apple directs developers to the Metal Performance Primitives (MPP) Programming Guide for code details. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC26 session 388, “Find and fix performance issues in your Metal games”. The always-on background recording of Metal performance and resource metrics in iOS and macOS 27; look-back trace collection via the
metalperftracecommand-line tool (collect --last,overview,--json,--include-state-transitions) on macOS and the Control Center Performance Trace button on iOS; analysis in Instruments; the StateReporting API (domains as finite state machines,reportTransition, stable and volatile metadata,reportVolatileMetadataUpdate) and its integration with the Metal Performance HUD,metalperftrace, and Instruments; and MetricKit’s Metal frame-rate reporting broken down by StateReporting states. ↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC26 session 328, “Explore numerical computing in Swift with MLX”. MLX Swift as a NumPy-like n-dimensional array framework; lazy evaluation building a compute graph that runs on
evalor value read;gradfor automatic differentiation; GPU execution by default with up to 10x over scalar CPU code; the Mandelbrot, heat-distribution (Jacobi and SOR viaconv2d), and curve-fitting examples; the broader toolkit (linear algebra, FFTs, convolutions, reductions, scans, random number generation); and MLX’s open-source MIT license with Swift, Python, C++, and C front-ends. See also Apple Machine Learning Research, MLX Swift. ↩↩↩↩↩↩↩↩↩