You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
云沙箱
veRL 集成 veFaaS 云沙箱
复制全文
下载 pdf
veRL 集成 veFaaS 云沙箱
本文介绍如何获取 veRL 集成 veFaaS 云沙箱所需的配置参数,并完成环境对接与连通性验证。​
背景信息​
本文涉及的核心技术与平台概念统一说明如下:​
  • 云沙箱:一种提供安全隔离、资源可控的云端临时执行环境,用于安全运行代码或任务,避免对外部系统造成影响。​
  • veRL(Volcano Engine Reinforcement Learning):是火山引擎开源的大模型强化学习训练框架,可以高效完成 LLM 的 RLHF 对齐训练,并支持对接云沙箱实现安全的工具执行与环境交互。​
  • LLM(Large Language Model,大型语言模型):是以 Transformer 为基础、通过海量文本数据训练而成的大参数语言模型,具备理解、生成、推理与对话能力,是当前 AI 应用的核心底座。​
  • RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习):用于让大模型输出更贴合人类意图、更安全可靠的对齐训练方法。​
  • SWE-bench:一个专门用来评测大模型在 “真实软件工程任务” 上能力的基准数据集和评测框架。​
前提条件​
  • 已创建 API 网关实例和服务(域名),用于对外暴露应用接口。详细操作,请参见 创建实例、创建服务。​
操作步骤​
第一步:创建并发布沙箱应用​
创建一个可用于 veRL 训练的云沙箱应用。​
  1. 在左侧导航栏中,选择 云沙箱 > 沙箱应用。​
  1. 单击 创建沙箱应用 按钮。​
  1. 在创建页面,重点注意以下配置。其他配置保持默认,详情的配置说明参见 沙箱应用。​
  • ​
  • ​
    分类​
    参数​
    说明​
    沙箱镜像​
    容器镜像​
    选择 公共镜像。​
    ​
    选择镜像​
    选择 SWE-bench 类型,并选择目标镜像。本示例选择 镜像 ID 为 dm2t11rzrt 的镜像。​
    ​
    启动命令​
    启动沙箱的命令。本示例为curl -fsSL https://vefaas-swe.tos-cn-beijing.ivolces.com/swe-rex/install_1.4.0.sh | bash -s -- ixcprx。​
    ​
    监听端口​
    设置为 8000。​
    网关路由配置​
    域名类型​
    选择 统一域名。​
    ​
    网关实例​
    选择已创建的 API 网关实例。API 网关实例和服务(域名),用于对外暴露应用接口。创建网关实例和服务的操作详细参见 创建实例、创建服务。​
    环境变量​
    环境变量​
    配置沙箱运行的环境变量。本示例需要在默认环境变量的基础上,新增以下环境变量。 单击 使用 JSON 格式编辑,并新增以下配置。​
    ​
    {​
    "HOME": "/root",​
    "PIP_INDEX_URL": "https://mirrors.ivolces.com/pypi/simple/"​
    }​
    ​
    高级配置​
    实例规格​
    为保证评测任务顺利执行,建议在创建沙箱实例时选择至少 2 vCPU ,4 GiB 内存 的实例规格。​
    ​
    执行超时​
    建议设置 650 s,避免在处理复杂任务时超时。​
    ​
  1. 在页面底部单击 确定。​
  1. 创建完成后,在应用详情页右上角单击 发布 > 确定,发布应用。​
第二步:获取沙箱应用 ID 和访问地址​
在沙箱应用详情页中找到集成所需沙箱应用 ID 和访问地址。​
  • 沙箱应用 ID:在 基本信息 > ID, 获取沙箱应用的 ID。​
  • 访问地址:在 网关路由配置 > 配置信息 获取沙箱应用的 访问地址。​
第三步:在 veRL 中配置与验证​
推荐通过配置环境变量的方式,将上述关键信息配置到您的 veRL 训练环境中。​
  1. 配置环境变量​
  • 在您的训练环境中,创建一个 .env 文件,并填入以下内容。​
说明​
请将示例值替换为您自己获取的真实信息。​
  • ​
    # 火山引擎云服务访问凭证​
    VEFAAS_ACCESS_KEY="YOUR_VOLC_ACCESS_KEY_ID"​
    VEFAAS_SECRET_KEY="YOUR_VOLC_SECRET_ACCESS_KEY"​
    ​
    # veFaaS 云沙箱应用配置​
    VEFAAS_FUNCTION_ID="s1lw****" # 示例值,请替换​
    VEFAAS_FUNCTION_ROUTE="https://example.apigateway.volceapi.com" # 示例值,请替换​
    ​
  • ​
    环境变量名​
    说明​
    VOLCE_ACCESS_KEY​
    火山引擎访问密钥。​
    VOLCE_SECRET_KEY​
    ​
    VEFAAS_FUNCTION_ID​
    沙箱应用的 ID。​
    VEFAAS_FUNCTION_ROUTE​
    沙箱应用的访问地址。​
    ​
  1. 最小化验证​
  • 配置完成后,执行以下命令即可验证 veRL 环境与云沙箱连通性。命令将启动 Python 3.12 环境,完成初始化、依赖安装与代码运行,实现单次最小化验证。​
  • ​
    import os​
    import shlex​
    import uuid​
    ​
    from vergent.interaction import AgentEnv, AgentEnvConfig​
    from vergent.tools import ToolConfig​
    ​
    # step 1: create environment​
    run_id = str(uuid.uuid4())​
    impl = os.getenv("DEPLOYMENT", "vefaas").lower()​
    ​
    env_config = {​
    "deployment": {​
    "type": "vefaas",​
    "image": "enterprise-public-2-cn-beijing.cr.volces.com/vefaas-public/python:3.12",​
    "command": "curl -fsSL https://****-test-empty.tos-cn-beijing.ivolces.com/bin/tos_swe_rex.sh | bash -s -- ixcprx",​
    "timeout": 300.0,​
    "startup_timeout": 180.0,​
    "function_id": os.getenv("VEFAAS_FUNCTION_ID"),​
    "function_route": os.getenv("VEFAAS_FUNCTION_ROUTE"),​
    },​
    "env_variables": {​
    "PIP_PROGRESS_BAR": "off",​
    },​
    }​
    env_config = AgentEnvConfig(**env_config)​
    env = AgentEnv(run_id=run_id, env_config=env_config)​
    env.start()​
    ​
    # install tools in the environment​
    tools_config = [​
    {"name": "execute_bash"},​
    {"name": "str_replace_editor"},​
    ]​
    tools = [ToolConfig(**tool_config).get_tool() for tool_config in tools_config]​
    env.install_tools(tools)​
    out = env.communicate("which str_replace_editor")​
    print(f"[Tool check] which str_replace_editor\n -> {out.strip()}\n")​
    ​
    # --- Simple sandbox demo: create script -> run -> output to file -> cat (shows persistence) ---​
    print("=" * 60)​
    print(" Sandbox demo: create script -> run -> output to file -> cat")​
    print("=" * 60)​
    ​
    # 1. Install dependency (persists in this sandbox)​
    print("\n[Step 1] Install numpy")​
    env.communicate("pip install numpy -q")​
    print(" -> done\n")​
    ​
    # 2. Create a runnable script with str_replace_editor (writes result to /tmp/demo_out.txt)​
    _script = "import numpy as np; print(np.array([1,2,3]).sum())"​
    print("[Step 2] str_replace_editor create /tmp/demo.py")​
    env.communicate(f"str_replace_editor create --path /tmp/demo.py --file_text {shlex.quote(_script)}")​
    print(" -> done\n")​
    ​
    # 3. Run the script (output goes to /tmp/demo_out.txt)​
    print("[Step 3] Run script (python3 /tmp/demo.py > /tmp/demo_out.txt)")​
    env.communicate("execute_bash 'python3 /tmp/demo.py > /tmp/demo_out.txt'")​
    print(" -> done\n")​
    ​
    # 4. Cat the output path​
    print("[Step 4] cat /tmp/demo_out.txt")​
    out = env.communicate("cat /tmp/demo_out.txt")​
    print(f" -> {out.strip()}\n")​
    ​
    print("=" * 60)​
    print(" Demo done (sandbox: script + output file persisted)")​
    print("=" * 60)​
    ​
    env.close()​
    ​
​
最近更新时间:2026.03.27 10:17:25
这个页面对您有帮助吗?
有用
有用
无用
无用