XTuner - Kit de Ferramentas Eficiente para Ajuste Fino de Modelos de Linguagem Grandes
Visão Geral do Projeto
XTuner é um kit de ferramentas eficiente, flexível e completo para ajuste fino de modelos de linguagem grandes, desenvolvido pela equipe InternLM. Este projeto visa fornecer aos usuários uma ferramenta fácil de usar e poderosa para ajustar finamente vários modelos de linguagem grandes, incluindo InternLM, Llama, Qwen, ChatGLM, Baichuan e outros modelos populares.
Características Principais
1. Eficiência (Efficient)
- Baixa Demanda de Recursos: Suporta o ajuste fino de modelos de linguagem grandes de 7B parâmetros em uma única GPU de 8GB
- Escalabilidade Multi-Nó: Suporta ajuste fino multi-nó de mais de 70B parâmetros
- Otimização de Desempenho: Agendamento automático de operadores de alto desempenho, como FlashAttention e kernels Triton, para aumentar a taxa de transferência de treinamento
- Integração DeepSpeed: Compatível com o framework DeepSpeed, facilitando o uso de várias técnicas de otimização ZeRO
2. Flexibilidade (Flexible)
- Suporte a Múltiplos Modelos: Suporta vários modelos de linguagem grandes
- Série InternLM (InternLM, InternLM2, InternLM2.5, InternLM3)
- Série Meta Llama (Llama 2, Llama 3)
- Outros modelos populares: Mixtral-8x7B, ChatGLM, Qwen, Baichuan, Gemma, DeepSeek, etc.
- Suporte Multimodal: Suporta modelos de linguagem visual (VLM), especialmente modelos baseados na arquitetura LLaVA
- Pipeline de Dados: Pipeline de dados cuidadosamente projetado, suportando vários formatos de conjuntos de dados
- Vários Algoritmos de Treinamento: Suporta QLoRA, LoRA, ajuste fino de parâmetros completos e outras estratégias de treinamento
3. Funcionalidade Completa (Full-featured)
- Vários Modos de Treinamento:
- Pré-treinamento contínuo
- Ajuste fino de instruções
- Ajuste fino de agentes inteligentes
- Funcionalidade de Diálogo: Suporta diálogo com modelos grandes usando modelos predefinidos
- Integração Perfeita: Os modelos de saída podem ser integrados perfeitamente com kits de ferramentas de implantação e serviço (LMDeploy) e kits de ferramentas de avaliação em larga escala (OpenCompass, VLMEvalKit)
Modelos Suportados
XTuner suporta uma ampla gama de famílias de modelos, incluindo, mas não se limitando a:
Série de Modelos |
Modelo Específico |
Características |
InternLM |
InternLM, InternLM2, InternLM2.5, InternLM3 |
Otimizado para chinês, excelente desempenho |
Llama |
Llama 2, Llama 3 |
Modelo de código aberto da Meta |
Qwen |
Qwen 1.5, etc. |
Modelo de código aberto da Alibaba |
ChatGLM |
ChatGLM3-6B, etc. |
Modelo de código aberto da Universidade Tsinghua |
Baichuan |
Baichuan2, etc. |
Modelo de código aberto da Baichuan Intelligence |
Mixtral |
Mixtral 8x7B |
Modelo de especialista misto da Mistral AI |
Outros |
Gemma, DeepSeek, MiniCPM, etc. |
Modelos de código aberto de várias empresas |
Capacidades Multimodais
XTuner se destaca no campo multimodal, especialmente em modelos de linguagem visual:
- Suporte à Arquitetura LLaVA: Suporte completo para pré-treinamento e ajuste fino da arquitetura LLaVA-v1.5
- Excelente Desempenho: O modelo LLaVA-InternLM2-20B tem desempenho notável
- Várias Combinações: Suporta várias combinações de codificadores visuais e modelos de linguagem
- Lançamentos Mais Recentes:
- LLaVA-Llama-3-8B
- LLaVA-Llama-3-8B-v1.1
- LLaVA-Phi-3-mini
Instalação e Uso
Preparação do Ambiente
# Criar ambiente virtual Python 3.10
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
Métodos de Instalação
Método 1: Instalar via pip
pip install -U xtuner
Método 2: Integrar DeepSpeed
pip install -U 'xtuner[deepspeed]'
Método 3: Instalar a partir do código fonte
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
Início Rápido
1. Preparar o arquivo de configuração
# Ver todos os arquivos de configuração disponíveis
xtuner list-cfg
# Copiar o arquivo de configuração para personalizar
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
2. Começar o ajuste fino
# Ajuste fino em GPU única
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# Ajuste fino em múltiplas GPUs
NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
3. Conversão de Modelo
# Converter o modelo PTH para o formato Hugging Face
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
4. Teste de Diálogo
# Dialogar com o modelo ajustado
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter ${NAME_OR_PATH_TO_ADAPTER}
Funcionalidades Avançadas
1. Paralelismo de Sequência
- Suporta treinamento de sequências extremamente longas
- Método de treinamento eficiente e escalável
- Adequado para cenários que exigem o processamento de texto longo
2. Treinamento DPO/ORPO
- Suporta Otimização Direta de Preferência (DPO)
- Suporta Otimização de Preferência de Razão de Chances (ORPO)
- Suporta treinamento de Modelo de Recompensa
- Suporta dados compactados e paralelismo de sequência
3. Otimização de Raciocínio Matemático
- Suporta OREAL (um novo método de aprendizado por reforço)
- Otimizado especificamente para tarefas de raciocínio matemático
Desempenho
Velocidade de Treinamento
- Llama2 7B: Possui excelente velocidade de treinamento em uma única GPU
- Llama2 70B: Suporta treinamento paralelo em múltiplas GPUs, com excelente desempenho de velocidade
- DeepSeek V2: Aumento de 2 vezes na velocidade de treinamento em comparação com a versão anterior
Eficiência de Memória
- Baixa Demanda de Memória: 20GB de memória GPU são suficientes para o ajuste fino QLoRA
- Ajuste Fino de Parâmetros Completos: 4x80GB GPU podem realizar o ajuste fino de parâmetros completos
- Otimização de Memória: Reduz significativamente o uso de memória por meio de várias técnicas de otimização
Integração com o Ecossistema
XTuner, como uma parte importante do ecossistema InternLM, está intimamente integrado com outras ferramentas:
- LMDeploy: Kit de ferramentas de implantação e serviço de modelos
- OpenCompass: Kit de ferramentas de avaliação em larga escala
- VLMEvalKit: Kit de ferramentas de avaliação de modelos de linguagem visual
- Lagent: Framework de agentes inteligentes
- AgentLego: Biblioteca de API de ferramentas multifuncionais
Cenários de Aplicação
1. Pesquisa Acadêmica
- Pesquisa de ajuste fino de modelos de linguagem grandes
- Desenvolvimento de modelos multimodais
- Validação de novos algoritmos
2. Aplicações Industriais
- Chatbots personalizados
- Desenvolvimento de modelos específicos de domínio
- Assistentes de IA de nível empresarial
3. Educação e Treinamento
- Ensino de cursos de IA
- Construção de ambientes experimentais
- Treinamento de habilidades
Conclusão
XTuner é um kit de ferramentas de ajuste fino de modelos de linguagem grandes abrangente e de alto desempenho. Ele não apenas suporta uma ampla gama de modelos e algoritmos de treinamento, mas também fornece uma cadeia de ferramentas completa, desde a preparação de dados até a implantação de modelos, fornecendo aos usuários uma solução completa. Seja para pesquisa acadêmica ou aplicações industriais, o XTuner pode atender às necessidades de diferentes cenários e é a escolha ideal para realizar o ajuste fino de modelos de linguagem grandes.