2024开悟智能体比赛(学习期)
环境启动方法
为了能直接使用
test_train.py
进行模型训练并保存(比客户端训练效率更高),显示当前镜像下载速度,推荐如下直接使用命令行打开镜像的方法。
我们以打开走迷宫的代码为例:
-
在腾讯开悟APP中设置工作空间为
.../kaiwu2024/gorgewalk/
(路径自选),启动开发环境(CPU或GPU随便选),在容器检测已完成后就可以停止启动。 -
打开
.../kaiwu2024/gorgewalk/dev/.docker-compose.yaml
文件,找到容器kaiwudrl
中的volumnes
项(第34行,版本4.2.9),向其中加入如下信息
- 打开终端输入
-
你可以用网络版的 vscode,由于体验太差,本地 vscode 可以通过安装
Remote Explorer
和Dev Containers
,点击左下角的小按钮(打开远程窗口),选择附加到正在运行的容器,选择.../win_gpu/...
即可进入容器,打开文件夹/data/projects/gorge_walk/
即可进入相同的工作路径下。 -
安装 vscode 插件,推荐安装
Python
和Even Better TOML
两个插件。
注意事项
diy决策模型编写
只需要重写 diy/algorithm/agent.py
中的 exploit, save_model, load_model
三个函数,其余的 predict, learn
都可以 pass
掉(默认的 wrapper
还是都要的)。
save_model, load_model
的保存 id
就是 learn
函数的调用次数,虽然我们 pass 掉了 learn
函数,但是后端会自动记录 learn
函数调用次数,因此我们需要在每次更新模型时候调用一次 agent.learn()
,且模型会自动在 id
为 10000
的倍数时,自动调用 agent.save_model
。
模型训练方法(无需使用客户端)
写好你的 diy
文件夹后,检查 config/configure_app.toml
文件的最后两行,如果有 eval_model_cir, eval_model_id
属性,请删去(否则会出现重复配置,从而报错),直接运行 train_test.py
等待训练完成即可,因为我们之前装载了 /workspace/train
文件夹,所以直接在本机的工作路径下的 train/
文件夹中,就能看到压缩好的待上传文件
如果你没看到保存的文件,请到 docker 中的
/data/ckpt/gorge_walk_diy/
中,看你的模型是否有保存,如果显示保存id=0
,则说明你忘记在更新模型时候调用一次agent.learn()
。如果发现有存储的模型参数,那么请按照模型上传方法中的压缩文件格式,自己创建一个压缩包。
本地模型验证方法(检测模型是否读取成功)
-
将你要读取的模型权重文件
model.ckpt-[id].*
放到ckpt/
文件夹下(确保和agent.load_model
的文件格式一致) -
向
config/configure_app.toml
文件最后加入如下两行(如果存在这两行配置,请检查模型编号是否正确):
将 config/configure_app.toml
中的 47 行 run_mode
从 train
改为 eval
,运行 train_test.py
即可自动调用 agent.load_model
传入参数 path=eval_model_dir, id=eval_model_id
,从而读取模型权重,再传入到 kaiwu_agent/gorge_walk/diy/eval_workflow.py
的 workflow(...)
函数中进行验证。
如果想要自己在验证中输出模型信息,请直接对
eval_workflow.py
进行修改,需要注意 docker 每次重启就会重置该文件。
模型上传方法
执行 train_test.py
后,会自动将模型权重保存在 /workspace/tarin/backup_model/
下,其中只需包含三个文件夹,ckpt/, conf/, diy/
:
diy/
:就是工作路径下的code/diy
(diy 为算法名称,可以自行替换为那5个名字之一)conf/
:就是工作路径下的code/conf/
ckpt/
:只需包含模型参数文件,可以从/data/ckpt/gorge_walk_diy/
中拷贝过来的,注意要和config/configure_app.toml
中最后一行的eval_model_id
编号保持一致。
新增模型后检测失败自检方法
- 检查压缩包中的
config/configure_app.toml
的最后几行,变量有没有重复定义,最后两行应该是如下
- 按照本地模型验证方法,看你的本地是否可以启动模型验证过程,本地验证失败可以本地DEBUG,而传上去失败了,什么日志都不会有。
训练无法终止问题
当执行完 train_test.py
后,直接 Ctrl+C
可能存在大量还没终止的进程,占用大量CPU和内存,我们可以再开一个终端,分别执行 pkill bash
和 pkill python3
将他们杀死。(还有些关不掉的不清楚什么原因)