opendilab / DI-engine

OpenDILab Decision AI Engine
https://di-engine-docs.readthedocs.io
Apache License 2.0
2.79k stars 348 forks source link

尝试使用自定义环境出现问题 #765

Closed HawkQ closed 5 months ago

HawkQ commented 5 months ago

开发者好,我并非专业,所提问题可能较为简单,还请不要笑话~ 问题类似于https://github.com/opendilab/DI-engine/issues/437#issue-1335640797 中所述,在使用自定义环境时报错。 具体情况如下: 我拟采用DI-engine解决无人机的多智能体强化学习问题,但初次接触,且需要使用自己的环境,所以从自定义环境的单智能体(类贪吃蛇)开始尝试。根据https://github.com/opendilab/DI-engine/issues/264#issuecomment-1087695224 等issue,首先创造了以下格式的目录与文件:

DI-engine/dizoo/snake_test
├── __init__.py
├── config
│   ├── __init__.py
│   └── snake_dqn_config.py
├── envs
│   ├── __init__.py
│   └── snake_env.py
└── entry
    └── snake_dqn_main.py

与https://github.com/opendilab/DI-engine/issues/437#issue 遇到的问题几乎相近,我根据几个不同示例对环境和配置文件进行了修改,在尝试过程中,运行dizoo/snake_test/config/snake_dqn_config.py时,提示ModuleNotFoundError: No module named 'dizoo.snake_test',或者KeyError: 'snake_test'. 当我根据https://github.com/opendilab/DI-engine/issues/437#issue 中的内容,将我的环境通过gym注册后,目录修改为以下形式:

DI-engine/dizoo/snake_test
├── config
│   ├── __init__.py
│   └── snake_dqn_config.py
├── entry
│   ├── __init__.py
│   └── snake_dqn_main.py
├── envs
│   ├── envs
│   │   ├── __init__.py
│   │   └── snake_env
│   └── setup.py
└── __init__.py

此时,各文件中导入项大多都没有错误提示了,但snake_dqn_main.pyfrom dizoo.snake_test.config.snake_dqn_config import main_config, create_config仍然存在波浪下划线,并且snake_dqn_main.pysnake_dqn_config.py运行时均会报错ModuleNotFoundError: No module named 'dizoo.snake_test'。 以我几乎为0的代码知识推测问题应该还是出在我自定义部分,但我应该如何解决该问题? 很抱歉以这种微小的问题打扰大家,还请多多包涵~

PaParaZz1 commented 5 months ago

没事有任何使用问题都可以向我们提问!我感觉这个问题应该出在你安装 DI-engine 的方式上,你是通过 pypi 安装的还是通过源码安装的。如果要使用这样的目录结构自定义环境,应该是使用源码安装并在 pip install 时指定 -e 选项,即 pip3 install -e .

HawkQ commented 5 months ago

没事有任何使用问题都可以向我们提问!我感觉这个问题应该出在你安装 DI-engine 的方式上,你是通过 pypi 安装的还是通过源码安装的。如果要使用这样的目录结构自定义环境,应该是使用源码安装并在 pip install 时指定 -e 选项,即 pip3 install -e .

非常感谢您的解答,经过本周末外加今天一上午的努力,已经把环境安装好并东拼西凑好config和main,能够不报错运行了👍虽然又出现了其他类型的问题,是关于训练没到预期便无报错结束。为避免混淆,我将再提一个新issue😂再次感谢您的解答!