尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
GEPA 实验追踪指南:用 TrackingConfig 把优化过程接入 WandB 与 MLflow
AI Agent提示工程模型优化【免费下载链接】gepaOptimize prompts, code, and more with AI-powered Reflective Optimization项目地址https://gitcode.com/gh_mirrors/ge/gepa点击查看免费下载本篇指南聚焦 GEPA 仓库中optimize_anything流程的**实验追踪Experiment Tracking**能力gepa 后端内置了一个统一的追踪器通过engine_config[tracking]一个合法的GEPAConfig字段会被强转为TrackingConfig即可把优化过程的标量指标、候选表、Pareto 前沿与交互式候选树日志到Weights Biases与MLflow。读完本文你将掌握TrackingConfig每个字段的语义与默认值、追踪器实际写入的指标与表格清单、如何把 GEPA 挂接到父脚本已经打开的 run 中wandb_attach_existing/mlflow_attach_existing以及如何用wandb_step_metric规避宿主训练循环中的 step 冲突并在不启用任何云端后端时借助 eval server 的output_dir落盘记录。1. 追踪入口engine_config[tracking]在gepa.optimize_anything.optimize_anything的统一 API 中实验追踪被建模为OptimizeAnythingConfig.engine_config里的一个tracking键。OptimizeAnythingConfig是携带所有跨引擎旋钮预算、eval server、跨引擎便利项的扁平配置而engine_config是各引擎解析的引擎专属选项字典gepa 引擎将其作为GEPAConfig形状的字典一对一透传合法键即GEPAConfig的活字段engine、reflection、merge、refiner、tracking、callbacks、stop_callbacks见 src/gepa/oa/config.py。其中tracking会被强转为TrackingConfig。一个最简示例追踪到 WandBresult optimize_anything( seed_candidateSEED, evaluatorevaluate, datasettrainset, valsetvalset, configOptimizeAnythingConfig( enginegepa, max_evals300, engine_config{ reflection: {reflection_lm: anthropic/claude-sonnet-4-6}, tracking: { # - TrackingConfig use_wandb: True, wandb_init_kwargs: {project: my-gepa-run, name: experiment-1}, }, }, ), )max_evals300在这里是 eval 调用上限gepa 后端会把每个候选在整个选择集此处为valset上评分因此预算应量化为≳ 15–20 × len(valset)否则运行只提出一两个候选就停止几乎谈不上优化。reflection.reflection_lm是提出器 LLM 的 LiteLLM id需配置对应厂商的 API key。TrackingConfig定义在 src/gepa/gepa_launcher.pyGEPAConfig.__post_init__支持直接传入字典并强转为TrackingConfigsrc/gepa/gepa_launcher.py。底层追踪器由create_experiment_tracker工厂创建src/gepa/logging/experiment_tracker.py实例支持with tracker:上下文管理器进入时自动initialize()start_run()退出时无论是否抛异常都会end_run()。2.TrackingConfig字段全解下表覆盖TrackingConfig的全部字段及其语义字段类型默认值作用use_wandbboolFalse是否启用 WandB 后端wandb_api_keystr \| NoneNoneWandB API key为空时回退到wandb.login()的默认凭据wandb_init_kwargsdict[str, Any]None透传给wandb.init(**kwargs)的额外参数如project、name、dirwandb_attach_existingboolFalse挂接到进程内已激活的 wandb run不调用init()/finish()wandb_step_metricstr \| NoneNone自定义 x 轴指标名设置后追踪器用wandb.define_metric声明自己的 x 轴不再传stepuse_mlflowboolFalse是否启用 MLflow 后端mlflow_tracking_uristr \| NoneNoneMLflow tracking URI如file:///tmp/mlflowmlflow_experiment_namestr \| NoneNoneMLflow 实验名设置时调用mlflow.set_experimentmlflow_attach_existingboolFalse挂接到已激活的 MLflow run不调用start_run()/end_run()key_prefixstr前缀统一加到每一个被记录的 key/name 前如gepa/→gepa/val_scoreloggerLoggerProtocol \| NoneNone自定义纯文本日志行 Logger几点值得注意的细节后端可同时启用use_wandb与use_mlflow可以同时为True追踪器会把同一批数据写入两个后端create_experiment_tracker的 docstring 明确说明Both wandb and mlflow can be used simultaneously if desired。缺少依赖会怎样若use_wandbTrue但环境里没装 wandb_initialize_wandb会抛出ImportError(wandb is not installed. Please install it or set backendmlflow or none.)src/gepa/logging/experiment_tracker.pyMLflow 同理。MLflow 的线程安全设计start_run()会缓存run_id并创建一个MlflowClient用于线程安全日志。这是因为mlflow.active_run()是 thread-local 的在并行提案parallel proposals场景下如果各线程各自调用 fluent API 会意外创建多个新 runsrc/gepa/logging/experiment_tracker.py。测试test_experiment_tracking.py中的test_mlflow_nested_run_handling验证了嵌套 run 场景下外层 run 不会被误关tests/test_experiment_tracking.py。wandb 表格的行累积机制wandb 的commitFalse会让 pending dict 覆盖旧值若不处理多次log_table同一次提交周期内单行表格会被最新一行替换。追踪器内部用_wandb_table_rows累积行每次调用都把完整增长中的表格写入src/gepa/logging/experiment_tracker.py。非数值过滤log_metrics只把int | float数值送入标量通道dict/string 等结构化数据走log_table避免被拍平成大量噪点图表src/gepa/logging/experiment_tracker.py。3. 追踪器写入什么标量、表格、摘要与 HTML追踪器把优化过程拆成四类负载写入后端3.1 标量scalars——折线图在发现新候选后log_detailed_metrics_after_discovering_new_programsrc/gepa/logging/utils.py写入以下标量iteration、new_program_idx、linear_pareto_front_program_idxval_program_average新候选在 valset 上的平均分、best_score_on_valset当前最佳 valset 聚合分valset_pareto_front_aggPareto 前沿平均分val_evaluated_count_new_program、val_total_count覆盖率与 valset 总量total_metric_calls累计评估调用数若启用多目标objective/obj_name前缀的目标分数每次调用带stepgepa_state.i 1即迭代序号。reflective mutation proposer 内部也会在反射阶段写入自己的指标见 src/gepa/proposer/reflective_mutation/reflective_mutation.py 与 src/gepa/core/engine.py。3.2 表格tables——结构化数据candidates候选池表核心引擎在候选入库时记录src/gepa/core/engine.py。proposals提案记录表。valset_scores每个候选在每个 valset 示例上的得分列为[candidate_idx, parent_ids] [每个 val_id]只写新增候选的行避免 O(候选数 × valset 大小) 的重复上传src/gepa/logging/utils.py。valset_pareto_front[val_id, best_score, program_ids]记录每个 val 示例的最佳程序src/gepa/logging/utils.py。多目标时还有objective_scores与objective_pareto_frontsrc/gepa/logging/utils.py。在 MLflow 中表格以列转置的 dict 写入 artifact文件名即{前缀}{表名}.jsonlog_table的artifact_filef{self._p(table_name)}.json。3.3 run summary——概览页优化结束或终止时引擎把 seed 与当前最佳组件的文本写入 run summary使 run 概览页直接可见src/gepa/core/engine.py。MLflow 下数值写入 metric、文本写入summary/key参数src/gepa/logging/experiment_tracker.py。3.4 交互式候选树 HTMLlog_htmlsrc/gepa/logging/experiment_tracker.py把自包含的候选树 HTML 作为富媒体 artifact 记录wandb 默认键candidate_tree。wandb 后端同时写入 run summary保证面板始终展示最新树MLflow 后端通过临时文件把 HTML 作为 artifact 上传artifact_path{key}。调用点在 src/gepa/core/engine.py。4. 挂接到已有 runwandb_attach_existing/mlflow_attach_existing如果你已经自己调用了wandb.init()或已经开启了一个 MLflow run——例如父脚本还要记录其他内容——请设置wandb_attach_existingTrue或mlflow_attach_existingTrue。追踪器随后直接写进你激活中的 run不会调用init()/finish()wandb或start_run()/end_run()mlflow因此不会扰乱 run 的生命周期。实现上start_run()对 attach 模式只是passwandb或把_created_mlflow_run置为False而end_run()只在非 attach 且确由追踪器创建的 run 上收尾src/gepa/logging/experiment_tracker.py 与 src/gepa/logging/experiment_tracker.py。测试test_experiment_tracking.py验证了嵌套 MLflow run 场景追踪器end_run()之后外层 run 依然激活mlflow.log_metric(outer_metric, 2.0)仍然有效。把它与key_prefixgepa/组合使用让 GEPA 的指标保持在自己的命名空间configOptimizeAnythingConfig( enginegepa, max_evals300, engine_config{ tracking: { use_wandb: True, wandb_attach_existing: True, # 写入父脚本已激活的 run key_prefix: gepa/, # 指标变为 gepa/val_score 等 }, }, )key_prefix通过_p(key)统一作用于指标键、config 键、summary 键、表名与 HTML artifact 键src/gepa/logging/experiment_tracker.py。这在同一 wandb/MLflow run 中跑多轮 GEPA 优化时尤其有用gepa/round2/这类前缀能让各轮数据互不混淆。attach 模式的逐字段验证见仓库测试 tests/test_attach_existing_run.py。5.wandb_step_metric解决宿主循环的 step 冲突当宿主循环自己管理 wandb step 计数器时例如外层训练脚本每步wandb.log(..., stepglobal_step)必须同时设置wandb_step_metric如gepa/iteration。其机制是追踪器在第一次log_metrics调用时而非start_run中通过wandb.define_metric声明一个自定义 x 轴指标并把 GEPA 的所有指标绑定到它而不是 wandb 的全局单调 step 计数器src/gepa/logging/experiment_tracker.py。设置之后log_metrics不再传step参数而是把 step 作为普通指标值注入numeric_metrics[self.wandb_step_metric] step后调用wandb.log(...)src/gepa/logging/experiment_tracker.py。为什么必须这样若不设置GEPA 的step1, 2, 3, …会与宿主的step100, 101, …撞车wandb 会静默丢弃GEPA 的数据。延迟到第一次日志调用才define_metric是有意为之——这样无论 GEPA 拥有wandb.init还是挂接到现有 run 都能生效。值得注意的作用域细节当设置了key_prefix时wandb.define_metric(glob, step_metric...)只把自定义 x 轴作用于{prefix}*前缀的指标若没有前缀才用*。源码注释明确指出用*会覆盖 run 内所有指标包括宿主的train/loss的 x 轴导致宿主数据在 GEPA 运行后被 wandb 丢弃src/gepa/logging/experiment_tracker.py。因此在宿主循环中使用wandb_step_metric时务必同时设置key_prefix让自定义 x 轴只作用于 GEPA 的指标。6. 自定义 hookscallbacks与 eval server 的output_dir6.1engine_config{callbacks: [...]}除了指标日志若需要程序化观测如实时推送、告警、自定义分析可通过engine_config{callbacks: [...]}传入GEPACallback对象。回调会收到如下事件on_optimization_start、on_iteration_end、on_candidate_accepted、on_proposal_end等。GEPACallback的完整协议见 src/gepa/core/callbacks.py各事件负载类型的说明见 docs/docs/api/callbacks。示例class MyCallback: def on_candidate_accepted(self, event): print(fNew candidate {event[new_candidate_idx]} accepted) config OptimizeAnythingConfig( enginegepa, max_evals300, engine_config{callbacks: [MyCallback()]}, )注意callbacks属于不可序列化的复杂组件与stop_callbacks一样直接挂在GEPAConfig顶层字段上src/gepa/gepa_launcher.pyOA 层会把它们并入 gepa 引擎的配置中。6.2 eval server 的output_dir无论何种后端都会写其他后端autoresearch、meta_harness、best_of_n没有内置追踪器对它们以及任何不想上云端的 gepa 运行依赖 eval server 的output_dir记录即可——该记录无论配置了什么 tracking 都会写入每次评估一个 per-eval JSONprogress_log.jsonl进度日志summary.json运行摘要。output_dir是OptimizeAnythingConfig的顶层字段为None时 API 会构造一个带时间戳的默认目录outputs/optimize_anything/task/engine/timestamp/保证每次运行都有落盘位置src/gepa/oa/config.py。这些文件构成不依赖任何第三方服务的穷人版追踪也方便离线复查与调试。7. 完整可运行示例与验证路径把上述全部要素组合起来一个同时使用 wandb、attach、前缀与 step 指标的完整示例from gepa.optimize_anything import optimize_anything, OptimizeAnythingConfig SEED You are an expert. Solve the task. Output only the final answer. def evaluate(candidate: str, example) - tuple[float, dict]: output run_my_model(system_promptcandidate, user_promptexample[prompt]) score grade(output, example) return score, {score: score, output: output} # 假设父脚本已调用 wandb.init()管理自己的 step 计数器 result optimize_anything( seed_candidateSEED, evaluatorevaluate, datasettrainset, valsetvalset, configOptimizeAnythingConfig( enginegepa, max_evals300, # ≳ 15-20 × len(valset) output_diroutputs/my_run, # per-eval JSON progress_log.jsonl summary.json engine_config{ reflection: {reflection_lm: anthropic/claude-sonnet-4-6}, tracking: { use_wandb: True, wandb_attach_existing: True, # 写进父脚本的 run wandb_step_metric: gepa/iteration, # 自定义 x 轴避免 step 冲突 key_prefix: gepa/, # 必须与 step_metric 搭配避免影响宿主指标 }, }, ), ) print(result.best_candidate, result.best_score)本地验证追踪器行为的路径单元测试tests/test_experiment_tracking.py 覆盖了create_experiment_tracker工厂、wandb/mlflow 双后端、上下文管理器含异常清理、数值过滤、嵌套 run 处理等场景MLflow 用例使用 filesystem trackingMLFLOW_ALLOW_FILE_STOREtrue跑在临时目录无需 SQL 服务。attach 行为tests/test_attach_existing_run.py 验证 attach 模式下追踪器不接管 run 生命周期。实现源码src/gepa/logging/experiment_tracker.pyExperimentTracker与工厂、src/gepa/logging/utils.py标量/表格的组装、src/gepa/core/engine.pycandidates表、config、summary、候选树 HTML 的调用点。8. 小结追踪矩阵一览需求做法云端仪表盘tracking: {use_wandb: True, wandb_init_kwargs: {...}}或use_mlflow: Truemlflow_tracking_uri写进已有 runwandb_attach_existingTrue/mlflow_attach_existingTrue配key_prefix隔离命名空间嵌入宿主训练循环再加wandb_step_metricgepa/iteration并保留key_prefix不依赖云端靠 eval server 的output_dirper-eval JSON、progress_log.jsonl、summary.json程序化观测engine_config{callbacks: [...]}注册GEPACallback纯文本日志TrackingConfig(logger自定义 LoggerProtocol)追踪器看到的就是优化算法真实发生的轨迹每一次提案、每一次接受/拒绝、val 集上的每一分、Pareto 前沿的每一次更新都会同步进你的实验平台与训练曲线、评估曲线并列可查。赞分享AI Agent提示工程模型优化【免费下载链接】gepaOptimize prompts, code, and more with AI-powered Reflective Optimization项目地址https://gitcode.com/gh_mirrors/ge/gepa点击查看免费下载相关推荐GEPA 实验追踪全解析使用 ExperimentTracker 统一对接 WandB 与 MLflowGEPA 实验追踪全解析使用 ExperimentTracker 统一对接 WandB 与 MLflow 本文以 GEPA 开源仓库中的 ExperimentAI Agent提示工程模型优化GEPA 实验追踪指南用 WandB 与 MLflow 记录提示词优化的完整轨迹GEPA 实验追踪指南用 WandB 与 MLflow 记录提示词优化的完整轨迹 GEPAGeneric Evolutionary Prompt AdaptAI Agent提示工程模型优化GEPA 实验追踪配置TrackingConfig全解析WB 与 MLflow 双后端实战指南GEPA 实验追踪配置TrackingConfig全解析WB 与 MLflow 双后端实战指南 GEPAGenerative EvolutionaryAI Agent提示工程模型优化上一篇FLUX.1模型架构解析双流Transformer如何革新AI图像生成下一篇Hello-CTF快速入门5步搭建你的第一个CTF实验环境 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

PWM脉宽调制原理与实战:从LED调光到电机调速的完整指南

PWM脉宽调制原理与实战:从LED调光到电机调速的完整指南

1. 内容整体设计与思路拆解1.1 从一个"闪灯"的现象说起很多人第一次接触 PWM,都是被 LED 调光这个场景带进来的。Arduino 上一个analogWrite(),51 单片机上一个定时器中断翻转 IO,灯就从全亮变成了"半亮"。但如果你直接拿…

📅 2026/10/9 1:47:11
Apache CouchDB Nouveau:基于 Lucene 的库级全文搜索从入门到源码剖析

Apache CouchDB Nouveau:基于 Lucene 的库级全文搜索从入门到源码剖析

数据库文档数据库后端 【免费下载链接】couchdb Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability 项目地址: https://gitcode.com/gh_mirrors/co/couchdb 点击查看 免费下载 Nouveau 是 Apache CouchDB 中用于…

📅 2026/10/9 1:47:11
Hermes Workspace v2.1.0 深度解读:内置 Swarm 多代理编排控制面与可靠性修复全景

Hermes Workspace v2.1.0 深度解读:内置 Swarm 多代理编排控制面与可靠性修复全景

【免费下载链接】hermes-workspace Native web workspace for Hermes Agent — chat, terminal, memory, skills, inspector. 项目地址: https://gitcode.com/gh_mirrors/he/hermes-workspace 点击查看 免费下载 本篇技术指南以 docs/release-2.1.0.md 发布说明为骨…

📅 2026/10/9 1:42:11
MORE NEWS

更多资讯

📰

Linux磁盘分区与NAT网络配置:从GPT/LVM到iptables/WSL实战

我干过几年服务器运维和嵌入式Linux开发,最常被刚入行的朋友问到两件事:磁盘怎么分才合理,虚拟机NAT网络怎么配都不通。这两个问题看起来基础,实际踩坑极多。比如新装了Ubuntu,结果/home空间不够用;又比如V…

📰

基于Java Web的人才招聘系统设计与实现文档撰写指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CodePilot Codex CLI 发现与刷新机制修复详解:从路径漏检到候选指纹缓存失效

人工智能AI 应用AI Agent交互助手MCP Clients本地部署 【免费下载链接】CodePilot A multi-model AI agent desktop client — connect any AI provider, extend with MCP & skills, control from your phone. Built with Electron Next.js. 项目地址: https:/…

📰

HN-F设计——Snoop Filter

HNF作为CMN网络中管理和维护一致性的HomeNode,是最复杂的存在。接下来的一系列文章将逐步拆解HNF的设计要点。 HNF如何维护cache一致性?答案就是SF(snoop filter)。 在“write invalidate的系统架构中,如果一个RN需要更新某个地址的数据&…

📰

GD32H759+RT-Thread实现稳定USB CDC ACM实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Quartz.NET 4.x 教程第一课:使用 Quartz 搭建首个调度应用

任务调度后端 【免费下载链接】quartznet Quartz Enterprise Scheduler .NET 项目地址: https://gitcode.com/gh_mirrors/qu/quartznet 点击查看 免费下载 导读 本课是 Quartz.NET 4.x 官方教程的第一课,讲解如何在一个 .NET 托管应用(Gene…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬