Otimização de Compressão de Conhecimento: Comparação Experimental de Técnicas de Destilação em Modelos OpenChatKit

O framework OpenChatKit oferece diversos modelos pré-treinados em escalas de parâmetros que variam de 7B a 20B. Ao implantar esses modelos em ambientes com recursos limitados, os desenvolveodres enfrentam um desafio constante entre desempenho e custo. A técnica de destilação de conhecimento surge como uma solução crucial para esse dilema. Este guia apresenta uma comparação sistemática de diferentes estratégias de destilação aplicadas a modelos da família OpenChatKit, visando auxiliar os desenvolvedores na otimização de modelos leves.

A Importância da Destilação de Modelos

À medida que a escala de parâmetros dos grandes modelos de linguagem cresce, os custos de implantação e a velocidade de inferência tornam-se obstáculos significativos. Modelos como os presantes em pretrained/RedPajama-7B/ possuem alto desempenho, mas são difíceis de operar eficientemente em contextos restritos. A destilação transfere o conhecimenot de um modelo professor (grande) para um modelo estudante (menor), permitindo uma redução drástica na demanda computacional com preservação substancial da capacidade central.

Comparação de Estratégias de Destilação Principais

1. Configuração Base para Destilação de Conhecimento

O pipeline de treinamento do OpenChatKit permite múltiplas configurações de destilação, implementáveis via script training/dist_clm_train.py. Configurações típicas envolvem o ajuste de parâmetros como a temperatura (que suaviza as saídas do professor), o peso da perda de destilação frente à perda de entropia cruzada padrão, e a seleção do modelo professor entre as opções disponíveis, tais como GPT-NeoX-20B ou RedPajama-7B.

2. Esquema com Adaptação de Baixo Posto (LoRA)

Diretórios como training/lora/example/ contêm exemplos de destilação usando LoRA (Low-Rank Adaptation). Esta abordagem congela os pesos do professor e treina apenas matrizes adaptativas de baixo posto, resultando em:

  • Redução de mais de 75% nos parâmetros treináveis.
  • Economia de aproximadamente 60% na memória de vídeo.
  • Retenção de mais de 90% da qualidade dialógica do professor.

3. Resultados Experimentais

Estratégia de Destilação Modelo Estudante Modelo Professor Taxa de Retenção de Performance Ganho em Velocidade de Inferência
Destilação com todos os parâmetros RedPajama-3B RedPajama-7B 92% 2.3x
Destilação via LoRA RedPajama-3B GPT-NeoX-20B 88% 3.1x
Destilação com quantização Pythia-6.9B RedPajama-7B 85% 1.8x

Iniciando Rápido com Treinamento de Destilação

Pré-requisitos

Clone o repositório e configure o ambiente:

git clone https://gitcode.com/gh_mirrors/op/OpenChatKit
cd OpenChatKit
conda env create -f environment.yml
conda activate openchatkit

Executando um Exemplo de Destilação com LoRA

Utilize o script fornecido para iniciar o processo:

python training/lora/example/redpajama-incite-chat-3b.py \
  --teacher_model_path pretrained/RedPajama-7B/ \
  --student_model_path pretrained/RedPajama-3B/ \
  --dataset_path data/OIG/ \
  --output_directory ./destilados/lora-redpajama-3b

Cenários de Aplicação

Modelos otimizados por destilação do OpenChatKit são ideais para:

  • Implantação em dispositivos de borda: Por exemplo, sistemas de recuperação de informação leves como os implementados em retrieval/wikipedia.py.
  • Sistemas de diálogo em tempo real: Construção de chatbots com baixa latência usando inference/bot.py.
  • Integração em aplicativos móveis: Redução no tamanho do modelo para melhorar a experiência do usuário.

Tags: OpenChatKit destilação de modelos LoRA Pytorch Modelos de Linguagem

Publicado em 6-20 04:02