Il 10 novembre 2020 Apple ha presentato l’M1, un system-on-a-chip (SoC) ARM in cui CPU, GPU e Neural Engine leggono e scrivono sulla stessa memoria, senza copie tra spazi di indirizzamento separati. Per chi pianifica carichi di machine learning, quello che mi interessa non sono i benchmark, ma il tragitto del dato: dove finisce mentre il calcolo gira, e chi lo tocca lungo la strada.
Contesto
La migrazione di Apple da Intel a un’architettura propria è stata annunciata al WWDC di giugno 2020; l’M1 è il primo chip della serie, prodotto sul processo TSMC N5 (5 nm) e dichiarato a 16 miliardi di transistor. Esordisce su MacBook Air, MacBook Pro da 13 pollici e Mac mini, insieme a macOS Big Sur. Il software x86 esistente gira attraverso Rosetta 2, lo strato di traduzione di Apple.
Sul piano architetturale il punto non è la CPU a otto core (quattro performance, nome in codice Firestorm, e quattro efficienza, Icestorm), né la GPU fino a otto core a 2,6 TFLOPS. È come è cablata la memoria.
Architettura
L’M1 monta la DRAM LPDDR4X sullo stesso package del die di calcolo, in tagli da 8 GB o 16 GB, con banda di memoria dichiarata intorno a 68 GB/s. Quella memoria è condivisa, in modo coerente, da tutte le unità: gli otto core CPU, la GPU, il Neural Engine a 16 core (dichiarato a 11 trilioni di operazioni al secondo) e gli acceleratori ML dentro i core CPU.
In un PC desktop classico la GPU discreta ha la sua VRAM, separata dalla RAM di sistema; un tensore che deve passare dalla CPU alla GPU viene copiato attraverso il bus PCIe. Sull’M1 quella copia non c’è: CPU e GPU vedono gli stessi indirizzi fisici. Per un addestramento questo toglie un passaggio di trasferimento e, soprattutto, tiene il dataset dentro una sola frontiera di memoria invece di farne due residenti.
Sul lato software, il giorno del lancio non c’è ancora un percorso maturo per addestrare reti su questa GPU restando fuori dall’ecosistema Apple. Il framework di riferimento è ML Compute, arrivato con Big Sur, che instrada le operazioni su BNNS per la CPU e su Metal Performance Shaders per la GPU. Apple ha annunciato che pubblicherà a breve un fork di TensorFlow 2.4 (tensorflow_macos) costruito su ML Compute, con accelerazione su CPU e GPU sia su M1 sia su Mac Intel; il rilascio è atteso nei giorni dopo il lancio. Resta comunque un canale a fornitore unico: il modello di programmazione è Metal, non CUDA, e l’inferenza pensata per il deployment passa da Core ML.
Punto critico
La memoria unificata fa emergere una decisione che di solito resta implicita: su quale macchina, sotto il controllo di chi, vive il dato durante l’addestramento.
Finché prototipare un modello richiede una GPU discreta capiente, la scelta pratica per molti gruppi è una macchina remota — una workstation condivisa o un’istanza cloud. Quel dato lascia il laptop, attraversa una rete, sta su hardware di terzi per tutta la durata del job. Per dataset che contengono informazioni personali o materiale soggetto a vincoli contrattuali, è un trasferimento da giustificare, registrare e, in certi regimi, autorizzare.
Una macchina con 16 GB di memoria unificata che la GPU può raggiungere non sostituisce un acceleratore da datacenter, e 16 GB sono un tetto stretto. Ma allargano la fascia di lavoro che si può tenere in locale: prototipazione, fine-tuning di modelli piccoli, esplorazione del dataset prima della fase su hardware più grande. In quella fascia, il dato non lascia il dispositivo dell’analista. Qui non pesa la velocità, ma dove sta il dato.
Dico con franchezza dove si ferma la tesi. La collocazione locale è una condizione necessaria, non sufficiente, per il controllo: un laptop senza cifratura del disco, senza gestione degli accessi, senza traccia di cosa è stato addestrato su quali dati non è più governabile di un’istanza cloud configurata bene. L’M1 ha un Secure Enclave per le chiavi di FileVault e Touch ID, e questo aiuta sulla cifratura a riposo; oltre a quello non risolve niente.
Implicazioni
Per chi deve documentare il trattamento dei dati in un progetto ML, l’architettura del chip entra nell’analisi e non resta un dettaglio di approvvigionamento. Tre punti concreti.
Primo: la fase di prototipazione su dati sensibili può restare su una macchina sotto il controllo diretto dell’organizzazione, riducendo il numero di sistemi che toccano il dato. Si semplifica così la mappa dei trasferimenti che un’analisi di protezione dei dati deve descrivere.
Secondo: il legame a fornitore unico ha un costo di lock-in. Un flusso costruito su tensorflow_macos e Metal non si sposta su un’altra GPU senza riscrivere il percorso di accelerazione. Chi prende questa strada lega una parte del proprio stack ML a un singolo fornitore, ed è una decisione di governance dell’infrastruttura prima ancora che tecnica.
Terzo: il tetto dei 16 GB fissa una soglia oltre la quale il dato deve comunque uscire dalla macchina. Conviene fissare quella soglia in modo esplicito nelle procedure interne, così che il passaggio al cloud sia una scelta motivata e tracciata e non una deriva.
Limiti
Al lancio l’M1 è un chip consumer per laptop e mini-desktop; i tagli di memoria e il numero di core GPU sono modesti accanto all’hardware da addestramento. Il software per l’addestramento accelerato è, a oggi, in sostanza il fork TensorFlow di Apple più i framework nativi (Core ML, Create ML): l’ecosistema scientifico più ampio gira via Rosetta 2 sulla CPU, senza accelerazione GPU. I numeri di throughput usciti nei primi giorni vanno letti come indicativi, misurati da Apple su configurazioni prerelease.
La memoria unificata coerente non è un’idea nuova — console e SoC mobili la usano da anni. Con l’M1 cambia la scala a cui arriva su una macchina general-purpose che uno sviluppatore usa come ambiente primario di lavoro. È questo a farne un fattore da pesare quando si decide dove far girare un calcolo, e di chi è la macchina che lo esegue.
- https://www.apple.com/newsroom/2020/11/apple-unleashes-m1/
- https://blog.tensorflow.org/2020/11/accelerating-tensorflow-performance-on-mac.html
- https://machinelearning.apple.com/research/ml-compute-training-on-mac
- https://github.com/apple/tensorflow_macos
- https://www.noze.it/insights/apple-silicon-m1/
Immagine di copertina: Render ravvicinato del package del chip Apple M1: il die di calcolo quadrato al centro e i due moduli di memoria DRAM affiancati… — diagramma di Henriok, CC0 — https://commons.wikimedia.org/wiki/File:Apple_M1.jpg