Como é que a descodificação especulativa acelera um servidor de IA doméstico?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

A descodificação especulativa acelera um servidor de IA doméstico ao permitir que um mecanismo rápido de rascunho proponha vários tokens, que o modelo-alvo verifica em conjunto.

A geração autorregressiva comum pede ao modelo completo que produza um token, o acrescente e volte a executar antes de ser possível conhecer o token seguinte. Essa dependência sequencial deixa pouco trabalho paralelo durante a descodificação, mesmo num acelerador competente. A descodificação especulativa utiliza computação mais barata para gerar tokens candidatos e, em seguida, usa uma passagem do modelo-alvo para verificar várias posições. O ganho depende da rapidez com que o rascunho é gerado, da quantidade de candidatos aceites e de a memória adicional ou a sobrecarga de verificação caberem no hardware local.

A descodificação padrão avança um passo do modelo-alvo de cada vez

Um modelo autorregressivo condiciona cada novo token ao prompt e a todos os tokens anteriores aceites. O passo seguinte não pode ser finalizado até o token atual ser amostrado.

O trabalho original sobre descodificação especulativa descreve as passagens sequenciais do modelo-alvo como o estrangulamento de latência que procura reduzir.

O processamento em lote ajuda várias solicitações a partilharem uma iteração, mas uma sequência individual continua normalmente a obter apenas um token aceite por cada passagem do modelo-alvo.

Um mecanismo de rascunho mais rápido prevê vários tokens futuros

O componente de rascunho pode ser um modelo mais pequeno, uma versão reduzida do modelo-alvo, uma cabeça de previsão auxiliar ou outro mecanismo mais barato do que executar repetidamente o modelo completo.

A descodificação especulativa realiza um rascunho de candidatos, disponibilizando várias continuações prováveis antes de o modelo-alvo as avaliar.

O rascunho não substitui a autoridade do modelo-alvo. O seu objetivo é adivinhar tokens futuros fáceis a baixo custo e criar um bloco que o modelo-alvo possa inspecionar em paralelo.

Um modelo de rascunho demasiado grande pode prever bem, mas consumir a maior parte da latência e da memória que a otimização pretendia poupar.

O modelo-alvo verifica os candidatos numa única passagem paralela

O modelo-alvo avalia a sequência gerada no rascunho e determina quais dos tokens propostos são compatíveis com a sua própria distribuição de probabilidades. Os tokens aceites fazem avançar a sequência em conjunto; a primeira posição rejeitada é corrigida através do procedimento exato de amostragem.

O algoritmo utiliza verificação paralela e amostragem por rejeição, para que a descodificação especulativa exata preserve a distribuição de saída do modelo-alvo.

Esta distinção é importante para as afirmações sobre qualidade. A verificação correta é sem perdas relativamente à distribuição de descodificação do modelo-alvo selecionada, enquanto os métodos heurísticos de antecipação podem fazer compromissos diferentes.

O comprimento de aceitação determina quantos passos sequenciais desaparecem

Se o modelo-alvo aceitar a maioria dos tokens gerados no rascunho, uma passagem de verificação substitui várias passagens de descodificação normais. Se rejeitar repetidamente o primeiro candidato, o servidor executa o trabalho de rascunho sem avançar muito mais depressa.

Um estudo experimental de grande dimensão concluiu que o desempenho especulativo depende fortemente da eficiência do rascunho, e não simplesmente da escolha do modelo de linguagem mais competente entre os modelos mais pequenos.

A aceitação varia consoante o domínio do prompt, a temperatura de amostragem, a compatibilidade dos tokenizadores, o modelo-alvo, o comprimento do rascunho e o grau de proximidade entre a previsão do rascunho e a distribuição do próximo token do modelo-alvo.

Blocos de rascunho mais longos oferecem mais progresso potencial, mas desperdiçam mais trabalho após uma divergência inicial. A profundidade ideal depende, portanto, da carga de trabalho.

A sobrecarga e a memória do rascunho podem eliminar o ganho de velocidade em casa

Um servidor de IA doméstico tem de executar o mecanismo de rascunho, manter o seu estado e realizar a verificação enquanto o modelo-alvo e a cache KV já ocupam memória. Um segundo modelo pode obrigar à transferência de dados para a CPU ou reduzir o contexto disponível.

Estudos de hardware identificam a latência do modelo de rascunho como um limite fundamental do ganho de velocidade. Um rascunho lento numa CPU para um modelo-alvo rápido numa GPU, ou um rascunho que concorra pela mesma largura de banda da memória, pode proporcionar poucos benefícios.

Os métodos de auto-eficiência especulativa evitam um modelo de rascunho completo separado ao reutilizarem partes do modelo-alvo, mas introduzem as suas próprias limitações de execução e compatibilidade.

A margem de memória é tão importante como a capacidade de computação. A otimização não é útil se o rascunho provocar a expulsão do modelo da memória, um limite de contexto mais reduzido ou instabilidade noutras aplicações do servidor doméstico.

Meça a latência de ponta a ponta, não apenas os tokens aceites

Compare a descodificação normal e a especulativa com o mesmo modelo-alvo, conjunto de prompts, parâmetros de amostragem, comprimentos de saída e condições de estado aquecido. Registe o tempo até ao primeiro token, os tokens de saída por segundo, o comprimento de aceitação, o tempo do rascunho, o tempo de verificação e o pico de memória.

A análise da ZimaSpace sobre a permanência dos modelos na memória é relevante porque adicionar um rascunho pode alterar o estado do modelo que permanece aquecido. Não se deve atribuir o mérito a uma otimização de descodificação num teste que compare condições diferentes de arranque a frio.

A descodificação especulativa tende a ser mais útil quando o modelo-alvo é lento, o rascunho é muito mais barato, a aceitação é elevada e o acelerador consegue verificar vários candidatos de forma eficiente.

É menos útil quando as saídas são curtas, o modelo-alvo já descodifica rapidamente, o rascunho discorda com frequência ou a memória e a largura de banda locais são os verdadeiros estrangulamentos.

Perguntas frequentes

A descodificação especulativa utiliza um modelo de menor qualidade para a resposta final?

O rascunho propõe candidatos, mas a verificação exata mantém o modelo-alvo responsável pela distribuição de saída aceite.

A descodificação especulativa melhora o processamento do prompt?

O seu principal objetivo é a geração autorregressiva de saída. A latência de pré-preenchimento do prompt pode permanecer semelhante, a menos que a implementação a combine com otimizações separadas de prefixo ou de pré-preenchimento.

A descodificação especulativa pode ser executada num servidor doméstico apenas com CPU?

Pode ser executada em ambientes de execução compatíveis, mas o ganho de velocidade depende de o rascunho e a verificação serem mais baratos do que a descodificação normal nessa CPU e nesse sistema de memória específicos.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.