1 pontos por GN⁺ 2023-07-23 | 1 comentários | Compartilhar no WhatsApp
  • O artigo aborda a adição de amostragem baseada em gramática à nova API do llama.cpp para orientar e restringir a geração.
  • A API do llama recebe uma estrutura de dados que representa uma gramática livre de contexto, permitindo amostragem com base em regras gramaticais.
  • O código de amostragem gramatical modela um autômato de pilha não determinístico e mantém várias pilhas para o estado de parsing.
  • O artigo fornece exemplos de uso da API de gramática para vários cenários, como xadrez, aritmética, JSON e japonês.
  • São mencionadas otimizações potenciais, como compilar a gramática em um tensor de transição de estados e executá-la na GPU.
  • Os colaboradores estão discutindo a adição de suporte a arquivos de gramática, melhorias no parser de gramática e otimização da avaliação de tokens.
  • A utilidade da contribuição é enfatizada, e há uma proposta para separar a API de amostragem em um módulo independente.
  • Outros projetos que usam abordagens semelhantes para geração baseada em gramática, como lmql.ai e jsonformer, são mencionados.
  • Há propostas para referenciar tokens completos na gramática e incluir um parser na API do llama.cpp para melhorar a usabilidade.
  • Os colaboradores estão revisando o código, fornecendo feedback, discutindo possíveis melhorias e compartilhando experiências com o recurso.
  • Um engenheiro de software está participando de um projeto relacionado à amostragem gramatical e enfrentando problemas em ARM64+CUDA.
  • O editor sugere que o problema pode estar relacionado à combinação de pacotes da toolchain e se oferece para ajudar.
  • Há um pull request para adicionar funções do LocalAI, além de uma proposta para usar uma sintaxe BNF mais padronizada no projeto.
  • Violar a gramática é considerado o pior resultado, e o backtracking é sugerido para consideração futura.
  • Está em andamento uma discussão sobre a implementação de EBNF e qual formato deve ser seguido.
  • Na atualização mais recente, a amostragem foi limitada à correspondência de tokens completos, e melhorias adicionais foram sugeridas para lidar com casos em que os tokens são divididos de forma inadequada.
  • As mudanças no projeto foram aprovadas e estão prontas para merge, e o editor está ansioso para experimentar o projeto atualizado.
  • É mencionado um problema semelhante em andamento em outro projeto, com a sugestão de pré-calcular distribuições lexicais de tokens.
  • O engenheiro de software demonstra interesse nessa abordagem e disposição para compartilhar opiniões.
  • A conversa no GitHub continua com vários participantes.

1 comentários

 
GN⁺ 2023-07-23
Comentários no Hacker News
  • Modelos de linguagem geram tokens um de cada vez, o que permite controle refinado.
  • A amostragem baseada em gramática pode ser usada para impor restrições gramaticais ao texto gerado.
  • A amostragem baseada em gramática pode não resolver problemas de alinhamento nem garantir rotulagem correta.
  • Há um repositório no GitHub para implementar amostragem baseada em gramática em PyTorch.
  • Ao considerar probabilidades conjuntas, é possível escolher melhor as opções em enumerações de strings de múltipla escolha.
  • Uma biblioteca de gramática foi citada como exemplo de como o formato pode ser.
  • Alguns usuários se interessam pelo conceito, mas levantam dúvidas sobre os efeitos de longo prazo.
  • A amostragem baseada em gramática pode ser útil para domínios específicos e DSLs internas.
  • Ainda é necessário fazer engenharia de prompt para obter a saída desejada.
  • Existem outros métodos e ferramentas semelhantes.
  • Foi pedido recomendações sobre métodos de decodificação na era das redes neurais.