You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅CPU环境下Ray RLlib初始化PPOTrainer遇AttributeError问题

解决RLlib+CPU版PyTorch环境下'NoneType' object has no attribute 'cuda'错误

问题根源

Ray 2.1.0与PyTorch 2.3.0+cpu版本存在兼容性问题:即使配置num_gpus=0,RLlib内部的RolloutWorker初始化逻辑仍会尝试调用CUDA相关方法,而CPU版PyTorch中torch.cuda相关对象为None,触发AttributeError。Google Colab环境的Ray或PyTorch版本组合刚好规避了这个问题。

具体解决方案

1. 强制禁用CUDA设备检测

在代码最开头添加环境变量设置,让PyTorch彻底看不到GPU设备:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

这会阻止任何PyTorch代码触发CUDA相关调用,从根源避免错误。

2. 明确指定RLlib使用CPU设备

在RLlib配置中添加torch_device参数,强制框架使用CPU:

rl_config = {
    "num_gpus": 0,
    "framework": "torch",
    "torch_device": "cpu",  # 关键配置,覆盖默认设备检测逻辑
    # 你的其他配置项(如学习率、批次大小等)
}

3. 降级Ray版本至兼容版本

Ray 2.1.0的GPU检测逻辑存在bug,尝试降级到与PyTorch 2.3.0+cpu兼容的版本(如Ray 2.0.0):

pip install ray[rllib]==2.0.0 --force-reinstall

4. 手动指定RolloutWorker的设备

如果训练器初始化仍有问题,可手动创建RolloutWorker并指定CPU设备:

from ray.rllib.agents.ppo import PPOTrainer
from ray.rllib.rollout import RolloutWorker
import gym
import or_gym

# 环境创建函数
def env_creator(config):
    return gym.make("InvManagement-v1")

# 配置更新
rl_config.update({"torch_device": "cpu", "num_gpus": 0})

# 手动初始化Worker
worker = RolloutWorker(
    env_creator=env_creator,
    config=rl_config,
    device="cpu"
)

# 初始化训练器
trainer = PPOTrainer(config=rl_config, env="InvManagement-v1")

内容的提问来源于stack exchange,提问作者Sumaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:52:38