ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RD-Agent DevContainer 内部开发环境详解:MLE 数据科学场景的容器配置、运行步骤与提交评分实操

RD-Agent DevContainer 内部开发环境详解:MLE 数据科学场景的容器配置、运行步骤与提交评分实操 RD-Agent DevContainer 内部开发环境详解MLE 数据科学场景的容器配置、运行步骤与提交评分实操【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent本文以 RD-Agent 仓库中 .devcontainer/README.md 为核心完整讲解该 DevContainer 的适用边界、devcontainer.json 与 Dockerfile 的配置细节、启动 Kaggle/MLE 数据科学研发循环的标准步骤以及在容器内使用 mlebench 对 submission 文件进行评分的完整流程。读完后你将能够理解该开发容器的目录映射与资源参数设计并掌握从“打开容器”到“跑通一轮 RD loop”再到“本地评分 submission”的全链路操作。一、定位说明这是面向内部开发的 DevContainer而非公开发行环境.devcontainer/README.md 开篇即明确声明This dev container is not for public development. Please dont use it if you are just a public open-source user.也就是说仓库中的.devcontainer目录仅供项目内部开发使用普通开源用户不应依赖它。文档给出两条关键前提README 称之为“不公开”的原因本地必须已有内部镜像仓库中的基础镜像rdagentappregistry.azurecr.io/rd-agent-mle:20250623且 IDE 已安装 DevContainer 扩展Kaggle 数据集统一放置在宿主机路径/home/shared/RD-Agent/kaggle。此外README 提示配置文件中还硬编码了若干内部 URL这也是该环境不对外公开的原因。对于公开用户仓库提供的是标准的pip install安装路径见 pyproject.toml 与 Makefile 中的install目标本文不展开。适用前提小结你有权限拉取 Azure Container Registry 内部镜像镜像 tag 固定为20250623宿主机上存在按约定路径组织的 Kaggle 数据目录使用 VS Code 远程Remote方式连接开发机。二、.devcontainer目录的文件构成.devcontainer目录仅包含三个文件各自职责如下文件作用README.md使用说明前提条件、启动步骤、评分方法devcontainer.jsonDevContainer 的完整构建与运行配置Dockerfile基于内部镜像的最小化构建定义2.1 Dockerfile基于内部镜像的“薄”构建层Dockerfile 的全部有效内容只有两段# 1. Pull down your Azure Container Registry image FROM rdagentappregistry.azurecr.io/rd-agent-mle:20250623 # 2. (Optional) install any additional tools you need RUN apt update \ apt install -y git bash-completion可以看出设计思路是所有重量级依赖Python 环境、MLE-Bench、训练/竞赛相关依赖都已预置在rd-agent-mle:20250623镜像内DevContainer 构建阶段只在其上安装git与bash-completion两个基础工具。这解释了 README 为什么要求“本地已有该镜像”——构建过程本身并不会下载大体积内容本地没有该镜像时docker build会在FROM阶段失败。2.2 devcontainer.json逐项参数解析devcontainer.json 共 29 行是理解整个开发环境的关键。逐字段说明如下配置项值说明namerd-agent-mle DevContainer容器名称与 MLE 场景镜像对应build.dockerfile/build.contextDockerfile/..构建上下文为仓库根目录Dockerfile 位于.devcontainer/内workspaceFolder/workspace/RD-Agent容器内的工作目录workspaceMountsource${localWorkspaceFolder},target/workspace/RD-Agent,typebind,consistencycached把宿主机上你打开的本地目录以 bind 方式挂载到容器内的/workspace/RD-AgentremoteUserroot容器内以 root 身份运行便于访问内部数据目录与 GPU 设备settings.terminal.integrated.shell.linux/bin/bashVS Code 集成终端默认使用 bashmountssource/home/shared/RD-Agent/kaggle,target/tmp/kaggle,typebind,consistencycached,readonly把宿主机的 Kaggle 数据目录只读挂载到容器内/tmp/kaggleextensionsms-python.python、ms-python.vscode-pylance、ms-toolsai.jupyter容器内自动安装的 VS Code 扩展Python、Pylance、JupyterrunArgs--init、--shm-size1g、--env-file ${localWorkspaceFolder}/.devcontainer/env、--networkhost、--gpusall运行时参数见下文详解postCreateCommandmake dev容器创建完成后自动执行仓库根目录 Makefile 中的dev目标几个runArgs参数的工程含义值得展开--networkhost容器直接共享宿主机网络栈。对 Kaggle 数据下载、内部 LLM/服务调用这类网络交互密集的场景可避免桥接网络的 NAT 与 DNS 问题--gpusall将宿主机全部 GPU 透传给容器数据科学循环中的模型训练/评估依赖 GPU 算力--env-file ${localWorkspaceFolder}/.devcontainer/env从仓库内.devcontainer/env文件注入环境变量。该文件不随仓库分发属于每个开发者自己的密钥配置对应 README 中要求单独配置 Kaggle Key 的步骤--shm-size1g扩大/dev/shm满足深度学习数据加载多进程 DataLoader对共享内存的需求。workspaceMount与mounts两条挂载规则共同构成了该开发环境的“数据通路”宿主机 ${localWorkspaceFolder} ──bind──▶ 容器 /workspace/RD-Agent 代码可写 宿主机 /home/shared/RD-Agent/kaggle ──bind(readonly)──▶ 容器 /tmp/kaggle数据只读数据目录只读是有意设计Kaggle 竞赛数据体积大、更新频率低由内部统一维护在/home/shared/RD-Agent/kaggle容器侧只消费不修改。2.3 postCreateCommand 的make dev做了什么容器首次创建完成后会自动执行make dev。对照 Makefile 中该目标的定义dev: $(PIPRUN) pip install -U pip setuptools wheel $(PIPRUN) pip install -e .[docs,lint,package,test] -c $(CONSTRAINTS_FILE) $(PIPRUN) pip install -U kaggle if [ $(CI) ! true ] command -v pre-commit /dev/null 21; then pre-commit install --hook-type pre-push; fi即以可编辑模式安装 RD-Agent 本体附带docs、lint、package、test四组可选依赖并按当前 Python 版本使用 constraints 约束文件锁版本升级kaggle命令行工具并在非 CI 环境下注册 pre-commit 的 pre-push 钩子。这一步完成后容器内可以直接用python rdagent/app/data_science/loop.py ...这类源码路径方式运行无需额外pip install。三、运行 DevContainer 的标准步骤继承原文档操作以下三步完整继承自 .devcontainer/README.md 的 “Steps to run the dev container” 章节。3.1 前提确认# 本地需已有该镜像内部仓库 docker images | grep rd-agent-mle # 期望看到: rdagentappregistry.azurecr.io/rd-agent-mle 20250623同时确认 IDEVS Code已安装 Dev Containers 扩展且宿主机上/home/shared/RD-Agent/kaggle下存在竞赛数据。3.2 配置 Kaggle 凭据在容器终端内导出你的 Kaggle 凭据README 特别强调“不要分享该 Key”export KAGGLE_USERNAME export KAGGLE_KEY这两个环境变量供kaggle/mlebench工具在需要时向 Kaggle 平台请求数据。更规范的做法是将其写入.devcontainer/env文件——devcontainer.json的runArgs已通过--env-file ${localWorkspaceFolder}/.devcontainer/env声明了在容器启动时注入该文件中的变量。3.3 启动数据科学研发循环README 给出的启动命令python rdagent/app/data_science/loop.py --competition nomad2018-predict-transparent-conductors结合入口 rdagent/app/data_science/loop.py 的源码main()基于fire解析命令行参数完整参数集为参数默认值含义--pathNone形如$LOG_PATH/__session__/1/0_propose的会话路径指定后从该断点恢复 loop--checkoutTrue恢复时对 path 之后会话日志的清理策略True清理False保留--checkout_pathNone指定时新 loop 保存到该路径原路径保持不变--step_nNone只运行 N 个 stepNone表示无限运行直到出错或 Ctrl-C--loop_nNone只运行 N 个完整 loop与step_n同时给出时任一满足即停--timeoutNoneloop 总时长上限内部 timer 可识别的字符串格式--competitionbms-molecular-translation竞赛名会被写入DS_RD_SETTING.competition--replace_timerTrue加载历史会话时是否用session.timer替换计时器--exp_gen_clsNone指定时动态导入该实验生成类替换现有exp_gen源码中的关键流程是设置竞赛名 →path为空则新建DataScienceRDLoop(DS_RD_SETTING)否则调用DataScienceRDLoop.load(path, checkout..., replace_timer...)恢复会话 →asyncio.run(kaggle_loop.run(step_n..., loop_n..., all_durationtimeout))。因此 README 的示例命令相当于“针对nomad2018-predict-transparent-conductors竞赛新建一个无限运行的 RD 循环”实际使用时通常搭配--step_n/--loop_n做有限轮调试。竞赛相关配置项如competition、local_data_path、if_using_mle_data等定义在 rdagent/app/kaggle/conf.py 的KaggleBasePropSetting环境变量前缀KG_与 rdagent/app/data_science/conf.py 的DataScienceBasePropSetting前缀DS_中均可通过对应前缀的环境变量覆盖。四、VS Code 远程使用要点为什么必须先进入 RD-Agent 目录.devcontainer/README.md 的 “Additional Notes” 部分给出了一条容易被忽视、但直接决定环境能否生效的操作约束You **must open VS Code remotely and enter theRD-Agentdirectory before running the DevContainer configuration (.devcontainer/devcontainer.json). Otherwise, the workspace and path mappings will not work as expected.从源码结构看这条约束的根源正是devcontainer.json中的workspaceMount其source取的是${localWorkspaceFolder}——即你当前在 VS Code 中打开的那个本地文件夹。如果远程连接后打开的不是RD-Agent仓库目录bind 挂载会把错误的目录挂到容器的/workspace/RD-AgentpostCreateCommand里的make dev、代码与日志路径全部会指向错误位置。README 给出的正确操作顺序远程连接到开发机在 VS Code 中打开RD-Agent文件夹按CtrlShiftPMac 为CmdShiftP输入并选择“Dev Containers: Reopen in Container”。选择 “Reopen in Container” 而不是 “Open in DevContainer” 的原因前者会基于当前工作区重新加载.devcontainer/devcontainer.json并重建容器从而保证localWorkspaceFolder正确指向仓库根目录。五、在 DevContainer 中为 submission 评分mlebench 流程README 最后一章给出了容器内的评分方法共两步将你的提交文件保存为submission.csv原文档写作./sumission.csv系笔误执行评分DS_COMPETITIONyour competition name conda run -n mlebench mlebench grade-sample submission.csv $DS_COMPETITION --data-dir /tmp/kaggle/zip_files/这条命令能工作依赖前面配置章节铺设的两条链路1/tmp/kaggle/zip_files从哪里来。devcontainer.json将宿主机的/home/shared/RD-Agent/kaggle只读映射到容器内/tmp/kaggle因此评分命令的--data-dir /tmp/kaggle/zip_files/实际消费的是宿主机共享目录下的zip_files子目录。该子目录的生成逻辑可见 rdagent/scenarios/kaggle/kaggle_crawler.py当配置中if_using_mle_data为真时爬虫会在本地数据路径下创建zip_files目录并通过mlebench prepare -c {competition} --data-dir ./zip_files把竞赛原始数据包下载为 zip再把预处理后的prepared/public数据拷贝到local_data_path/{competition}。docs/scens/data_science.rst 中也给出了该目录结构示意ds_data/zip_files/存放从 Kaggle 下载的原始竞赛 zip 包。2运行时评估同样复用同一数据目录。rdagent/scenarios/data_science/test_eval.py 中构造评估环境时将{DS_RD_SETTING.local_data_path}/zip_files挂载到容器内的/mle/data供 MLE-Bench 的评分容器消费。也就是说loop 运行时的 test 评估与开发容器内手工mlebench grade-sample使用的是同一份 zip 数据源两者结果口径一致——这正是“在 DevContainer 里直接评分”的实用价值不上传 Kaggle 也能快速获得 submission 的本地分数。grade-sample属于 MLE-Bench 的本地评分入口给定 submission 文件与竞赛名在mlebenchconda 环境预置于rd-agent-mle基础镜像中内对照标准答案计算得分。六、适用前提与限制汇总受众限制该 DevContainer 面向内部开发公开用户请走标准安装流程配置中硬编码的内部 URL 与内部镜像仓库rdagentappregistry.azurecr.io是主要障碍镜像版本基础镜像 tag 固定为20250623见 Dockerfile依赖更新依赖内部重新发布镜像而非 DevContainer 构建阶段资源要求--gpusall要求宿主机具备可用的 GPU 与容器运行时支持--networkhost表示容器无独立网络隔离数据依赖评分与数据下载均绑定/home/shared/RD-Agent/kaggle容器内/tmp/kaggle这一共享路径约定更换数据位置需同步修改 devcontainer.json 的mounts与相关DS_LOCAL_DATA_PATH配置密钥管理Kaggle 凭据通过环境变量或.devcontainer/env文件注入切勿提交到仓库或对外分享。参考文件索引路径内容.devcontainer/README.md内部使用声明、启动步骤、评分流程本文核心文档.devcontainer/devcontainer.json容器构建与运行配置挂载、GPU、扩展、postCreate.devcontainer/Dockerfile基于rd-agent-mle:20250623的最小构建Makefiledev目标可编辑安装 kaggle 工具 pre-commitrdagent/app/data_science/loop.py数据科学 RD 循环入口及参数说明rdagent/app/data_science/conf.pyDS_前缀的数据科学场景配置项rdagent/app/kaggle/conf.pyKaggle 场景基础配置local_data_path、if_using_mle_data等rdagent/scenarios/kaggle/kaggle_crawler.pyzip_files数据目录的mlebench prepare生成逻辑rdagent/scenarios/data_science/test_eval.py运行时 test 评估挂载/mle/data的实现【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表