expflow-pipeline-hpo
PDEBench competition workflow orchestration with expflow — three pipeline modes (full/fast/skip), distributed HPO, pruner integration, and ClearML HyperParameterOptimizer native mo…
diamond2nv
@diamond2nv
Install
$ openclaw skills install @diamond2nv/expflow-pipeline-hpoexpflow PDEBench Pipeline & HPO
Part of the Exo suite — literature (
hfpclawer) → experiments (expflow-pde) → proofs (omega-architect). Three independent CLIs that meet through files and CLI calls, never imports. Entry skill:exo-suite-linkage(wiring, cost tiers low → medium → high, degradation ladder). Install:uv tool install hfpclawer·uv tool install expflow-pde·uv tool install "omega-architect @ git+https://github.com/diamond2nv/omega-architect@v0.2.3"
Orchestrate experiment workflows for the AI4S PDE competition using expflow. Three modes for three competition phases.
Triggers
- User says "run HPO", "submit pipeline", "distributed experiment"
- User says "competition sprint" or "fast iterate"
- User asks about automating the train→eval→submit loop
- User mentions needing to find best hyperparams
Installation
pip install "expflow-pde[pipeline]"
Version floor: install expflow-pde>=0.7.0 (public/PyPI line). The development line is ahead
(0.7.3): anything marked "development line" below is not in the PyPI 0.7.0 artifact.
uv tool install expflow-pde # 1) isolated CLI, `expflow` on PATH (recommended)
# pin the version — `uvx`/`uv tool run` reuse an installed tool env (may run an older
# release), and an unpinned launch is a supply-chain (rug-pull) risk
uvx --from "expflow-pde==0.7.0" expflow --help # 2) run it without installing anything
uv pip install expflow-pde # 3) inside an existing project / venv
pip install expflow-pde # 4) no uv — pip and pipx both work
pipx install expflow-pde # (pipx needs a recent version; 1.0.0 cannot parse specs)
# extras ride along with any form, e.g.: uv tool install "expflow-pde[clearml]"
All five forms above were run and verified (uv tool install / uvx --from / uv pip / pip / pipx).
Available Pipeline Modes
Three pipeline modes, each mapped to a CLI command:
Mode A — Full (HPO → Train → Eval)
For the exploration phase of a competition task. Optuna finds best params via distributed clearml-agent trials, trains with best, then evaluates.
expflow pipeline submit-full train_task1.py \
--queue default \
--trials 50 --parallel 4 \
--eval-script eval_task1.py \
--metric seg_total --direction maximize
Flags used:
--trials N: total HPO trials--parallel M: max concurrent trials (use GPU node count)--metric: objective metric name prefixedMETRIC:in script stdout--pruner hyperband|median|percentile: early-stop poor trials--study-name: Optuna study name (auto if omitted; persists to SQLite)--skip hpo --skip eval: run train only within full skeleton
Mode B — Fast (Train → Eval)
For the competition sprint phase. You already know best params. Skip HPO, run directly with fixed args.
expflow pipeline submit train_task1.py \
--queue default \
--train-param lr=0.001 --train-param epochs=80 \
--eval-script eval_task1.py \
--eval-param sub_step=5
Flags:
--skip eval: train-only (just submit checkpoint)--train-param key=val: injected as--key=valto training script--eval-param key=val: injected as--key=valto eval script
Mode C — Flexible Skip
Override step inclusion on either mode:
expflow pipeline submit-full train_task1.py \
--skip hpo --skip eval # = train only
expflow pipeline submit-full train_task1.py \
--skip train --skip eval # = HPO only
HPO: Three Execution Modes
HPO (expflow optuna run) has three backends:
| Mode | Flag | Description | Best for |
|---|---|---|---|
| Local | (default) | subprocess serial on CPU | ≤20 trials, quick test |
| Distributed | --distributed | ask/tell + clearml Task clone | Multi-GPU, custom control |
| Optimizer | --optimizer -O | Clearml HyperParameterOptimizer | Production, 50-200+ trials |
Key flags across all HPO modes:
--pruner hyperband|median|percentile|none: ASHA pruner saves ~40% GPU time--metric <name>: readsMETRIC:<name>=<value>from script stdout--direction maximize|minimize--timeout <min>: safety cutoff
Script Requirements
The training/eval script must:
- Accept hyperparams as
--key=valueCLI arguments - Output
METRIC:<name>=<value>to stdout for objective capture (local mode) - Report clearml scalars for distributed/optimizer mode:
Task.current_task().report_scalar("Score", "seg_total", value, iteration=epoch)
Experiment Loop Commands (0.7.0)
| Group | Sub-commands | Purpose |
|---|---|---|
expflow dispatch | status list tree stats audit-log archive | local SQLite dispatch database (what was submitted, when, by whom) |
expflow iterate | run | one-shot iteration: diagnose → suggest → submit |
expflow repeat | diagnose resubmit | repair diagnosis and resubmission (Hermes /goal compatible) |
expflow hypothesis | open record list show rejected close | hypothesis tracking, including negative results |
Pair them: dispatch gives the provenance trail, iterate/repeat close the loop, and
hypothesis keeps the failed directions from being retried blindly.
Only in the development line (not in the 0.7.0 PyPI artifact yet)
expflow competition—initstopstatusmergemaskbootstrapcollectvalidate(competition logging sessions, parameterized scoring).- Modules added after 0.7.0: noise-aware champion validation + agent arbiter (
validate.py), cross-session dead-end registry (registry.py), stagnation detection and experiment reports (monitor.py).
Hermes Agent Environment
-
MCP server —
expflow mcpstarts a FastMCP server (18+ tools) for agent integration:# ~/.hermes/config.yaml mcp: servers: expflow: command: "expflow" args: ["mcp"] -
Config —
expflow initwrites the toolkit config; real credentials (ClearML API, Langfuse keys, dataset paths) belong in.env/ a localconfig.yaml, never in tracked files. -
Environment overrides —
EXPFLOW_HOME,EXPFLOW_PIN_HASH,EXPFLOW_COMPETITION_DEADLINE,EXPFLOW_SEMANTIC_URL. -
Cost profile (not zero-cost) — the orchestration layer itself makes no LLM call, but runs cost real money and hardware: ClearML workers/queue time, GPU hours for the submitted experiments, and storage for artifacts. Quote costs from recorded runs, never an estimate.
Pitfalls
- Pruner needs
trial.report()calls during training. If the script only reports at the end, the pruner has nothing to prune on. Calltrial.report(val_loss, epoch)at least every 10 epochs. - HyperParameterOptimizer needs the metric name in
Title/Seriesformat. If your metric isseg_total, it becomestitle=seg_total, series=seg_total. If your clearml report_scalar isreport_scalar("Score", "seg_total", v), pass--metric Score/seg_total. - Clearml-agent must be running on GPU nodes before submitting. Verify with
expflow clearml workersor check Web UI. _collect_one_trialpolls every 5s — waits up to 60min per trial. If trials are expected to run longer, increasetimeout_minutes.
Architecture Reference
Key files in expflow_pde/:
hpo.py— 3-mode HPO runner (local/distributed/optimizer)pipeline.py— ExperimentPipeline class (fast/full modes)cli_pipeline.py—pipeline submit+pipeline submit-fullcli_optuna.py—optuna runwith all three backends
Related
experiment-lifecycle-governance— PIN, metrics registry, compare-scores, competition rules auditpde-experiment-hyperparameters— PDEBench-specific hyperparameter referencemulti-agent-distributed-experiment-workflow— Hermes → OpenCode → clearml
Top skills in this category
Marketing Skills
@jchopard69Access 23 marketing modules offering checklists, frameworks, and ready-to-use deliverables for CRO, SEO, copywriting, analytics, launches, ads, and social me...
OpenClaw Command Center
@jontsaiMission control dashboard for OpenClaw - real-time session monitoring, LLM usage tracking, cost intelligence, and system vitals. View all your AI agents in one place.
moltbook-interact
@lunarcmdInteract with Moltbook social network for AI agents. Post, reply, browse, and analyze engagement. Use when the user wants to engage with Moltbook, check their feed, reply to posts, or track their activity on the agent social network.
ClawOps
@okoddcatThe orchestration tool for OpenClaw, managing and coordinating all your skills seamlessly.
Anti-Injection-Skill
@georges91560Detect prompt injection, jailbreak, role-hijack, and system extraction attempts. Applies multi-layer defense with semantic analysis and penalty scoring.