Aprendizagem pessoal com IA
e orientação prática
讯飞绘镜

MiniMind: 2 horas de treinamento do zero com a ferramenta de código aberto GPT de parâmetros 26M

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.

MiniMind:2小时从零训练26M参数GPT的开源工具-1


 

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

  1. 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 TrueCaso contrário, você precisará instalar a versão correspondente do PyTorch.

    • Instale o Git para clonar o código.
  2. projeto de clonagem
    Digite-o no terminal:
git clone https://github.com/jingyaogong/minimind.git
cd minimind
  1. 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.

  1. 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) e sft_mini_512.jsonl(1,2 GB).

Modelos de treinamento

  1. pré-treinamento
  • Execute o script para iniciar o pré-treinamento:
    python train_pretrain.py
    
  • Uso padrão pretrain_hq.jsonlOs pesos de saída são salvos como pretrain_*.pth.
  • Aceleração de vários cartões:
    torchrun --nproc_per_node 2 train_pretrain.py
    
  1. ajuste fino do comando
  • Execute o script de ajuste fino:
    python train_full_sft.py
    
  • Uso padrão sft_mini_512.jsonlOs pesos de saída são salvos como full_sft_*.pth.
  • O mesmo vale para o suporte a vários cartões.
  1. 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.
  1. 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.
  1. Treinamento de visualização
  • Adicionar parâmetros --use_wandbComo:
    python train_pretrain.py --use_wandb
    
  • Confira as curvas de treinamento no site oficial da wandb.

Raciocínio com modelos

  1. 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.
  1. 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:8501Você pode ter um diálogo.
  1. 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 exemplo d_model talvez n_layers).
  • Treine seguindo as etapas acima.

advertência

  • Quando não houver memória de vídeo suficiente, ajuste o batch_size ou aumentar accumulation_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

  1. 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.
  2. Personalização do domínio
    Treine modelos com dados privados, como perguntas e respostas médicas ou diálogos de atendimento ao cliente.
  3. Implementação de baixo custo
    O modelo paramétrico 26M é adequado para dispositivos incorporados, como casas inteligentes.
  4. Demonstração de ensino
    Os professores podem usá-lo para demonstrar o processo de treinamento de IA e os alunos podem praticar.

 

QA

  1. 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. 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.
  3. 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.
  4. 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.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " MiniMind: 2 horas de treinamento do zero com a ferramenta de código aberto GPT de parâmetros 26M
pt_BRPortuguês do Brasil