Introdução | Instalação | Comece | Documentação | Comunidade | Licença | Citando o torchtune
Importante
Atualização em 25 de setembro de 2024: torchtune tem suporte para os modelos Llama 3.2 11B Vision , Llama 3.2 3B e Llama 3.2 1B ! Experimente-os seguindo nossas instruções de instalação aqui e, em seguida, execute qualquer uma das configurações de texto aqui ou configurações de visão aqui.
torchtune é uma biblioteca PyTorch para criar, ajustar e experimentar facilmente LLMs.
O torchtune fornece:
Implementações PyTorch de LLMs populares das famílias de modelos Llama, Gemma, Mistral, Phi e Qwen
Receitas de treinamento hackeáveis para ajuste completo, LoRA, QLoRA, DPO, PPO, QAT, destilação de conhecimento e muito mais
Eficiência de memória pronta para uso, melhorias de desempenho e escalonamento com as APIs PyTorch mais recentes
Configurações YAML para configurar facilmente receitas de treinamento, avaliação, quantização ou inferência
Suporte integrado para muitos formatos populares de conjuntos de dados e modelos de prompt
O torchtune atualmente suporta os seguintes modelos.
Modelo | Tamanhos |
---|---|
Lhama3.2-Visão | 11B [modelos, configurações] |
Lhama3.2 | 1B, 3B [modelos, configurações] |
Lhama3.1 | 8B, 70B, 405B [modelos, configurações] |
Lhama3 | 8B, 70B [modelos, configurações] |
Lhama2 | 7B, 13B, 70B [modelos, configurações] |
Código-Llama2 | 7B, 13B, 70B [modelos, configurações] |
Mistral | 7B [modelos, configurações] |
Gema | 2B, 7B [modelos, configurações] |
Microsoft Phi3 | Mini [modelos, configurações] |
Qwen2 | 0,5B, 1,5B, 7B [modelos, configurações] |
Estamos sempre adicionando novos modelos, mas fique à vontade para registrar um problema se houver um novo que você gostaria de ver no torchtune.
torchtune fornece as seguintes receitas de ajuste fino para treinamento em um ou mais dispositivos.
Método de ajuste fino | Dispositivos | Receita | Exemplos de configurações |
---|---|---|---|
Ajuste fino completo | 1-8 | full_finetune_single_device full_finetune_distributed | Dispositivo único Llama3.1 8B Lhama 3.1 70B distribuída |
Ajuste fino de LoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Dispositivo único Qwen2 0,5B Gemma 7B distribuída |
Ajuste fino do QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini dispositivo único Lhama 3.1 405B distribuída |
Ajuste fino de DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Dispositivo único Llama3 8B QDoRA Llama3 8B DoRA distribuído |
Treinamento consciente de quantização | 4-8 | qat_distribuído | Lhama3 8B QAT |
Otimização de preferência direta | 1-8 | lora_dpo_single_device lora_dpo_distribuído | Dispositivo único Llama2 7B Llama2 7B distribuído |
Otimização de Política Proximal | 1 | ppo_full_finetune_single_device | Mistral 7B |
Destilação de Conhecimento | 1 | conhecimento_distilação_single_device | Qwen2 1,5B -> 0,5B |
As configurações acima são apenas exemplos para você começar. Se você vir um modelo acima não listado aqui, provavelmente ainda o oferecemos suporte. Se você não tiver certeza se algo é compatível, abra um problema no repositório.
Abaixo está um exemplo dos requisitos de memória e velocidade de treinamento para diferentes modelos do Llama 3.1.
Observação
Para facilitar a comparação, todos os números abaixo são fornecidos para tamanho de lote 2 (sem acúmulo de gradiente), um conjunto de dados compactado no comprimento de sequência 2048 e compilação de tocha habilitada.
Se você estiver interessado em rodar em hardware diferente ou com modelos diferentes, confira nossa documentação sobre otimizações de memória aqui para encontrar a configuração certa para você.
Modelo | Método de ajuste fino | Executável ativado | Pico de memória por GPU | Tokens/s * |
---|---|---|---|---|
Lhama 3.1 8B | Ajuste completo | 1x4090 | 18,9 GB | 1650 |
Lhama 3.1 8B | Ajuste completo | 1xA6000 | 37,4GB | 2579 |
Lhama 3.1 8B | LoRA | 1x4090 | 16,2 GB | 3083 |
Lhama 3.1 8B | LoRA | 1xA6000 | 30,3 GB | 4699 |
Lhama 3.1 8B | QLoRA | 1x4090 | 7,4GB | 2413 |
Lhama 3.1 70B | Ajuste completo | 8xA100 | 13,9 GB ** | 1568 |
Lhama 3.1 70B | LoRA | 8xA100 | 27,6 GB | 3497 |
Lhama 3.1 405B | QLoRA | 8xA100 | 44,8GB | 653 |
*= Medido durante um período completo de treinamento
**= Usa descarregamento de CPU com otimizador fundido
torchtune é testado com a versão estável mais recente do PyTorch, bem como com a versão noturna de visualização. torchtune aproveita o torchvision para ajustar LLMs multimodais e torchao para o que há de mais moderno em técnicas de quantização; você deve instalá-los também.
# Instale PyTorch estável, torchvision, torchao stable releasespip instale tocha torchvision torchao pip instalar tochatune
# Instale PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # as opções completas são cpu/cu118/cu121/cu124pip install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
Você também pode verificar nossa documentação de instalação para obter mais informações, incluindo a instalação do torchtune a partir do código-fonte.
Para confirmar se o pacote está instalado corretamente, você pode executar o seguinte comando:
sintonizar --ajuda
E deverá ver a seguinte saída:
uso: tune [-h] {ls,cp,download,run,validate} ... Bem-vindo às opções do CLI do torchtune!: -h, --help mostra esta mensagem de ajuda e sai...
Para começar a usar o torchtune, consulte nosso primeiro tutorial do Finetune. Nosso tutorial de fluxo de trabalho ponta a ponta mostrará como avaliar, quantizar e executar inferência com um modelo Llama. O restante desta seção fornecerá uma rápida visão geral dessas etapas com o Llama3.1.
Siga as instruções no repositório oficial meta-llama
para garantir que você tenha acesso aos pesos oficiais do modelo Llama. Depois de confirmar o acesso, você pode executar o seguinte comando para baixar os pesos para sua máquina local. Isso também fará o download do modelo do tokenizer e de um guia de uso responsável.
Para baixar o Llama3.1, você pode executar:
sintonizar download meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruir --ignore-patterns "original/consolidado.00.pth" --hf-token
Dica
Defina sua variável de ambiente HF_TOKEN
ou passe --hf-token
para o comando para validar seu acesso. Você pode encontrar seu token em https://huggingface.co/settings/tokens
Você pode ajustar o Llama3.1 8B com LoRA em uma única GPU usando o seguinte comando:
sintonizar executar lora_finetune_single_device --config llama3_1/8B_lora_single_device
Para treinamento distribuído, o tune CLI integra-se ao torchrun. Para executar um ajuste completo do Llama3.1 8B em duas GPUs:
sintonizar executar --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
Dica
Certifique-se de colocar qualquer comando torchrun antes da especificação da receita. Quaisquer argumentos CLI após isso substituirão a configuração e não afetarão o treinamento distribuído.
Existem duas maneiras de modificar as configurações:
Substituições de configuração
Você pode substituir diretamente os campos de configuração na linha de comando:
sintonizar executar lora_finetune_single_device --config lhama2/7B_lora_single_device tamanho_do_lote=8 enable_activation_checkpointing=Verdadeiro max_steps_per_época=128
Atualizar uma cópia local
Você também pode copiar a configuração para o seu diretório local e modificar o conteúdo diretamente:
ajuste cp llama3_1/8B_full ./my_custom_config.yaml Copiado para ./my_custom_config.yaml
Em seguida, você pode executar sua receita personalizada direcionando o comando tune run
para seus arquivos locais:
sintonizar execute full_finetune_distributed --config ./my_custom_config.yaml
Confira tune --help
para todos os comandos e opções CLI possíveis. Para obter mais informações sobre como usar e atualizar configurações, dê uma olhada em nosso aprofundamento de configuração.
torchtune suporta ajuste fino em uma variedade de conjuntos de dados diferentes, incluindo estilo de instrução, estilo de bate-papo, conjuntos de dados de preferência e muito mais. Se você quiser saber mais sobre como aplicar esses componentes para ajustar seu próprio conjunto de dados personalizado, verifique os links fornecidos junto com nossos documentos de API.
torchtune se concentra na integração com ferramentas e bibliotecas populares do ecossistema. Estes são apenas alguns exemplos, com mais em desenvolvimento:
Abraçando o Face Hub para acessar os pesos do modelo
LM Eval Harness da EleutherAI para avaliação de modelos treinados
Abraçando conjuntos de dados faciais para acesso a conjuntos de dados de treinamento e avaliação
PyTorch FSDP2 para treinamento distribuído
torchao para tipos de menor precisão e técnicas de quantização pós-treinamento
Pesos e preconceitos para registrar métricas e pontos de verificação e monitorar o progresso do treinamento
Comet como outra opção para registro
ExecuTorch para inferência no dispositivo usando modelos ajustados
bits e bytes para otimizadores com pouca memória para nossas receitas de dispositivo único
PEFT para ajuste fino contínuo ou inferência com modelos de ajuste de tocha no ecossistema Hugging Face
Nós realmente valorizamos nossa comunidade e as contribuições feitas por nossos maravilhosos usuários. Usaremos esta seção para destacar algumas dessas contribuições. Se você também quiser ajudar, consulte o guia CONTRIBUINDO.
@SalmanMohammadi por adicionar uma receita abrangente de ponta a ponta para ajuste fino de Aprendizado por Reforço a partir de Feedback Humano (RLHF) com PPO para ajustar a tocha
@fyabc por adicionar modelos Qwen2, tokenizer e integração de receitas ao torchtune
@solitude-alive por adicionar o modelo Gemma 2B ao torchtune, incluindo alterações de receita, validações numéricas dos modelos e correção da receita
@yechenzhi por adicionar Direct Preference Optimization (DPO) ao torchtune, incluindo a receita e configuração junto com verificações de correção
O código Llama2 neste repositório é inspirado no código Llama2 original.
Queremos dar um grande agradecimento a EleutherAI, Hugging Face e Weights & Biases por serem colaboradores maravilhosos e por trabalharem conosco em algumas dessas integrações dentro do torchtune.
Também queremos agradecer algumas bibliotecas e ferramentas incríveis do ecossistema:
gpt-fast para técnicas de inferência LLM de alto desempenho que adotamos prontas para uso
receitas de lhama para iniciar a comunidade lhama2
bitsandbytes por trazer diversas técnicas baseadas em memória e desempenho para o ecossistema PyTorch
@winglian e axolotl pelo feedback inicial e brainstorming sobre o design e conjunto de recursos do torchtune.
lit-gpt por impulsionar a comunidade de ajuste fino do LLM.
HF TRL por tornar a modelagem de recompensas mais acessível para a comunidade PyTorch.
torchtune é lançado sob a licença BSD 3. No entanto, você pode ter outras obrigações legais que regem o uso de outros conteúdos, como os termos de serviço para modelos de terceiros.
Se você achar a biblioteca torchtune útil, cite-a em seu trabalho conforme abaixo.
@software{torchtune, title = {torchtune: biblioteca de ajuste fino do PyTorch}, autor = {mantenedores e contribuidores do torchtune}, url = {https//github.com/pytorch/torchtune}, licença = {BSD-3-Clause}, mês = abril, ano = {2024}}