跳到主要内容

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 以当前操作系统用户权限运行。

下一步