Agent Lightning 如何用 LLM-in-Sandbox 示例在 Minikube 上训练沙箱智能体
2026/9/14 1:35:37 网站建设 项目流程

Agent Lightning 如何用 LLM-in-Sandbox 示例在 Minikube 上训练沙箱智能体

【免费下载链接】agent-lightningThe absolute trainer to light up AI agents.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-lightning

这篇文章解决一个部署任务:用 Agent Lightning >=v1.0 的 LLM-in-Sandbox 示例,在本地 Minikube 上把Qwen/Qwen3-4B-Instruct-2507的通用指令智能体跑起来训练。该示例使用 K8s controller,每次 rollout 在 Kubernetes Job 里执行,模型调用经 AGL Gateway 路由到verl管理的 vLLM server,智能体依赖与训练环境隔离。按文档要求,这套训练需要 4× A100 80GB GPU,示例目前仅支持同步(Sync only)trainer 模式。

环境准备

文档列出的前置条件:

  • Python 3.12
  • Docker
  • Minikube
  • kubectl
  • Minikube 内支持构建镜像

GPU 训练环境按 安装指南 准备。先在项目根目录安装基础环境:

cd <this-repo> uv sync

然后安装verl与 FlashAttention。由于verlvllmtorch的版本强耦合,文档推荐用scripts/setup_verl.sh安装经过测试的固定版本并本地构建flash-attn。脚本支持verl==0.8.0+cu130(文档推荐,需 CUDA 13.0)或verl==0.7.1+cu129

source .venv/bin/activate bash scripts/setup_verl.sh 0.8.0 cu130

脚本会花 10-30 分钟完成(取决于 CPU 核心数)。最后,默认所有任务都会把日志和轨迹上传到 Weights & Biases,运行前先登录:

uv run wandb login

注意一点边界说明:示例自带的 Minikube 部署只用于测试,文档明确要求生产环境应换成 production-grade 的 Kubernetes 集群。

准备训练与验证数据

公开数据托管在 Hugging Face 数据集daixuancheng/llm-in-sandbox-rl上,转换脚本来自上游llm-in-sandbox-rl仓库。从项目根目录克隆上游仓库并转换全部数据集配置:

git clone --depth 1 https://github.com/llm-in-sandbox/llm-in-sandbox-rl.git /tmp/llm-in-sandbox-rl python /tmp/llm-in-sandbox-rl/examples/llm_in_sandbox/convert_llm_sandbox_dataset.py \ --all \ --output-dir examples/llm-in-sandbox/data

转换器会下载以下 Hugging Face 配置:

  • 训练:instruct_pretraintrainsplit,3,600 条样本)
  • 验证:math_minibiomed_minilong_context_minitestsplit)

转换命令会直接在examples/llm-in-sandbox/data/下创建对应目录,无需手动移动文件。示例默认使用的文件为:

SplitPath
Trainingexamples/llm-in-sandbox/data/llm_sandbox_instruct_pretrain/train_verl.json
Validationexamples/llm-in-sandbox/data/llm_sandbox_math_mini/test_verl.json
Validationexamples/llm-in-sandbox/data/llm_sandbox_biomed_mini/test_verl.json
Validationexamples/llm-in-sandbox/data/llm_sandbox_long_context_mini/test_verl.json

如果你单独生成或下载了这些文件,把train_verl.jsontest_verl.json放进对应目录,或直接把目录传给启动脚本(见下文)。

在 Minikube 上启动训练

一切就绪后,从仓库根目录运行启动脚本:

examples/llm-in-sandbox/run.sh

run.sh 按顺序完成 5 件事:

  1. 创建本地 Minikube 集群(minikube delete -p minikubeminikube start --memory=65536 --cpus=16 --driver=docker);
  2. 用 Dockerfile.agent 构建llm-in-sandbox-agent:dev镜像;
  3. 启动agl-server(端口 8080,default_proxy.model_name=Qwen/Qwen3-4B-Instruct-2507),并轮询http://localhost:8080/healthz直到服务就绪;
  4. 启动 K8s 模式的agl-controllerrunner_type=k8sk8s_runner.ttl_after_finished=600),随后启动verltrainer 入口 train_llm_in_sandbox.py;
  5. 退出时清理 server、controller 和 Ray 进程。

运行前要知道两个副作用:脚本开头就会先执行一轮清理(pkillagl-serveragl-controller、训练脚本进程,并ray stop --force),然后minikube delete删除已有的 minikube 集群再重建——如果本机有同名 minikube 集群正在使用,会被删掉。停止训练按Ctrl+C即可触发同样的清理,不要在清理期间反复按键。

训练运行时,controller 为每个 rollout 创建一个 Kubernetes Job。Job 内执行 job-template.yaml 定义的agent容器(llm-in-sandbox-agent:dev镜像,请求 1 CPU/2Gi、限制 4 CPU/8Gi),runner.py 在其中运行沙箱智能体、通过 AGL Gateway 路由模型调用、评估最终答案并向 gateway 上报agent_outputreward事件。

按需覆盖数据目录与 verl 参数

如果数据不在默认位置,或只想用部分验证集,把目录传给run.sh;多个验证目录用英文逗号分隔:

examples/llm-in-sandbox/run.sh \ --train-data-dir /path/to/train-data \ --val-data-dir /path/to/math-data,/path/to/biomed-data,/path/to/long-context-data

其中/path/to/...替换为你实际的目录路径(每个验证目录下需有test_verl.json,训练目录下需有train_verl.json)。验证集可从math_minibiomed_minilong_context_mini中任选一个或多个。

额外的verl配置可以以 dotlist 覆盖的形式追加,例如缩短训练轮数、减少每条 prompt 的 rollout 数:

examples/llm-in-sandbox/run.sh \ trainer.total_epochs=2 \ actor_rollout_ref.rollout.n=2

这些参数最终会合并进 train_llm_in_sandbox.py 中的verl_default_config()(默认total_epochs=15rollout.n=8、模型Qwen/Qwen3-4B-Instruct-2507)。

验证运行状态

文档给出的可检查点:

  • run.sh内置了就绪检查:对http://localhost:8080/healthz最多轮询 60 秒,curl成功即认为agl-server可用。你也可以在训练过程中自行curl该地址确认 gateway 存活。
  • 训练入口启动后会打印 Preflight 信息,列出 Agent Lightning 地址、模型、训练集样本数以及每个验证集的样本数,可用来确认数据加载是否符合预期。
  • 每个 rollout 结束,容器内 runner 会打印reward=<数值> reason=<来源>日志并上报 reward 事件;任务日志与轨迹按默认配置上传到 W&B,在 W&B 中查看训练曲线与验证结果。

限制与边界

  • 硬件与模式:该示例文档标注为 4× A100 80GB、K8s controller、Sync only trainer 模式,不要把它当作多机或异步训练方案套用。
  • Minikube 定位:随仓库提供的 Minikube 配置只面向测试;上生产前需要替换为 production-grade 集群。
  • 清理影响:run.sh的清理逻辑会终止agl-serveragl-controller、训练进程并执行ray stop --force,同一机器上若有其他 Ray 作业会受到影响,运行前确认没有共用 Ray 的进程。

完成以上步骤,你就在 Minikube 上得到一条完整的 rollout 驱动训练链路:K8s Job 跑沙箱智能体、Gateway 路由模型调用、verl 侧更新Qwen/Qwen3-4B-Instruct-2507权重。更深入的 controller 行为可以参考 controller 配置文档。

【免费下载链接】agent-lightningThe absolute trainer to light up AI agents.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-lightning

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询