1 pontos por GN⁺ 2023-12-22 | 1 comentários | Compartilhar no WhatsApp

Coleção de leituras de artigos de NLP

  • A coleção de leituras de artigos sobre processamento de linguagem natural (NLP) é composta por 22 itens.
  • Esta coleção foi atualizada recentemente e é útil para entender as tendências mais recentes de pesquisa na área de NLP.
  • NLP é uma tecnologia que permite aos computadores compreender e processar a linguagem humana, com diversas aplicações como tradução automática, análise de sentimentos e sistemas de perguntas e respostas.

Opinião do GN⁺

  • Esta coleção é um material que permite ver de relance as pesquisas mais recentes na área de NLP e será muito útil para pesquisadores ou desenvolvedores interessados em NLP.
  • NLP é uma das áreas da IA que evolui especialmente rápido, e esta coleção permite entrar em contato com as tendências mais recentes e ideias inovadoras.
  • As tecnologias de processamento de linguagem natural estão profundamente integradas ao nosso dia a dia, e esta coleção oferece uma visão da direção de desenvolvimento dessa tecnologia e de suas possibilidades futuras.

1 comentários

 
GN⁺ 2023-12-22
Comentários do Hacker News
  • Levei um tempo para entender este artigo, porque ele se baseia nas técnicas do artigo “Deja Vu” e trata de métodos complexos que exploram esparsidade:

    • O artigo “Deja Vu” observa que modelos com baixa esparsidade de pesos têm alta “esparsidade contextual”. Ou seja, a multiplicação de matrizes gera vetores com muitos zeros em posições diferentes dependendo da entrada.
    • O artigo aponta que essa esparsidade pode ser explorada para evitar carregar algumas linhas da matriz.
    • Mas, para obter um bom ganho de desempenho, é preciso conseguir prever com antecedência quais linhas serão puladas. Isso é possível com uma matriz de baixa dimensão.
    • O artigo da Apple sugere que essa descoberta não apenas melhora o desempenho do carregamento a partir da RAM, mas também permite carregar a partir da memória flash sem sacrificar largura de banda:
      • Vale notar que o artigo menciona que as matrizes de attention são leves, e que o importante é carregar esparsamente a feedforward network (FFN).
      • O artigo aponta que prever a saída da camada ReLU pode obter uma esparsidade muito melhor do que prever a entrada da FFN. Ou seja, “se for possível prever que, após o matmul, este slot do vetor terá um valor negativo antes da ReLU, então é possível não carregar aquela coluna da matriz e emitir 0”.
      • O artigo propõe que não é necessário carregar a maioria das linhas da FFN, e que é possível manter um cache das linhas da FFN usadas recentemente para cada FFN e atualizá-lo a partir da memória flash conforme necessário.
    • O artigo também fala sobre carregamento em chunks e sobre a correlação entre camadas de projeção, mas a principal percepção é a parte mencionada acima.
  • Eu esperava encontrar, na conclusão do artigo, uma seção sobre como essa funcionalidade seria disponibilizada ao usuário, mas talvez essa discussão esteja fora do escopo.

    • Fico curioso para saber se isso será exposto ao usuário por meio de chamadas de API e configurações do CoreML, por exemplo com um sinalizador use_flash, ou se será uma otimização de runtime transparente ao usuário. Gostaria de saber se há alguma boa palestra ou apresentação em que a Apple discuta o roadmap de desenvolvimento de CoreML, Metal etc.
  • Fico curioso sobre quanto do modelo pode deixar de ser carregado antes de começarmos a ver uma diferença real de desempenho.

    • Por exemplo, se eu quiser manter 90% do desempenho em RAM, será que dá para usar só metade da memória, ou seria necessário 90% ou 95%?
    • Também tenho curiosidade sobre quão rapidamente a perda de desempenho em relação ao desempenho máximo aparece ao reduzir a RAM. O gráfico compara com o algoritmo base ao usar menos RAM, mas essa é uma pergunta diferente (embora boa!).
    • Se for possível obter bom desempenho sem carregar um modelo inteiro de 8 GB na memória do celular, isso claramente seria muito útil.
  • Vale notar que os dispositivos da Apple têm muito pouca RAM em comparação com aparelhos semelhantes da concorrência.

    • Isso acontece em parte porque a equipe de software da Apple usa linguagens mais eficientes, como Objective-C, e também porque os aplicativos iOS não precisam atender a uma variedade tão grande de resoluções de tela, então há menos casos de carregar texturas em alta resolução e depois reduzi-las.
    • Além disso, comprar RAM na escala da Apple não torna o preço da RAM dramaticamente mais barato, então aumentar a RAM impacta mais a margem do que adicionar outros recursos.
    • Mas tudo isso vira um problema ao usar grandes modelos de linguagem (LLMs), porque eles consomem muita RAM por natureza. E qualquer técnica de economia de memória também pode ser usada por concorrentes com mais RAM para implementar modelos maiores e melhores.
  • Tenho entendimento limitado do assunto, mas fico curioso se essa técnica permitiria rodar LLMs offline em celulares.

    • Se sim, isso poderia levar a muitas aplicações interessantes, como moderação de conteúdo assistida por IA sem enviar dados confidenciais para fora.
  • Aprecio que os artigos recentes estejam falando em “LLM” em vez de “IA”.

    • Isso deixa claro que se trata de uma tecnologia específica, e não apenas de hype de marketing.
  • É um pouco surpreendente que este artigo não mencione FlashAttention.

    • Como ambos os trabalhos fazem uso de memória flash, parece que pelo menos deveria haver uma menção.
  • A Apple comprou uma empresa iraniana?

  • Por exemplo, dizem que o modelo OPT 6.7B apresenta 97% de esparsidade dentro das camadas FFN.

    • Fico curioso se alguém sabe exatamente o que essa métrica significa aqui. Quer dizer que a camada tem 97% de valores 0, ou que seu tamanho pode ser comprimido para 3%?
  • Espero que essa técnica seja integrada ao llama.cpp e ao candle.

    • Esses avanços são realmente impressionantes, e espero que algum dia também cheguem a essas bibliotecas.