FineTuningLLMs é um repositório do GitHub criado pelo autor dvgodoy, com base em seu livro A Hands-On Guide to Fine-Tuning LLMs with PyTorch and Hugging Face. Esse repositório fornece aos desenvolvedores um guia prático e sistemático focado no ajuste fino eficiente de modelos de linguagem grande (LLMs) em uma única GPU de consumo. Ele explica como otimizar o desempenho do modelo usando ferramentas como PyTorch, adaptadores LoRA, técnicas de quantização e muito mais, em conjunto com o ecossistema Hugging Face. O repositório abrange o processo completo, desde o carregamento do modelo até a implantação, e é adequado para profissionais e pesquisadores de aprendizado de máquina. Os usuários podem aprender sobre ajuste fino, implementação e solução de problemas por meio de exemplos de código e documentação detalhada. O projeto é compartilhado como código-fonte aberto para incentivar a contribuição e o aprendizado da comunidade.
Lista de funções
- Fornece um processo completo de ajuste fino do LLM que abrange o pré-processamento de dados, o carregamento de modelos e a otimização de parâmetros.
- Oferece suporte ao uso de LoRA e técnicas de quantificação para reduzir os requisitos de hardware para o ajuste fino de uma única GPU.
- Integração com o ecossistema Hugging Face, fornecendo exemplos de configurações de modelos e ferramentas pré-treinados.
- Inclui uma comparação de desempenho entre o Flash Attention e o PyTorch SDPA para otimizar a velocidade de treinamento do modelo.
- Oferece suporte à conversão de modelos ajustados para o formato GGUF para facilitar a implementação local.
- Fornece guias de implantação para Ollama e llama.cpp para simplificar o processo de colocar os modelos on-line.
- Inclui um guia de solução de problemas que lista erros comuns e suas soluções.
Usando a Ajuda
Processo de instalação
O FineTuningLLMs é um repositório de código baseado no GitHub e os usuários precisam instalar primeiro o ambiente de desenvolvimento necessário. Veja a seguir as etapas detalhadas de instalação e configuração:
- armazém de clones
Abra um terminal e execute o seguinte comando para clonar o repositório localmente:git clone https://github.com/dvgodoy/FineTuningLLMs.git cd FineTuningLLMs
- Instalação do ambiente Python
Certifique-se de que o Python 3.8 ou posterior esteja instalado em seu sistema. Recomenda-se um ambiente virtual para isolar as dependências:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- Instalação de dependências
O repositório fornece umrequirements.txt
que contém as bibliotecas Python necessárias (por exemplo, PyTorch, transformadores Hugging Face etc.). Execute o seguinte comando para instalá-lo:pip install -r requirements.txt
- Instalação de ferramentas opcionais
- Se você precisar implantar o modelo, instale o Ollama ou o llama.cpp. De acordo com a documentação oficial, o Ollama pode ser instalado com o seguinte comando:
curl https://ollama.ai/install.sh | sh
- Se estiver usando o modelo de formato GGUF, você precisará instalar o llama.cpp e consultar sua página no GitHub para concluir a configuração.
- Se você precisar implantar o modelo, instale o Ollama ou o llama.cpp. De acordo com a documentação oficial, o Ollama pode ser instalado com o seguinte comando:
- Ambiente de verificação
Execute o script de amostra do repositóriotest_environment.py
(se houver) para garantir que as dependências estejam instaladas corretamente:python test_environment.py
Funções principais
1. pré-processamento de dados
O FineTuningLLMs fornece ferramentas de formatação de dados para ajudar os usuários a preparar conjuntos de dados de treinamento adequados para o ajuste fino. Os usuários precisam preparar conjuntos de dados no formato JSON ou CSV contendo texto de entrada e saída de destino. O repositório de data_preprocessing.py
Scripts (arquivos de exemplo) estão disponíveis para limpeza e formatação de dados. Executar comando:
python data_preprocessing.py --input input.json --output formatted_data.json
Certifique-se de que os dados de entrada estejam em conformidade com as especificações do conjunto de dados da Hugging Face, os campos normalmente incluem text
responder cantando label
.
2. ajuste fino do modelo
A função principal do repositório é fazer o ajuste fino dos modelos em uma única GPU usando LoRA e técnicas de quantificação. Os usuários podem escolher entre modelos pré-treinados fornecidos pela Hugging Face (por exemplo, LLaMA ou Mistral). A configuração dos parâmetros de LoRA (por exemplo, valores de classificação e alfa) na seção config/lora_config.yaml
é concluído. Exemplo de configuração:
lora:
rank: 8
alpha: 16
dropout: 0.1
Execute o script de ajuste fino:
python train.py --model_name llama-2-7b --dataset formatted_data.json --output_dir ./finetuned_model
O script carrega o modelo, aplica o adaptador LoRA e inicia o treinamento. As opções de quantização (por exemplo, números inteiros de 8 bits) podem ser ativadas por meio de argumentos de linha de comando:
python train.py --quantization 8bit
3. otimização do desempenho
O repositório é compatível com os mecanismos de atenção Flash Attention e PyTorch SDPA. Os usuários podem saber mais sobre esses mecanismos na seção train.py
acertou em cheio --attention flash
talvez --attention sdpa
Selecione o mecanismo. A atenção flash geralmente é mais rápida, mas requer maior compatibilidade de hardware. Execute o seguinte comando para ver a diferença de desempenho:
python benchmark_attention.py --model_name llama-2-7b
O script gera dados de velocidade de treinamento e uso de memória, facilitando ao usuário a escolha de uma configuração adequada.
4. implantação do modelo
O modelo com ajuste fino pode ser convertido para o formato GGUF para inferência local. Execute o script de conversão:
python convert_to_gguf.py --model_path ./finetuned_model --output_path model.gguf
Use o Ollama para implementar o modelo:
ollama serve --model model.gguf
Os usuários podem interagir com o modelo por meio da API HTTP ou da linha de comando:
curl http://localhost:11434/api/generate -d '{"model": "model.gguf", "prompt": "你好,世界!"}'
5 Solução de problemas
O repositório contém um troubleshooting.md
que lista problemas comuns, como estouro de memória ou falhas no carregamento do modelo. Os usuários podem consultar esse arquivo para resolver os erros. Por exemplo, se a memória CUDA for insuficiente, tente reduzir o tamanho do lote:
python train.py --batch_size 4
Operação da função em destaque
Ajuste fino do LoRA
O LoRA (Low-Rank Adaptation) é a tecnologia principal do repositório, permitindo que os usuários atualizem apenas alguns dos parâmetros do modelo, reduzindo significativamente os requisitos computacionais. Os usuários são obrigados a atualizar os parâmetros do modelo no config/lora_config.yaml
Defina a classificação (rank) e o fator de escala (alfa) no campo Ao executar o ajuste fino, o adaptador LoRA é aplicado automaticamente à camada de atenção do modelo. O usuário pode verificar o efeito do LoRA com o seguinte comando:
python evaluate.py --model_path ./finetuned_model --test_data test.json
Suporte quantitativo
A quantificação converte os pesos do modelo de números de ponto flutuante de 16 bits para inteiros de 8 bits, reduzindo o espaço de memória. Os usuários podem ativar a quantificação durante o treinamento ou a inferência:
python train.py --quantization 8bit
Os modelos quantificados também são executados com eficiência em GPUs de consumo, como a NVIDIA RTX 3060.
implantação local
Com o Ollama ou llama.cpp, os usuários podem implantar o modelo em um dispositivo local. O ollama fornece uma interface da Web simples para testes rápidos. Execute o seguinte comando para iniciar a interface da Web:
ollama web
Os usuários podem acessar em seus navegadores http://localhost:11434
Interaja com o modelo.
cenário do aplicativo
- Chatbots personalizados
Os usuários podem fazer o ajuste fino do modelo para gerar diálogos específicos do domínio, como atendimento ao cliente ou suporte técnico. Depois de preparar um conjunto de dados de diálogos relevantes para o domínio e executar o script de ajuste fino, o modelo pode gerar respostas mais relevantes para um cenário específico. - Otimização da geração de texto
Escritores ou criadores de conteúdo podem usar o modelo ajustado para gerar texto que corresponda a um estilo específico, como documentação técnica ou redação criativa. Ao ajustar os dados de treinamento, o modelo pode imitar o estilo de texto desejado. - Implementação de modelos localizados
As empresas e os desenvolvedores podem implementar modelos ajustados em servidores locais para inferência off-line. O suporte ao formato GGUF e ao Ollama possibilita a execução de modelos em ambientes com poucos recursos. - Educação e pesquisa
Estudantes e pesquisadores podem usar o repositório para aprender técnicas de ajuste fino do LLM. Os exemplos de código e a documentação são adequados para iniciantes para ajudá-los a entender a implementação de mecanismos de quantificação, LoRA e atenção.
QA
- Os FineTuningLLMs são adequados para iniciantes?
Sim, o repositório fornece comentários de código detalhados e documentação para iniciantes com Python básico e aprendizado de máquina. Os usuários precisam entender as operações básicas do PyTorch e do Hugging Face. - Precisa de uma GPU de ponta?
Não é necessário. O Warehouse se concentra no ajuste fino de uma única GPU, que pode ser executado em GPUs de consumo, como a RTX 3060 com 12 GB de RAM, com técnicas de LoRA e quantificação que reduzem ainda mais os requisitos de hardware. - Como escolher o modelo de pré-treinamento correto?
O usuário pode escolher o modelo de acordo com os requisitos da tarefa. O Hugging Face oferece o LLaMA ou o Mistral, que são adequados para a maioria das tarefas de NLP. A documentação do repositório sugere começar com um modelo pequeno (por exemplo, parâmetros 7B) para teste. - Preciso de ferramentas adicionais para implantar o modelo?
Sim, é recomendável usar o Ollama ou o llama.cpp para a implantação. Ambos são de código aberto e fáceis de instalar, consulte a seçãodeploy_guide.md
.