Introdução geral
O MiniMind é um projeto de código aberto criado pelo desenvolvedor jingyaogong. Seu principal objetivo é permitir que pessoas comuns treinem rapidamente seus próprios modelos de IA. A principal característica do MiniMind é que leva 2 horas para treinar um modelo GPT de 26 milhões de parâmetros do zero em uma única placa de vídeo NVIDIA 3090, a um custo de apenas cerca de 3 RMB. O projeto fornece código de fluxo completo, desde o pré-treinamento até o ajuste fino, incluindo limpeza de conjunto de dados, pré-treinamento, ajuste fino de comando, LoRA, DPO e destilação de modelo, bem como suporte para a extensão visual multimodal MiniMind-V. Todo o código foi refatorado desde o início com base no PyTorch, sem dependência de interfaces de abstração de terceiros. A partir de fevereiro de 2025, o MiniMind foi lançado em várias versões, com um tamanho mínimo de modelo de 25,8 milhões de parâmetros, e recebeu uma resposta esmagadora da comunidade.
Lista de funções
- Suporte para treinamento de modelos GPT de 26 milhões de parâmetros a partir do zero em menos de 2 horas, executados em uma única placa de vídeo 3090.
- Fornece código de fluxo completo para pré-treinamento, ajuste fino de instruções, LoRA, DPO e destilação de modelos.
- Inclui a extensão visual multimodal MiniMind-V para processamento de imagens e textos.
- Suporta treinamento com um ou vários cartões, compatível com as visualizações DeepSpeed e wandb.
- Fornecer servidor de protocolo de API OpenAI para facilitar o acesso a interfaces de bate-papo de terceiros.
- Conjuntos de dados e pesos de modelos de alta qualidade de código aberto para download direto ou desenvolvimento secundário.
- Oferece suporte ao treinamento do tokenizador e a listas de palavras personalizadas para ajustar com flexibilidade a estrutura do modelo.
Usando a Ajuda
O uso do MiniMind é dividido em três etapas: instalação, treinamento e raciocínio. Abaixo está um guia detalhado para ajudar os usuários a começar rapidamente.
Processo de instalação
- Preparação ambiental
- Requer Python 3.10 ou posterior.
- Verifique se a placa de vídeo é compatível com CUDA executando o seguinte código:
import torch print(torch.cuda.is_available())
Se o retorno
True
Caso contrário, você precisará instalar a versão correspondente do PyTorch. - Instale o Git para clonar o código.
- projeto de clonagem
Digite-o no terminal:
git clone https://github.com/jingyaogong/minimind.git
cd minimind
- Instalação de dependências
Instalação acelerada usando os espelhos da Tsinghua:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Se tiver problemas, você pode instalá-lo manualmente torch
talvez flash_attn
.
- Baixar conjunto de dados
- Faça o download do conjunto de dados em GitHub README ou https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files.
- estabelecer
./dataset
extraia os arquivos para esse diretório. - Downloads recomendados
pretrain_hq.jsonl
(1,6 GB) esft_mini_512.jsonl
(1,2 GB).
Modelos de treinamento
- pré-treinamento
- Execute o script para iniciar o pré-treinamento:
python train_pretrain.py
- Uso padrão
pretrain_hq.jsonl
Os pesos de saída são salvos comopretrain_*.pth
. - Aceleração de vários cartões:
torchrun --nproc_per_node 2 train_pretrain.py
- ajuste fino do comando
- Execute o script de ajuste fino:
python train_full_sft.py
- Uso padrão
sft_mini_512.jsonl
Os pesos de saída são salvos comofull_sft_*.pth
. - O mesmo vale para o suporte a vários cartões.
- Ajuste fino do LoRA
- Preparar dados de domínio (por exemplo
lora_medical.jsonl
), executar:python train_lora.py
- Os pesos de saída são salvos como
lora_xxx_*.pth
.
- DPO Aprendizagem aprimorada
- fazer uso de
dpo.jsonl
Dados, execução:python train_dpo.py
- Os pesos de saída são salvos como
rlhf_*.pth
.
- Treinamento de visualização
- Adicionar parâmetros
--use_wandb
Como:python train_pretrain.py --use_wandb
- Confira as curvas de treinamento no site oficial da wandb.
Raciocínio com modelos
- raciocínio de linha de comando
- Faça o download dos pesos do modelo (por exemplo, MiniMind2):
git clone https://huggingface.co/jingyaogong/MiniMind2
- Raciocínio em execução:
python eval_model.py --load 1 --model_mode 2
- Descrição do parâmetro:
--load 1
No formato de transformadores, o--model_mode 2
Com o MiniMind2.
- bate-papo na web
- Instale o Streamlit:
pip install streamlit
- Interface de inicialização:
cd scripts streamlit run web_demo.py
- Acessado em um navegador
localhost:8501
Você pode ter um diálogo.
- Serviços de API
- Inicie o servidor:
python serve_openai_api.py
- Teste a interface:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "MiniMind2", "messages": [{"role": "user", "content": "你好"}], "max_tokens": 512}'
Operação da função em destaque
- Multimodalidade visual (MiniMind-V)
- Faça o download do modelo MiniMind-V:
git clone https://huggingface.co/jingyaogong/MiniMind2-V
- Faça o download do modelo de visualização CLIP para
./model/vision_model
::
git clone https://huggingface.co/openai/clip-vit-base-patch16
- Em execução:
python eval_vlm.py --load 1
- Insira texto e imagens e o modelo gera uma descrição.
- Treinamento personalizado
- Organize os dados como
.jsonl
no formato./dataset
. - modificações
./model/LMConfig.py
parâmetros (por exemplod_model
talvezn_layers
). - Treine seguindo as etapas acima.
advertência
- Quando não houver memória de vídeo suficiente, ajuste o
batch_size
ou aumentaraccumulation_steps
. - Quando os conjuntos de dados forem grandes, processe-os em lotes para evitar o estouro de memória.
- Os contextos ultralongos suportam o ajuste de parâmetros RoPE de até 2048.
cenário do aplicativo
- Aprendizado de IA
O MiniMind fornece um conjunto completo de códigos e dados para que os iniciantes estudem o processo de treinamento de modelos grandes. - Personalização do domínio
Treine modelos com dados privados, como perguntas e respostas médicas ou diálogos de atendimento ao cliente. - Implementação de baixo custo
O modelo paramétrico 26M é adequado para dispositivos incorporados, como casas inteligentes. - Demonstração de ensino
Os professores podem usá-lo para demonstrar o processo de treinamento de IA e os alunos podem praticar.
QA
- Qual é a quantidade de hardware necessária para o MiniMind?
Uma única placa de vídeo NVIDIA 3090 é suficiente para o treinamento; uma CPU pode executá-la, mas é lenta. - 2 horas de treinamento são confiáveis?
Sim, com base no teste de placa única 3090, o modelo paramétrico 26M leva apenas cerca de 2 horas para ser treinado do zero. - Ele está disponível comercialmente?
Sim, o projeto está licenciado sob a licença Apache 2.0, que permite o uso e a modificação gratuitos. - Como estender a duração do contexto?
Ajuste os parâmetros RoPE ou faça o ajuste fino com dados mais longos para suportar até 2048.