跳到主要内容

Evaluation

Program 已经确定时,使用 evaluate() 进行评估。

基本用法​

from cartpole import CartPoleBenchmark
from evopolicygym import EvaluationConfig, Program, evaluate
from evopolicygym.execution import ProcessExecution

result = evaluate(
Program.from_directory("my-policy/"),
CartPoleBenchmark(),
execution=ProcessExecution.unsafe(),
config=EvaluationConfig(
split="validation",
episodes=100,
seed=42,
episode_timeout_seconds=30,
),
)

print(result.feedback.score)

evaluate() 接收一个 Program、一个结构化 Benchmark、显式执行方式,以及可选的 EvaluationConfig。

EvaluationConfig​

参数默认值含义
split"validation"Benchmark 定义的 Episode 数据划分。
episodes1Episode 数量,必须为正整数。
seed0用于规划 Episode 的无符号 64 位种子。
episode_timeout_seconds30.0每个 Episode 的正数超时。

Benchmark 必须返回准确数量的 Episodes。相同 split、seed 和 count 必须得到相同计划。

EvaluationResult​

字段含义
benchmark_id公开 Benchmark 标识。
environment_digest公开 Environment 参数的标识。
program_digest被评估 Program 的标识。
feedbackBenchmark 定义的分数、公开内容和 artifacts。
episodes经过净化的公开 Episode 结果。

Episode 结果包含状态、总 reward、步数和可选的 Policy 失败代码,不包含场景、 Environment seed、Host 路径、凭据或私有指标。

Episode 行为​

每个 Episode 都使用全新的 Environment、Policy 进程、Policy 实例和临时目录。 Policy 状态只能在同一 Episode 的多次 act() 调用之间保留。

Policy 失败会生成经过净化的失败结果。Environment、Benchmark、执行或清理故障会 中止整个 Evaluation。

本地进程执行

ProcessExecution.unsafe() 不是沙箱。Policy 以当前操作系统用户权限运行。

下一步​