DSH ML Workbench:在 DSH 里跑通本地 CSV 实验的跟踪、分支与复现

前言

在 DSH 里做机器学习,常见做法是手写脚本、自己记参数,或把 notebook 片段交给智能体拼接。实验一多,很难在对话里稳定地「保留某次拟合的预处理、换模型再对比」,更难在几周后用同一套数据与划分复现结果。下面介绍的 dsh-ml-workbench(维护者 shinerain1)把 MLflow、Optuna 和 scikit-learn 收成一组 DSH 可调用的工具:面向本地 CSV,完成检查数据、建实验、持久化调参、分支对比、预测与可验证交付。训练与跟踪能力来自成熟上游库;插件在 README 中指向 capability review 说明与完整 ML 平台之间的差距。

这是什么

DSH ML Workbench 是 DeepSeek Harness 的第三方插件,分类上属于模型推理相关能力。当前发布版本 0.4.0 提供 20 个工具,覆盖 CSV 探查、实验创建与运行、Optuna 持久化搜索、实验分支与差异对比、预测以及 ZIP 形式的复现包导出。后端为本地、单用户架构:Python 后端需与 DSH 插件包分开安装,通过配置中的 pythonExecutable 与可写 root 目录对接。

核心功能

经过上面的定位,可按工作流理解各工具分工(细节以 GitHub README 为准):

  1. 数据与实验:ml_dataset_inspect 报告缺失、类型、重复与可能的 ID 列;ml_experiment_create 快照 CSV、代码、参数、环境与验证集行索引,request_key 使创建可幂等重试;ml_experiment_run 合并创建与启动。
  2. 生命周期:ml_experiment_wait 做有界等待;ml_experiment_list 在会话重启后恢复 run ID;中断 worker 标记为 interrupted,不会误报成功。本地 worker 可在 DSH 退出后继续;executionMode: dsh 时 worker 随所属插件/进程结束而停止。
  3. 分支与对比:ml_experiment_branch 默认复用父实验成功 run 的已拟合预处理;reuse_preprocessing: false 可改处理或从失败 fit 重来。ml_experiment_diff 说明配置、代码与评估器变化;ml_experiment_compare 在条件不兼容时会拒绝。分类任务在定义可行时补充 ROC-AUC、平均精度、log loss,并含 dummy 基线与混淆矩阵。
  4. 调参:ml_search_create / step / get / cancel 适配持久化 Optuna;每步最多启动一个异步 trial,重复调用安全,DSH 重启后同一 study 可继续。
  5. 预测与收尾:ml_model_predict 对另一份本地 CSV 做校验特征后输出预测/概率与 manifest;先用验证集选模,再 ml_experiment_finalize 评估预留的最终测试集。默认划分约为 60/20/20(train/validation/final-test),可按 group 或 time 策略约束。
  6. 交付:ml_experiment_export 校验快照与 MLflow 指标后产出含模型、代码、HTML/Markdown 报告、环境与独立复现脚本的 ZIP;默认不含 CSV,除非 include_data: true。

README 中的对话示例:先让 DSH 训练多个复购分类器,再说「保留第三次实验的拟合预处理,试更快模型并对比」——分支会新建 MLflow run、复制同一 fitted transformer、保留相同验证行且不动父 run。

安装与启用

环境要求(资料原文):Python 3.11+(lock 在 3.12.0 上测过)、Node 24.9+、DSH 0.2.2(文档写明在 0.2.2-alpha.3 上测试)。package.json 中 engines 为 dsh: >=0.2.2-alpha.3 <0.3.0。

先做 DSH Desktop 的一次初始化,再完全退出 Desktop,再装到其 profile。从 Releases 下载 Python wheel、requirements.lock 与插件 .tgz。Windows 示例如下(专用目录内):

py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.lock .\dsh_ml_workbench-0.4.0-py3-none-any.whl
dsh plugin --profile desktop add .\dsh-ml-workbench-0.4.0.tgz

或在 DSH 实验性插件中启用 Custom plugin index,在 Discover 添加第三方索引(非官方背书,索引固定不可变 commit):

https://raw.githubusercontent.com/shinerain1/dsh-ml-workbench/main/market/index.json

索引方式仍会打包 JS,但 Python 仍须按上文单独安装。将 pythonExecutable 设为 venv 解释器的绝对路径,root 设为绝对可写数据目录。示例 patch 片段:

- id: ml-workbench
  config:
    pythonExecutable: C:/ml-workbench/.venv/Scripts/python.exe
    root: C:/my-project/.dsh-ml-workbench
    executionMode: dsh
    allowCustomCode: false

安装后先调用 ml_workbench_health;重启 DSH 后沿用同一 root 可恢复 runs。macOS/Linux 可用 .venv/bin/python,但该版本未在资料中声明已验证。也可用 checkout 或解压后 package 目录内的安装助手(不覆盖 DSH profile):

py -3.12 scripts/install.py --venv C:/ml-workbench/.venv --workspace C:/my-project --wheel C:/downloads/dsh_ml_workbench-0.4.0-py3-none-any.whl

独立诊断:python -m dsh_ml_workbench doctor --root PATH;仅实际 DSH 工具调用才能验证 OS 沙箱访问。dsh 模式下 root 须在 Session workspace 或已明确批准的可写根下。

典型用法

创建实验(分类 + 随机森林,示例参数来自 README):

{"dataset_path":"C:/data/customers.csv","target":"repurchased","task":"classification","name":"forest","model":"random_forest","params":{"n_estimators":100},"preprocessing":{"drop_columns":["customer_id"]},"request_key":"customers-forest-001"}

分支实验(保留预处理、换线性模型):

{"run_id":"<third run ID>","changes":{"name":"third preprocessing, linear model","model":"logistic_regression","params":{}},"reuse_preprocessing":true,"request_key":"customers-linear-004"}

changes 替换指定的顶层字段(含整个 params);变更实验不会复用旧 run ID。分支是「从数据重启」,不是优化器 checkpoint 续跑。

划分策略需显式选择,例如按客户整组 holdout:

{"split": {"strategy":"group","column":"customer_id"}}

或按时间列将更晚 ISO 时间戳放进验证集(时间模式非预测流水线,group holdout 不保证类平衡)。

交付物复现(解压到专用目录、新建 venv):

python -m pip install -r inputs/requirements.txt
python reproduce.py --verify-only
python reproduce.py --data /absolute/path/to/original.csv

导出包内若含 CSV 可省略 --data。复现校验数据哈希、环境、快照校验和与指标;不必保留原 workbench 与 tracking 库。本地浏览 MLflow:ml_workbench_health 返回 tracking_uri 后可用:

mlflow ui --backend-store-uri sqlite:///C:/ml-workbench/records/mlflow.sqlite3 --host 127.0.0.1

勿手工改跟踪指标或快照文件,否则一致性校验会拒绝交付。

从 0.1.0 升级时保持同一 root,旧记录仍可读/可导出;跨版本评估器不会 silent 混排,要使用新指标或调参可 reuse_preprocessing: false 分支并按当前配方重训。

适用场景与注意

适合:本地 CSV 分类/回归实验、需要在智能体对话里分支对比、希望 MLflow 跟踪 + Optuna 调参 + 可 ZIP 复现 的 DSH 用户。不适合当作托管式 ML 平台替代品;能力边界见项目 docs/MATURITY.md。

插件以前端 bundle + 本地 Python 后端运行,工具调用受当前 DSH 进程权限与 executionMode 约束。安装前应在 GitHub 阅读源码与 MIT 许可证(package.json),在 SkillHub 或 Releases 核对版本与索引来源;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。自定义代码能力受 allowCustomCode 等配置限制,扩展范围见 README「Custom code and scope」一节。

结尾

DSH ML Workbench 把「跟踪—调参—分支—对比—预测—复现」捆成一组可编排工具,让智能体在本地 CSV 实验上具备可核对、可交付的工作流。进一步了解可访问 SkillHub 目录页 与仓库 https://github.com/shinerain1/dsh-ml-workbench。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜