前言¶
在 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 爲準):
- 數據與實驗:
ml_dataset_inspect報告缺失、類型、重複與可能的 ID 列;ml_experiment_create快照 CSV、代碼、參數、環境與驗證集行索引,request_key使創建可冪等重試;ml_experiment_run合併創建與啓動。 - 生命週期:
ml_experiment_wait做有界等待;ml_experiment_list在會話重啓後恢復 run ID;中斷 worker 標記爲interrupted,不會誤報成功。本地 worker 可在 DSH 退出後繼續;executionMode: dsh時 worker 隨所屬插件/進程結束而停止。 - 分支與對比:
ml_experiment_branch默認複用父實驗成功 run 的已擬合預處理;reuse_preprocessing: false可改處理或從失敗 fit 重來。ml_experiment_diff說明配置、代碼與評估器變化;ml_experiment_compare在條件不兼容時會拒絕。分類任務在定義可行時補充 ROC-AUC、平均精度、log loss,並含 dummy 基線與混淆矩陣。 - 調參:
ml_search_create/step/get/cancel適配持久化 Optuna;每步最多啓動一個異步 trial,重複調用安全,DSH 重啓後同一 study 可繼續。 - 預測與收尾:
ml_model_predict對另一份本地 CSV 做校驗特徵後輸出預測/概率與 manifest;先用驗證集選模,再ml_experiment_finalize評估預留的最終測試集。默認劃分約爲 60/20/20(train/validation/final-test),可按 group 或 time 策略約束。 - 交付:
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。