Ray RLlib中episode_reward_mean未显示的原因及替代指标咨询
关于Ray RLlib中episode_reward_mean指标缺失的问题
核心原因:API指标结构重构
Ray RLlib在2.44.1这类新版本中,对指标命名和层级结构做了重构,原episode_reward_mean指标已被替换。官方说明翻译如下:
类似
episode_reward_mean的指标现在可通过ResultDict的result["env_runners"]["episode_return_mean"]获取;评估场景下则是result["evaluation"]["env_runners"]["episode_return_mean"];在Ray Tune中对应的指标键为"evaluation/env_runners/episode_return_mean"。
你看到的相关指标说明
你在results字典中发现的两个指标直接相关,但适用场景不同:
env_runners/episode_return_mean:全局回合回报均值,是原episode_reward_mean的直接替代键。env_runners/agent_episode_returns_mean/default_agent:针对单个智能体的回合回报统计,default_agent是单智能体场景下默认的智能体ID。
单/多智能体场景下的等价性
- 单智能体场景:
episode_return_mean和原episode_reward_mean完全等价,统计的是同一个数值;此时agent_episode_returns_mean/default_agent的值也和它完全一致。 - 多智能体场景:原
episode_reward_mean的统计逻辑被拆分:env_runners/episode_return_mean:统计整个环境中所有智能体的回合总回报均值(比如合作型多智能体环境中,会是所有智能体回报之和的均值)。env_runners/agent_episode_returns_mean/[agent_id]:针对每个智能体单独统计回合回报均值,便于观察不同智能体的表现差异。
修正后的代码示例
1. Ray Tune训练场景
将stop条件中的指标键替换为新名称:
ray.init() config = PPOConfig() config.environment("CartPole-v1") config.env_runners(num_env_runners=1) config.training(gamma=0.9, lr=0.01, kl_coeff=0.3) tune.run( "PPO", config=config.to_dict(), stop={"env_runners/episode_return_mean": 475, "training_iteration": 100}, # 替换为新指标键 checkpoint_freq=10, checkpoint_at_end=True, ) ray.shutdown()
2. 单轮训练场景
从result字典的新层级中获取指标:
algo = config.build_algo() result = algo.train() # 获取回合回报均值 reward_mean = result["env_runners"]["episode_return_mean"] print(f"回合回报均值: {reward_mean}")
内容的提问来源于stack exchange,提问作者aaden
相关产品推荐
相关产品推荐

