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。

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

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

小夜