Swift alcanza Teraflops entrenando LLMs en Apple Silicon

Fuentes: Training an LLM in Swift, Part 1: Taking matrix multiplication from Gflop/s to Tflop/s | Cocoa with Love
Swift alcanza Teraflops entrenando LLMs en Apple Silicon
Imagen generada con IA

Este artículo explora cómo optimizar operaciones de multiplicación de matrices en Swift para entrenar Large Language Models (LLMs) en Apple Silicon, buscando alcanzar rendimiento de Teraflop/s desde el punto de partida de Gigaflops. El autor, Matt Gallagher, toma como referencia la implementación llm.c de Andrej Karpathy (un GPT2 en unas 1000 líneas de C) y la reescribe en Swift puro, sin usar frameworks de ML, para demostrar que Swift puede igualar o superar al C en velocidad. La clave está en las operaciones de matrix multiplication, que representan la mayor parte del trabajo computacional en el entrenamiento de redes neuronales: el autor calcula que una iteración de entrenamiento completo implica aproximadamente 0.2 billones de operaciones de punto flotante. En términos de hardware, Apple Silicon ofrece múltiples unidades de procesamiento (CPU, SIMD, AMX y GPU), cada una con capacidades distintas que pueden aprovecharse para diferentes tipos de cálculos. El artículo muestra el proceso de optimización paso a paso: desde una versión básica de Swift que era 10 veces más lenta que el C original, hasta versiones optimizadas que explotan características del compilador y del silicio de Apple. Lo que hace único este enfoque es la filosofía "no frameworks, no libraries": escribir todo desde cero para entender exactamente qué happening bajo el hood. Los casos de uso incluyen investigadores de ML que buscan control total sobre sus implementaciones, desarrolladores Swift interesados en rendimiento extremo, y ingenieros que desean entender las capacidades del hardware Apple. Es importante notar que los resultados publicados son siempre en configuración Release, no Debug, y que las optimizaciones mostradas son específicas del hardware Apple Silicon.