Skip to content

benchmark

github-actions[bot] edited this page May 26, 2026 · 1 revision

大规模压测记录

本文档记录当前 workflow-only native DAG 主链的压测入口和最近一次结果。

压测入口

powershell -ExecutionPolicy Bypass -File .\scripts\run-large-benchmark.ps1

可选参数:

  • --limit 2000 先做小规模调试。
  • --workspace-root C:\path\to\benchmark-workspace 把压测数据写到隔离工作区。

当前 benchmark 配置

  • 数据集:20 Newsgroups train
  • 默认规模:11314
  • benchmark 脚本:services/python-engine/benchmarks/large_workflow_benchmark.py
  • artifact store:启用,summary 会记录 artifact_store_enabledartifact_record_count
  • 默认工作流:
corpus_input
  -> clean_text
  -> normalize_text
  -> tokenize
  -> apply_dictionary_rules
  -> filter_terms
  -> frequency_statistics
  -> feature_term_selection
  -> keyword_extraction
  -> focus_terms
  -> cooccurrence_analysis
  -> keyword_clustering
  -> document_clustering
  -> save_csv / save_png / save_html_report

最近一次记录

命令:

powershell -ExecutionPolicy Bypass -File .\scripts\run-large-benchmark.ps1 --limit 1200

结果:

  • 导入耗时:0.145s
  • 运行耗时:9.77s
  • 总耗时:14.57s
  • 处理文档数:1200
  • 运行状态:completed
  • 产物数:8
  • artifact record 数:由 manifest.artifact_records 统计,需与 run artifact handle 数保持同向增长
  • 报告文件数:1

核心结果规模:

  • frequency_rows: 23279
  • cooccurrence_rows: 2041
  • focus_term_summary_rows: 1
  • feature_term_rows: 23278
  • selected_feature_terms: 1000
  • keyword_rows: 9580
  • keyword_cluster_rows: 1000
  • document_cluster_rows: 1200

冷启动 import 观察:

  • import app.cli 5 次平均:1151ms

当前性能热点

当前最大的热点主要集中在:

  • 关键词提取
  • 大规模 CSV / PNG / HTML 导出
  • 超大项目在当前项目装载时对词表与结果快照的水合
  • corpus_snapshot.json 等大文件写盘

已完成的关键优化

  • workflow 运行时统一切到 native DAG,不再在 bridge 与 DAG 之间来回切换
  • 项目持久化切到 workflow-only,避免保存阶段重复写独立流程快照
  • 节点缓存使用二进制 .pkl,降低大量 JSON 序列化开销
  • 去掉节点间大语料 deepcopy
  • 词表应用改成运行时查表结构
  • 正则规则、短语规则和分词词典注入改成运行时缓存
  • 中等规模语料上的 YAKE 关键词提取改为多进程并行
  • 审计表只记录真实命中规则
  • 大语料聚类图改成簇级标注,降低 PNG 导出成本
  • 保存阶段增加已归一化快路径,减少重复 manifest 归一化与深拷贝
  • 项目保存支持按脏区写盘,并对 unchanged JSON 跳过重复落盘
  • workflow_run 进度支持 node_state_delta 增量回传,降低高频轮询负担
  • corpus_snapshot.json 改成轻量快照策略,大语料默认不再全量塞入原文
  • 聚类分析切到 MiniBatchKMeans + 稀疏矩阵降维路径,减少大矩阵 toarray() 开销
  • benchmark summary 现在显式记录 artifact store 是否启用和项目级 artifact record 数,防止压测绕开产物索引链路
  • 共现统计改成整数 term-id 计数路径,降低大语料字符串哈希负担
  • 首次空工作区冷启动中,示例项目生成已跳过重复的大词表全量归一化,冷启动基准从约 24.9s 降到约 5-7s
  • 给长时间节点和导出阶段补了中途进度回传

当前结论

当前 benchmark 说明:

  • native DAG 主链已经稳定可用
  • workflow-only 持久化没有带来明显性能回退
  • 当前瓶颈已经从“运行框架切换成本”转向“关键词提取 + 导出 I/O + 当前项目水合”
  • 当前 1200 条 benchmark 已同步真实分析链路:先经关键词提取和 focus_terms 收窄,再做共现分析,因此共现规模从旧全词项链路的高行数降到聚焦后的骨干关系规模。

下一阶段最值得继续优化的是:

  • 更细粒度的 ready-queue 并行调度
  • 大语料导出阶段写盘
  • 关键词提取与主题分析热点
  • 局部重跑与更细粒度的 artifact 管理

文档索引

这套文档只描述当前仓库已经实现或已经被代码验证的能力,不再把历史方案、迁移草图和未来目标混写成“当前规格”。

当前有效文档

  • 当前现状 当前仓库能跑到什么程度、哪些部分稳定、哪些部分还在打磨。
  • 产品范围与完成度 以 V1 目标为基线,逐项对照当前完成情况。
  • 架构说明 说明桌面端、Python sidecar、项目存储、词表、运行记录和打包结构。
  • 工作流与运行时 说明 workflow-only 持久化、native DAG、缓存和插件节点的当前关系。
  • 开发与构建说明 开发环境、脚本、测试、打包、压测入口。
  • 示例项目说明 首次启动从安装包内置模板恢复的 3 个官方 revised-flow 样例及用途。
  • 内置场景样例 官方样例矩阵、seed 授权、存储形态和使用提醒。
  • 大规模压测记录 当前仓库保留的万条级工作流压测数据与性能边界。
  • 技术全景与架构设计 当前技术栈、前后端边界、节点 catalog、测试覆盖和已知差距的全景说明。
  • 节点 Catalog Schema 后端驱动节点 definition、UI schema、slot 白名单和插件示例。
  • ADR 架构决策记录,说明重要迁移和边界选择的背景。
  • 插件节点说明 本地纯 Python 节点插件的加载方式、注册接口和当前运行边界。

目录约定

  • docs/ 根目录放当前有效文档。
  • docs/archive/ 放历史方案、旧规格和旧计划,仅供追溯,不再作为当前实现依据。
  • plugins/nodes/README.md 放插件节点接口说明,因为它直接对应插件目录本身。

不再作为当前依据的文档

旧版 PRD、线性流程规格、V2 迁移规格、画布布局草图和实施计划已移入归档区:

Clone this wiki locally