本工作来自北京大学王选所赵东岩、张辉帅老师团队,第一作者为北京大学前沿交叉学院三年级硕士袁旦龙。
AI 编程这么火,想训练个 SWE Agent 却没有资源怎么办?
最近,软件工程智能体(后统称 SWE Agent)由于其清晰的落地场景和巨大的应用价值受到了学术界和工业界的广泛关注。
然而,当上手训练 SWE Agent 时,却发现事情并不简单。当前 SWE Agent 的训练都是通过容器(Docker 或 Podman)来实现运行环境的隔离和复现。但是,容器的高昂开销却把很多从业者拒之门外。
那么能不能做一个不依赖容器的低成本框架,让资源不多的从业者也能训练自己的 SWE Agent 呢?SWE-MiniSandbox 正是在这样的初衷下开源了~
SWE-MiniSandbox 是一个无需容器(Container-Free)的软件工程沙盒环境。其目标是解决当前 SWE Agent 训练中依赖容器的痛点:需要构建和维护大量的容器镜像,并运行高性能的容器服务器集群,导致了高昂基础设施和运维成本。因此,当扩展批量规模或提高 rollout 数量时,容器服务器承载量成为主要性能瓶颈,造成计算资源受限情况下训练无法扩展,而缺乏容器管理权限或没有专用编排基础设施的从业人员则无法训练自己的 Agent。
与容器环境相对,SWE-MiniSandbox 在实现进程和文件系统隔离的过程中绕过了对容器或重型镜像的依赖,通过按实例划分的挂载命名空间(mount namespaces)和基于 chroot 的文件系统隔离机制,为每个实例创建隔离的终端会话和私有目录。
在此基础上,SWE-MiniSandbox 实现了一套环境预缓存流水线:构建基于轻量级 Python conda+venv 的混合环境,安装特定任务的依赖项,并在不同运行间复用压缩的缓存产物。通过将环境和代码仓库打包成缓存,利用基于 Ray 的资源控制和信号量来限制并发解压,从而实现 I/O 的精细管理。
通过直接与现有核心 SWE 工具集成 ——SWE-Rex(终端管理)、SWE-agent(任务求解)和 SkyRL(可扩展的多节点 RL),SWE-MiniSandbox 成为了 SWE Agent 任务中容器后端的一个无缝、即插即用的替代品。
在实际效果上,SWE-MiniSandbox 使环境缓存大小降低至同类基于容器方法的5%左右,将环境准备时间缩短至容器基线的25%,并且消除了对额外容器服务器的需求。
而在这样低资源依赖下,该环境在同等数据和参数设置下训练出的 SWE Agent 和容器环境下训练出的 Agent 在 SWE-bench Verified 上评测效果相当,可以说,大幅降低了 SWE Agent 的入门门槛。
具体方法
I. 无容器隔离机制(Container-Free Isolation)
核心优化:Chroot + Mount Namespaces + Terminal Isolation
Chroot
Mount Namespaces(挂载命名空间)
Terminal Isolation(终端隔离)
✅ 优势:
II. 环境预缓存流水线(Pre-Caching Pipeline)
传统解决方案
每个任务都需要建立独立镜像,并基于 conda 安装独立 python 环境
SWE-MiniSandbox 解决方案
1. 构建轻量级 Python 环境(conda+venv)
2.I/O 瓶颈管理与并发控制
为解决任务高并发下磁盘队列拥堵问题,为并发任务总吞吐量设置上界:
SWE-MiniSandbox 通过结合信号量和 ray 资源标签机制对并发数进行控制。
III. 与现有工具链的集成
在 RL 分布式扩展方面,该框架基于 Ray 构建,支持多节点资源分配调度,适应大规模 RL 训练需求。
实验效果
I. 更小体积
传统容器方法需要维护动辄 GB 级的容器镜像,而 SWE-MiniSandbox 单环境仅需维护 100MB 左右轻量化 venv 缓存。例如在 SWE-smith 数据集上,SWE-MiniSandbox 环境缓存大小仅为传统容器镜像的 5%。
II. 相同训练效果,更快的环境启动时间
实验结果显示 SWE-MiniSandbox 框架的训练质量(SWE-bench Verified)和传统 Docker 框架几乎一致,同时在环境准备时间上仅仅是 Docker 的 25% ,显著减少了 rollout 的平均时间开销。
III. 优秀的多节点可扩展性
在多节点训练中 SWE-MiniSandbox 会被平均分配到各个节点上,因此在负载合理的情况下多节点的平均环境启动速度和单节点几乎一致。
IV. 可视化
通过拆解强化学习 rollout 的时间代价并对各部分进行可视化分析,发现 SWE-MiniSandbox 在环境准备时间(蓝色)上明显短于 Docker 环境。
除此之外,使用 1600 条数据在 SWE-Agent-LM-7B 上训练 200 步后对比 SWE-MiniSandbox 和 Docker 环境的 Reward 曲线,发现二者走势基本一致,从而进一步验证了 SWE-MiniSandbox 提供的无容器环境能够实现和传统 Docker 环境一致的训练效果。
未来展望
在 SWE-MiniSandbox 开源基础上,团队认为未来有几个方向可以考虑: