Metal dla uczenia maszynowego w 2026 roku
M5 firmy Apple zawiera nowy blok sprzętowy o nazwie neural accelerator, który nie znajduje się ani w Neural Engine, ani gdzieś z boku w jakimś koprocesorze. Mieści się on wewnątrz każdego rdzenia shadera GPU, obok istniejących potoków, i został zbudowany po to, by przyspieszać gęste, ograniczone obliczeniami zadania, takie jak etap prefill w LLM.1 To właśnie umiejscowienie streszcza całą historię Metal w 2026 roku. GPU, po który sięgano, by rysować trójkąty, jest teraz tym samym GPU, po który sięga się, by wykonywać mnożenie macierzy, a Apple poświęciła WWDC26 na przekazanie programistom API pozwalających używać go bezpośrednio. Metal jest pełnoprawną powierzchnią obliczeniową uczenia maszynowego, a ujęcie graficzne nie obejmuje już tego, co Metal robi.
Przez lata historia ML na urządzeniu rozgrywała się ponad warstwą Metal: Core ML celował w Neural Engine, MLX otaczał GPU API tablic w stylu NumPy, a MetalFX dawał grom zamknięty upscaler. Sam Metal był podłożem, na którym stały te frameworki, a nie warstwą, przeciwko której pisała większość programistów ML. WWDC26 zmieniła tę wysokość. Apple wydała API języka Metal Shading Language do obliczeń tensorowych, umożliwiła podpinanie niestandardowych kerneli do Core AI i pokazała sieci neuronowe działające wprost wewnątrz shaderów. Powody, by zejść do poziomu Metal, są już na tyle konkretne, że można je nazwać.
TL;DR
- Neural accelerator w M5 to nowy blok sprzętowy umieszczony wewnątrz każdego rdzenia shadera GPU, zaprojektowany tak, by przyspieszać gęste, ograniczone obliczeniami zadania, takie jak prefill w LLM.1
- TensorOps to API języka Metal Shading Language, które przyspiesza operacje tensorowe (mnożenie macierzy, splot) na GPU i automatycznie korzysta z dostępnego przyspieszenia sprzętowego w kolejnych generacjach Apple silicon.1
- Tensory Metal natywnie obsługują skwantyzowane typy danych: 4- i 8-bitowe liczby całkowite w aktualizacji macOS i iOS 26, a w macOS i iOS 27 pojawiają się 4- i 8-bitowe liczby zmiennoprzecinkowe oraz 2-bitowe liczby całkowite wraz z blokowymi współczynnikami skali E8M0.1
- Renderowanie neuronowe obejmuje w Metal 4 trzy poziomy: odszumianie MetalFX jako czarną skrzynkę, ML command encoder dla wytrenowanych modeli w command buffer oraz TensorOps dla maleńkich sieci budowanych wprost w shaderze.2
- MLX Swift zachowuje ścieżkę wysokopoziomowych obliczeń numerycznych: kod tablicowy, który czyta się jak matematykę, leniwą ewaluację, automatyczne różniczkowanie oraz domyślne wykonanie na GPU.4
- Nowe narzędzia do pomiaru wydajności (wsteczne zbieranie śladu,
metalperftraceoraz API StateReporting) zamykają pętlę pomiaru tego wszystkiego w długich sesjach.3
Tensory Metal i niestandardowe kernele ML
Apple przedstawia stos ML jako warstwy: na górze Core AI i MLX dla wdrożeń z minimalną ilością kodu, niżej Metal Performance Shaders dla wysokowydajnych kerneli, a pod tym wszystkim Metal Performance Primitives i biblioteka TensorOps wykonujące niskopoziomowe przyspieszanie.1 Do poziomu Metal schodzi się z konkretnego powodu. Badania nad ML poruszają się szybko, więc można chcieć zaimplementować niestandardową operację, którą da się podpiąć do wyżej położonego frameworka, takiego jak Core AI. Można współtworzyć framework taki jak MLX czy llama.cpp. Można też pisać aplikację opartą na Metal, która potrzebuje tej operacji w samym kodzie.1
Shiyao z Apple o neural acceleratorze w M5: bloku sprzętowym wewnątrz każdego rdzenia shadera, zbudowanym do gęstych, ograniczonych obliczeniami zadań, takich jak prefill w LLM (WWDC26, sesja 330).
TensorOps to API języka Metal Shading Language, które przyspiesza operacje tensorowe na GPU, w tym mnożenie macierzy i splot, i w pełni wykorzystuje neural accelerator w M5 bez pisania kodu osobnego dla każdej generacji.1 Biblioteka odczytuje dostępny sprzęt i z niego korzysta. To właśnie ta przenośność jest sensem pracy przez TensorOps, zamiast ręcznego pisania operacji SIMD-group pod konkretne GPU.
Najbardziej praktycznym dodatkiem 2026 roku jest natywna kwantyzacja. Modele wciąż rosną, a wnioskowanie jest zwykle ograniczone przepustowością pamięci, więc kompresja wag pozwala zarówno zmieścić w pamięci większy model, jak i zaoszczędzić przepustowość.1 Standardowe podejście wygląda tak: bierze się 16-bitowe wagi o połowicznej precyzji, redukuje je do 4 bitów i łączy skwantyzowane wartości ze współczynnikami skali, które w momencie obliczeń przywracają je do zakresu.1 TensorOps obsługuje teraz skwantyzowane typy danych natywnie. Aktualizacja macOS i iOS 26 dodała 4- i 8-bitowe typy całkowite; macOS i iOS 27 rozszerzają to o 4- i 8-bitowe typy zmiennoprzecinkowe oraz 2-bitowe liczby całkowite.1 Skwantyzowany tensor tworzy się niemal dokładnie tak jak zwykły: wypełnia się właściwości deskryptora, podaje skwantyzowany dataType i wywołuje newTensorWithDescriptor na swoim urządzeniu Metal.1
Współczynniki skali również zyskują schludne miejsce. W macOS i iOS 27 pojedynczy MTLTensor może nieść swoje skale obok skwantyzowanych danych jako dodatkową płaszczyznę skali, obsługując format blokowych współczynników skali FP8 E8M0, w którym każdy element skali odnosi się do bloku elementów danych.1 Buduje się deskryptor dla płaszczyzny skali, ustawia jej dataType oraz współczynniki bloku i dołącza pomocniczą mapę płaszczyzn do oryginalnego deskryptora tensora; skwantyzowane dane, skale i metadane mieszczą się w jednym obiekcie tensora.1 W kernelu deklaruje się płaszczyznę skali (na przykład fp8_e8m0 o rozmiarze bloku 32 na 1, tak że każde 32 elementy danych współdzielą jedną skalę), deklaruje pełny typ tensora, konfiguruje matmul2d_descriptor z rozmiarami kafelków, tworzy operację matmul2d, przekazuje skwantyzowane tensory, a TensorOps zajmuje się dekwantyzacją.1
Gdy potrzebny jest niestandardowy format kwantyzacji, którego biblioteka nie zna, dekwantyzuje się bezpośrednio do cooperative tensora i przekazuje go do operacji matmul2d. Cooperative tensory rozkładają swoją pamięć na prywatną pamięć wątków biorących udział w matmul, dzięki czemu dane pozostają w rejestrach i pomija się przejście tam i z powrotem przez pamięć threadgroup.1
Sztandarowym przykładem z sesji 330 jest FlashAttention, scalony kernel uwagi leżący w sercu każdego transformera. Uwaga mnoży Q przez K, oblicza SoftMax na wierszach macierzy pośredniej, a następnie mnoży przez V; FlashAttention scala wszystkie trzy kroki w jeden kernel.1 Korzysta się z zakresu operacji execution_simdgroup, aby każda grupa SIMD posiadała pełne wiersze macierzy pośredniej i mogła obliczać SoftMax bez wymiany danych między grupami, przechowuje macierz pośrednią w cooperative tensorze i oblicza redukcje wierszowe za pomocą reduce_rows.1 Najważniejsze usprawnienie 2026 roku: w macOS 26 trzeba było zapisać cooperative tensor do pamięci threadgroup przed drugim matmul, a teraz podaje się go wprost przez get_left_input_cooperative_tensor po sprawdzeniu układu is_compatible_as_left.1 Jeśli sprawdzenie się nie powiedzie, następuje powrót do przejścia przez threadgroup; tak czy inaczej op.run jest identyczne.1
Apple zamknęła pętlę, integrując ten niestandardowy kernel z prawdziwym modelem. Core AI konwertuje modele PyTorch i obsługuje niestandardowe kernele Metal, więc zespół zdefiniował ciało FlashAttention jako łańcuch znaków w Pythonie, zarejestrował TorchMetalKernel, zastąpił domyślną uwagę Hugging Face taką, która wywołuje ten kernel, i wyeksportował z PyTorch model segmentacji obrazu SAM 3 jako zoptymalizowany zasób Core AI, który poprawnie wysegmentował samochód na obrazie testowym.1 To właśnie droga od ręcznie napisanego kernela GPU do gotowego do wydania modelu.
Renderowanie neuronowe w czasie rzeczywistym
Drugim frontem jest renderowanie. Wiele technik, które historycznie korzystały z metod analitycznych, w tym neuronowe odszumianie, neuronowe tekstury i wyuczone tone mapping, może teraz działać jako uczenie maszynowe na dowolnym etapie potoku, by poprawić jakość, wydajność lub zużycie pamięci.2 Metal 4 oferuje trzy poziomy kontroli, a wybór poziomu jest świadomym kompromisem.
Yulia z Apple przechodzi przez trzy poziomy ML w potoku renderowania Metal 4, od MetalFX po sieci TensorOps działające na neural acceleratorze M5 i A19 Pro (WWDC26, sesja 359).
Na najwyższym poziomie MetalFX zapewnia gotowy do użycia neuronowy odszumiacz i upscaler jako w pełni zintegrowaną czarną skrzynkę, zaprojektowaną pod wymagania niskiego opóźnienia żywego viewportu.2 W path tracerze budżet klatki może pozwolić tylko na jedną próbkę na piksel, by zachować interaktywność, a jedna próbka jest zaszumiona. MetalFX bierze tę zaszumioną klatkę wraz z wejściami pomocniczymi (rozproszone albedo, głębia i kilka innych) i tworzy czysty, niemal finalny obraz, korzystając z technik zarówno przestrzennych, jak i czasowych.2 Redshift Live firmy Maxon, path tracer w czasie rzeczywistym w Cinema 4D, wdrożył to rozwiązanie, a Apple sprowadziła integrację do trzech dobrych praktyk: utrzymuj wejścia pomocnicze wolne od szumu (rozproszone albedo to najsilniejszy sygnał odszumiania), zapisuj to, co widz faktycznie widzi (zastąpienie powierzchni pierwotnej dla luster, albedo mieszane według Fresnela dla szkła) oraz zadbaj o poprawne motion vectory (MetalFX oczekuje motion vectorów bez jitteru, inaczej krawędzie migoczą).2
Poziom pośredni to ML command encoder w Metal 4, który uruchamia wstępnie wytrenowany model bezpośrednio w command buffer, bez przełączania kontekstu.2 Przykładem opracowanym przez Apple jest neuronowe tone mapping. Łańcuch postprocesu renderera (tone mapping, korekcja kolorów, emulacja filmu) staje się dowolnie złożony, a sieć neuronowa może nauczyć się całej transformacji. Sieć taką jak HDRNet (architektura z 2017 roku autorstwa Gharbiego i współpracowników) trenuje się w PyTorch, eksportuje do MTLPackage, ładuje za pomocą function descriptora i machine learning pipeline descriptora, a następnie wysyła za pomocą argument table.2 Neuronowy tone mapper zastępuje wówczas cały wieloetapowy łańcuch postprocesu jedną neuronową ewaluacją, zakodowaną w tym samym command buffer obok path tracera i MetalFX, wykonywaną w tej samej klatce.2
Najgłębszym poziomem jest TensorOps wewnątrz shadera, ta sama biblioteka z sesji 330, lecz używana do budowania maleńkich sieci o kilku tysiącach parametrów lub mniej, trenowanych na jednej scenie i nieprzeznaczonych do generalizacji.2 Ponieważ sieć mieści się w samym kodzie wśród instrukcji ALU i próbkowania tekstur, umożliwia trening online: model, który w każdej klatce dostosowuje się do zmieniających się warunków świata. Przykładem Apple jest sky probe do oświetlenia opartego na obrazie, gdzie dynamiczny cykl dnia i nocy sprawia, że wstępnie obliczony sygnał oświetlenia się dezaktualizuje. Rozwiązaniem jest w pełni połączony MLP, sieć 3-4-4-3 przyjmująca kierunek jako trzy liczby float i zwracająca oświetlenie jako kolor, ewaluowana w przód w shaderze i trenowana online za pomocą przejścia wstecznej propagacji w każdej klatce.2 Korzystając z zakresu wykonania SIMD-group, wszystkie uczestniczące wątki pracują nad tym samym mnożeniem macierzy i otrzymują cooperative tensory, których pamięć rozkłada się na wątki, więc przepuszcza się każdą warstwę przez matmul2d, stosuje aktywacje w miejscu i odczytuje wynik od razu w shaderze, bez podróży do pamięci głównej. To ta sama ścieżka neural acceleratora z sesji 330, teraz zasilająca piksel.2
Pomiar: narzędzia wydajnościowe
Uruchamianie ML na GPU oznacza rywalizację o te same cykle, przepustowość i budżet termiczny, których potrzebuje renderowanie, więc pomiar przestaje być opcjonalny. Sesja 388 dotyczy długich sesji gry, ale narzędzia stosują się do każdego obciążenia Metal, w tym ML, ponieważ spadek liczby klatek podczas przebiegu neuronowego tone mapping wygląda dokładnie tak samo jak każdy inny zastój GPU, dopóki nie da się zobaczyć, co aplikacja robiła.3
Ruiwei z Apple o systemie, który stale rejestruje metryki wydajności Metal w tle, dzięki czemu można spojrzeć wstecz o wiele godzin i zebrać ślad po zakończeniu sesji (WWDC26, sesja 388).
Kluczowa zmiana w iOS i macOS 27: system stale rejestruje w tle metryki wydajności i zasobów Metal, przechowując przez wiele dni dane zagregowane oraz opcjonalne dane dla każdej klatki (CPU, GPU, FPS, pamięć).3 Zbieranie odbywa się po fakcie. W macOS metalperftrace collect --last 5h pobiera ślad z ostatnich pięciu godzin; w iOS jednorazowa konfiguracja dodaje do Centrum sterowania przycisk Performance Trace, który na żądanie przetwarza ślad wsteczny.3 Analizę przeprowadza się za pomocą metalperftrace overview, a --json zwraca uporządkowane dane wyjściowe, które można podać skryptowi regresyjnemu lub przekazać agentowi AI do triażu; Instruments nanosi wszystko na oś czasu i kolorem oznacza odbiegające statystyki.3
Elementem, który czyni surowy wykres FPS użytecznym, jest API StateReporting, dostępne w Swift i Objective-C.3 Definiuje się domeny, z których każda jest skończonym automatem stanów dla jednego ortogonalnego obszaru funkcjonalności, i raportuje przejścia z etykietą oraz opcjonalnie stałymi metadanymi i zmiennymi metadanymi dla danego stanu.3 W aplikacji o dużym obciążeniu ML można prowadzić domenę śledzącą, który przebieg neuronowy jest aktywny, tak by przy skoku czasu klatki poprosić metalperftrace o zagregowanie FPS dla konkretnej etykiety stanu i zobaczyć wprost, że na przykład to przebieg tone mapping jest kosztem.3 Przestroga Apple: utrzymuj przejścia w tempie działań użytkownika lub wolniejszym, ponieważ system ogranicza raportowanie o wysokiej częstotliwości i traci się dane.3 Po wydaniu MetricKit w iOS i macOS 27 udostępnia informacje o liczbie klatek Metal w podziale na stany StateReporting, dostarczane jako codzienne raporty z urządzeń.3
MLX: ścieżka wysokopoziomowa zostaje
Nie każdy programista ML chce pisać kernele GPU i Apple nie zepchnęła wszystkich w dół. MLX Swift pozostaje ekspresyjną warstwą do obliczeń numerycznych i tablicowych na Apple silicon, a sesja 328 jest klarownym argumentem za pozostaniem na niej, gdy to możliwe.4
David Koski z Apple o tym, gdzie MLX Swift mieści się wśród Accelerate, BNNS, Metal Performance Shaders i Swift Numerics (WWDC26, sesja 328).
MLX używa tablic n-wymiarowych jako centralnej abstrakcji, podobnie jak NumPy, więc większość kodu NumPy przekłada się przy minimalnych zmianach, a kod czyta się jak matematykę, którą się implementuje.4 Framework opiera się na dwóch właściwościach: leniwej ewaluacji, w której operacje budują graf obliczeń uruchamiany dopiero przy wywołaniu eval lub odczycie wartości, oraz na transformacjach funkcji, które leniwa ewaluacja umożliwia, w tym grad do automatycznego różniczkowania.4 Domyślnie pracę wykonuje GPU, a według ujęcia Apple dziesięciokrotne przyspieszenie względem skalarnej pętli CPU jest z pewnością możliwe, w zależności od algorytmu.4 Sesja 328 dowodzi tego trzema przykładami: zbiór Mandelbrota jako dwuwierszowa pętla po całej siatce liczb zespolonych, solver rozkładu ciepła, w którym jedno wywołanie conv2d stosuje stencil Jacobiego na całej siatce, oraz dopasowywanie krzywej, gdzie grad wyprowadza dokładny gradient bez ręcznie pisanych pochodnych.4 Poza tym MLX dostarcza pełny zestaw narzędzi i jest oprogramowaniem otwartym na licencji MIT, a frontendy Swift, Python, C++ i C współdzielą te same koncepcje, więc można prototypować w Pythonie i wydawać w Swift.4
Jak ma się to do Core AI, Core ML i MLX
Cztery sesje opisują jeden stos na różnych wysokościach, a właściwym modelem mentalnym jest drabina.
- Core AI i Core ML to warstwa wdrożeniowa. Konwertuje się wytrenowany model i uruchamia, a przyspieszeniem zarządza Apple. Obsługa niestandardowych kerneli Metal w Core AI jest pomostem: kernel FlashAttention z sesji 330 podpina się do modelu Core AI, więc optymalizacja na poziomie Metal trafia do wysokopoziomowego wdrożenia bez przepisywania.1
- MLX to warstwa obliczeń tablicowych i badań, w której pisze się Swift o kształcie matematyki, dostaje za darmo autodiff i wykonanie na GPU oraz uruchamia lub dostraja własne modele. To warstwa, od której powinna zaczynać większość prac nad ML.4
- Metal Performance Shaders i TensorOps to warstwa kerneli. Schodzi się tutaj, gdy potrzebna jest niestandardowa operacja, gdy buduje się framework taki jak sam MLX lub gdy sieć musi działać w samym kodzie shadera. Warstwa kerneli najbardziej bezpośrednio odsłania neural accelerator.1
Łączy je sprzętowe podłoże. Neural accelerator żyje w rdzeniu shadera GPU, a Metal jest sposobem dotarcia do GPU, więc każda wyższa warstwa ostatecznie jedzie na tym samym krzemie, ponad architekturą Apple opartą na pamięci ujednoliconej i kafelkach. Wybór warstwy to ten sam osąd co decyzja między MLX a Foundation Models: schodź niżej tylko wtedy, gdy potrafisz nazwać możliwość, której wyższa warstwa nie daje, ponieważ każdy krok w dół wymienia wygodę na kontrolę.
FAQ
Czym jest neural accelerator w M5?
Neural accelerator to nowy blok sprzętowy w rodzinie układów M5, umieszczony bezpośrednio wewnątrz każdego rdzenia shadera GPU, obok pozostałych potoków GPU.1 Apple zaprojektowała go tak, by przyspieszać gęste, ograniczone obliczeniami zadania, takie jak etap prefill w LLM, a biblioteka TensorOps korzysta z niego automatycznie, gdy jest dostępny.1 Apple wspomniała też o neural acceleratorze w GPU A19 Pro podczas sesji o renderowaniu neuronowym.2
Jakie skwantyzowane typy danych obsługują tensory Metal?
Aktualizacja macOS i iOS 26 dodała 4- i 8-bitowe typy całkowite.1 W macOS i iOS 27 TensorOps rozszerza obsługę o 4- i 8-bitowe typy zmiennoprzecinkowe oraz 2-bitowy typ całkowity, a także o blokowe współczynniki skali FP8 E8M0 niesione w płaszczyźnie skali tensora.1 Apple zaznacza, że te mniejsze typy wiążą się z dodatkowymi wymaganiami dotyczącymi wyrównania, dlatego przed ich zastosowaniem warto zajrzeć do dokumentacji Metal.1
Jakie są trzy poziomy renderowania neuronowego w Metal 4?
MetalFX to najwyższy poziom, gotowy do użycia neuronowy odszumiacz i upscaler typu czarna skrzynka.2 ML command encoder w Metal 4 to poziom pośredni, uruchamiający wstępnie wytrenowany model wyeksportowany do MTLPackage bezpośrednio w command buffer.2 TensorOps to najgłębszy poziom, pozwalający budować maleńkie sieci wewnątrz shadera, w tym trening online dostosowujący model w każdej klatce.2
Kiedy używać MLX zamiast pisać kernele Metal?
MLX Swift warto stosować, gdy celem jest ekspresyjny, wydajny kod numeryczny lub tablicowy, w którym kod ma się czytać jak matematyka i pożądane są autodiff oraz domyślne wykonanie na GPU.4 Do TensorOps i kerneli Metal należy zejść, gdy potrzebna jest niestandardowa operacja, której MLX ani Core AI nie zapewniają, gdy współtworzy się framework ML lub gdy sieć musi działać w samym kodzie shadera.1
Jak mierzyć wydajność ML na GPU w 2026 roku?
W iOS i macOS 27 system stale rejestruje metryki wydajności Metal w tle, więc ślad wsteczny zbiera się po fakcie za pomocą metalperftrace collect --last <duration> w macOS lub przycisku Performance Trace w Centrum sterowania w iOS.3 Analizę przeprowadza się za pomocą metalperftrace overview (z --json do skryptowania) lub Instruments, a dodanie API StateReporting pozwala oznaczyć, co aplikacja robiła, by przypisać spowolnienia do konkretnego przebiegu.3
Klaster Apple Ecosystem ciągnie się dalej: MLX on Apple Silicon dla ścieżki frameworka tablicowego, Apple Silicon TBDR dla podłoża GPU leżącego pod tym wszystkim, Core AI dla uruchamiania modeli na urządzeniu oraz Core ML on-device inference dla szerszego stosu ML. Centrum serii to Apple Ecosystem Series, a w budowie funkcji agentowych na tym fundamencie pomoże przewodnik iOS Agent Development.
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. ↩↩↩↩↩↩↩↩↩