ARTFEED — Contemporary Art Intelligence

Ottimizzazione dell'addestramento LLM in Swift: da 2,8 Gflop/s a 1,1 Tflop/s

ai-technology · 2026-05-11

Uno sviluppatore documenta il processo di ottimizzazione del codice di moltiplicazione di matrici scritto a mano in Swift per addestrare un LLM stile GPT-2 su Apple Silicon. Partendo da un'implementazione Swift ingenua che raggiungeva solo 2,8 Gflop/s, l'autore ha applicato una serie di ottimizzazioni: sostituzione di Array con MutableSpan per evitare il sovraccarico copy-on-write, uso di Relaxed.multiplyAdd da Swift Numerics per istruzioni fused-multiply-add, srotolamento manuale dei cicli con InlineArray, multithreading tramite DispatchQueue.concurrentPerform, istruzioni AMX reverse-engineered e infine shader GPU Metal personalizzati. L'implementazione finale ha raggiunto 1,1 Tflop/s, un miglioramento di 382x. Il modello di riferimento è llm.c di Andrej Karpathy, un'implementazione in C puro di GPT-2 con 124 milioni di parametri. L'autore nota che il framework Accelerate di Apple e altre librerie sarebbero più efficienti per uso produttivo e che l'unità AMX non è documentata ed è soggetta a modifiche che rompono la compatibilità. L'articolo è la prima parte di una serie che esplora l'addestramento di reti neurali in Swift su Apple Silicon.

Fatti principali

  • L'implementazione Swift iniziale raggiungeva 2,8 Gflop/s.
  • L'implementazione finale ottimizzata ha raggiunto 1,1 Tflop/s, un miglioramento di 382x.
  • Le ottimizzazioni includevano MutableSpan, Relaxed.multiplyAdd, InlineArray, DispatchQueue.concurrentPerform, istruzioni AMX e kernel GPU Metal.
  • Il modello di riferimento è llm.c di Andrej Karpathy, un'implementazione GPT-2 in C puro con 124.439.808 pesi.
  • L'unità AMX di Apple non è documentata e viene accessa tramite istruzioni reverse-engineered.
  • L'implementazione GPU Metal ha raggiunto 1,1 Tflop/s, ma il picco teorico della GPU è di 15 Tflop/s.
  • Swift è risultato leggermente più veloce di C in alcuni benchmark grazie a una migliore selezione di istruzioni SIMD.
  • L'articolo è la prima parte di una serie; gli articoli futuri tratteranno BLAS, BNNS, CoreML, MPSGraph.

Entità

Artisti

  • Andrej Karpathy
  • James Thompson

Istituzioni

  • Apple
  • Swift Numerics
  • Accelerate framework
  • Metal
  • OpenMP
  • Cocoa with Love

Fonti