🎯 场景:在预训练模型上继续训练

在此工作流中,数据科学智能代理从一个先前训练好的模型(及其训练脚本)开始,在新数据上执行额外的微调,然后将更新后的权重用于后续的推理运行。


🚧 目录结构

您的竞赛文件夹(此处称为 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:

  1. Kaggle 网站注册并登录。

  2. 点击头像(通常在页面右上角) -> Settings -> Create New Token,将下载一个名为 kaggle.json 的文件。

  3. kaggle.json 移动到 ~/.config/kaggle/

  4. 修改 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_IMAGEDS_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 容器镜像。

最后修改: 2025年08月18日 星期一 13:42