Documentación

¿Puede Laya MLX volverse diez veces más rápido? Una investigación matemática

Fecha de la investigación: 2026-09-19. Línea base: los resultados FP16 de MLX confirmados en el Apple M3 Max con 40 núcleos de GPU y 128 GiB de memoria unificada. Este informe separa hechos algebraicos, estimaciones de coste estáticas, mediciones en CPU de matrices seleccionadas de los checkpoints e hipótesis que requieren experimentos de inferencia. Para esta investigación matemática no se realizó ninguna inferencia en GPU ni nueva medición de latencia. La investigación de ingeniería complementaria contiene tiempos de candidatos cuando están disponibles. Aquí, “exacto” se refiere a preservar las dependencias matemáticas y la función en aritmética real; un orden de reducción o un kernel distintos en la GPU pueden cambiar igualmente los resultados en coma flotante, así que las tolerancias numéricas existentes y el contrato de salida expuesto siguen siendo puertas de aceptación.

Decisión: no presupuestar una mejora universal de 10× de extremo a extremo a partir de kernels escritos a mano manteniendo estos checkpoints y sus salidas completas. La atención local exacta y la poda de salidas son mejoras acotadas que vale la pena perseguir. La descomposición directa de bajo rango no se acerca a ser sin pérdidas en las cuatro matrices de pesos muestreadas. Una mejora de producto de 10× es creíble para cargas de trabajo con una repetición exacta sustancial, o como objetivo de un modelo destilado/reestructurado sustancialmente más pequeño. Son promesas distintas y deben tener benchmarks distintos.

1. Qué requiere realmente diez veces más rápido

Estas son las medianas existentes sincronizadas y en caliente de extremo a extremo, que incluyen la preparación y el formateo; no son mediciones nuevas. Cada línea base usó cinco warmups, 50 iteraciones medidas y un límite de lote de 64 preguntas. Un fixture breve de 50 preguntas repite tres definiciones de pregunta; aun así, su runtime original evalúa las 50. El tiempo de descarga, carga y compilación queda fuera de estas medianas.

Modelo Breve 1: línea base → objetivo 10× Breve 10 Breve 50 Larga 1 Larga 10
Laya 13.421 → 1.342 ms 71.068 → 7.107 ms 336.030 → 33.603 ms 44.927 → 4.493 ms 420.987 → 42.099 ms
Multilingüe 7.390 → 0.739 ms 27.386 → 2.739 ms 127.565 → 12.756 ms 37.635 → 3.763 ms 389.487 → 38.949 ms
Decisiones tipadas 13.712 → 1.371 ms 75.618 → 7.562 ms 380.560 → 38.056 ms 99.233 → 9.923 ms 1000.294 → 100.029 ms

Fuentes: Laya FP16, multilingüe FP16, decisiones tipadas FP16. Las longitudes cortas con padding son 93/91/93; las longitudes largas son 512/1024/1024. Comparar sus filas largas no mantiene constante la longitud de tokens. El objetivo es una mejora adicional sobre MLX FP16 nativo, no sobre PyTorch MPS FP32.

Para cualquier optimización propuesta, sea f su fracción medida del tiempo de reloj de pared de extremo a extremo y s su propia aceleración. La ley de Amdahl da:

whole-request speedup = 1 / (1 - f + f/s)
10× requires f > 0.9 and s >= f / (f - 0.9)

Incluso acelerar un punto caliente que contiene el 95% del tiempo de solicitud requiere una mejora del punto caliente de 19×. Con el 98% aún requiere 12.25×; con el 99%, 11×. Cualquier preparación, conversión de salida o sincronización intacta que consuma al menos el 10% impide por sí sola una ganancia finita de 10× en la parte restante. Las medianas independientes de forward y de extremo a extremo no pueden restarse para estimar esa fracción; usa un experimento de medición segmentada o un perfil.

2. Trabajo denso y cotas inferiores condicionales

A partir de model.py, define el ancho oculto D, el ancho de la MLP del codificador I, la profundidad del codificador N, la profundidad de las cabezas H, el tamaño de lote B y la longitud de tokens con padding L. Contando una multiplicación y una suma como dos FLOPs:

A = N * (4 D² + 3 D I) + H * 12 D²
main dense FLOPs = 2 B L A
current dense attention products = 4 B (N + H) L² D

3DI incluye ambas ramas de la MLP del codificador con gating y su proyección de salida. Las MLPs de las cabezas usan una expansión convencional distinta de 4D. Estas fórmulas excluyen normas, activaciones, puntuación, máscaras, transferencias y planificación; son un modelo de coste de una implementación densa convencional, no una cota inferior aritmética incondicional sobre todos los algoritmos posibles.

Familia D / I / N / H Pesos densos principales A Proporción de la MLP del codificador en A Bytes FP16 para A
Laya / decisiones tipadas 1024 / 2624 / 28 / 2 368,312,320 61.28% 736,624,640
Multilingüe 768 / 1152 / 22 / 2 124,452,864 46.92% 248,905,728

El embedding multilingüe tiene 196,608,000 pesos, pero la inferencia recoge filas seleccionadas en lugar de multiplicar por todo el vocabulario. Por tanto, los parámetros totales del checkpoint exageran su trabajo por token en relación con el inglés. Un archivo de embedding más pequeño no implica automáticamente una inferencia más rápida.

Modelo / forma Trabajo denso + de atención densa Rendimiento efectivo requerido con objetivo 10×
Laya, B=1 L=93 69.57 GFLOPs 51.84 TFLOP/s
Laya, B=50 L=93 3478.44 GFLOPs 103.52 TFLOP/s
Laya, B=1 L=512 409.36 GFLOPs 91.12 TFLOP/s
Multilingüe, B=1 L=91 23.26 GFLOPs 31.48 TFLOP/s
Multilingüe, B=50 L=91 1163.05 GFLOPs 91.17 TFLOP/s
Multilingüe, B=1 L=1024 332.19 GFLOPs 88.27 TFLOP/s
Decisiones tipadas, B=1 L=1024 883.15 GFLOPs 89.00 TFLOP/s

Estos son requisitos, no picos afirmados de la GPU de Apple. Un techo medido de GEMM densa en estas formas es la comparación de ingeniería útil. Un techo medido puede hacer que un proyecto sea poco plausible; aun así no es prueba de una cota superior de hardware. Como el trabajo de CPU también cabe dentro del objetivo, la ejecución real en GPU debe terminar antes de lo que esta tabla permite si el trabajo de CPU no se solapa con ella.

Apple especifica 400 GB/s de ancho de banda de memoria unificada para esta configuración de M3 Max de 40 núcleos. Bajo el supuesto explícito de que los pesos de matriz FP16 principales se leen de la memoria unificada una vez por solicitud y no están ya retenidos en la caché on-chip, los suelos ideales de streaming son 1.842 ms para inglés/tipadas y 0.622 ms para multilingüe. Omiten activaciones, embeddings, pesos del scorer y todo el cómputo. También suponen que el ancho de banda agregado anunciado está totalmente disponible para esta carga de trabajo. Especificaciones técnicas de Apple.

Los objetivos ingleses de breve-single de 1.342/1.371 ms ya están por debajo de ese suelo de streaming FP16 convencional. Satisfacer esos objetivos a 400 GB/s sin cambiar el almacenamiento de los pesos requeriría aproximadamente 200/188 MB de los pesos contados para evitar la lectura de memoria, u otro cambio en los supuestos de ejecución. Este informe no asume ni inventa una capacidad de caché on-chip. La reutilización de pesos dentro de un lote, la compresión exacta y algoritmos alternativos cambian la cota; la observación no es un teorema de imposibilidad universal.

Solo para la parte densa, la intensidad aritmética ideal solo de pesos es BL FLOPs/byte en FP16: 93 con B=1 L=93 y 4650 con B=50. El tráfico de activaciones reduce esas cifras. Esto explica por qué la compresión de pesos se vuelve una estrategia de rendimiento menos convincente a medida que crece el número de tokens que comparten cada matriz.

3. ¿Cuánto trabajo exacto se puede eliminar realmente?

La primera capa global del codificador hace que cada token válido sea potencialmente relevante, y ambas capas de cabezas de decisión son globales. Que un token esté ausente de la salida final no hace prescindible su representación intermedia: las consultas posteriores siguen usándolo como clave/valor.

La excepción exacta es la última capa de cabezas. Calcula sus K/V para todos los tokens válidos, Q solo para CLS y los marcadores de opción, y su proyección de salida/MLP solo en esas posiciones seleccionadas. La cabeza anterior y el codificador completo deben seguir produciendo todos los estados de token válidos. Esto es poda de dependencias, no eliminación de cabezas de atención. Con R=5 posiciones seleccionadas incluyendo CLS, su ahorro denso máximo es 20 B (L-R) D² FLOPs cuando Q se separa de la proyección QKV fusionada, más 4 B L (L-R) D FLOPs de atención. Conservar la proyección QKV fusionada es más simple pero ahorra menos.

La atención local del codificador permite abs(q_position-k_position) <= 64, una ventana interior inclusiva de 129 posiciones. El número de pares locales válidos para L>64 es 129L - 64*65. Omitir los tiles K/V prohibidos es matemáticamente exacto si se preservan el padding y las posiciones. Una máscara aplicada después de la multiplicación QK densa no realiza ese ahorro aritmético.

Modelo / longitud Proporción de los productos de atención en los FLOPs modelados totales Ahorro exacto por ventana local Ahorro por selección de la cabeza final, R=5 Ahorro combinado
Laya, 93 1.53% 0.086% 2.701% 2.787%
Laya, 512 7.87% 3.607% 2.857% 6.464%
Decisiones tipadas, 1024 14.59% 7.686% 2.904% 10.589%
Multilingüe, 91 2.62% 0.130% 4.465% 4.595%
Multilingüe, 1024 23.27% 11.919% 4.584% 16.503%

Estas son reducciones del trabajo modelado, no predicciones de latencia. Dejan intacto el 83.5–97.2% del trabajo modelado, lejos del presupuesto del 10%. Incluso hacer gratis todos los productos de atención solo elimina aquí el 1.53–23.27%. A la inversa, una aceleración hipotética de 10× de todas las proyecciones densas dejando la atención sin cambios da solo 8.79× en entradas cortas inglesas y 3.23× en entradas largas multilingües bajo igual eficiencia de FLOPs. Un perfil real debe sustituir estas fracciones aritméticas por fracciones de tiempo medidas antes de aplicar Amdahl.

El runtime ya llama al SDPA rápido de MLX. FlashAttention calcula la misma función de atención softmax densa con menos tráfico de memoria intermedia; su tiling no hace que la atención global arbitraria sea lineal en el número de tokens. Aprovechar la máscara local existente del checkpoint es exacto, mientras que imponer nueva dispersión a sus capas globales cambia el modelo. El bajo rango de QKᵀ no implica bajo rango tras la exponenciación elemento a elemento y la normalización por filas. Artículo de FlashAttention, API de atención de MLX.

Quitar el padding también es exacto si se mantienen secuencias independientes, posiciones originales y orden de salida. Los fixtures breves actuales de 50 preguntas desperdician solo el 8.9% de los tokens de padding en inglés/tipadas y el 5.8% en el multilingüe. Esos fixtures no pueden obtener 10× quitando el padding. Una carga de trabajo distinta que contuviera un elemento de 1024 tokens y 49 de 64 tokens desperdiciaría padding suficiente para una proporción de trabajo por token de 12.3×; sería un resultado de planificación específico de esa distribución.

4. ¿Revela la factorización de bajo rango un atajo oculto de 10×?

Para una matriz congelada W de forma m × n, reemplazarla por dos factores U(m × r) y V(r × n) cambia el coste de multiplicación por token de mn a r(m+n). El punto de equilibrio requiere r < mn/(m+n); una reducción de 10× en el trabajo de matrices requiere:

r <= mn / (10(m+n))
best squared Frobenius residual at rank r = sum_{j>r} sigma_j²

La segunda expresión es el óptimo de la SVD truncada. Una proyección cuadrada de 1024 de ancho necesita rango como máximo 51; su factorización exacta de rango completo en cambio duplica el número de multiplicaciones. GELU, el gating, el softmax y el LayerNorm dependiente de la entrada impiden simplemente multiplicar los pesos de capas vecinas en una única matriz constante.

Inspeccioné cuatro matrices explícitamente seleccionadas de capas intermedias usando un solver de autovalores Gram en float64 en CPU, una matriz de salida de atención y una matriz de entrada de MLP fusionada de cada familia de modelos. El sistema de autovalores más grande era 1024×1024; todos los límites de hilos BLAS solicitados eran uno, no se importó ninguna biblioteca de GPU y no se ejecutó ninguna pasada de forward del modelo. Son espectros completos de las matrices seleccionadas, no una estimación por proyección aleatoria ni un estudio de todas las capas.

Matriz de muestra Forma Rango máximo para una reducción de 10× en el trabajo de matrices Energía de Frobenius al cuadrado retenida en ese rango Mejor error relativo de Frobenius Rango que retiene el 99% de la energía
Laya capa 14 atención Wo 1024×1024 51 28.66% 84.46% 690
Laya capa 14 MLP Wi 5248×1024 85 29.29% 84.09% 956
Multilingüe capa 11 atención Wo 768×768 38 24.97% 86.62% 516
Multilingüe capa 11 MLP Wi 2304×768 57 32.88% 81.93% 697

Las mediciones en bruto, los valores SHA-256 de las matrices seleccionadas, los extremos de valores singulares, los rangos estables y rangos candidatos adicionales están en math_spectrum.json. Cada matriz muestreada tiene rango numérico completo. En las cuatro, retener el 99% de la energía de Frobenius al cuadrado requiere un rango por encima del punto de equilibrio aritmético de dos factores. La MLP Wi multilingüe tiene un rango estable de solo 13.29, y aun así el rango 57 retiene apenas el 32.88% de la energía total: el rango estable no es la dimensión necesaria para un error de reconstrucción pequeño.

Esta es evidencia sólida contra la SVD simple solo de pesos como atajo casi sin pérdidas. No prueba una mala exactitud de tarea para todos los modelos de bajo rango: las activaciones de los tokens pueden ocupar una distribución restringida, y el reentrenamiento puede trasladar cómputo útil a una representación más pequeña. La compresión consciente de las activaciones debería minimizar el error ponderado por la covarianza de entrada real, aproximadamente ||(W-Wr) Sigma_x^(1/2)||F, y luego probar la calidad de extremo a extremo. El análisis de cuatro matrices no estima esas covarianzas, ni una cota global del error de logits, ni la mejora alcanzable con el modelo completo. Un delta de ajuste fino de bajo rango tampoco implica que la propia matriz preentrenada congelada pueda descartarse.

La multiplicación de matrices rápida escrita a mano no elimina esta evidencia. Como ilustración aritmética, una recursión de bloque de siete productos en lugar de ocho ahorra solo el 12.5% del trabajo de multiplicación por nivel, antes de sumas de matrices y tráfico adicionales; incluso diez niveles ideales producen alrededor de 3.8× menos multiplicaciones. Aplicar recursión profunda a proyecciones de 768–1024 de ancho no es un plan creíble de latencia de 10×, sobre todo frente a GEMMs de GPU ya organizadas en tiles. Esto no es una afirmación de que se hayan descartado todos los algoritmos exactos posibles.

5. La cuantización, la poda y la salida temprana cambian el contrato

Cuantización solo de pesos. Para grupos afines de 64 con escala y offset en FP16, los bytes almacenados por parámetro de matriz son aproximadamente bits/8 + 4/64. Eso produce reducciones ideales de almacenamiento de matrices de 1.88× a 8 bits, 3.56× a 4 bits y 6.40× a 2 bits en relación con FP16. No son reducciones de cómputo ni ganancias de tiempo de reloj de pared. Diez veces menos tráfico de pesos solo por este mecanismo requeriría aproximadamente un bit por peso más metadatos, una aproximación radicalmente distinta. Los tensores existentes de norm/embedding/head y la sobrecarga de decodificación reducen aún más el beneficio sobre toda la solicitud. Documentación de cuantización de MLX, documentación de matmul cuantizado.

La cuantización puede ser útil con B=1 si domina el tráfico de pesos, pero no tiene por qué acelerar un GEMM de muchos tokens. Cambia los logits, las expectativas de puntuación, la confianza por entropía y las probabilidades de acción. La API pública expone todo esto, así que la coincidencia de argmax por sí sola es insuficiente. Si cada logit final cambia como máximo en epsilon, un margen de los dos logits mayores superior a 2*epsilon certifica la etiqueta ganadora, pero no certifica la probabilidad, la puntuación ni la coincidencia de acción. La calibración de temperatura divide los errores de logits por su temperatura; una temperatura pequeña puede amplificar un error bruto aparentemente pequeño. Los checkpoints existentes contienen buckets de temperatura por recuento de opciones cerca de 0.1006, lo que hace esto relevante.

Poda de tokens. Con un ancho/profundidad sin cambios y la misma eficiencia de cómputo denso, un objetivo aproximado de 10× en el trabajo denso requiere retener alrededor del 10% del procesamiento de tokens entre capas, no eliminar unos pocos tokens de puntuación. Podar tras procesar la fracción a de la profundidad original tiene una proporción de trabajo denso a + (1-a)rho, donde rho es la fracción de tokens retenidos para las capas posteriores. Si a >= 0.1, incluso descartar todos los tokens restantes no puede dar más de 10× en ese modelo simplificado. En este modelo, la primera capa global ya conecta cada token de estado con todos los tokens de pregunta/opción no enmascarados. La importancia aprendida de los tokens y la poda dinámica pueden estudiarse, pero su corrección es una afirmación sobre la calidad de la tarea que requiere entrenamiento/calibración. Los tokens descartados pueden contener negaciones, entidades raras o el hecho que decide una opción ajustada; una atención temprana baja no es prueba de irrelevancia en capas posteriores.

Salida temprana. Alimentar simplemente los estados ocultos de la capa 3 a una cabeza entrenada tras la capa 28 no preserva su distribución de entrada. Deben entrenarse cabezas intermedias y una regla de confianza validada. Un presupuesto de profundidad de coste uniforme de 10× es de unas 2.8 capas de codificador para inglés o 2.2 para multilingüe, antes de la sobrecarga de la cabeza y de CPU. Conservar la cabeza completa actual hace más estricto el presupuesto denso de secuencias cortas: sus dos capas solas son el 6.83%/11.37% de A para inglés/multilingüe. Para el multilingüe, esa cabeza por sí sola supera todo el presupuesto de trabajo denso del 10%. La divergencia por lotes también importa: salir en elementos individuales no ahorra nada si permanecen en un lote denso sin reducir. FastBERT y DeeBERT establecen enfoques entrenados de inferencia adaptativa con trade-offs de exactitud/velocidad; sus ganancias reportadas no son mediciones de Laya ni de este Mac.

Un estudiante aproximado más un fallback al profesor tiene un coste normalizado esperado de aproximadamente c + q, donde c es el coste del estudiante dividido por el coste del profesor y q es la tasa de fallback al profesor, suponiendo ejecución en serie. Para cumplir 10×, c + q <= 0.1: un estudiante que cuesta el 5% del profesor deja como máximo el 5% de las solicitudes para fallback. Eso puede mejorar la latencia media mientras el p95 de las solicitudes difíciles sigue cerca de la latencia del profesor. El enrutamiento basado en confianza no es un certificado de equivalencia exacta.

6. ¿Qué se puede reutilizar exactamente entre preguntas?

El prompt es [CLS] question/options [SEP] state [SEP]; distintas preguntas pueden cambiar tanto el offset del estado como el truncamiento del estado. Para la consulta i de la primera capa, la salida de atención es:

o_i = sum_j exp(q_i dot k_j / sqrt(d)) v_j
      / sum_j exp(q_i dot k_j / sqrt(d))

Cambiar cualquier clave/valor de pregunta no enmascarado puede cambiar tanto el numerador como el denominador de cada consulta de estado. Para logits finitos, los pesos de softmax no enmascarados son positivos en aritmética real. En consecuencia, el estado contextual tras la primera capa global depende de la pregunta. Todos los K/V posteriores dependen de esos estados cambiados. Reutilizar una codificación completa del estado o una caché K/V estilo decodificador entre preguntas distintas cambia, por tanto, la función. El texto bruto compartido es insuficiente; el offset, el truncamiento, las máscaras y los metadatos de los marcadores también importan.

Hay una pequeña excepción exacta que vale la pena distinguir: antes de esa primera operación de atención, los embeddings normalizados de tokens y sus proyecciones Q/K/V de la primera capa, pre-RoPE dependen solo de la identidad del token. Pueden cachearse o precalcularse, aplicando después las posiciones RoPE absolutas. Eliminar toda la primera proyección QKV solo quita 0.85%/1.42% del trabajo denso principal en inglés/multilingüe, antes del tráfico de consultas. Una tabla QKV de vocabulario completo añade aproximadamente 309 MB/1.18 GB de almacenamiento FP16 si se retiene junto a los embeddings ordinarios. Los estadísticos suficientes del softmax estado-a-estado de la primera capa también pueden reutilizarse en condiciones idénticas de token de estado/truncamiento y posición relativa, y luego combinarse con las contribuciones de la pregunta mediante una fusión estable de softmax. Esto solo ahorra una porción de una capa de atención; no hace reutilizables los estados contextuales posteriores.

La deduplicación exacta de entradas completas tiene mucho más potencial. Si N preguntas solicitadas contienen U entradas de forward preparadas idénticas, evalúa U y mapea sus salidas brutas de vuelta a todas las preguntas originales con las etiquetas ordenadas, la calibración, los IDs y la contabilidad de uso correctos. Las claves de igualdad y de caché deben cubrir todos los tensores preparados, incluidas máscaras, posiciones de marcadores y tipos de pregunta; las claves entre llamadas también deben identificar la revisión del checkpoint, el dtype y la configuración de ejecución. En el fixture existente de 50 preguntas, U <= 3, así que la proporción ideal de trabajo lineal es 50/3 = 16.67×. La latencia real es menos predecible porque los lotes pequeños tienen eficiencias distintas y la preparación/mapeo de salida se mantienen. Para 10 preguntas y tres entradas únicas, la proporción es solo 3.33×. Un benchmark de 50 preguntas distintas debe acompañar a cualquiera de los dos resultados.

Con el cacheo de resultados entre llamadas, la latencia normalizada media es 1-h+h*epsilon, donde h es la tasa de aciertos y epsilon el coste de un acierto de caché dividido por el coste de una inferencia no cacheada. Una mejora media de 10× requiere h >= 0.9/(1-epsilon); si un acierto cuesta el 1% de la inferencia, la tasa de aciertos requerida es 90.91%. Informa por separado de las tasas de aciertos, los fallos, la latencia en caché fría y la ruta de fallo. El benchmark estándar repite exactamente la misma solicitud, así que una caché entre llamadas sin etiquetar dejaría en gran medida de medir la ejecución del modelo.

Un codificador de estado compartido más atención cruzada específica de la pregunta es un producto rediseñado prometedor, pero requiere reentrenamiento o destilación, porque elimina la interacción temprana original entre pregunta y estado. Si la pasada de estado reutilizable cuesta aproximadamente una antigua pasada por pregunta, entonces con Q=50 la pasada compartida consume el 2% del presupuesto total antiguo; el trabajo específico de la pregunta puede consumir como máximo otro 8% para un objetivo de 10×. Con Q=10, esa única pasada compartida ya usa el 10% antes del trabajo específico de la pregunta. La longitud del estado, la complejidad de las opciones y el codificador de estado más pequeño elegido cambian esta estimación.

7. Una ruta creíble hacia una mejora del modelo de un orden de magnitud

Reducir tanto la profundidad como el ancho proporciona suficiente margen aritmético para absorber la sobrecarga. Los siguientes son presupuestos de diseño del estudiante, no modelos implementados, afirmaciones de calidad ni mejoras medidas. Conservan las mismas longitudes de tokens, usan una MLP de codificador con gating y una capa convencional de cabezas de decisión, y cuentan con la misma fórmula A.

Profesor Candidato N / D / I / H Pesos densos principales Proporción de trabajo denso profesor/estudiante
Laya / tipadas 6 / 512 / 1344 / 1 21.82 M 16.88×
Laya / tipadas 4 / 512 / 1344 / 1 15.60 M 23.61×
Multilingüe 6 / 384 / 576 / 1 9.29 M 13.40×
Multilingüe 4 / 384 / 576 / 1 6.78 M 18.35×

El embedding puede seguir siendo relativamente grande y aun así ser barato de recoger. Destila las distribuciones de opciones y las salidas de acción del profesor, mezcla tareas etiquetadas, cubre el comportamiento de score/noul y distintos recuentos de opciones, y luego reajusta la calibración de salida con datos reservados. Evalúa la cobertura completa de idiomas y preguntas distintas. TinyBERT es evidencia de que reducir conjuntamente la profundidad/ancho del codificador mediante destilación puede dar un trade-off importante de velocidad/calidad en otro entorno BERT; su ganancia de inferencia reportada de 9.4× no se traslada numéricamente a Laya.

Para la ingeniería escrita a mano, prioriza las siguientes decisiones:

  1. Establece el límite antes de escribir un nuevo GEMM. Mide el tiempo del modelo compilado y primitivas densas representativas con B=1 y un lote de rendimiento. Compara el rendimiento sostenido real con los requisitos de 31–104 TFLOP/s de arriba. Si tras eliminar lanzamientos la ejecución densa sigue dominando, nuevos kernels elementales no pueden aportar el orden de magnitud que falta.
  2. Implementa la selección exacta de salidas y la atención local exacta como proyectos acotados. La última cabeza tiene una prueba de dependencias clara; la ruta local multilingüe larga tiene la mayor oportunidad aritmética exacta. Inspecciona las fracciones medidas de tiempo de reloj de pared antes de mantener Metal personalizado. Preserva el contrato numérico de la atención rápida existente y prueba longitudes/padding de frontera.
  3. Publica la deduplicación exacta solo con contabilidad de la carga de trabajo. Es la ruta más rápida a un posible resultado de 10× para una aplicación suficientemente repetitiva. Debe coexistir con benchmarks sin caché y de entradas únicas para que los usuarios puedan predecir sus propios resultados.
  4. Trata el 4/8-bit y el bajo rango consciente de activaciones como aproximaciones medidas. Exige a la vez una mejora de velocidad y puertas de calidad calibrada. Ni menos bytes almacenados ni un número bajo de rango estable son suficientes.
  5. Si se requiere 10× en solicitudes nuevas y diversas, desarrolla y valida la arquitectura de estudiante más pequeño o de estado compartido. El presupuesto del estudiante apunta deliberadamente a más de 10× de reducción de trabajo denso, porque la atención, la preparación en CPU y la sobrecarga de kernels pequeños siguen presentes. Un presupuesto de calidad y datos adecuados de entrenamiento/evaluación son requisitos previos; el fixture de paridad existente no puede validar esta afirmación.

Para las variantes aproximadas, la aceptación debería registrar la coincidencia de choice y la exactitud etiquetada, el error de puntuación, la deriva de probabilidad, la calibración de confianza, las probabilidades de acción y los casos de margen ajustado. Las comprobaciones existentes de 378/378 argmax, las 600 llamadas repetidas finitas y la alineación de regresión de AG News establecen el comportamiento del port actual en esas pruebas; no validan un modelo comprimido nuevo. Mantén una identidad de modelo distinta e informa juntamente de p50/p95, la configuración en frío, la memoria, el recuento de entradas únicas y la calidad.

Reproducción y alcance

  • math_costs.py reproduce todas las tablas derivadas de la arquitectura y los objetivos de latencia a partir de las configs de los checkpoints y el JSON de benchmarks existente; math_costs.json registra los hashes de los archivos de entrada y las revisiones de los checkpoints.
  • math_spectrum.py reproduce los cuatro espectros de matrices seleccionados en CPU; math_spectrum.json incluye hashes exactos de matrices. Usa solo NumPy y safetensors y no carga el modelo completo.
  • Ejecuta .venv/bin/python experiments/math_costs.py y .venv/bin/python experiments/math_spectrum.py desde la raíz del repositorio tras descargar los checkpoints de origen fijados. El muestreo en CPU y las mediciones de GPU de ingeniería se coordinaron para evitar solapamiento.
  • La semántica actual de cuantización de MLX se comprobó con la skill find-docs usando la resolución de biblioteca Context7 requerida, seguida de una consulta separada de documentación de cuantización. Se usaron como fuentes la documentación oficial de MLX, los artículos de ModernBERT/FlashAttention y de destilación/salida temprana, las especificaciones de Apple y el modelo local real. Ningún número de rendimiento de un artículo se presenta como medición en esta máquina.

Conclusión: con el mismo checkpoint y la misma semántica de salida completa, de momento no hay una ruta creíble de «escribir a mano unos cuantos kernels y ganar otros 10× de velocidad». La mayor parte del modelo actual es cómputo denso; la atención local más el recorte exacto de la cabeza final solo reducen aproximadamente el 2.8%–16.5% de los FLOPs modelados. El muestreo de pesos reales muestra que comprimir la descomposición de matrices a una décima parte del trabajo produce un error de reconstrucción de Frobenius relativo óptimo de aproximadamente el 82%–87%, así que no puede tomarse como un atajo casi sin pérdidas. Un 10× es más prometedor a partir de la deduplicación/caché exacta de entradas muy repetidas, o mediante destilación reduciendo a la vez el número de capas y el ancho y rediseñando la forma de codificar un estado compartido. Lo primero exige publicar las tasas de aciertos y el rendimiento con entradas únicas; lo segundo exige entrenamiento y revalidación de la exactitud, la puntuación, las probabilidades y el comportamiento de acción.