ztxexp

ztxexp logo

PyPI version License: MIT Python Versions Ask DeepWiki

ztxexp 是一个面向深度学习和大模型实验的抽象框架,目标是让实验迭代更快、更可复现。

NEW

问题

在真实项目里,实验常见痛点是:

方案

ztxexp 提供四个核心抽象:

  1. ExpManager: 负责配置构建(gridvariantsmodifywhere)。
  2. ExpRunner: 负责执行调度(sequential / process_pool / joblib / dynamic)。
  3. ResultAnalyzer: 负责聚合与清理。
  4. ExperimentPipeline: 一体化入口,适合绝大多数场景。

v0.4 统一并扩展了 run 产物协议(schema v2 兼容):

成功判定规则:run.json.status == "succeeded"

5 分钟跑通

安装

pip install ztxexp

可选:启用 PyTorch 辅助工具。

pip install "ztxexp[torch]"

如果你要导出 Excel 透视表:

pip install "ztxexp[excel]"

CLI:Agent 集成持久化

# 在当前项目中创建或更新受管区块(默认)
ztxexp init-vibe

# 预览将写入内容
ztxexp show-vibe --profile webcoding --language bilingual

# 写入到指定项目根目录
ztxexp init-vibe --project-root /path/to/your-project

# 显式指定目标文件(相对路径基于 project-root)
ztxexp init-vibe --agents-file AGENTS.md

# 仅预览变更,不落盘
ztxexp init-vibe --dry-run

# 移除受管区块(不影响用户自定义内容)
ztxexp remove-vibe --project-root /path/to/your-project

CLI:Skills 注入与管理(v1.0.2)

# 交互式初始化(未指定 --target 时会提示 1/2/3)
ztxexp init-skill

# 非交互模式:默认写入 skills/
ztxexp init-skill --no-interactive

# 显式指定写入目标
ztxexp init-skill --target skills
ztxexp init-skill --target codex
ztxexp init-skill --target both

# 预览内置 skill 内容
ztxexp show-skill --language bilingual

# 预览并附带 agents/openai.yaml
ztxexp show-skill --language zh --with-openai

# 移除受管安装(默认检查 skills + .codex/skills)
ztxexp remove-skill
ztxexp remove-skill --target both

# 仅预览,不落盘
ztxexp init-skill --dry-run
ztxexp remove-skill --dry-run

CLI:交互式模板向导(v1.0.3)

# 交互式 7 问向导(推荐)
ztxexp init-template

# 非交互模式(需要显式传 name)
ztxexp init-template --name my_experiment --no-interactive

# 快速采用推荐默认值(含交互模式)
ztxexp init-template --name my_experiment --yes

# 仅预览生成计划,不落盘
ztxexp init-template --name my_experiment --no-interactive --dry-run

# 指定输出目录
ztxexp init-template --name my_experiment --output-dir experiments_custom

# 目录已存在时强制接管覆盖
ztxexp init-template --name my_experiment --no-interactive --force

生成目录默认位于:<project-root>/experiments/<experiment_name>/
主脚本 main_experiment.py 内置 run/analyze/clean 子命令,可直接执行实验、结果聚合与清理示例。

参数说明(init-vibe / remove-vibe):

参数说明(init-vibe / show-vibe):

参数说明(init-skill):

参数说明(remove-skill):

参数说明(init-template):

受管区块标记:

最小示例

from ztxexp import ExperimentPipeline, RunContext


def exp_fn(ctx: RunContext):
    lr = ctx.config["lr"]
    model = ctx.config["model"]

    # 业务产物统一放 artifacts 目录
    (ctx.run_dir / "artifacts" / "info.txt").write_text(
        f"run={ctx.run_id}, model={model}, lr={lr}\n",
        encoding="utf-8",
    )

    # 返回 dict 会自动写入 metrics.json
    return {"score": round((1.0 - lr) + (0.05 if model == "tiny" else 0.02), 4)}


summary = (
    ExperimentPipeline("./results_demo", base_config={"seed": 42})
    .grid({"lr": [0.001, 0.01]})
    .variants([{"model": "tiny"}, {"model": "base"}])
    .exclude_completed()
    .run(exp_fn, mode="sequential")
)

print(summary)

聚合结果

from ztxexp import ResultAnalyzer

analyzer = ResultAnalyzer("./results_demo")
df = analyzer.to_dataframe(statuses=("succeeded",))
print(df[["run_id", "model", "lr", "score"]])
analyzer.to_csv("./results_demo/summary.csv", sort_by=["model", "lr"])

示例模板库(可复制)

模板库目标是“复制后只改业务逻辑”,尽量覆盖常见 Python 实验场景:

  1. 基础构建:最小实验、网格+变体、多种子复现、manager/runner 解耦。
  2. 并行调度:process_pooljoblibdynamic、非法配置 SkipRun
  3. 结果分析:DataFrame 导出、CSV、透视表、清理策略、排行榜。
  4. ML 场景:分类、回归、时序、异常检测、推荐排序。
  5. LLM 场景:Prompt、RAG、Tool Use、安全评测、服务压测。
  6. 工程运维:消融、预算受限搜索、断点恢复、数据版本对比、复现性审计。

文档中可直接复制代码:

常见坑

  1. 返回值不是 dict | None 会被判定为失败,并写入 error.log

  2. 仍按旧版 _SUCCESS 判断成功 v0.4 不再使用 _SUCCESS,以 run.json 为准。

  3. 直接把大文件写在 run 根目录 建议统一放到 artifacts/,便于后续清理和归档。

  4. dynamic 模式用于生产实时场景 dynamic 是实验特性(experimental),更适合离线批任务。

API 导航

文档采用“源码注释驱动”模式,不再手工维护 API Markdown:

  1. mkdocs build 时自动扫描 ztxexp/*.py
  2. 自动生成首页 index.mdreference/ API 页面;
  3. mkdocstrings 从类/函数 docstring 渲染参数、返回值与示例。

推荐先看用户手册,再查 API:

本地入口:

常用命令:

pip install -e ".[docs]"
NO_MKDOCS_2_WARNING=1 mkdocs build --strict
NO_MKDOCS_2_WARNING=1 mkdocs serve
# 或使用脚本:sh mk.sh build / sh mk.sh serve

可选追踪器安装:

pip install "ztxexp[mlflow]"
pip install "ztxexp[wandb]"

贡献

欢迎提交 Issue 或 PR:

许可证

MIT License