Introdução geral
O MM-EUREKA é um projeto de código aberto desenvolvido pelo Shanghai Artificial Intelligence Laboratory, pela Shanghai Jiao Tong University e por outras partes. Ele amplia os recursos de raciocínio textual para cenários multimodais por meio de técnicas de aprendizagem por reforço baseadas em regras para ajudar os modelos a processar informações textuais e de imagem. O objetivo principal dessa ferramenta é melhorar o desempenho dos modelos em tarefas de raciocínio visual e matemático. Ela apresenta dois modelos principais, MM-Eureka-8B e MM-Eureka-Zero-38B, que permitem o treinamento eficiente com pequenas quantidades de dados, como o uso de apenas 54K de dados gráficos para superar outros modelos que exigem milhões de dados. O projeto é totalmente de código aberto, e o código, os modelos e os dados estão disponíveis gratuitamente no GitHub para pesquisadores e desenvolvedores que exploram técnicas de inferência multimodal.
Lista de funções
- Suporte ao raciocínio multimodal: a capacidade de processar imagens e textos ao mesmo tempo melhora a capacidade do modelo de entender problemas complexos.
- Aprendizado por reforço baseado em regras: modelos de treinamento com regras simples para reduzir a dependência de dados em grande escala.
- Epifanias visuais: os modelos podem revisitar pistas de imagens em seu raciocínio, imitando o processo de reflexão humana.
- Pipeline completo de código aberto: fornece código, conjuntos de dados e fluxo de treinamento para fácil reprodução e aprimoramento.
- Alta eficiência de dados: o desempenho é comparável aos modelos treinados em milhões de dados com pequenas quantidades de dados (por exemplo, 8K ou 54K pares de gráficos).
- Suporte ao raciocínio matemático: especialmente otimizado para a solução de problemas matemáticos em cenários educacionais e acadêmicos.
Usando a Ajuda
O MM-EUREKA é um projeto de código aberto baseado no GitHub, destinado principalmente a usuários com uma certa base de programação, especialmente pesquisadores e desenvolvedores. A seguir, apresentamos uma descrição detalhada de como instalar e usar essa ferramenta, incluindo os principais recursos do processo de operação real.
Processo de instalação
- Preparação do ambiente
- Certifique-se de ter o Python 3.8 ou posterior instalado em seu computador. Isso pode ser feito com o comando
python --versão
Verificar. - Você precisa instalar o Git para clonar seu código. Se você não tiver o Git, poderá fazer o download e instalá-lo no site oficial.
- Recomendado para sistemas Linux (por exemplo, Ubuntu 20.04 ou 22.04), os usuários do Windows podem precisar de configuração adicional.
- Certifique-se de ter o Python 3.8 ou posterior instalado em seu computador. Isso pode ser feito com o comando
- Clonagem do código do projeto
- Abra um terminal e digite o seguinte comando para fazer download do código-fonte do MM-EUREKA:
git clone https://github.com/ModalMinds/MM-EUREKA.git
- Quando o download estiver concluído, vá para a pasta do projeto:
cd MM-EUREKA
- Abra um terminal e digite o seguinte comando para fazer download do código-fonte do MM-EUREKA:
- Instalação de dependências
- Execute o seguinte comando para instalar as dependências básicas:
pip install -e .
- Se você precisar usar o vLLM É necessário instalar o Accelerated Reasoning e pacotes adicionais:
pip install -e . [vllm]
- Instale o Flash-Attention (versão 2.3.6) para melhorar o desempenho:
pip install flash-attn==2.3.6 --no-build-isolation
Se você encontrar problemas, tente instalar a partir da fonte:
git clone https://github.com/Dao-AILab/flash-attention.git cd flash-attention git checkout v2.3.6 python setup.py install
- Execute o seguinte comando para instalar as dependências básicas:
- Baixar conjunto de dados
- O projeto fornece dados de treinamento MM-Eureka-Dataset, que podem ser baixados do GitHub Releases.
- Após o download, descompacte o arquivo e modifique os dados conforme necessário na seção
image_urls
que aponta para o caminho da imagem local.
- Verificar a instalação
- Após a conclusão da instalação, execute
python -c "import mm_eureka"
Verifique se há algum erro relatado. Se não houver erros, a instalação foi bem-sucedida.
- Após a conclusão da instalação, execute
Uso das funções principais
Função 1: Execução de um modelo de inferência multimodal
- Preparar dados
- Os dados precisam ser organizados no formato JSONL, em que cada linha é um dicionário que contém
id
econversas
eresposta
responder cantandoimage_urls
Campos. Exemplo:{"id": "0", "conversations": [{"role": "user", "content": "What is the answer to the maths question in this picture?"}] , "answer": "42", "image_urls": ["file:///path/to/image.jpg"]}
- Salvar os dados como
dataset.jsonl
colocado no diretório do projeto.
- Os dados precisam ser organizados no formato JSONL, em que cada linha é um dicionário que contém
- raciocínio de execução
- Digite o comando a seguir no terminal para carregar o modelo e raciocinar sobre ele:
python scripts/inference.py --model MM-Eureka-8B --data dataset.jsonl
- O resultado mostrará o processo de raciocínio do modelo e as respostas a cada pergunta.
- Digite o comando a seguir no terminal para carregar o modelo e raciocinar sobre ele:
Função 2: Treinamento de modelos personalizados
- Configuração dos parâmetros de treinamento
- show (um ingresso)
config.yaml
para definir parâmetros do modelo (por exemplo, taxa de aprendizado, tamanho do lote) e caminhos de dados. - seguro
caminho_dos_dados
Aponte-a para você.dataset.jsonl
Documentação.
- show (um ingresso)
- treinamento de preparação
- Execute o seguinte comando para iniciar o treinamento:
python scripts/train.py --config config.yaml
- Durante o treinamento, o modelo salva os pontos de verificação no
pontos de controle/
Pasta.
- Execute o seguinte comando para iniciar o treinamento:
Função 3: Teste de epifanias visuais
- Preparação de dados de teste
- Use dados de problemas complexos de matemática que contenham imagens, por exemplo, escolhendo algumas perguntas do conjunto de dados K12.
- teste operacional
- Digite o comando:
python scripts/test_reflection.py --model MM-Eureka-Zero-38B --data test.jsonl
- O modelo mostrará o processo de raciocínio, inclusive como reexaminar as dicas de imagem.
- Digite o comando:
Exemplo de um processo operacional: resolver problemas de matemática
- Carregar dados
- Prepare uma imagem (por exemplo, um problema de geometria) e uma descrição do problema correspondente, salva no formato JSONL.
- modelo operacional
- despesa ou gasto
inference.py
O script carrega o MM-Eureka-8B e insere os dados.
- despesa ou gasto
- Exibir resultados
- O modelo gera a etapa de inferência (
tags) e a resposta final (
Tags), por exemplo:
Olhando primeiro para o diagrama, o raio do círculo é 5 e a fórmula para a área é πr², portanto é 25π. 25π
- O modelo gera a etapa de inferência (
advertência
- Se a memória da GPU for insuficiente, ajuste o tamanho do lote ou use o MM-Eureka-8B (modelo menor).
- Os caminhos de imagem nos dados devem ser válidos ou o modelo não conseguirá processar a imagem.
Com essas etapas, você pode começar a usar facilmente o MM-EUREKA e experimentar seus recursos de raciocínio multimodal.
cenário do aplicativo
- Auxílios educacionais
O MM-EUREKA analisa imagens de problemas matemáticos e fornece soluções detalhadas, adequadas para a prática do aluno ou para a preparação do professor. - Exploração científica
Os pesquisadores podem usá-lo para testar a eficácia do aprendizado por reforço em tarefas multimodais, aprimorar algoritmos ou desenvolver novos modelos. - Desenvolvimento de AR/VR
Os desenvolvedores podem usar seus recursos de raciocínio visual para criar aplicativos interativos mais inteligentes, como assistentes de solução de problemas em tempo real.
QA
- Quais são os idiomas suportados pelo MM-EUREKA?
Atualmente, os dados gráficos em inglês e chinês são suportados principalmente, e o modelo tem o melhor efeito de inferência para esses dois idiomas. - Qual é a configuração de computador necessária?
Recomenda-se pelo menos 16 GB de RAM e uma GPU de médio porte (por exemplo, NVIDIA GTX 1660). Pode ser necessário um hardware mais potente para treinar modelos grandes. - Como faço para contribuir com o código?
Para enviar um Pull Request no GitHub, consulte a seçãoCONTRIBUINDO.md
As diretrizes do documento.