综合介绍
MM-EUREKA 是一个由上海人工智能实验室、上海交通大学等多方合作开发的开源项目。它通过基于规则的强化学习技术,把文本推理能力扩展到多模态场景,帮助模型处理图像和文字信息。这个工具的核心目标是提升模型在视觉和数学推理任务上的表现。它推出了两个主要模型:MM-Eureka-8B 和 MM-Eureka-Zero-38B。它们能在少量数据下实现高效训练,比如仅用 54K 图文数据就能超越其他需要百万级数据的模型。项目完全开源,代码、模型和数据都可以在 GitHub 上免费获取,适合研究人员和开发者探索多模态推理技术。
功能列表
- 支持多模态推理:能同时处理图像和文本,提升模型理解复杂问题的能力。
- 基于规则的强化学习:通过简单规则训练模型,减少对大规模数据的依赖。
- 视觉顿悟能力:模型能在推理中重新审视图像线索,模拟人类反思过程。
- 开源完整管道:提供代码、数据集和训练流程,方便用户复现和改进。
- 高数据效率:在少量数据(如 8K 或 54K 图文对)下,性能媲美百万级数据训练的模型。
- 数学推理支持:特别优化了数学问题解决能力,适用于教育和学术场景。
使用帮助
MM-EUREKA 是一个基于 GitHub 的开源项目,主要面向有一定编程基础的用户,尤其是研究人员和开发者。下面详细介绍如何安装和使用这个工具,包括主要功能的实际操作流程。
安装流程
- 准备环境
- 确保你的电脑已安装 Python 3.8 或更高版本。可以用命令
python --version
检查。 - 需要安装 Git 来克隆代码。如果没有 Git,可以在官网下载并安装。
- 推荐使用 Linux 系统(如 Ubuntu 20.04 或 22.04),Windows 用户可能需要额外配置。
- 确保你的电脑已安装 Python 3.8 或更高版本。可以用命令
- 克隆项目代码
- 打开终端,输入以下命令下载 MM-EUREKA 源码:
git clone https://github.com/ModalMinds/MM-EUREKA.git
- 下载完成后,进入项目文件夹:
cd MM-EUREKA
- 打开终端,输入以下命令下载 MM-EUREKA 源码:
- 安装依赖
- 运行以下命令安装基本依赖:
pip install -e .
- 如果需要使用 vLLM 加速推理,还需安装额外包:
pip install -e .[vllm]
- 安装 Flash-Attention(版本 2.3.6)以提升性能:
pip install flash-attn==2.3.6 --no-build-isolation
如果遇到问题,可以尝试从源码安装:
git clone https://github.com/Dao-AILab/flash-attention.git cd flash-attention git checkout v2.3.6 python setup.py install
- 运行以下命令安装基本依赖:
- 下载数据集
- 项目提供训练数据 MM-Eureka-Dataset,可以从 GitHub Releases 下载。
- 下载后,解压文件,并根据需要修改数据中的
image_urls
字段,指向本地图片路径。
- 验证安装
- 安装完成后,运行
python -c "import mm_eureka"
检查是否报错。如果没有错误,说明安装成功。
- 安装完成后,运行
使用主要功能
功能 1:运行多模态推理模型
- 准备数据
- 数据需按 JSONL 格式组织,每行是一个字典,包含
id
、conversations
、answer
和image_urls
字段。例如:{"id": "0", "conversations": [{"role": "user", "content": "这张图里的数学题答案是什么?"}], "answer": "42", "image_urls": ["file:///path/to/image.jpg"]}
- 把数据保存为
dataset.jsonl
,放在项目目录下。
- 数据需按 JSONL 格式组织,每行是一个字典,包含
- 运行推理
- 在终端输入以下命令加载模型并推理:
python scripts/inference.py --model MM-Eureka-8B --data dataset.jsonl
- 输出会显示模型对每个问题的推理过程和答案。
- 在终端输入以下命令加载模型并推理:
功能 2:训练自定义模型
- 配置训练参数
- 打开
config.yaml
文件,设置模型参数(如学习率、批次大小)和数据路径。 - 确保
data_path
指向你的dataset.jsonl
文件。
- 打开
- 启动训练
- 运行以下命令开始训练:
python scripts/train.py --config config.yaml
- 训练过程中,模型会保存检查点到
checkpoints/
文件夹。
- 运行以下命令开始训练:
功能 3:测试视觉顿悟能力
- 准备测试数据
- 使用包含图像的复杂数学问题数据,比如从 K12 数据集挑选几道题。
- 运行测试
- 输入命令:
python scripts/test_reflection.py --model MM-Eureka-Zero-38B --data test.jsonl
- 模型会展示推理过程,包括如何重新检查图像线索。
- 输入命令:
操作流程示例:解决数学问题
- 上传数据
- 准备一张图片(比如几何题)和对应的问题描述,保存为 JSONL 格式。
- 运行模型
- 用
inference.py
脚本加载 MM-Eureka-8B,输入数据。
- 用
- 查看结果
- 模型会输出推理步骤(
<think>
标签)和最终答案(<answer>
标签),比如:<think>先看图,圆的半径是 5,面积公式是 πr²,所以是 25π。</think> <answer>25π</answer>
- 模型会输出推理步骤(
注意事项
- 如果遇到 GPU 内存不足,调整批次大小或使用 MM-Eureka-8B(较小模型)。
- 数据中的图片路径必须有效,否则模型无法处理图像。
通过以上步骤,你可以轻松上手 MM-EUREKA,体验它的多模态推理能力。
应用场景
- 教育辅助
MM-EUREKA 能分析数学题目图片并给出详细解题步骤,适合学生练习或老师备课。 - 科研探索
研究人员可以用它测试强化学习在多模态任务中的效果,改进算法或开发新模型。 - AR/VR 开发
开发者可以利用它的视觉推理能力,打造更智能的交互式应用,比如实时解题助手。
QA
- MM-EUREKA 支持哪些语言?
目前主要支持英语和中文的图文数据,模型对这两种语言的推理效果最好。 - 需要多强的电脑配置?
建议至少 16GB 内存和一块中端 GPU(如 NVIDIA GTX 1660)。训练大模型可能需要更强的硬件。 - 如何贡献代码?
在 GitHub 上提交 Pull Request,参考CONTRIBUTING.md
文件里的指引。