EvalAI
开源AI算法评测与竞赛平台,支持远程Docker评测、公开/私有双榜和可扩展的Celery分布式任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源AI算法评测与竞赛平台,支持远程Docker评测、公开/私有双榜和可扩展的Celery分布式任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
「2017年的某个深夜,一位计算机视觉方向的博士在反复手动运行他人论文中的代码,发现同一个任务跑了三遍结果都不一样——数据集版本不同、超参数没公开、评测指标定义含糊。他意识到,这不是算法的问题,而是整个 AI 评测体系缺乏标准。」
这一幕或许在无数 AI 研究者身上都曾上演过。Cloud-CV 团队正是带着这样的痛点,在 2016 年正式推出了 EvalAI——一个开源的 AI 算法评测与竞赛平台,旨在为机器学习社区提供透明、可复现的算法对比环境。经过近十年的迭代演进,EvalAI 已成长为 2000+ stars、承载全球数百场 AI 挑战赛的开源基础设施。
图1:EvalAI 整体系统架构,后端 Django + Celery 异步任务,前端 AngularJS,展示层与计算层分离
提到算法竞赛,大多数人首先想到的是 Kaggle。Kaggle 足够好用,但在学术场景下有几个明显短板:数据集和评测逻辑封闭,研究者无法自由定制评估流程;无法支持远程 Docker 评测——这对于需要特定环境运行的行为型 AI(如强化学习 Agent)至关重要;缺乏灵活的榜单拆分和私有提交机制,学术论文的消融实验往往需要分阶段公示结果。
EvalAI 的诞生,正是为了填补这些空白。它最初由卡内基梅隆大学(CMU)的 Cloud-CV 实验室发起,背后团队在计算机视觉领域深耕多年,深知评测标准不统一对学术进步的阻碍。平台设计之初就瞄准了一个核心目标:让每一篇论文的实验都能被独立复现,让每一次算法对比都基于同一个基准。
EvalAI 提供了一套完整的竞赛生命周期管理工具。
挑战赛创建与阶段管理是平台的基础能力。主办方可以为一场比赛定义多个评测阶段(Phase),每个阶段支持多个数据集拆分(Split),例如 ImageNet 分类赛可以区分官方验证集、隐藏测试集和最终挑战集。参赛者的结果可以同时展示在公开榜和私有榜——公开榜展示所有提交的成绩供社区参考,私有榜则在比赛结束后用于最终排名。这种设计与 Kaggle 的双榜机制一脉相承,但在阶段划分的灵活性上更胜一筹。
远程 Docker 评测是 EvalAI 区别于大多数同类平台的核心竞争力。参赛者将推理代码打包为 Docker 镜像并上传,平台在隔离的容器环境中自动执行评测。这种方式彻底解决了「我的代码能跑但你的跑不了」的依赖地狱问题,尤其适合强化学习、机器人控制、嵌入式 AI 等对执行环境有特殊要求的场景。评测工作由 Celery 异步任务驱动,支持横向扩展多个 Worker 节点,实现真正意义上的分布式大规模评测。
图2:EvalAI 主办方创建的比赛页面,清晰展示赛事说明、评测规则和当前排行榜
排行榜与结果分析同样功能完备。平台支持自定义评测指标(Accuracy、F1、IoU、Perplexity 等),提供可视化排名曲线和提交历史分析。对于主办方来说,还可以导出参赛者的详细提交日志用于事后审查。值得注意的是,EvalAI 支持将比赛结果直接与其他平台(如 Kaggle)进行对比,帮助研究者直观理解自家算法在更广泛 benchmark 上的表现。
对于重度终端用户,EvalAI 提供了独立的命令行客户端 evalai-cli,允许用户在不打开浏览器的情况下完成报名、提交代码、查看成绩等操作。这对于需要频繁调参、反复提交的研究者来说,显著提升了工作效率。CLI 通过 RESTful API 与平台后端通信,设计上与 GitHub CLI 有相似之处——简洁、幂等、可脚本化。
图3:参赛者的提交记录页面,展示历次提交的成绩和排名变化
从代码结构来看,EvalAI 采用的是经典的前后端分离架构,但受项目启动时间影响,前端选型为 AngularJS(而非当下更流行的 React/Vue)。
后端基于 Django + Django REST Framework,使用 PostgreSQL 作为主数据库,Celery + Amazon SQS(本地开发使用 ElasticMQ 模拟)处理异步评测任务。Docker Compose 配置了完整的开发环境:PostgreSQL 数据库、Django Web 服务、Celery Worker 队列,以及可选的 Node.js 前端构建服务。值得注意的是,项目为 Python 3.7/3.8/3.9 分别维护了独立的 Worker Dockerfile,这种精细化的版本隔离确保了各类参赛代码的兼容性。
前端方面,AngularJS 应用通过 Gulp 构建工作流处理 Sass 编译、JS 合并压缩等任务,最终产物服务于 Django 的模板渲染。代码测试覆盖了前后端两端:后端用 Django 自带的测试框架 + Coverage.py,前端用 Karma + Jasmine 跑单元测试,CI/CD 由 GitHub Actions 驱动,代码覆盖率通过 Codecov 监控。
图4:EvalAI 与 Kaggle 平台功能对比图,展示了在远程 Docker 评测和自定义榜单方面的优势
对于希望本地运行 EvalAI 的开发者,官方文档提供了清晰的 Docker 部署指南:
git clone https://github.com/Cloud-CV/EvalAI.git evalai && cd evalai
docker-compose up --build
默认启动三个核心服务(数据库、消息队列、Web 服务),约 15-30 分钟完成镜像构建和初始化。首次启动会自动创建三个默认账号:admin(超级管理员)、host(比赛主办方)、participant(参赛者),密码均为 password。Web 界面默认在 http://127.0.0.1:8888 访问。
需要注意的是,默认配置下评测 Worker 并未启动,如果需要处理 Docker 镜像提交,需要额外启用 Worker profile。此外,前端构建服务对内存要求较高(Docker Compose 中限制为 2GB),低配置机器可能需要调整资源限制。
EvalAI 并非没有短板。首先,AngularJS 技术栈略显陈旧——这是 2016 年的前端选择,虽然功能稳定,但与现代前端生态(组件化、热更新、SSR)存在代际差距,社区活跃度也有所下降。其次,PostgreSQL + SQS 的强依赖意味着本地开发环境相对复杂,对于只想快速试用或进行小规模评测的用户来说,门槛不低。第三,远程 Docker 评测虽然强大,但资源调度完全依赖 Celery——没有 K8s 级别的弹性扩缩容机制,大规模评测场景下的并发瓶颈需要主办方自行优化。
另外值得注意的是,平台在 2021 年左右经历了较长时间的维护低潮期(Issue 468 个待处理),部分第三方集成(如与 CI/CD 系统的深度绑定)功能较为有限。
尽管存在上述局限,EvalAI 在 AI 开源生态中的位置依然独特。它不仅是一个工具,更代表了一种理念:学术评测应当像开源代码一样透明、可复现、可协作。随着大模型时代的到来,AI 评测的重要性愈发凸显——从 MMLU 到 HumanEval,从 AlpacaEval 到 MT-Bench,如何科学、公平、高效地评测 AI 能力已成为整个行业关注的焦点。EvalAI 作为最早一批尝试将学术评测流程标准化的开源项目,为后续的许多评测框架(如 MLPerf、EleutherAI's LM Evaluation Harness)提供了宝贵的实践经验。
平台目前仍在活跃维护中,最近一次 push 发生在 2026 年 6 月,显示项目并未被放弃,而是持续根据社区反馈进行迭代。