Grandes modelos de linguagem (LLMs), especialmente modelos generativos de Transformer pré-treinados (GPT), têm mostrado excelente desempenho em muitas tarefas de linguagem complexas. Essa inovação levou ao desejo de executar esses LLMs nativamente em dispositivos móveis para proteger a privacidade do usuário. No entanto, mesmo LLMs pequenos são grandes demais para serem executados nesses dispositivos.
Por exemplo, o pequeno LLaMA possui parâmetros de 7B e sua versão FP16 tem 14 GB de tamanho, enquanto os dispositivos móveis possuem apenas 18 GB de DRAM. Portanto, compactar o LLM por meio da otimização do tempo de treinamento (como esparsificação, quantização ou agrupamento de peso) é uma etapa fundamental para a implantação do LLM no dispositivo. No entanto, a otimização do tempo de treinamento do LLM é muito cara devido ao tamanho do modelo e à sobrecarga de recursos computacionais. DKM, um dos algoritmos SOTA para agrupamento de pesos, requer tempo excessivo de treinamento para agrupamento de pesos variáveis devido à necessidade de analisar as interações entre todos os pesos e todas as opções possíveis de agrupamento.
Portanto, muitas técnicas de compressão LLM existentes, como GTPQ e AWQ, dependem da otimização pós-treinamento. Neste artigo, os pesquisadores propõem técnicas de otimização de memória para obter clustering ponderado em tempo de treinamento e sua aplicação em DKM, também conhecido como eDKM.
As técnicas usadas neste artigo incluem orquestração de tensores entre dispositivos e exclusividade e fragmentação da matriz de peso. Ao usar o eDKM para ajustar o modelo LLaMA 7B e compactá-lo para 3 bits por fator de peso, os pesquisadores alcançaram uma redução de cerca de 130 vezes no consumo de memória da pilha do decodificador, o que é melhor do que a tecnologia de compactação de 3 bits existente.
Melhore a eficiência da memória do DKM
Como mostrado na Figura 1, poda, quantização e normalização são técnicas populares de otimização de peso. Esses métodos otimizam o peso original W e obtêm o peso
, para otimizar a latência de inferência, a precisão ou o tamanho do modelo. Entre essas tecnologias, os pesquisadores deste artigo focam principalmente no clustering ponderado, especialmente no algoritmo de clustering ponderado DKM.
O agrupamento de pesos é uma discretização de peso não linear na qual a matriz de pesos é compactada em uma tabela de consulta e uma lista de índices de baixa precisão da tabela de consulta que os aceleradores de inferência modernos podem processar. O DKM realiza agrupamento de pesos diferenciáveis analisando a interação entre pesos (denotados por W) e pontos centrais (denotados por C) e faz uma compensação entre taxa de compressão e precisão.
Portanto, usar DKM para compactação LLM produz resultados de alta qualidade. No entanto, o mapa de atenção gerado durante o processo de cálculo do DKM é grande, e a complexidade da memória da passagem para frente/para trás é O (|W||C|) (ou seja, a matriz na Figura 1), o que é particularmente difícil para LLM compressão. . Por exemplo, um modelo LLaMA 7B que calcula apenas mapas de atenção para clustering de peso de 4 bits requer pelo menos 224 GB de memória.
*Figura 1: Visão geral do sistema de otimização de peso. No DKM, o sistema cria internamente um mapa de atenção que pode ser agrupado por pesos diferenciáveis. *
Portanto, os pesquisadores precisam usar a memória da CPU para lidar com esses grandes requisitos de memória, ou seja, primeiro armazenar as informações na memória da CPU e depois copiá-las de volta para a GPU quando necessário. No entanto, isso gerará muito tráfego entre a GPU e a CPU (retardando assim o treinamento) e exigirá uma enorme capacidade de memória da CPU. Isso significa que é fundamental reduzir o número de transações entre CPU e GPU e minimizar o tráfego por transação. Para lidar com esses problemas, os pesquisadores introduziram duas novas tecnologias de otimização de memória no PyTorch.
Orquestração de tensores entre dispositivos: rastreie tensores copiados entre dispositivos para evitar cópias redundantes, reduzindo assim o uso de memória e acelerando o treinamento.
Exclusividade de peso e processamento de fragmentação: aproveite o fato de que o peso de 16 bits tem apenas 216 valores exclusivos para reduzir a representação do mapa de atenção (mostrado na Figura 1) e dividi-lo ainda mais em vários modelos de aprendizagem.
Orquestração de tensores entre dispositivos
PyTorch usa um armazenamento de dados para representar tensores, que está vinculado ao layout de dados e metadados reais, que são usados para salvar a forma, tipo, etc. Essa arquitetura tensor permite que o PyTorch reutilize o armazenamento de dados tanto quanto possível e reduza efetivamente o uso de memória. No entanto, quando um tensor é movido para outro dispositivo (como da GPU para a CPU), o armazenamento de dados não pode ser reutilizado e um novo tensor precisa ser criado.
A Tabela 1 ilustra o uso de memória dos tensores ao mover-se entre dispositivos PyTorch. O tensor x0 alocado na linha 0 consome 4MB na GPU. Quando sua visualização muda na linha 1, nenhuma memória GPU adicional é necessária, pois o armazenamento de dados subjacente pode ser reutilizado (ou seja, x0 e x1 são na verdade iguais). No entanto, quando x0 e x1 são movidos para a CPU como nas linhas 2 e 3, embora y0 e y1 possam compartilhar o mesmo armazenamento de dados na CPU, o consumo de memória da CPU torna-se 8 MB, o que resulta em redundância de memória da CPU e aumenta a GPU- tráfego para CPU.
*Tabela 1: O ajuste fino do LLM pode exigir o uso de memória da CPU para descarregar o consumo de memória na GPU. A falta de gerenciamento de tensores entre dispositivos pode levar a cópias redundantes entre dispositivos (especialmente quando o gráfico computacional é complexo), o que é particularmente prejudicial para a otimização do tempo de treinamento do LLM. Por exemplo, embora x0 e x1 sejam o mesmo tensor com visualizações diferentes, os tensores resultantes y0 e y1 não compartilham o armazenamento de dados quando copiados para a CPU, enquanto na GPU x0 e x1 o fazem. *
Para resolver essa ineficiência, os pesquisadores colocaram uma camada de orquestração na Figura 2(b), onde o preto representa o armazenamento real de dados e metadados, e o cinza representa apenas os metadados. A Figura 2 (a) mostra o exemplo da Tabela 1, onde x1 compartilha o layout de dados com x0, mas y0 e y1 possuem armazenamento de dados duplicado na CPU. Conforme mostrado na Figura 2 (b), ao inserir uma camada de orquestração, os pesquisadores evitam essa redundância e reduzem o tráfego GPU-CPU. Os pesquisadores usaram o save-tensor-hook no PyTorch para implementar esse esquema de troca, verificando se o mesmo armazenamento de dados foi copiado.
No entanto, usar tal esquema para verificar se o mesmo tensor existe no dispositivo alvo é caro. No exemplo da Figura 2(b), o pesquisador não copiou x1 para a CPU, mas simplesmente retornou uma referência a y0 e a operação de visualização entre x1 e y0.
*Figura 2: Quando a orquestração de tensores entre dispositivos é aplicada à situação da Tabela 1, a duplicação no lado da CPU pode ser evitada, economizando assim memória e tráfego. *
Navegar no gráfico computacional adiciona ciclos computacionais extras e salvar cópias desnecessárias pode compensar essa sobrecarga. Os pesquisadores descobriram que uma pesquisa em 4 saltos foi suficiente para detectar todos os casos elegíveis no gráfico computacional da implementação original do DKM.
Exclusividade e fragmentação de peso
Na maioria dos treinamentos LLM, os pesos geralmente usam armazenamento de 16 bits (como BF16 ou FP16), o que significa que, embora existam bilhões de parâmetros no LLM, existem apenas 216 coeficientes exclusivos devido à largura de bits. Isto oferece a oportunidade de comprimir significativamente o mapa de atenção entre pesos e pontos centrais, conforme mostrado na Figura 3.
Figura 3: Exclusividade e fragmentação de peso
Resultados experimentais
Precisão LLM
Este artigo compara o eDKM a outros esquemas de compactação baseados em quantização, incluindo: RTN, SmoothQuant, GPTQ, AWQ e LLM-QAT. Para o eDKM, os pesquisadores também realizaram compactação de 8 bits na camada de incorporação. Finalmente chegaram-se às seguintes conclusões:
O eDKM permite que o modelo LLaMA 7B compactado de 3 bits supere todos os outros esquemas de compactação de 3 bits.
eDKM tem a melhor precisão no benchmark ARC-e em configurações de 3 e 4 bits.
O desempenho do eDKM é muito competitivo nos benchmarks PIQA e MMLU usando modelo de compressão de 4 bits.
Experimento de ablação
Em experimentos de ablação, os pesquisadores mediram a compensação entre o consumo de memória e a velocidade de avanço e retrocesso da compactação de 3 bits usando uma camada de atenção na pilha de decodificadores LLaMA 7B como exemplo. A orquestração de tensores entre dispositivos por si só reduz o consumo de memória em 2,9 vezes com muito pouca sobrecarga de tempo de execução, enquanto os módulos de fragmentação e exclusividade economizam 23,5 vezes e 16,4 vezes, respectivamente. Quando todas as tecnologias são combinadas, o eDKM resulta em economias de aproximadamente 130 vezes. Embora essas etapas exijam sobrecarga adicional de computação e comunicação, a sobrecarga do tempo de execução é insignificante, pois o tráfego entre a GPU e a CPU é significativamente reduzido.
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
A tecnologia de compressão inova novamente, dando aos modelos grandes a chance de caber nos celulares
Grandes modelos de linguagem (LLMs), especialmente modelos generativos de Transformer pré-treinados (GPT), têm mostrado excelente desempenho em muitas tarefas de linguagem complexas. Essa inovação levou ao desejo de executar esses LLMs nativamente em dispositivos móveis para proteger a privacidade do usuário. No entanto, mesmo LLMs pequenos são grandes demais para serem executados nesses dispositivos.
Por exemplo, o pequeno LLaMA possui parâmetros de 7B e sua versão FP16 tem 14 GB de tamanho, enquanto os dispositivos móveis possuem apenas 18 GB de DRAM. Portanto, compactar o LLM por meio da otimização do tempo de treinamento (como esparsificação, quantização ou agrupamento de peso) é uma etapa fundamental para a implantação do LLM no dispositivo. No entanto, a otimização do tempo de treinamento do LLM é muito cara devido ao tamanho do modelo e à sobrecarga de recursos computacionais. DKM, um dos algoritmos SOTA para agrupamento de pesos, requer tempo excessivo de treinamento para agrupamento de pesos variáveis devido à necessidade de analisar as interações entre todos os pesos e todas as opções possíveis de agrupamento.
Portanto, muitas técnicas de compressão LLM existentes, como GTPQ e AWQ, dependem da otimização pós-treinamento. Neste artigo, os pesquisadores propõem técnicas de otimização de memória para obter clustering ponderado em tempo de treinamento e sua aplicação em DKM, também conhecido como eDKM.
As técnicas usadas neste artigo incluem orquestração de tensores entre dispositivos e exclusividade e fragmentação da matriz de peso. Ao usar o eDKM para ajustar o modelo LLaMA 7B e compactá-lo para 3 bits por fator de peso, os pesquisadores alcançaram uma redução de cerca de 130 vezes no consumo de memória da pilha do decodificador, o que é melhor do que a tecnologia de compactação de 3 bits existente.
Melhore a eficiência da memória do DKM
Como mostrado na Figura 1, poda, quantização e normalização são técnicas populares de otimização de peso. Esses métodos otimizam o peso original W e obtêm o peso
O agrupamento de pesos é uma discretização de peso não linear na qual a matriz de pesos é compactada em uma tabela de consulta e uma lista de índices de baixa precisão da tabela de consulta que os aceleradores de inferência modernos podem processar. O DKM realiza agrupamento de pesos diferenciáveis analisando a interação entre pesos (denotados por W) e pontos centrais (denotados por C) e faz uma compensação entre taxa de compressão e precisão.
Portanto, usar DKM para compactação LLM produz resultados de alta qualidade. No entanto, o mapa de atenção gerado durante o processo de cálculo do DKM é grande, e a complexidade da memória da passagem para frente/para trás é O (|W||C|) (ou seja, a matriz na Figura 1), o que é particularmente difícil para LLM compressão. . Por exemplo, um modelo LLaMA 7B que calcula apenas mapas de atenção para clustering de peso de 4 bits requer pelo menos 224 GB de memória.
Portanto, os pesquisadores precisam usar a memória da CPU para lidar com esses grandes requisitos de memória, ou seja, primeiro armazenar as informações na memória da CPU e depois copiá-las de volta para a GPU quando necessário. No entanto, isso gerará muito tráfego entre a GPU e a CPU (retardando assim o treinamento) e exigirá uma enorme capacidade de memória da CPU. Isso significa que é fundamental reduzir o número de transações entre CPU e GPU e minimizar o tráfego por transação. Para lidar com esses problemas, os pesquisadores introduziram duas novas tecnologias de otimização de memória no PyTorch.
Orquestração de tensores entre dispositivos
PyTorch usa um armazenamento de dados para representar tensores, que está vinculado ao layout de dados e metadados reais, que são usados para salvar a forma, tipo, etc. Essa arquitetura tensor permite que o PyTorch reutilize o armazenamento de dados tanto quanto possível e reduza efetivamente o uso de memória. No entanto, quando um tensor é movido para outro dispositivo (como da GPU para a CPU), o armazenamento de dados não pode ser reutilizado e um novo tensor precisa ser criado.
A Tabela 1 ilustra o uso de memória dos tensores ao mover-se entre dispositivos PyTorch. O tensor x0 alocado na linha 0 consome 4MB na GPU. Quando sua visualização muda na linha 1, nenhuma memória GPU adicional é necessária, pois o armazenamento de dados subjacente pode ser reutilizado (ou seja, x0 e x1 são na verdade iguais). No entanto, quando x0 e x1 são movidos para a CPU como nas linhas 2 e 3, embora y0 e y1 possam compartilhar o mesmo armazenamento de dados na CPU, o consumo de memória da CPU torna-se 8 MB, o que resulta em redundância de memória da CPU e aumenta a GPU- tráfego para CPU.
Para resolver essa ineficiência, os pesquisadores colocaram uma camada de orquestração na Figura 2(b), onde o preto representa o armazenamento real de dados e metadados, e o cinza representa apenas os metadados. A Figura 2 (a) mostra o exemplo da Tabela 1, onde x1 compartilha o layout de dados com x0, mas y0 e y1 possuem armazenamento de dados duplicado na CPU. Conforme mostrado na Figura 2 (b), ao inserir uma camada de orquestração, os pesquisadores evitam essa redundância e reduzem o tráfego GPU-CPU. Os pesquisadores usaram o save-tensor-hook no PyTorch para implementar esse esquema de troca, verificando se o mesmo armazenamento de dados foi copiado.
No entanto, usar tal esquema para verificar se o mesmo tensor existe no dispositivo alvo é caro. No exemplo da Figura 2(b), o pesquisador não copiou x1 para a CPU, mas simplesmente retornou uma referência a y0 e a operação de visualização entre x1 e y0.
Navegar no gráfico computacional adiciona ciclos computacionais extras e salvar cópias desnecessárias pode compensar essa sobrecarga. Os pesquisadores descobriram que uma pesquisa em 4 saltos foi suficiente para detectar todos os casos elegíveis no gráfico computacional da implementação original do DKM.
Exclusividade e fragmentação de peso
Na maioria dos treinamentos LLM, os pesos geralmente usam armazenamento de 16 bits (como BF16 ou FP16), o que significa que, embora existam bilhões de parâmetros no LLM, existem apenas 216 coeficientes exclusivos devido à largura de bits. Isto oferece a oportunidade de comprimir significativamente o mapa de atenção entre pesos e pontos centrais, conforme mostrado na Figura 3.
Resultados experimentais
Precisão LLM
Este artigo compara o eDKM a outros esquemas de compactação baseados em quantização, incluindo: RTN, SmoothQuant, GPTQ, AWQ e LLM-QAT. Para o eDKM, os pesquisadores também realizaram compactação de 8 bits na camada de incorporação. Finalmente chegaram-se às seguintes conclusões:
Em experimentos de ablação, os pesquisadores mediram a compensação entre o consumo de memória e a velocidade de avanço e retrocesso da compactação de 3 bits usando uma camada de atenção na pilha de decodificadores LLaMA 7B como exemplo. A orquestração de tensores entre dispositivos por si só reduz o consumo de memória em 2,9 vezes com muito pouca sobrecarga de tempo de execução, enquanto os módulos de fragmentação e exclusividade economizam 23,5 vezes e 16,4 vezes, respectivamente. Quando todas as tecnologias são combinadas, o eDKM resulta em economias de aproximadamente 130 vezes. Embora essas etapas exijam sobrecarga adicional de computação e comunicação, a sobrecarga do tempo de execução é insignificante, pois o tráfego entre a GPU e a CPU é significativamente reduzido.