Documentação

O Laya MLX pode ficar dez vezes mais rápido? Uma investigação matemática

Data da pesquisa: 2026-09-19. Linha de base: os resultados FP16 MLX versionados no Apple M3 Max com 40 núcleos de GPU e 128 GiB de memória unificada. Este relatório separa fatos algébricos, estimativas estáticas de custo, medições na CPU de matrizes selecionadas do checkpoint e hipóteses que exigem experimentos de inferência. Nenhuma inferência em GPU nem nova medição de latência foi realizada para esta investigação matemática. A investigação de engenharia que a acompanha contém temporizações candidatas quando disponíveis. Aqui, “exato” significa preservar as dependências matemáticas e a função em aritmética real; uma ordem de redução na GPU ou um kernel diferente ainda pode alterar resultados de ponto flutuante, então as tolerâncias numéricas existentes e o contrato de saída exposta continuam sendo portões de aceitação.

Decisão: não orçar um ganho universal de 10× de ponta a ponta a partir de kernels escritos à mão mantendo estes checkpoints e suas saídas completas. A atenção local exata e a poda de saída são melhorias válidas e limitadas. A decomposição direta em posto baixo não chega perto de ser sem perdas nas quatro matrizes de peso amostradas. Um ganho de produto de 10× é crível para cargas de trabalho com repetição exata substancial, ou como meta de um modelo destilado/reestruturado substancialmente menor. São promessas diferentes e devem ter benchmarks diferentes.

1. O que dez vezes mais rápido realmente exige

Estas são as medianas ponta a ponta sincronizadas e a quente existentes, incluindo preparação e formatação; elas não são medições novas. Cada linha de base usou cinco warmups, 50 iterações cronometradas e um limite de lote de 64 perguntas. Um fixture curto de 50 perguntas repete três definições de pergunta; mesmo assim, seu runtime original avalia todas as 50. Tempo de download, carregamento e compilação ficam fora dessas medianas.

Modelo Curta 1: linha de base → meta 10× Curta 10 Curta 50 Longa 1 Longa 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
Multilíngue 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
Decisões 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

Fontes: Laya FP16, multilíngue FP16, decisões tipadas FP16. Os comprimentos curtos com padding são 93/91/93; os comprimentos longos são 512/1024/1024. Comparar suas linhas longas não mantém o comprimento de tokens constante. A meta é uma melhoria adicional sobre o MLX FP16 nativo, não sobre o PyTorch MPS FP32.

Para qualquer otimização proposta, seja f sua fração medida do tempo de relógio de parede ponta a ponta e s sua própria aceleração. A lei de Amdahl dá:

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

Mesmo acelerando um hotspot que contém 95% do tempo de requisição, é preciso uma melhoria de 19× no hotspot. Em 98% ainda exige 12.25×; em 99%, 11×. Qualquer preparação, conversão de saída ou sincronização intocada que consuma pelo menos 10% impede um ganho finito de 10× apenas pela porção restante. Medianas independentes de forward e ponta a ponta não podem ser subtraídas para estimar essa fração; use um experimento de medição segmentado ou um profile.

2. Trabalho denso e limites inferiores condicionais

A partir de model.py, defina a largura oculta D, a largura do MLP do encoder I, a profundidade do encoder N, a profundidade da cabeça H, o tamanho do lote B e o comprimento de tokens com padding L. Contando uma multiplicação e uma adição como dois 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 inclui os dois ramos do MLP do encoder com gate e sua projeção de saída. Os MLPs da cabeça usam uma expansão 4D diferente e convencional. Estas fórmulas excluem norms, ativações, pontuação, máscaras, transferências e agendamento; são um modelo de custo convencional de implementação densa, não um limite inferior aritmético incondicional sobre todos os algoritmos possíveis.

Família D / I / N / H Principais pesos densos A Fração do MLP do encoder em A Bytes FP16 para A
Laya / decisões tipadas 1024 / 2624 / 28 / 2 368,312,320 61.28% 736,624,640
Multilíngue 768 / 1152 / 22 / 2 124,452,864 46.92% 248,905,728

O embedding multilíngue tem 196,608,000 pesos, mas a inferência reúne linhas selecionadas em vez de multiplicar pelo vocabulário inteiro. Portanto, os parâmetros totais do checkpoint exageram seu trabalho por token em relação ao inglês. Um arquivo de embedding menor não é automaticamente uma inferência mais rápida.

Modelo / forma Trabalho denso + atenção densa Vazão efetiva necessária na meta de 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
Multilíngue, B=1 L=91 23.26 GFLOPs 31.48 TFLOP/s
Multilíngue, B=50 L=91 1163.05 GFLOPs 91.17 TFLOP/s
Multilíngue, B=1 L=1024 332.19 GFLOPs 88.27 TFLOP/s
Decisões tipadas, B=1 L=1024 883.15 GFLOPs 89.00 TFLOP/s

Estes são requisitos, não picos de GPU Apple alegados. Um teto medido de GEMM densa nessas formas é a comparação de engenharia útil. Um teto medido pode tornar um projeto implausível; ainda assim, não é prova de um limite superior de hardware. Como o trabalho na CPU também cabe dentro da meta, a execução real na GPU precisa terminar antes do que esta tabela permite se o trabalho na CPU não se sobrepuser a ela.

A Apple especifica 400 GB/s de largura de banda de memória unificada para esta configuração de M3 Max de 40 núcleos. Sob a suposição explícita de que os principais pesos de matriz FP16 são lidos da memória unificada uma vez por requisição e não já estão retidos no cache on-chip, os pisos ideais de streaming são 1.842 ms para inglês/tipadas e 0.622 ms para multilíngue. Estes omitem ativações, embeddings, pesos do scorer e toda a computação. Também assumem que a largura de banda agregada anunciada está totalmente disponível para esta carga de trabalho. Especificações técnicas da Apple.

As metas de curta-única em inglês de 1.342/1.371 ms já estão abaixo daquele piso convencional de streaming FP16. Para satisfazer essas metas a 400 GB/s sem mudar o armazenamento de pesos, seria preciso que aproximadamente 200/188 MB dos pesos contados evitassem a leitura de memória, ou outra mudança nas suposições de execução. Este relatório não assume nem inventa uma capacidade de cache on-chip. O reúso de pesos em um lote, a compressão exata e algoritmos alternativos mudam o limite; a observação não é um teorema universal de impossibilidade.

Somente para a parte densa, a intensidade aritmética ideal apenas de pesos é BL FLOPs/byte em FP16: 93 em B=1 L=93 e 4650 em B=50. O tráfego de ativação reduz esses números. Isso explica por que a compressão de pesos se torna uma estratégia de vazão menos convincente à medida que cresce o número de tokens que compartilham cada matriz.

3. Quanto trabalho exato pode de fato ser removido?

A primeira camada global do encoder torna todo token válido potencialmente relevante, e as duas camadas da cabeça de decisão são globais. O fato de um token estar ausente da saída final não torna sua representação intermediária dispensável: queries posteriores ainda o usam como key/value.

A exceção exata é a última camada da cabeça. Calcule seus K/V para todos os tokens válidos, Q apenas para CLS e marcadores de opção, e sua projeção de saída/MLP apenas nessas posições selecionadas. A cabeça anterior e o encoder completo ainda devem produzir todos os estados de token válidos. Isto é poda de dependências, não remoção de cabeça de atenção. Com R=5 posições selecionadas incluindo CLS, sua economia densa máxima é 20 B (L-R) D² FLOPs quando Q é separado da projeção QKV fundida, mais 4 B L (L-R) D FLOPs de atenção. Preservar a projeção QKV fundida é mais simples, mas economiza menos.

A atenção local do encoder permite abs(q_position-k_position) <= 64, uma janela interior inclusiva de 129 posições. O número de pares locais válidos para L>64 é 129L - 64*65. Pular tiles proibidos de K/V é matematicamente exato se o padding e as posições forem preservados. Uma máscara aplicada após a multiplicação QK densa não realiza essa economia aritmética.

Modelo / comprimento Fração dos produtos de atenção nos FLOPs modelados totais Economia exata da janela local Economia da seleção da cabeça final, R=5 Economia combinada
Laya, 93 1.53% 0.086% 2.701% 2.787%
Laya, 512 7.87% 3.607% 2.857% 6.464%
Decisões tipadas, 1024 14.59% 7.686% 2.904% 10.589%
Multilíngue, 91 2.62% 0.130% 4.465% 4.595%
Multilíngue, 1024 23.27% 11.919% 4.584% 16.503%

Estas são reduções no trabalho modelado, não previsões de latência. Elas deixam 83.5–97.2% do trabalho modelado intacto, longe do orçamento de 10%. Mesmo tornar todos os produtos de atenção gratuitos remove apenas 1.53–23.27% aqui. Por outro lado, uma aceleração hipotética de 10× de cada projeção densa, mantendo a atenção inalterada, dá apenas 8.79× para entradas curtas em inglês e 3.23× para entradas longas multilíngues sob igual eficiência de FLOPs. Um profile real deve substituir essas frações aritméticas por frações de tempo medidas antes de aplicar Amdahl.

O runtime já chama o SDPA rápido do MLX. O FlashAttention calcula a mesma função de atenção softmax densa com menos tráfego de memória intermediária; seu tiling não torna a atenção global arbitrária linear no número de tokens. Explorar a máscara local existente do checkpoint é exato, enquanto impor nova esparsidade às suas camadas globais muda o modelo. O posto baixo de QKᵀ não implica posto baixo após exponenciação elementwise e normalização por linha. Artigo do FlashAttention, API de atenção do MLX.

Remover o padding também é exato com sequências independentes, posições originais e ordem de saída mantidas. Os fixtures curtos atuais de 50 perguntas desperdiçam apenas 8.9% dos tokens com padding em inglês/tipadas e 5.8% em multilíngue. Esses fixtures não podem obter 10× removendo o padding. Uma carga de trabalho diferente contendo um item de 1024 tokens e 49 itens de 64 tokens desperdiçaria padding suficiente para uma razão de trabalho por token de 12.3×; isso seria um resultado de agendamento específico dessa distribuição.

4. A fatoração em posto baixo revela um atalho oculto de 10×?

Para uma matriz congelada W de forma m × n, substituí-la por dois fatores U(m × r) e V(r × n) muda o custo de multiplicação por token de mn para r(m+n). O ponto de equilíbrio exige r < mn/(m+n); uma redução de 10× no trabalho de matriz exige:

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

A segunda expressão é o ótimo da SVD truncada. Uma projeção quadrada de largura 1024 precisa de posto no máximo 51; sua fatoração exata de posto completo, em vez disso, dobra a contagem de multiplicações. GELU, gate, softmax e LayerNorm dependente da entrada impedem simplesmente multiplicar os pesos de camadas vizinhas em uma única matriz constante.

Inspecionei quatro matrizes de camadas intermediárias explicitamente selecionadas usando um auto-solver de Gram em float64 na CPU, uma matriz de saída de atenção e uma matriz de entrada de MLP fundida de cada família de modelo. O maior sistema de autovalores era 1024×1024; todos os limites de threads do BLAS solicitados eram um, nenhuma biblioteca de GPU foi importada e nenhum forward do modelo foi executado. Estes são espectros completos das matrizes selecionadas, não uma estimativa por projeção aleatória nem um levantamento de todas as camadas.

Matriz amostrada Forma Posto máximo para redução de 10× no trabalho de matriz Energia de Frobenius ao quadrado retida nesse posto Melhor erro relativo de Frobenius Posto que retém 99% da energia
Laya camada 14 atenção Wo 1024×1024 51 28.66% 84.46% 690
Laya camada 14 MLP Wi 5248×1024 85 29.29% 84.09% 956
Multilíngue camada 11 atenção Wo 768×768 38 24.97% 86.62% 516
Multilíngue camada 11 MLP Wi 2304×768 57 32.88% 81.93% 697

Medições brutas, valores SHA-256 das matrizes selecionadas, extremos de valores singulares, postos estáveis e postos candidatos adicionais estão em math_spectrum.json. Cada matriz amostrada é numericamente de posto completo. Em todas as quatro, reter 99% da energia de Frobenius ao quadrado exige um posto acima do ponto de equilíbrio aritmético dos dois fatores. O MLP Wi multilíngue tem posto estável de apenas 13.29, mas o posto 57 retém meramente 32.88% da energia total: o posto estável não é a dimensão necessária para um pequeno erro de reconstrução.

Isto é forte evidência contra a SVD simples apenas de pesos como atalho quase sem perdas. Não prova baixa precisão na tarefa para todo modelo de posto baixo: as ativações dos tokens podem ocupar uma distribuição restrita, e o retreinamento pode mover computação útil para uma representação menor. A compressão ciente de ativação deve minimizar o erro ponderado pela covariância real da entrada, aproximadamente ||(W-Wr) Sigma_x^(1/2)||F, e depois testar a qualidade ponta a ponta. A análise das quatro matrizes não estima essas covariâncias, um limite global de erro de logit nem um ganho de velocidade alcançável no modelo inteiro. Um delta de ajuste fino de posto baixo também não implica que a própria matriz pré-treinada congelada possa ser descartada.

A multiplicação rápida de matrizes escrita à mão não elimina essa evidência. Como ilustração aritmética, uma recursão de blocos com sete produtos em vez de oito economiza apenas 12.5% do trabalho de multiplicação por nível, antes de adições de matriz e tráfego adicionais; mesmo dez níveis ideais produzem cerca de 3.8× menos multiplicações. Aplicar recursão profunda a projeções de 768–1024 de largura não é um plano crível de latência de 10×, especialmente contra GEMMs de GPU já tiled. Isto não é uma alegação de que todos os algoritmos exatos possíveis foram descartados.

5. Quantização, poda e saída antecipada mudam o contrato

Quantização apenas de pesos. Para grupos afins de 64 com escala e offset em FP16, os bytes armazenados por parâmetro de matriz são aproximadamente bits/8 + 4/64. Isso dá reduções ideais de armazenamento de matriz de 1.88× em 8 bits, 3.56× em 4 bits e 6.40× em 2 bits em relação ao FP16. Não são reduções de computação nem ganhos de tempo de relógio de parede. Dez vezes menos tráfego de pesos só por este mecanismo exigiria cerca de um bit por peso mais metadados, uma aproximação radicalmente diferente. Tensores existentes de norm/embedding/cabeça e a sobrecarga de decodificação reduzem ainda mais o benefício por requisição. Documentação de quantização do MLX, documentação de matmul quantizada.

A quantização pode ser útil em B=1 se o tráfego de pesos dominar, mas não precisa acelerar uma GEMM de muitos tokens. Ela altera logits, expectativas de score, confiança de entropia e probabilidades de ação. A API pública expõe tudo isso, então a concordância de argmax sozinha é insuficiente. Se cada logit final muda no máximo epsilon, uma margem dos dois maiores logits maior que 2*epsilon certifica o rótulo vencedor, mas não certifica concordância de probabilidade, score ou ação. A calibração de temperatura divide os erros de logit por sua temperatura; uma temperatura pequena pode amplificar um erro bruto aparentemente pequeno. Os checkpoints existentes contêm buckets de temperatura por contagem de opções perto de 0.1006, o que torna isto relevante.

Poda de tokens. Com largura/profundidade inalteradas e eficiência de computação densa, uma meta aproximada de 10× no trabalho denso exige reter cerca de 10% do processamento de tokens ao longo das camadas, e não remover alguns tokens de pontuação. Podar após processar a fração a da profundidade original tem razão de trabalho denso a + (1-a)rho, onde rho é a fração de tokens retidos para as camadas seguintes. Se a >= 0.1, mesmo descartando todos os tokens restantes não se pode obter mais de 10× nesse modelo simplificado. Neste modelo, a primeira camada global já conecta cada token de state a todos os tokens de pergunta/opção não mascarados. A importância aprendida dos tokens e a poda dinâmica podem ser estudadas, mas sua correção é uma alegação de qualidade de tarefa que exige treinamento/calibração. Tokens descartados podem conter negações, entidades raras ou o fato que decide uma opção apertada; atenção inicial baixa não é prova de irrelevância em camadas posteriores.

Saída antecipada. Simplesmente alimentar os estados ocultos da camada 3 a uma cabeça treinada após a camada 28 não preserva sua distribuição de entrada. Cabeças intermediárias e uma regra de confiança validada precisam ser treinadas. Um orçamento de profundidade de 10× com custo uniforme é de cerca de 2.8 camadas de encoder para o inglês ou 2.2 para o multilíngue, antes da sobrecarga da cabeça e da CPU. Manter a cabeça atual completa torna o orçamento denso de sequência curta mais estrito: suas duas camadas sozinhas são 6.83%/11.37% do A de inglês/multilíngue. Para o multilíngue, essa cabeça sozinha excede todo o orçamento de 10% de trabalho denso. A divergência no lote também importa: sair de itens individuais não economiza nada se eles permanecerem em um lote denso não reduzido. FastBERT e DeeBERT estabelecem abordagens treinadas de inferência adaptativa com trade-offs de precisão/velocidade; seus ganhos relatados não são medições do Laya nem deste Mac.

Um student aproximado mais fallback para o teacher tem custo normalizado esperado de aproximadamente c + q, onde c é o custo do student dividido pelo custo do teacher e q é a taxa de fallback para o teacher, assumindo execução serial. Para atingir 10×, c + q <= 0.1: um student custando 5% do teacher deixa no máximo 5% das requisições para fallback. Isso pode melhorar a latência média enquanto o p95 das requisições difíceis permanece próximo à latência do teacher. O roteamento baseado em confiança não é um certificado de equivalência exata.

6. O que exatamente pode ser reutilizado entre perguntas?

O prompt é [CLS] question/options [SEP] state [SEP]; perguntas diferentes podem mudar tanto o offset do state quanto o truncamento do state. Para a query i da primeira camada, a saída de atenção é:

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

Mudar qualquer key/value de pergunta não mascarado pode alterar tanto o numerador quanto o denominador de toda query de state. Para logits finitos, os pesos de softmax não mascarados são positivos em aritmética real. Consequentemente, o state contextual após a primeira camada global depende da pergunta. Todos os K/V subsequentes dependem desses estados alterados. Reutilizar uma codificação completa do state ou um cache K/V estilo decoder entre perguntas diferentes, portanto, altera a função. Texto bruto compartilhado é insuficiente; offset, truncamento, máscaras e metadados de marcadores também importam.

Há uma pequena exceção exata que vale distinguir: antes daquela primeira operação de atenção, os embeddings normalizados dos tokens e suas projeções Q/K/V pré-RoPE da primeira camada dependem apenas da identidade do token. Elas podem ser cacheadas ou pré-calculadas, com as posições RoPE absolutas aplicadas depois. Eliminar toda a primeira projeção QKV remove apenas 0.85%/1.42% do trabalho denso principal em inglês/multilíngue, antes do tráfego de lookup. Uma tabela QKV de vocabulário completo adiciona cerca de 309 MB/1.18 GB de armazenamento FP16 se mantida junto com os embeddings comuns. As estatísticas suficientes de softmax state-a-state da primeira camada também podem ser reutilizadas sob condições idênticas de tokens de state/truncamento e posição relativa, e então combinadas com as contribuições das perguntas por meio de fusão estável de softmax. Isto só economiza uma porção de uma camada de atenção; não torna os estados contextuais posteriores reutilizáveis.

A deduplicação exata de entrada inteira tem potencial muito maior. Se N perguntas solicitadas contêm U entradas idênticas preparadas de forward, avalie U e mapeie suas saídas brutas de volta para todas as perguntas originais com os rótulos ordenados corretos, calibração, IDs e contabilização de uso. As chaves de igualdade e de cache devem cobrir todos os tensores preparados, incluindo máscaras, posições de marcadores e tipos de pergunta; chaves entre chamadas também devem identificar revisão do checkpoint, dtype e configuração de execução. No fixture existente de 50 perguntas, U <= 3, então a razão ideal de trabalho linear é 50/3 = 16.67×. A latência real é menos previsível porque lotes pequenos têm eficiência diferente e a preparação/mapeamento de saída permanece. Para 10 perguntas e três entradas únicas, a razão é de apenas 3.33×. Um benchmark de 50 perguntas distintas deve acompanhar qualquer um dos resultados.

Com cache de resultados entre chamadas, a latência média normalizada é 1-h+h*epsilon, onde h é a taxa de acerto e epsilon o custo do acerto de cache dividido pelo custo da inferência sem cache. Uma melhoria média de 10× exige h >= 0.9/(1-epsilon); se um acerto custa 1% da inferência, a taxa de acerto necessária é 90.91%. Relate taxas de acerto, erros, latência com cache frio e o caminho de erro separadamente. O benchmark padrão repete exatamente a mesma requisição, então um cache entre chamadas sem rótulo deixaria em grande parte de medir a execução do modelo.

Um encoder de state compartilhado mais cross-attention específica por pergunta é um produto redesenhado promissor, mas exige retreinamento ou destilação porque remove a interação inicial original entre pergunta e state. Se a passada de state reutilizável custa aproximadamente uma passada antiga por pergunta, então em Q=50 a passada compartilhada consome 2% do orçamento total antigo; o trabalho específico por pergunta pode consumir no máximo mais 8% para uma meta de 10×. Em Q=10, essa única passada compartilhada já usa 10% antes do trabalho específico por pergunta. O comprimento do state, a complexidade das opções e o encoder de state menor escolhido mudam essa estimativa.

7. Uma rota crível para uma melhoria de ordem de grandeza no modelo

Reduzir tanto a profundidade quanto a largura fornece espaço aritmético suficiente para absorver a sobrecarga. Os seguintes são orçamentos de projeto de student, não modelos implementados, alegações de qualidade ou ganhos de velocidade medidos. Eles mantêm os mesmos comprimentos de token, usam um MLP de encoder com gate e uma camada convencional de cabeça de decisão, e contam a mesma fórmula A.

Teacher Candidato N / D / I / H Principais pesos densos Razão de trabalho denso teacher/student
Laya / tipado 6 / 512 / 1344 / 1 21.82 M 16.88×
Laya / tipado 4 / 512 / 1344 / 1 15.60 M 23.61×
Multilíngue 6 / 384 / 576 / 1 9.29 M 13.40×
Multilíngue 4 / 384 / 576 / 1 6.78 M 18.35×

O embedding pode permanecer relativamente grande e ainda assim ser barato de reunir. Destile as distribuições de opções e as saídas de ação do teacher, misture tarefas rotuladas, cubra o comportamento de score/noul e contagens variáveis de opções, depois reajuste a calibração de saída em dados separados. Avalie a cobertura de idiomas completa e perguntas distintas. O TinyBERT é evidência de que reduzir conjuntamente profundidade/largura do encoder por destilação pode render um grande trade-off de velocidade/qualidade em outro contexto BERT; seu ganho relatado de 9.4× na inferência não se transfere numericamente para o Laya.

Para engenharia escrita à mão, priorize as seguintes decisões:

  1. Estabeleça o limite antes de escrever uma nova GEMM. Meça o tempo do modelo compilado e primitivas densas representativas em B=1 e em um lote de vazão. Compare a vazão sustentada real com os requisitos de 31–104 TFLOP/s acima. Se a remoção de lançamentos deixar a execução densa dominante, novos kernels elementwise não podem fornecer a ordem de grandeza que falta.
  2. Implemente a seleção exata de saída e a atenção local exata como projetos limitados. A última cabeça tem uma prova clara de dependência; o caminho local multilíngue longo tem a maior oportunidade aritmética exata. Inspecione as frações medidas de tempo de relógio de parede antes de manter Metal personalizado. Preserve o contrato numérico da atenção rápida existente e teste comprimentos/padding de fronteira.
  3. Entregue a deduplicação exata apenas com contabilização de carga de trabalho. Este é o caminho mais rápido para um possível resultado de 10× em uma aplicação suficientemente repetitiva. Ele deve coexistir com benchmarks sem cache e de entradas únicas, para que os usuários possam prever seus próprios resultados.
  4. Trate 4/8 bits e posto baixo ciente de ativação como aproximações medidas. Exija junto uma melhoria de velocidade e portões de qualidade calibrados. Nem menos bytes armazenados nem um número baixo de posto estável bastam.
  5. Se 10× for exigido em requisições novas e diversas, desenvolva e valide a arquitetura de student menor ou de state compartilhado. O orçamento do student mira deliberadamente mais de 10× de redução no trabalho denso, porque atenção, preparação na CPU e sobrecarga de kernels pequenos permanecem. Um orçamento de qualidade e dados adequados de treinamento/avaliação são pré-requisitos; o fixture de paridade existente não pode validar essa alegação.

Para variantes aproximadas, a aceitação deve registrar concordância de choice e precisão rotulada, erro de score, deriva de probabilidade, calibração de confiança, probabilidades de ação e casos de margem apertada. Os 378/378 checks de argmax existentes, 600 chamadas repetidas finitas e o alinhamento de regressão do AG News estabelecem o comportamento do port atual nesses testes; eles não validam um novo modelo comprimido. Mantenha uma identidade de modelo distinta e relate p50/p95, configuração a frio, memória, contagem de entradas únicas e qualidade em conjunto.

Reprodução e escopo

  • math_costs.py reproduz cada tabela derivada da arquitetura e cada meta de latência a partir das configs do checkpoint e do JSON de benchmark existente; math_costs.json registra hashes dos arquivos de entrada e revisões do checkpoint.
  • math_spectrum.py reproduz os quatro espectros de matriz selecionados na CPU; math_spectrum.json inclui hashes exatos das matrizes. Ele usa apenas NumPy e safetensors e não carrega o modelo completo.
  • Rode .venv/bin/python experiments/math_costs.py e .venv/bin/python experiments/math_spectrum.py a partir da raiz do repositório após baixar os checkpoints de origem fixados. A amostragem na CPU e as medições de GPU de engenharia foram coordenadas para evitar sobreposição.
  • A semântica atual de quantização do MLX foi conferida com a skill find-docs, usando a resolução de biblioteca exigida pelo Context7 seguida de uma consulta separada à documentação de quantização. A documentação oficial do MLX, os artigos do ModernBERT/FlashAttention e de destilação/saída antecipada, as especificações da Apple e o modelo local real foram usados como fontes. Nenhum número de desempenho de um artigo é apresentado como medição nesta máquina.

Conclusão (em chinês): 相同 checkpoint、相同完整输出语义下,暂时没有可信的“手写几个 kernel 就再快 10×”路径。现有模型的大头是 dense 计算;局部 attention 加最后 head 精确裁剪只减少约 2.8%–16.5% 的建模 FLOPs。真实权重抽样显示,把矩阵分解压到十分之一工作量会产生约 82%–87% 的最佳相对 Frobenius 重建误差,不能当成近似无损捷径。10× 更有希望来自高重复输入的精确去重/缓存,或通过蒸馏把层数与宽度一起缩小、重新设计共享 state 的编码方式。前者需要公布命中率与独立输入性能,后者需要训练和重新验证准确率、分数、概率及 action 行为。