Todos nós experimentamos esse momento frustrante ao usar um assistente de redação: você está em um fluxo produtivo de escrita quando de repente seu Wi-Fi corta. Seja em uma cafeteria com web irregular ou em um avião, o assistente fica offline – impactando sua produtividade. É por isso que estamos investindo em poderosas experiências de assistência de escrita que podem ficar totalmente offline, exigindo que mudemos nossos modelos para trabalhar no dispositivo de um usuário.
No entanto, transformar essa visão em realidade apresenta desafios técnicos significativos. Até nossas correções mais simples (gramática e ortografia) são alimentadas por vários modelos grandes. Dados os recursos limitados de memória e processamento, executando -os localmente, como está, no dispositivo de um usuário é difícil.
Isso nos levou a considerar uma abordagem integrada: treinando um modelo único e compacto (parâmetros ~ 1b) para desempenhar várias funções com a mesma eficácia dos modelos maiores. Para validar essa abordagem, construímos um modelo de prova de conceito para correções ortográficas e gramaticais. Os resultados encorajadores reformularam nossa compreensão das capacidades de um único modelo menor.
Nesta postagem do weblog, orientamos você pelos desafios que vencemos para construir esse modelo e dar uma olhada em onde estamos indo em seguida.
Definindo os requisitos do modelo
O primeiro passo ao criar qualquer novo modelo está definindo seu comportamento preferrred, que depende da experiência que queremos criar. Para o nosso modelo, estabelecemos três requisitos críticos:
- Entregue sugestões de qualidade: Para atingir esse objetivo, o modelo deve retornar sugestões de qualidade que realmente melhoram a escrita do usuário. Para esse fim, deve identificar e Apropriadamente corrigindo erros de ortografia e gramática comuns. Portanto, a cobertura dos tipos de erro comuns é uma prioridade.
- Protect a voz do usuário: A ortografia tradicional e a correção gramatical geralmente falham em entender e manter o tom do escritor. Na gramática, pretendemos capacitar a comunicação eficaz, não alterar a expressão pessoal. Portanto, nossas correções devem limpar os erros, respeitando a voz única de cada escritor.
- Entregue suggestions instantâneo: Os usuários esperam que a gramática forneça sugestões em tempo actual enquanto escrevem. Isso é desafiador para um modelo no dispositivo, porque um dispositivo possui memória limitada e recursos computacionais, especialmente ao executar vários aplicativos. Portanto, precisamos otimizar esse modelo para desempenho, aproveitando as acelerações de {hardware}. Para essa exploração inicial, reduzimos nosso foco aos usuários da Apple Desktop porque o MX GPUS permite a inferência mais rápida do modelo de IA.
Esses requisitos guiaram nossas decisões técnicas ao longo do processo de desenvolvimento e nos ajudaram a estabelecer critérios claros de sucesso para o modelo.
Projetando o modelo
A correção de ortografia e erros gramaticais são tópicos amplamente pesquisados individualmente. No entanto, há pesquisas mínimas sobre o uso de LLMs para correção de ortografia articular. Portanto, tivemos que projetar o modelo do zero, o que exigia que respondessemos a duas perguntas críticas:
- Como escolhemos o modelo base certo?
- Como criamos dados abrangentes de treinamento sintético?
Veja como abordamos cada um desses desafios.
Escolhendo Llama como nosso modelo básico
Para fornecer as correções da mais alta qualidade, preservando a voz do usuário, o modelo básico precisava reconhecer a amplitude de possíveis tarefas de escrita, desde e-mails formais a mensagens de texto casuais. Isso exigiu um tokenizador que pudesse efetivamente tokenizar e processar o texto nos níveis de frase e parágrafo, incluindo caracteres ou palavras desconhecidas, sem comprometer a velocidade ou o desempenho. Isso permitiria ao modelo identificar com precisão o cenário de escrita do usuário e adaptar suas correções de acordo.
Avaliamos dois LLMs comuns usados frequentemente no processamento de texto: T5 (modelo do codificador-decodificador) e apenas lhama (apenas decodificador). Llama emergiu como a escolha superior por vários motivos:
- Lidar com personagens especiais: Conteúdo escrito, especialmente em ambientes informais, como postagens de mídia social ou mensagens casuais, freqüentemente contém caracteres não ingleses (emoji, unicode, and so forth.) ou caracteres em outros idiomas (como a letra ñ em espanhol ou Ö em alemão). Lhama lidou efetivamente com esses personagens especiais.
- Tokenização eficaz: Os modelos de idiomas devem ser um tokenizar com precisão a entrada do usuário sem fazer alterações que alteram o significado. O T5 falhou nesse requisito convertendo espaços fora do padrão em espaços regulares (U+0020), enquanto o lhama preservava corretamente essas distinções. Isso é importante porque os usuários empregam mais de 10 tipos diferentes de caracteres espaciais para fins específicos e a conversão entre eles pode alterar significativamente o significado do texto.
- Ganhos de desempenho: A arquitetura de modelo da LLAMA funciona com mais eficiência no MLX, a estrutura de aprendizado de máquina da Apple, resultando em um desempenho mais rápido de tempo de execução. Como estávamos executando esse modelo no dispositivo, essas otimizações de desempenho garantiram uma experiência em tempo actual.
Criando dados abrangentes de treinamento sintético
Dois aspectos críticos dos dados de treinamento influenciam o desempenho do modelo:
- Cobertura de estilo de escrita: Os dados de treinamento devem incluir diversos contextos de escrita (artigos acadêmicos, postagens de mídia social, blogs, mensagens casuais) para que o modelo possa reconhecer e processar vários estilos de escrita na entrada do usuário.
- Cobertura de erro: Os dados de treinamento devem incluir erros de ortografia e gramática diversos para que o modelo possa identificar e corrigir efetivamente erros semelhantes na escrita dos usuários.
Utilizamos fontes publicamente disponíveis, incluindo livros, artigos e corpora em larga escala, como C4 (Web Information), para criar esse conjunto de dados de treinamento abrangente. Essas fontes fornecem uma ampla gama de linguagem formal e semiformal, tornando -as adequadas como dados fundamentais para a expressão escrita. Para cobertura de erro, geramos dados sintéticos para cada tipo de correção:
- Correções gramaticais: Construímos um modelo baseado em T5 separado, treinado em um subconjunto do conjunto de dados C4_200M, para adicionar erros gramaticais ao nosso conjunto de dados de treinamento. O modelo introduziu erros comuns (como tempos verbais incorretos), garantindo que tivéssemos um conjunto de treinamento que imitasse imprecisões linguísticas do mundo actual.
- Correções de ortografia: Enquanto nosso conjunto de dados do mundo actual capturou erros como erros de digitação (por exemplo, “teh” para “o”) e interpretações errôneas fonéticas (por exemplo, “deles” em vez de “lá”), perdeu erros críticos envolvendo espaço em branco e pontuação (por exemplo, algum lugar “ou” algum lugar para “em algum lugar”). Para resolver essa lacuna, criamos dados sintéticos para complementar nosso conjunto de dados do mundo actual, injetando erros de espaço em branco em palavras mais longas e menos usadas. Isso refletiu a distribuição do mundo actual dos erros, que mostra que palavras mais longas e menos frequentes são desproporcionalmente suscetíveis a esses erros.
Fazendo o modelo de desempenho
Para oferecer uma experiência instantânea em tempo actual, devemos estar atentos à latência do modelo, especialmente durante a inferência. Para ser mais preciso, estabelecemos um limiar de desempenho de processamento de pelo menos 50 tokens por segundo para fornecer correções de ortografia e gramática contínuas aos usuários. Excedemos esse objetivo através da otimização sistemática em várias camadas, incluindo:
- Otimizações arquitetônicas: Simplificamos certas partes do pipeline computacional do modelo para melhorar a eficiência do processamento. Por exemplo, aproveitamos a atenção da consulta agrupada (GQA) para compartilhar cálculos específicos em todo o modelo, reduzindo a sobrecarga computacional sem comprometer a precisão.
- Aceleração com reconhecimento de {hardware}: Aproveitamos a estrutura MLX da Apple, projetada explicitamente para chips da série M, para maximizar a aceleração do {hardware}. Isso nos permitiu usar a arquitetura de memória unificada do sistema operacional MAC, eliminando transferências de CPU para GPU e acelerando a inferência.
- Quantização do modelo: Aplicamos técnicas de quantização para converter os pesos numéricos do modelo de números de ponto flutuante de 16 bits para números inteiros de 4 bits. Isso reduziu a pegada de memória do modelo em 70%, melhorando significativamente o desempenho do tempo de execução, mantendo a qualidade da correção.
Depois de implementar essas otimizações, a velocidade ultimate de processamento do modelo foi ~ 210 tokens/segundo em um M2 Macexecutando inteiramente na memória e sem perda na qualidade da correção.
Avaliando as sugestões de nosso modelo
Depois que o modelo foi treinado e implantado, avaliamos -o usando conjuntos de dados disponíveis ao público e anotadores humanos. Aprendemos que, no geral, o modelo está bem equipado para corrigir erros de ortografia e gramaticais, com pontos fortes como:
- Corrigindo erros de ortografia: O modelo se destacou na substituição de palavras de menor frequência (geralmente erros de ortografia) por suas alternativas corretas de maior frequência, melhorando a qualidade geral do texto.
O modelo identifica e corrige todas as palavras com ortografia enquanto preserva a estrutura da frase.
- Preservar o significado e a voz do texto: O modelo forneceu correções sobre a escolha de palavras que preservavam o significado e a voz da escrita. Isso também significa que o modelo foi altamente preciso, sugerindo correções apenas quando estava confiante de que houve um erro.
- Consistência tensa: Na maioria dos casos, o modelo preservou a consistência tensa entre as frases no parágrafo.
No entanto, havia três áreas específicas em que o modelo ficou aquém:
- Substantivos adequados: O modelo às vezes padroniza incorretamente grafias incomuns de substantivos adequados, especialmente nomes com várias variações de ortografia válidas.
- Colocação do artigo: Ocasionalmente, o modelo luta com a colocação adequada do artigo – um desafio comum, mesmo para falantes fluentes de inglês.
- Consistência tensa: O modelo às vezes aplica prematuramente correções tensas, principalmente com frases independentes.
Essas limitações provavelmente resultam de vieses nos dados de treinamento, que incluíram conteúdo da Web contendo erros e variações estilísticas. A linguagem informal comum nas mídias sociais e nos blogs também apresenta padrões que não se alinham com os padrões formais em inglês, incluindo gírias e dialetos em inglês não americanos. Como próxima etapa, estamos refinando nossos dados de treinamento com exemplos mais direcionados e implementando mecanismos de filtragem seletiva.
Uma nova direção para a IA no dispositivo
Quando começamos a explorar essa idéia, se poderíamos criar um modelo de ortografia e correção de parâmetros de 1B parecia duvidoso. Havia pouca pesquisa existente para orientar nossa abordagem, e a combinação de requisitos estritas de precisão, disponibilidade de memória limitada e restrições de latência pareciam intransponíveis. No entanto, nosso trabalho mostra que a construção de um sistema de ponta a ponta é possível refinar os dados de treinamento e otimizando sistematicamente o desempenho.
Para desenvolver esse progresso, estamos entusiasmados em lançar esse modelo para um pequeno conjunto de usuários para obter suggestions e continuar iterando a experiência. Também estamos ansiosos para explorar como condensar outros modelos (como reescritas complexas) em versões simplificadas que podem ser executadas localmente no seu dispositivo, expandindo ainda mais a assistência offline.
Se você estiver interessado em maneiras inovadoras de construir modelos de IA, venha trabalhar conosco. Confira o nosso Página de empregos Para mais detalhes.
Gostaríamos de agradecer a toda a equipe que trabalhou neste projeto: Dhruv Matani, Suwen Zhu, Magali Lopez Cortez, John Blatz, Emily Peterson, Sri Malireddi e Illia Dzivinskyi. Também gostaríamos de agradecer aos nossos parceiros, Kostia Omelianchuk, Sasha Skurzhanskyi, Andriy Gryshchuk e Oleksii Slusarenko.