RDAgent
🎯 场景:在预训练模型上继续训练
在此工作流中,数据科学智能代理从一个先前训练好的模型(及其训练脚本)开始,在新数据上执行额外的微调,然后将更新后的权重用于后续的推理运行。
🚧 目录结构
您的竞赛文件夹(此处称为 custom_data
)必须包含一个名为 prev_model
的额外子目录,您可以在其中保存旧权重和生成它们的代码:
ds_data
└── custom_data
├── train.csv
├── test.csv
├── sample_submission.csv # 可选
├── description.md # 可选
├── sample.py # 可选
└── prev_model # ← 新增
├── models/ # 先前的检查点(例如 *.bin, *.pt, *.ckpt)
└── main.py # 您之前使用的训练/推理脚本
如果您的比赛提供自定义的评分/验证脚本,请将它们像以前一样保存在 ds_data/eval/custom_data
下。
🔧 环境设置
在 .env
中添加或更新以下变量(显示示例):
# 所有数据科学运行必需
dotenv set DS_LOCAL_DATA_PATH <您的本地路径>/ds_data
# 可选:选择 docker / conda 等
dotenv set DS_CODER_COSTEER_ENV_TYPE docker
🚀 运行时工作原理
首次运行
rdagent 检测到 prev_model/models。
它加载最新的检查点,并根据 prev_model/*.py 下找到的代码(或者如果您重写它,则根据您自己的管道)准备微调。
微调后的权重被写入 ./workspace_input/models。
后续运行
当您执行 python ./workspace_input/main.py 时,脚本首先在 ./workspace_input/models 中查找检查点。
如果找到,它会跳过微调,直接进行预测/提交生成。
⏰ 管理超时
默认情况下:
-
调试循环:1 小时(
DS_DEBUG_TIMEOUT=3600
秒) -
完整运行:3 小时(
DS_FULL_TIMEOUT=10800
秒)
您可以在 .env
中覆盖任一值:
# 给调试循环 45 分钟,完整循环 6 小时
dotenv set DS_DEBUG_TIMEOUT 2700
dotenv set DS_FULL_TIMEOUT 21600
🚀 运行应用程序
您可以使用以下命令直接运行应用程序:
dotenv run -- python rdagent/app/finetune/data_science/loop.py
--competition <比赛ID>
然后,您可以运行与循环的每一轮相对应的测试集分数。
dotenv run -- python rdagent/log/mle_summary.py grade <日志文件夹的URL>
这里的 <日志文件夹的URL>
指的是在运行期间生成的日志文件夹的父目录。
📥 可视化研发过程
我们提供了一个 Web UI 来可视化日志。您只需运行:
streamlit run rdagent/log/ui/dsapp.py
然后您可以输入日志路径并可视化研发过程。
🔍 MLE-bench 指南:通过 MLE-bench 运行 ML 工程
📝 MLE-bench 概述
MLE-bench 是一个全面的基准测试,旨在利用真实世界场景评估 AI 系统的 ML 工程能力。该数据集包含 75 个 Kaggle 比赛。由于 Kaggle 没有为这些比赛提供预留的测试集,该基准测试包含了准备脚本,用于将公开的训练数据拆分为新的训练集和测试集,并为每个比赛提供了评分脚本,以准确评估提交分数。
🔧 为 MLE-bench 设置环境
在 MLE-bench 上运行 R&D-Agent 被设计为完全自动化。无需手动下载和数据准备。只需将环境变量 DS_IF_USING_MLE_DATA
设置为 True
。
在运行时,R&D-Agent 将自动构建 rdagent/scenarios/kaggle/docker/mle_bench_docker/Dockerfile
中指定的 Docker 镜像。该镜像负责下载 MLE-bench 所需的数据集和评分文件。
注意:首次运行可能会比后续运行耗时更长,因为 Docker 镜像和数据是首次下载和设置。
dotenv set DS_LOCAL_DATA_PATH <您的本地目录>/ds_data
dotenv set DS_IF_USING_MLE_DATA True
🔨 配置 Kaggle API
下载 Kaggle 比赛数据需要 Kaggle API。您可以按照以下步骤设置 Kaggle API:
-
在 Kaggle 网站注册并登录。
-
点击头像(通常在页面右上角) -> Settings -> Create New Token,将下载一个名为
kaggle.json
的文件。 -
将
kaggle.json
移动到~/.config/kaggle/
。 -
修改 kaggle.json 文件的权限:
chmod 600 ~/.config/kaggle/kaggle.json
更多关于 Kaggle API 设置的信息,请参阅 Kaggle API。
🔩 为 MLE-bench 设置环境变量
除了自动下载基准测试数据,您还必须配置用于执行比赛代码的运行时环境。
使用环境变量 DS_CODER_COSTEER_ENV_TYPE
选择执行模式:
-
当设置为
docker
(默认值)时,RD-Agent 使用官方 Kaggle Docker 镜像 (gcr.io/kaggle-gpu-images/python:latest
),以确保所有必需的包都可用。 -
如果您更喜欢使用自定义 Docker 设置,可以通过修改
DS_DOCKER_IMAGE
或DS_DOCKERFILE_FOLDER_PATH
来进行配置。 -
或者,如果您的比赛工作只需要基本库,您可以将
DS_CODER_COSTEER_ENV_TYPE
设置为conda
。在此模式下,您必须创建一个名为“kaggle”的本地 conda 环境并预安装必要的包。RD-Agent 将在此“kaggle”conda 环境中执行比赛代码。
# 配置运行时环境:在 'docker'(默认)或 'conda' 之间选择
dotenv set DS_CODER_COSTEER_ENV_TYPE docker
附加指南
在研发阶段结合不同的 LLM 模型
您可以在研发阶段结合不同的 LLM 模型。
默认情况下,当您设置环境变量 CHAT_MODEL 时,它会覆盖两个研发阶段。在为开发阶段自定义模型时,您可以设置:
# 此示例将模型设置为“o3-mini”。对于某些模型,推理工作量应设置为“None”。
dotenv set LITELLM_CHAT_MODEL_MAP '{"coding":{"model":"o3-mini","reasoning_effort":"high"},"running":{"model":"o3-mini","reasoning_effort":"high"}}'
最小镜像,更少 CVEs。威胁情报优先处理其余问题。试试 Minimus 容器镜像。