Home
Login

Ajuste fino do modelo LLaMA usando a técnica de adaptação de baixa classificação LoRA em hardware de nível de consumidor, construindo rapidamente um assistente de IA de acompanhamento de instruções semelhante ao ChatGPT.

Apache-2.0Jupyter Notebook 18.9ktloen Last Updated: 2024-07-29

Visão Geral do Projeto Alpaca-LoRA

Alpaca-LoRA é um projeto de código aberto, desenvolvido por tloen, que visa replicar o efeito do modelo Alpaca da Universidade de Stanford usando a técnica de Adaptação de Baixa Classificação (LoRA) em hardware de consumo. O projeto oferece um modelo de acompanhamento de instruções com qualidade semelhante ao text-davinci-003, que pode até ser executado em um Raspberry Pi (para fins de pesquisa), e o código pode ser facilmente expandido para modelos de 13B, 30B e 65B.

Tecnologia Central

LoRA (Adaptação de Baixa Classificação)

  • Definição: LoRA é um método de ajuste fino com eficiência de parâmetros que implementa a adaptação do modelo adicionando um pequeno número de parâmetros treináveis ao modelo pré-treinado.
  • Vantagens: Reduz significativamente os recursos computacionais e o espaço de armazenamento necessários para o treinamento.
  • Aplicação: Permite que usuários comuns ajustem modelos de linguagem grandes em uma única GPU de consumo.

Infraestrutura

  • Modelo Base: LLaMA (Large Language Model Meta AI) da Meta.
  • Dados de Ajuste Fino: Baseado no conjunto de dados de 52K instruções do Stanford Alpaca.
  • Pilha de Tecnologia:
    • Hugging Face PEFT (Parameter-Efficient Fine-Tuning)
    • Biblioteca bitsandbytes de Tim Dettmers
    • Framework de aprendizado profundo PyTorch

Principais Características

1. Facilidade de Uso em Hardware

  • Requisitos Mínimos: Uma única GPU RTX 4090.
  • Tempo de Treinamento: Treinamento concluído em poucas horas.
  • Suporte à Inferência: Suporta inferência de quantização de 8 bits, reduzindo ainda mais os requisitos de hardware.

2. Suporte a Múltiplas Escalas de Modelo

  • Modelo 7B: Adequado para pesquisa e aprendizado pessoal.
  • Modelo 13B: Melhor desempenho.
  • Modelos 30B e 65B: Aplicações de nível profissional.

3. Facilidade de Uso

  • Instalação Simples: Instale as dependências via pip.
  • Início Rápido: Fornece scripts completos de treinamento e inferência.
  • Suporte a Docker: Implantação em contêineres, reduzindo a dificuldade de configuração do ambiente.

Instalação e Uso

Preparação do Ambiente

# Clonar o projeto
git clone https://github.com/tloen/alpaca-lora.git
cd alpaca-lora

# Instalar as dependências
pip install -r requirements.txt

Treinamento do Modelo

# Comando básico de treinamento
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca'

# Treinamento com hiperparâmetros personalizados
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca' \
    --batch_size 128 \
    --micro_batch_size 4 \
    --num_epochs 3 \
    --learning_rate 1e-4 \
    --cutoff_len 512 \
    --val_set_size 2000 \
    --lora_r 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --lora_target_modules '[q_proj,v_proj]' \
    --train_on_inputs \
    --group_by_length

Inferência do Modelo

# Iniciar o serviço de inferência
python generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Implantação com Docker

# Construir a imagem
docker build -t alpaca-lora .

# Executar o contêiner
docker run --gpus=all --shm-size 64g -p 7860:7860 \
    -v ${HOME}/.cache:/root/.cache --rm alpaca-lora generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Desempenho

Comparação com Modelos de Referência

O projeto fornece resultados detalhados de comparação com Stanford Alpaca e text-davinci-003:

Exemplo de Instrução: Conte-me sobre alpacas

  • Alpaca-LoRA: Fornece informações precisas e detalhadas sobre alpacas, incluindo características biológicas e usos.
  • Stanford Alpaca: Resposta de alta qualidade semelhante.
  • text-davinci-003: Resposta do modelo OpenAI como referência.

Testes de Tarefas Técnicas:

  • Tarefas de programação (como sequência de Fibonacci, FizzBuzz)
  • Tradução de idiomas
  • Perguntas e respostas factuais
  • Raciocínio lógico

Análise de Vantagens

  1. Custo-Benefício: Redução de custo de mais de 99% em comparação com o treinamento de um modelo completo.
  2. Eficiência de Tempo: Treinamento concluído em poucas horas, em vez de semanas.
  3. Garantia de Qualidade: Qualidade de saída próxima a modelos comerciais grandes.
  4. Escalabilidade: Suporta adaptação a vários idiomas e áreas de especialização.

Ecossistema e Expansão

Suporte Oficial

  • Hugging Face Hub: Hospedagem de pesos pré-treinados.
  • Experiência Online: Fornece teste online através do Hugging Face Spaces.
  • Suporte da Comunidade: Comunidade Discord ativa.

Expansões de Terceiros

  1. Suporte Multilíngue:
  • Versão chinesa (Chinese-Alpaca-LoRA)
  • Versão japonesa (Japanese-Alpaca-LoRA)
  • Vários idiomas, como alemão, francês, espanhol, etc.
  1. Adaptação a Áreas de Especialização:
  • Versão treinada com conjunto de dados GPT-4
  • Versões para áreas de especialização como medicina, direito, etc.
  • Expansão multimodal (texto + imagem)
  1. Ferramentas de Implantação:
  • alpaca.cpp: Versão otimizada para inferência de CPU
  • Alpaca-LoRA-Serve: Interface Web no estilo ChatGPT
  • Versão adaptada para dispositivos móveis

Cadeia de Ferramentas Compatível

  • llama.cpp: Motor de inferência de CPU eficiente
  • alpaca.cpp: Motor de inferência Alpaca especialmente otimizado
  • Formato ONNX: Suporte para implantação entre plataformas

Conjunto de Dados e Treinamento

Dados de Treinamento

  • Conjunto de Dados Stanford Alpaca: 52K pares de instrução-resposta
  • Qualidade dos Dados: Dados de instrução de alta qualidade gerados com base no GPT-3.5
  • Formato dos Dados: Formato de ajuste fino de instrução padronizado
  • Licença: ODC Attribution License

Projetos de Melhoria de Dados

  1. AlpacaDataCleaned: Projeto de melhoria da qualidade dos dados
  2. GPT-4 Alpaca Data: Dados de maior qualidade gerados usando GPT-4
  3. Dolly 15k: Conjunto de dados de instruções gerado manualmente

Análise Detalhada da Arquitetura Técnica

Componentes Principais

  1. finetune.py: O principal script de ajuste fino, contendo a implementação LoRA e a construção de prompts.
  2. generate.py: Script de inferência, suporta interface Web Gradio.
  3. export_*.py: Script de exportação de modelo, suporta vários formatos.

Parâmetros Chave

  • lora_r: A classificação de LoRA, controla o tamanho do adaptador.
  • lora_alpha: Parâmetro de escala, afeta a extensão da influência do adaptador.
  • lora_dropout: Taxa de dropout para evitar overfitting.
  • lora_target_modules: Módulos que precisam adicionar a camada LoRA.

Cenários de Aplicação

Fins de Pesquisa

  • Pesquisa Acadêmica: Processamento de linguagem natural, pesquisa de aprendizado de máquina
  • Educação e Ensino: Prática de cursos de IA, demonstração de treinamento de modelos
  • Desenvolvimento de Protótipos: Validação rápida de ideias de aplicativos de IA

Aplicações Comerciais

  • Robôs de Atendimento ao Cliente: Ajuste fino com base em dados de domínio específico
  • Geração de Conteúdo: Geração de textos de marketing, documentação técnica
  • Assistente de Código: Desenvolvimento de ferramentas de assistência à programação

Projetos Pessoais

  • Assistente Pessoal: Assistente de IA personalizado com base em preferências pessoais
  • Ferramentas de Aprendizagem: Aprendizagem de idiomas, sistema de perguntas e respostas de conhecimento
  • Escrita Criativa: Criação de histórias, geração de poemas

Limitações e Precauções

Limitações Técnicas

  1. Dependência do Modelo Base: O limite superior de desempenho é limitado pelo modelo base LLaMA.
  2. Dependência da Qualidade dos Dados: A qualidade da saída depende fortemente da qualidade dos dados de treinamento.
  3. Recursos Computacionais: Ainda requer recursos de GPU consideráveis para treinamento.

Precauções de Uso

  1. Problemas de Direitos Autorais: É necessário prestar atenção à licença de uso do modelo LLaMA.
  2. Segurança de Dados: Os dados de treinamento podem conter informações confidenciais.
  3. Viés do Modelo: Pode herdar o viés do modelo base e dos dados de treinamento.

Direções Futuras de Desenvolvimento

Melhorias Técnicas

  1. Métodos de Adaptação Mais Eficientes: Explorar técnicas de ajuste fino mais eficientes do que LoRA.
  2. Suporte Multimodal: Expandir para dados multimodais, como imagens e áudio.
  3. Aprendizado Online: Suportar aprendizado contínuo e adaptação em tempo real.

Construção do Ecossistema

  1. Padronização: Estabelecer padrões unificados de ajuste fino e implantação.
  2. Melhoria da Cadeia de Ferramentas: Fornecer ferramentas de desenvolvimento e implantação mais completas.
  3. Contribuição da Comunidade: Incentivar mais desenvolvedores a contribuir com código e dados.

Conclusão

O projeto Alpaca-LoRA representa um passo importante na democratização da IA, tornando o ajuste fino de modelos de linguagem grandes de alta qualidade acessível. Através da tecnologia LoRA, o projeto trouxe com sucesso a capacidade de IA de nível empresarial para desenvolvedores e pesquisadores individuais.