Hardware accelerators, especially those designed for tensor processing, have become ubiquitous in today's computing landscape. However, even with significant efforts in building compilers, programming these tensor accelerators remains challenging, leaving much of their potential underutilized. Recently, large language models (LLMs), trained on large amounts of code, have shown significant promise in code generation and optimization tasks, but generating low-resource languages, such as specialized tensor accelerator code still poses a significant challenge. We tackle this challenge with Autocomp, an approach that empowers accelerator programmers to leverage domain knowledge and hardware feedback to optimize code via an automated LLM-driven search. We accomplish this by: 1) formulating each optimization pass as a structured two-phase prompt, divided into planning and code generation phases, 2) inserting domain knowledge during planning via a concise and adaptable optimization menu, and 3) integrating correctness and performance metrics from hardware as feedback at each search iteration. Across three distinct hardware platforms, we demonstrate that Autocomp-optimized code runs 5.6x faster than the vendor-provided library (Gemmini), outperforms expert-level hand-tuned code by 1.9x (AWS Trainium), and achieves 3.8x higher performance than a machine learning-based cost model for GPUs (NVIDIA L40S). Additionally, we demonstrate that optimization schedules generated from Autocomp can be reused across similar tensor operations, improving speedups by up to 24% under a fixed sample budget.
academic- ID del Artículo: 2505.18574
- Título: Autocomp: A Powerful and Portable Code Optimizer for Tensor Accelerators
- Autores: Charles Hong, Sahil Bhatia, Alvin Cheung, Yakun Sophia Shao (UC Berkeley)
- Clasificación: cs.PL cs.AI cs.AR cs.LG
- Estado de Publicación: Preimpresión. En revisión.
- Enlace del Artículo: https://arxiv.org/abs/2505.18574
Los aceleradores de hardware, especialmente aquellos diseñados específicamente para procesamiento de tensores, son omnipresentes en los entornos computacionales actuales. Sin embargo, a pesar de los esfuerzos significativos invertidos en la construcción de compiladores, la programación de estos aceleradores de tensores sigue siendo desafiante, dejando gran parte de su potencial sin explotar. Este artículo propone Autocomp, un método que optimiza código mediante búsqueda automatizada impulsada por LLM, permitiendo a los programadores de aceleradores aprovechar el conocimiento del dominio y la retroalimentación del hardware. El método se implementa mediante tres técnicas clave: 1) formular cada proceso de optimización como un indicativo estructurado de dos fases, dividido en fases de planificación y generación de código; 2) insertar conocimiento del dominio durante la planificación mediante un menú de optimización conciso y adaptable; 3) integrar métricas de corrección y rendimiento del hardware como retroalimentación en cada iteración de búsqueda.
Los principales desafíos en la programación de aceleradores de tensores incluyen:
- Complejidad de Programación: A diferencia de la programación de CPU de propósito general, los aceleradores de tensores requieren gestión explícita del movimiento de datos, configuración de estado y programación de operaciones
- Costo de Adaptación del Compilador: Adaptar compiladores tradicionales a nuevas plataformas de hardware requiere un trabajo de ingeniería sustancial, con costos de desarrollo de software representando el 40-50% del costo total de desarrollo de hardware
- Problema de Programación de Optimizaciones: Explosión combinatoria en la determinación de qué optimizaciones aplicar y en qué orden
- Desafíos de Lenguajes de Bajo Recurso: Las arquitecturas de conjunto de instrucciones (ISA) y DSL de aceleradores dedicados están subrepresentadas en los corpus de entrenamiento de LLM
- Compiladores Tradicionales: XLA, TVM, Triton solo soportan pocos backends de hardware, principalmente CPU y GPU
- Enfoques DSL: Halide, Exo proporcionan primitivas para expresar cálculos de tensores, pero la carga de optimización sigue siendo responsabilidad del programador
- Métodos Impulsados por Datos: Requieren grandes cantidades de datos de rendimiento para entrenamiento, extremadamente escasos para aceleradores de hardware específicos del dominio
- Aplicación Directa de LLM: La generación de código de cero ejemplos es altamente poco confiable para lenguajes de aceleradores de bajo recurso
- Primer Método de Optimización de Código de Acelerador de Tensores de Bajo Recurso Impulsado por LLM: Propone el marco Autocomp, específicamente diseñado para aceleradores de hardware dedicados
- Marco de Optimización Altamente Portátil: Adaptable a nuevas plataformas de hardware mediante modificación de indicativos, reduciendo significativamente los costos de ingeniería
- Rendimiento Excepcional: Supera significativamente los métodos existentes en tres plataformas de hardware diferentes
- Mecanismo de Reutilización de Programación: Demuestra que las programaciones de optimización pueden reutilizarse entre operaciones de tensores similares, mejorando la eficiencia de muestras
Entrada: Código de acelerador de tensores no optimizado
Salida: Código funcionalmente equivalente pero optimizado en rendimiento
Restricciones: Mantener equivalencia semántica, garantizar corrección mediante verificación de hardware
La estructura del indicativo incluye:
- Descripción de ISA del Acelerador: Semántica de instrucciones, especificaciones de direcciones de memoria, descripción de estructura de hardware
- Código Actual: Código a optimizar
- Retroalimentación de Rendimiento: Métricas como latencia (ciclos) y utilización de memoria
- Menú de Optimización: Opciones de optimización de alto nivel predefinidas (como tiling de bucles, reordenamiento, fusión, etc.)
- Información de Iteración de Búsqueda: Número de iteración actual para guiar la selección de optimización
La estructura del indicativo incluye:
- Descripción de ISA del Acelerador: Igual a Fase 1
- Código Actual: Igual a Fase 1
- Plan Generado: Plan de optimización específico de salida de Fase 1
- Ejemplos de Aprendizaje en Contexto: Ejemplos de código para optimizaciones complejas (como tiling)
- Instrucciones de Implementación: Instrucciones en lenguaje natural para aplicar el plan y generar código optimizado
- Búsqueda por haz con ancho B=6, explorando múltiples trayectorias de optimización en paralelo
- Filtrado de Corrección: Verificar código candidato mediante suite de pruebas funcionales
- Selección de Rendimiento: Retener solo candidatos con rendimiento superior al nodo padre
- Optimización Iterativa: Proceso de búsqueda con presupuesto fijo de T iteraciones
- Dropout de Menú de Optimización: Eliminar aleatoriamente opciones de menú parciales (probabilidad del 70%) en cada planificación
- Integración de LLM: Distribuir solicitudes entre múltiples LLM para aumentar diversidad de respuestas
- Métricas de rendimiento en tiempo real (latencia, utilización de memoria) guían la selección de optimización siguiente
- Simulación de precisión de ciclos o medición de rendimiento a nivel de chip
- Registrar secuencias de programación de alta calidad
- Reutilizar programaciones conocidas para operaciones de tensores similares (relación de aspecto idéntica o dimensiones compartidas)
- Optimización adicional después de búsqueda ligera
- Gemmini: Generador de acelerador de código abierto, soporta arreglos sistólicos y aceleradores de tensores de estilo vectorial
- AWS Trainium: Acelerador de tensores de alto rendimiento comercial, utiliza Neuron Kernel Interface (NKI)
- NVIDIA L40S GPU: GPU moderna de centro de datos, incluye Tensor Core dedicado
- Gemmini: GEMM y convoluciones de ResNet-50, control predictivo de modelo TinyMPC
- Trainium: Operadores de aprendizaje profundo de nivel tutorial y avanzado (RMSNorm, LayerNorm, GEMM, Mamba, etc.)
- GPU: Pruebas de referencia KernelBench Nivel 1
- Bibliotecas de Software de Alto Nivel: Biblioteca de software Gemmini, PyTorch NeuronX, PyTorch
- Código de Bajo Nivel No Optimizado: Exo no optimizado, código tutorial nki-samples
- Código Optimizado Manualmente: Implementaciones de ajuste manual de nivel experto
- Modelos de Costo ML: TVM MetaSchedule (GPU)
- FSM de Hardware: Máquina de estados finitos de hardware Gemmini (límite superior de referencia)
- Referencia GEMM: Mejora de 5.6× en comparación con biblioteca de software Gemmini, supera código optimizado manualmente por expertos en 1.4×
- Referencia de Convolución: Mejora de 2.6× en comparación con biblioteca de software, supera optimización manual en 1.1×
- Álgebra Lineal de Grano Fino: Supera código no optimizado en 2.7×, incluso supera implementación FSM de hardware optimizada por expertos en 1.6× (propagación hacia adelante)
- Cargas de Trabajo de Tutorial: Supera código optimizado manualmente en 1.36× (media geométrica), supera código compilado PyTorch NeuronX en 13.52×
- Cargas de Trabajo Avanzadas: Supera código optimizado por expertos en 1.9× (media geométrica), convolución profunda 1D con mejora de hasta 17.37×
- Referencia KernelBench: Supera PyTorch en 2.05× (media geométrica), supera TVM MetaSchedule en 3.8×
- Superior a PyTorch en todas las pruebas de referencia, mientras que TVM solo supera PyTorch en 2 referencias
Experimentos de ablación detallados verifican la importancia de cada componente:
- ISA del Acelerador: El rendimiento disminuye significativamente cuando se elimina, pero aún logra mejora
- Menú de Optimización: Completamente necesario, la eliminación causa degradación completa del rendimiento de optimización
- Dropout de Menú: Impacto significativo en rendimiento, previene sesgo del modelo hacia opciones de menú limitadas
- Integración de LLM: Proporciona diversidad importante, rendimiento de modelo único más bajo
- Retroalimentación de Rendimiento de Hardware: Útil pero efecto limitado, ya que el menú de optimización ya incluye métricas relevantes
- Con presupuesto de 100 muestras: Programación reutilizada logra aceleración de 4.6×, sin reutilización solo 3.7×
- Con presupuesto de 200 muestras: Programación reutilizada logra aceleración de 5.0×, sin reutilización solo 4.2×
- Demuestra generalizabilidad de programación, reduciendo efectivamente costos de búsqueda para referencias similares
- Modelos de Rendimiento: Timeloop, MAESTRO utilizan modelos de arquitectura de hardware de alto nivel
- Métodos Automatizados: Aprendizaje automático, programación lineal, optimización de caja negra, aprendizaje por refuerzo
- Limitaciones: Las abstracciones existentes ignoran optimizaciones específicas de implementación e instrucción
- Rango de Aplicación: Búsqueda evolutiva, generación aumentada por recuperación, optimización iterativa, entrenamiento posterior de modelo
- Optimización a Nivel de Sistema: CUDA, funciones intrínsecas SIMD
- Brecha de Investigación: Falta de trabajo en optimización de código de LLM para hardware dedicado (no CPU/GPU)
- Efectividad de Optimización Impulsada por LLM: Autocomp supera significativamente métodos tradicionales en múltiples plataformas de hardware
- Portabilidad Extremadamente Alta: Adaptable a nuevo hardware solo mediante modificación de indicativos, costo de ingeniería mínimo
- Valor de Reutilización de Programación: Las programaciones de optimización tienen buena generalización, mejorando significativamente la eficiencia de muestras
- Necesidad de Diseño de Dos Fases: Separar fases de planificación e implementación mejora la tasa de éxito en tareas de optimización complejas
- Importancia del Conocimiento del Dominio: El conocimiento de expertos del dominio proporcionado por el menú de optimización es crítico para el rendimiento
- Valor de Retroalimentación de Hardware: Las métricas de rendimiento en tiempo real guían efectivamente la selección de dirección de optimización
- Dependencia de Capacidades de LLM: El rendimiento del método está limitado por capacidades de generación y razonamiento de código del LLM subyacente
- Costo de Búsqueda: Requiere múltiples llamadas de LLM y simulación de hardware, costo computacional relativamente alto
- Especificidad del Dominio: El menú de optimización requiere diseño manual para diferentes plataformas de hardware
- Alcance de Evaluación: Se enfoca principalmente en cargas de trabajo de cálculo de tensores, aplicabilidad a otros tipos de cálculo desconocida
- Generación Automática de Menú: Investigar métodos para construir automáticamente menús de optimización
- Migración de Programación Multiplataforma: Explorar transferencia de conocimiento de programación entre diferentes plataformas de hardware
- Optimización de Eficiencia de Costos: Reducir llamadas de LLM y simulación de hardware en proceso de búsqueda
- Aplicaciones Más Amplias: Extender a otros aceleradores dedicados más allá de cálculo de tensores
- Innovación Fuerte: Primera aplicación de LLM a optimización de código de acelerador de tensores de bajo recurso, ruta técnica novedosa
- Valor Práctico Alto: Resuelve puntos de dolor de ingeniería reales, reduce significativamente costos de desarrollo de software de nuevo hardware
- Evaluación Completa: Evaluación integral en tres plataformas de hardware diferentes, resultados convincentes
- Método Genérico: Diseño de marco con buena escalabilidad y portabilidad
- Rendimiento Excepcional: Supera significativamente los mejores métodos existentes en múltiples pruebas de referencia
- Costo Computacional: Requiere numerosas llamadas de LLM y simulación de hardware, potencialmente limitando aplicación práctica
- Dependencia de Diseño Manual: El menú de optimización aún requiere diseño manual con conocimiento de expertos, automatización limitada
- Limitaciones de Evaluación: Se enfoca principalmente en tipos específicos de cálculo de tensores, generalización por verificar
- Análisis Teórico Insuficiente: Falta garantías teóricas sobre convergencia y optimalidad del método
- Valor Académico: Abre aplicación de LLM en optimización de compilación de hardware dedicado, significancia académica importante
- Impacto Industrial: Potencialmente reduce significativamente costos de desarrollo de pila de software de nuevo hardware, valor industrial importante
- Reproducibilidad: Autores se comprometen a código abierto e indicativos, favoreciendo investigación posterior
- Inspiración: Proporciona nueva ruta técnica para optimización de compilación de otros hardware dedicado
- Desarrollo de Prototipo de Nuevo Hardware: Generar rápidamente código optimizado para aceleradores de tensores recién diseñados
- Construcción de Compilador DSL: Como complemento o alternativa a compiladores tradicionales
- Herramienta de Ajuste de Rendimiento: Ayudar desarrolladores a optimizar código de acelerador existente
- Investigación y Enseñanza: Proporcionar herramientas automatizadas para programación y optimización de acelerador
El artículo cita extensamente trabajo relacionado, incluyendo principalmente:
- Diseño de acelerador de hardware (Gemmini, TPU, Trainium, etc.)
- Compiladores y DSL (XLA, TVM, Halide, Exo, etc.)
- Generación de código de LLM (CodeGen, Codex, etc.)
- Métodos de optimización automatizada (aprendizaje por refuerzo, algoritmos evolutivos, etc.)
Evaluación General: Este es un artículo de investigación de alta calidad que realiza contribuciones importantes en el campo emergente e interdisciplinario de aplicación de LLM a optimización de compilación de hardware dedicado. El método es altamente innovador, la evaluación experimental es completa, y el valor práctico es significativo. Aunque hay espacio para mejora en costos computacionales y grado de automatización, abre nuevas direcciones para el desarrollo del campo, con valor académico e industrial importante.