Framework de treinamento GPT leve, treine um pequeno modelo de linguagem de 26M parâmetros completamente do zero em 2 horas.
MiniMind - Framework de Treinamento GPT Ultraleve
Visão Geral do Projeto
MiniMind é um framework de treinamento de modelos de linguagem grandes extremamente leve, com a versão mínima sendo apenas 1/7000 do tamanho do GPT-3, permitindo treinamento rápido em GPUs pessoais comuns. Este projeto permite treinar um modelo GPT de pequeno porte com 26 milhões de parâmetros completamente do zero em 2 horas.
Principais Características
🚀 Design Ultraleve
- Quantidade Mínima de Parâmetros: O modelo mínimo requer apenas 26M (0.02B) parâmetros para alcançar capacidades de diálogo fluentes.
- Treinamento Eficiente: Suporta treinamento completo em 2 horas em uma única placa de vídeo 3090.
- Amigo dos Recursos: Pode ser executado em GPUs pessoais comuns, reduzindo significativamente as barreiras de entrada para o treinamento.
🧠 Ecossistema de Treinamento Completo
O projeto abre o código da estrutura minimalista de modelos grandes, incluindo as seguintes funcionalidades principais:
- Pré-treinamento (Pretraining) - Treinar um modelo de linguagem básico do zero
- Ajuste Fino Supervisionado (SFT) - Ajuste fino supervisionado com instruções
- Ajuste Fino LoRA - Técnica de ajuste fino de adaptação de baixa patente
- Algoritmo DPO - Algoritmo de Otimização de Preferência Direta
- Destilação de Modelo - Algoritmo de destilação de conhecimento
- Extensão MoE - Suporte para Modelo de Mistura de Especialistas
🎯 Arquitetura Técnica
Suporte ao Framework
- PyTorch Nativo: Construído com base no framework PyTorch nativo, suportando aceleração multi-GPU
- Alta Compatibilidade: Compatível com frameworks populares como transformers, accelerate, trl, peft
- Implantação Flexível: Suporta configurações de treinamento de GPU única e multi-GPU (DDP, DeepSpeed)
Características de Treinamento
- Retomada de Treinamento: O processo de treinamento suporta parada e retomada a qualquer momento
- Treinamento Multi-GPU: Suporta treinamento distribuído DDP, escalável para clusters multi-máquina e multi-GPU
- Integração de Monitoramento: Suporta registro e visualização do processo de treinamento wandb
🌟 Expansão Multimodal
MiniMind-V Versão Multimodal Visual
- Compreensão Visual: Expansão para VLM multimodal visual: MiniMind-V
- Arquitetura Unificada: Baseado no modelo de linguagem MiniMind como base, adicionando capacidade de codificação visual
📊 Capacidades do Modelo
MiniMind é capaz de executar várias tarefas, incluindo geração de texto, interação de diálogo e recuperação de conhecimento. Ele pode gerar texto com base em prompts ou contexto fornecidos, conduzir interações de diálogo e recuperar conhecimento sobre vários tópicos.
Principais Funções
- Geração de Texto: Gerar conteúdo de texto coerente com base em prompts
- Interação de Diálogo: Suporta diálogo e perguntas e respostas em várias rodadas
- Recuperação de Conhecimento: Possui alguma capacidade de perguntas e respostas sobre conhecimento
- Compreensão de Código: Suporta geração e compreensão de código básico
🎓 Valor Educacional
O objetivo deste projeto é reduzir as barreiras de entrada para o aprendizado de LLMs, permitindo que todos treinem um modelo de linguagem muito pequeno, começando com a compreensão de cada linha de código. O projeto adota o conceito de "construir um avião com blocos de construção", permitindo que os usuários entendam profundamente a implementação subjacente do LLM, em vez de serem isolados por encapsulamento de alto nível.
💻 Como Usar
Requisitos de Ambiente
- PyTorch 2.1.2+
- CUDA 12.2+
- Flash Attention 2
- RTX 3090 ou GPU de desempenho superior (recomendado)
Início Rápido
# Clonar o projeto
git clone https://github.com/jingyaogong/minimind.git
cd minimind
# Instalar dependências
pip install -r requirements.txt
# Treinamento em GPU única
python train.py
# Treinamento multi-GPU (N>1)
torchrun --nproc_per_node N train.py
Configuração de Treinamento
# Ativar o monitoramento wandb
wandb login
python train.py --use_wandb
# Especificar o nome do projeto
python train.py --wandb_project "my_minimind" --wandb_run_name "experiment_1"
🔄 Fluxo de Treinamento
- Preparação de Dados: Limpeza e pré-processamento do conjunto de dados
- Pré-treinamento: Realizar treinamento não supervisionado em dados de texto em larga escala
- Ajuste Fino de Instrução: Realizar ajuste fino supervisionado usando dados de instrução
- Otimização de Preferência: Otimizar as preferências de saída do modelo através do algoritmo DPO
- Avaliação do Modelo: Testar o desempenho em conjuntos de dados de referência como Ceval
📈 Desempenho
- Velocidade de Treinamento: Testado em RTX 3090 GPU, usando Torch 2.1.2, CUDA 12.2 e Flash Attention 2
- Qualidade do Diálogo: 26M de parâmetros são suficientes para alcançar um diálogo fluente
- Consumo de Recursos: Baixo uso de memória de vídeo, adequado para desenvolvedores individuais
🌍 Ecossistema da Comunidade
- Código Aberto e Gratuito: Totalmente de código aberto, todo o código do algoritmo principal é público
- Documentação Completa: Fornece documentação detalhada em chinês e inglês
- Atualizações Contínuas: Comunidade de desenvolvimento ativa, iteração contínua de recursos
- Amigável para Educação: Adequado para uso em aprendizado e ensino
🔗 Projetos Relacionados
- Projeto Principal: minimind
- Versão Multimodal: minimind-v
- Versão MoE: minimind-v1-moe
Conclusão
MiniMind é um framework de treinamento LLM leve e inovador que prova que é possível treinar modelos de linguagem com capacidades de diálogo práticas com recursos computacionais limitados. O projeto não apenas fornece uma cadeia de ferramentas de treinamento completa, mas, mais importante, fornece uma excelente plataforma para alunos e pesquisadores de IA entenderem os mecanismos internos do LLM. Através do conceito de "começar do zero e entender cada linha de código", MiniMind está democratizando a tecnologia de inteligência artificial, permitindo que mais pessoas participem do desenvolvimento e pesquisa de grandes modelos.