English | 中文
一个基于 Next.js 的仪表板,用于可视化 ML 推理基准测试数据。数据存储于 Neon PostgreSQL,使用 React Query 获取数据,D3.js 绘制交互式图表。
技术栈:Next.js 16(App Router)· TypeScript · Tailwind CSS 4 · shadcn/ui · D3.js · Neon PostgreSQL · Vercel · Cypress
LLM 推理性能是提供 AI 服务时的核心关注点,但准确的性能分析始终难以获得。软件开发与模型发布的快节奏使得不同配置之间的性能比较十分困难。现有的性能基准测试由于是静态的而迅速过时,参与者还会用不切实际、高度特化的配置来"刷榜"。InferenceX 通过每晚使用最新软件在主流硬件平台上对热门模型进行基准测试来解决这些问题。对于每个模型与硬件组合,InferenceX 会扫描不同的张量并行大小与最大并发请求数,以吞吐量-延迟曲线呈现完整图景。在软件配置方面,我们确保其在不同服务场景下具有普遍适用性,并开源整个仓库以欢迎社区贡献。我们希望 InferenceX 能为社区提供最新、真实的 LLM 推理性能信息。
Neon PostgreSQL → API routes (/api/v1/*) → React Query hooks → Context providers → D3.js charts
前端从由 Neon PostgreSQL 只读副本支撑的 API 路由获取数据。所有展示逻辑都在前端 — API 路由只返回原始数据库数据。
packages/
├── app/ # Next.js 前端
├── constants/ # 共享常量(GPU key、模型映射)
└── db/ # 数据库层、ETL、迁移、查询、数据摄取脚本
- Node.js:24.x
- pnpm:10+
通过 Corepack(随 Node.js 附带)安装 pnpm:
corepack enable
corepack prepare pnpm@latest --activate如需搭建帮助,欢迎提交 GitHub issue。
git clone https://github.com/SemiAnalysisAI/InferenceX-app.git
cd InferenceX-app
pnpm install仪表板需要实时 PostgreSQL 数据库。在 .env 中设置 DATABASE_READONLY_URL;应用同时支持标准 PostgreSQL 服务器和 Neon。
本地或远程托管的 PostgreSQL 服务器使用 postgres 驱动:
cp .env.example .env
cat >> .env <<'EOF'
DATABASE_READONLY_URL=postgresql://postgres:postgres@localhost:5432/postgres
DATABASE_DRIVER=postgres
DATABASE_SSL=false
EOF远程 PostgreSQL 服务器默认使用 TLS。除非服务器明确要求禁用 TLS,否则请省略 DATABASE_SSL。
将 DATABASE_READONLY_URL 设为 Neon PostgreSQL 连接串。Neon 主机会自动使用无服务器 HTTP 驱动;也可以显式设置 DATABASE_DRIVER=neon。
cp .env.example .env
cat >> .env <<'EOF'
DATABASE_READONLY_URL=postgresql://user:password@ep-example.us-east-1.aws.neon.tech/database
DATABASE_DRIVER=neon
DATABASE_SSL=true
EOFpnpm dev用浏览器打开 http://localhost:3000。
以下是开发过程中的常用脚本。数据库与缓存管理的运维脚本单独列在下方。 部分脚本可能需要额外的配置或环境变量。
| 脚本 | 说明 |
|---|---|
pnpm dev |
启动开发服务器(Turbopack) |
pnpm build |
生产构建 |
pnpm start |
启动生产服务器 |
pnpm preview |
本地构建并启动生产服务器 |
pnpm typecheck |
TypeScript 类型检查(所有包) |
pnpm lint |
使用 oxlint 进行 lint |
pnpm lint:fix |
自动修复 lint 问题 |
pnpm fmt |
使用 oxfmt 检查格式 |
pnpm fmt:fix |
自动修复格式 |
pnpm security |
安全审计(pnpm audit + audit-ci) |
pnpm test |
运行所有测试(单元 + E2E) |
pnpm test:unit |
Vitest 单元测试 |
pnpm test:unit:coverage |
Vitest 单元测试(含覆盖率) |
pnpm test:e2e |
Cypress E2E 测试 |
pnpm test:e2e:component |
仅 Cypress 组件测试 |
pnpm test:e2e:integration |
仅 Cypress 集成测试 |
pnpm clean |
清除构建产物 |
pnpm clean:all |
清除构建产物 + node_modules |
以下脚本用于数据库与缓存的管理维护,常规开发中一般不需要。
不过在改动数据库或 API 路由后,将 pnpm admin:cache:invalidate 指向本地开发服务器进行测试会很有用。
合并到 main 或 master 的 packages/db/src/etl/run-overrides.ts 变更会由 CI 自动应用到生产数据库,随后执行数据库校验、缓存失效和缓存预热。覆盖命令仍可用于本地预览和手动恢复。
| 脚本 | 说明 |
|---|---|
pnpm admin:db:migrate |
运行数据库迁移 |
pnpm admin:db:ingest:run |
从 GitHub 运行摄取基准测试数据 |
pnpm admin:db:ingest:ci |
摄取基准测试数据(CI 模式) |
pnpm admin:db:ingest:gcs |
从 GCS 摄取基准测试数据 |
pnpm admin:db:ingest:supplemental |
摄取补充数据 |
pnpm admin:db:apply-overrides |
手动预览或应用数据覆盖 |
pnpm admin:db:reset |
重置数据库 |
pnpm admin:db:verify |
校验数据库完整性 |
pnpm admin:cache:invalidate |
失效 API 缓存 |
pnpm admin:cache:warmup |
预热 API 缓存 |
部署于 Vercel。所有必需的环境变量见 .env.example。