Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

MiniMind-V: treinamento de 1 hora de um modelo de linguagem visual com 26 milhões de parâmetros

Introdução geral

O MiniMind-V é um projeto de código aberto, hospedado no GitHub, criado para ajudar os usuários a treinar um modelo de linguagem visual (VLM) leve com apenas 26 milhões de parâmetros em menos de uma hora. Ele se baseia no modelo de linguagem MiniMind, no novo codificador visual e no módulo de projeção de recursos, com suporte para processamento conjunto de imagens e textos. O projeto fornece o código completo, desde a limpeza do conjunto de dados até a inferência do modelo, com um custo de treinamento tão baixo quanto ~RMB1,3 para uma única GPU (por exemplo, NVIDIA 3090). O MiniMind-V enfatiza a simplicidade e a facilidade de uso, com menos de 50 linhas de alterações de código, o que o torna uma ferramenta adequada para os desenvolvedores experimentarem e aprenderem sobre o processo de construção de um modelo de linguagem visual.

MiniMind-V: treinamento de 1 hora de um modelo de linguagem visual de 26 milhões de parâmetros-1


 

Lista de funções

  • Fornece código de treinamento completo para modelos de linguagem visual com 26 milhões de parâmetros, suportando treinamento rápido em uma única GPU.
  • Usando o codificador visual CLIP, uma imagem de 224x224 pixels foi processada para gerar 196 tokens visuais.
  • Suporta a entrada de imagens únicas e múltiplas, combinadas com texto para diálogo, descrição de imagens ou perguntas e respostas.
  • Contém scripts de processo completos para limpeza de conjuntos de dados, pré-treinamento e ajuste fino supervisionado (SFT).
  • Fornece a implementação nativa do PyTorch, oferece suporte à aceleração de várias placas e é altamente compatível.
  • Inclui download de pesos de modelos e suporta as plataformas Hugging Face e ModelScope.
  • Oferece uma interface da Web e raciocínio de linha de comando para facilitar o teste dos efeitos do modelo.
  • Suporte à ferramenta wandb para registrar perdas e desempenho durante o treinamento.

 

Usando a Ajuda

O processo de utilização do MiniMind-V inclui a configuração do ambiente, a preparação dos dados, o treinamento do modelo e o teste de efeitos. Cada etapa é descrita em detalhes abaixo para ajudar os usuários a começar rapidamente.

Configuração do ambiente

O MiniMind-V requer um ambiente Python e suporte a GPU. Veja a seguir as etapas de instalação:

  1. Código de clonagem
    Execute o seguinte comando no terminal para fazer o download do código do projeto:

    git clone https://github.com/jingyaogong/minimind-v
    cd minimind-v
    
  2. Instalação de dependências
    Ofertas de projetos requirements.txt que contém as bibliotecas necessárias. Execute o seguinte comando:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    Recomenda-se o Python 3.9 ou superior. Certifique-se de que o PyTorch seja compatível com CUDA (se você tiver uma GPU). Isso pode ser verificado com a execução do código a seguir:

    import torch
    print(torch.cuda.is_available())
    

    exportações True Indica que a GPU está disponível.

  3. Download de modelos CLIP
    O MiniMind-V usa o modelo CLIP (clip-vit-base-patch16) como um codificador visual. Execute o seguinte comando para fazer o download e colocar o ./model/vision_model::

    git clone https://huggingface.co/openai/clip-vit-base-patch16 ./model/vision_model
    

    Também disponível para download no ModelScope:

    git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16 ./model/vision_model
    
  4. Faça o download das ponderações do modelo de idioma básico
    O MiniMind-V é baseado no modelo de linguagem MiniMind, o que requer o download dos pesos do modelo de linguagem para o ./out Catálogo. Exemplo:

    wget https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth -P ./out
    

    ou faça o download lm_768.pthdependendo da configuração do modelo.

Preparação de dados

O MiniMind-V usa cerca de 570.000 imagens de pré-treinamento e 300.000 dados de ajuste fino de comando com cerca de 5 GB de espaço de armazenamento:

  1. Criação de um catálogo de conjuntos de dados
    No diretório raiz do projeto, crie o arquivo ./dataset Pasta:

    mkdir dataset
    
  2. Baixar conjunto de dados
    Faça o download de um conjunto de dados do Hugging Face ou do ModelScope que contenha o *.jsonl Dados de perguntas e respostas e *images Dados da imagem:

    • Hugging Face: https://huggingface.co/datasets/jingyaogong/minimind-v_dataset
    • ModelScope: https://www.modelscope.cn/datasets/gongjy/minimind-v_dataset
      Faça o download e descompacte os dados da imagem para ./dataset::
    unzip pretrain_images.zip -d ./dataset
    unzip sft_images.zip -d ./dataset
    
  3. Conjunto de dados de validação
    seguro ./dataset Contém os seguintes arquivos:

    • pretrain_vlm_data.jsonlDados de pré-treinamento, aproximadamente 570.000 entradas.
    • sft_vlm_data.jsonlDados de ajuste fino de figura única, aproximadamente 300.000 entradas.
    • sft_vlm_data_multi.jsonlDados de ajuste fino de vários mapas, aproximadamente 13.600 entradas.
    • Pasta Image: contém arquivos de imagem para pré-treinamento e ajuste fino.

treinamento de modelos

O treinamento do MiniMind-V é dividido em pré-treinamento e ajuste fino supervisionado, e suporta aceleração de um ou vários cartões.

  1. Parâmetros de configuração
    compilador ./model/LMConfig.pydefina os parâmetros do modelo. Exemplo:

    • Miniaturas:dim=512n_layers=8
    • Modelo médio:dim=768n_layers=16
      Esses parâmetros determinam o tamanho e o desempenho do modelo.
  2. pré-treinamento
    Execute scripts de pré-treinamento para aprender os recursos de descrição de imagens:

    python train_pretrain_vlm.py --epochs 4
    

    Os pesos de saída são salvos como ./out/pretrain_vlm_512.pth(ou 768.pthO modelo CLIP está congelado). Um único NVIDIA 3090 leva cerca de 1 hora para concluir uma época. congela o modelo CLIP e treina apenas a camada de projeção e a última camada do modelo de linguagem.

  3. Ajuste fino supervisionado (SFT)
    Ajuste fino usando pesos pré-treinados para otimizar os recursos de diálogo:

    python train_sft_vlm.py --epochs 4
    

    Os pesos de saída são salvos como ./out/sft_vlm_512.pth. Essa etapa treina a camada de projeção e o modelo de linguagem com todos os parâmetros.

  4. Treinamento Doka (opcional)
    Se você tiver N placas de vídeo, use o seguinte comando para acelerar:

    torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
    

    intercambialidade train_pretrain_vlm.py Para outros scripts de treinamento (por exemplo train_sft_vlm.py).

  5. Monitorar o treinamento
    As perdas de treinamento podem ser registradas usando o wandb:

    python train_pretrain_vlm.py --epochs 4 --use_wandb
    

    Visualize dados em tempo real no site oficial da wandb.

Teste de eficácia

Após a conclusão do treinamento, o modelo pode ser testado quanto aos seus recursos de diálogo de imagem.

  1. raciocínio de linha de comando
    Execute o seguinte comando para carregar o modelo:

    python eval_vlm.py --load 1 --model_mode 1
    
    • --load 1Carregar o modelo de formato de transformadores do Hugging Face.
    • --load 0: De ./out Carregar pesos do PyTorch.
    • --model_mode 1Teste de modelos com ajuste fino;0 Teste de modelos pré-treinados.
  2. Teste de interface da Web
    Inicie a interface da Web:

    python web_demo_vlm.py
    

    entrevistas http://localhost:8000Carregue uma imagem e insira o texto para testar.

  3. formato de entrada
    O MiniMind-V usa 196 @@@ Os espaços reservados representam uma imagem. Exemplo:

    @@@...@@@\n这张图片是什么内容?
    

    Exemplo de entrada de várias imagens:

    @@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
    
  4. Faça o download dos pesos pré-treinamento
    Se não estiver treinando, você pode fazer o download dos pesos oficiais diretamente:

advertência

  • Memória de vídeo recomendada de 24 GB (por exemplo, RTX 3090). Se a memória de vídeo for insuficiente, reduza o tamanho do lote (batch_size).
  • Garantir que o caminho do conjunto de dados esteja correto.*.jsonl e os arquivos de imagem precisam ser colocados na pasta ./dataset.
  • O congelamento dos modelos CLIP durante o treinamento reduz os requisitos aritméticos.
  • Os diálogos com várias imagens têm eficácia limitada, e recomenda-se que os cenários de imagem única sejam testados prioritariamente.

 

cenário do aplicativo

  1. Aprendizagem algorítmica de IA
    O MiniMind-V fornece um código de modelagem de linguagem visual conciso, adequado para que os alunos entendam os princípios de modelagem multimodal. Os usuários podem modificar o código para fazer experiências com diferentes parâmetros ou conjuntos de dados.
  2. Prototipagem rápida
    Os desenvolvedores podem criar protótipos de aplicativos de diálogo de imagem com base no MiniMind-V. Ele é leve e eficiente e é adequado para dispositivos de baixa potência de computação, como PCs ou sistemas incorporados. Ele é leve e eficiente e é adequado para dispositivos de baixa potência de computação, como PCs ou sistemas incorporados.
  3. Ferramentas de educação e treinamento
    As faculdades e universidades podem usar o MiniMind-V em cursos de IA para mostrar todo o processo de treinamento de modelos. O código é claramente comentado e adequado para a prática em sala de aula.
  4. Experimentos de baixo custo
    O custo de treinamento do projeto é baixo, adequado para equipes com orçamento limitado para testar o efeito de modelos multimodais sem a necessidade de servidores de alto desempenho.

 

QA

  1. Qual é o tamanho das imagens que o MiniMind-V suporta?
    O processamento padrão é de imagens de 224x224 pixels, limitado pelo modelo CLIP. As imagens do conjunto de dados podem ser compactadas para 128x128 para economizar espaço. Modelos CLIP de resolução maior poderão ser testados no futuro.
  2. Quanto tempo levará o treinamento?
    Em um único NVIDIA 3090, uma época de pré-treinamento leva cerca de uma hora, com o ajuste fino um pouco mais rápido. O tempo exato varia de acordo com o hardware e a quantidade de dados.
  3. Posso fazer o ajuste fino sem pré-treinamento?
    Pode. Faça o download direto dos pesos oficiais de pré-treinamento e execute train_sft_vlm.py Ajuste fino.
  4. Quais são os idiomas suportados?
    Suporta principalmente chinês e inglês, e o efeito depende do conjunto de dados. Os usuários podem estender outros idiomas por meio de ajustes finos.
  5. O diálogo com várias imagens funciona bem?
    O recurso atual de diálogo com várias imagens é limitado, e recomenda-se que os cenários de imagem única sejam usados preferencialmente. No futuro, poderão ser feitos aprimoramentos com modelos e conjuntos de dados maiores.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " MiniMind-V: treinamento de 1 hora de um modelo de linguagem visual com 26 milhões de parâmetros
pt_BRPortuguês do Brasil