项目简介

Benchmax是一个轻量级、与训练框架无关的库,旨在帮助开发者为开源大语言模型(LLM)的强化学习(RL)微调定义、运行和并行化各种环境。它将LLM微调任务分解为可组合的部分:工具集(LLM调用、外部API、计算器等)、输出解析逻辑和奖励函数。Benchmax尤其强调对Model Context Protocol (MCP) 的支持,通过部署MCP服务器来托管和暴露这些RL环境,允许LLM客户端以标准化的JSON-RPC协议与之交互。

主要功能点

  • 多样的RL环境: 提供一系列开箱即用的RL环境,涵盖多跳搜索、电子表格操作和CRM代理等,以支持LLM微调。
  • 环境自定义与组合: 支持轻松定义和组合自己的环境,能够将现有的外部API、LLM调用或第三方MCP服务器等集成作为工具。
  • 内置MCP服务器: 仓库包含可部署的MCP服务器实现 ('proxy_server.py'),结合特定的 'workdir' 配置(如CRM或Excel环境的工具和奖励逻辑),托管并暴露环境中的工具、资源和奖励函数,支持LLM客户端通过JSON-RPC协议与之交互。
  • 训练器集成: 与SkyRL等主流RL训练库无缝集成,并设计为训练框架无关。
  • 多节点并行执行: 支持通过SkyPilot等工具在多节点上高效并行化环境运行,确保各Rollout之间的状态隔离。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/cgftinc/benchmax.git
    cd benchmax
  2. 安装 uv (Python包管理器): 如果您尚未安装 'uv',可以通过pip安装:
    pip install uv
  3. 安装项目依赖:
    uv pip install -e .

服务器配置

当您使用Benchmax启动一个RL环境时(例如通过'LocalProvisioner'或'SkypilotProvisioner'),它会在后台自动部署一个或多个MCP服务器实例。要连接到其中一个服务器,您的MCP客户端需要知道其网络地址和API密钥。以下是Benchmax部署的MCP服务器的典型启动配置信息,用于帮助您理解其工作方式。通常您无需手动执行此命令,Benchmax会为您处理服务器的启动和管理:

{
  "server_name": "Benchmax 环境 MCP 服务",
  "command": "uv",
  "args": [
    "run",
    "proxy_server.py",
    "--port",
    "8080",
    "--api-secret",
    "your-api-secret",
    "--workdir-path",
    "path/to/environment/workdir"
  ],
  "notes": "此配置描述了Benchmax部署的一个MCP服务器实例。'--port' 指定服务器监听端口,'--api-secret' 是用于客户端认证的密钥,'--workdir-path' 指向包含环境定义(工具、奖励函数等)的工作目录。LLM客户端通过提供的地址和API密钥连接到此服务器,以调用环境功能。"
}

基本使用方法

Benchmax的核心在于定义和运行RL环境,LLM代理或RL训练器会通过其部署的MCP服务器与这些环境互动。

  1. 准备数据集: 例如,针对Excel环境准备数据,它会加载Excel MCP列出的工具以准备系统提示。
    uv run src/benchmax/adapters/skyrl/benchmax_data_process.py \
      --local_dir ~/data/excel \
      --dataset_name spreadsheetbench \
      --env_path benchmax.envs.excel.excel_env.ExcelEnvLocal
  2. 运行训练并部署环境(含MCP服务器): 使用Benchmax提供的示例脚本来启动训练过程,这会自动部署多个MCP服务器实例,每个实例托管一个环境Rollout。
    bash examples/skyrl/run_benchmax_excel.sh
    这个例子会启动100个MCP服务器实例(5个节点,每个节点20个服务器)并行运行Excel环境。您的LLM代理或RL训练器(如SkyRL)将连接到这些由Benchmax管理的MCP服务器,通过调用其暴露的工具和接收奖励来与环境交互。

信息

分类

AI与计算