Agent Lightning
扫码查看

一个可扩展的AI智能体训练框架

Agent Lightning

综合介绍

Agent Lightning 是一个由微软开发的灵活且可扩展的训练框架。 它主要的功能是帮助开发者优化和训练各类AI智能体(Agent)。这个框架的设计目标是连接现有的智能体开发框架(比如 AutoGen, LangChain, OpenAI Agents SDK)和大型语言模型(LLM)的训练系统。 简单来说,不论你使用哪种框架来构建你的AI智能体,Agent Lightning 都可以帮助你通过强化学习(RL)等方法来收集数据和优化模型,从而让智能体的性能变得更好,更能适应真实世界复杂多变的任务。 它的核心架构由“服务器”和“客户端”两部分组成,服务器负责管理训练数据和提供模型接口,而客户端则负责运行智能体并与服务器交互,这个设计巧妙地将智能体的业务逻辑和模型的训练过程分离开来。

功能列表

  • 框架兼容性: 支持与多种主流AI智能体框架无缝集成,例如OpenAI Agents SDK, Microsoft AutoGen, 和 LangChain等。
  • 模型优化: 通过数据驱动的技术(如模型微调、提示词调整、模型选择等)来定制和优化AI智能体。
  • 强化学习 (RL): 利用强化学习从智能体的交互数据中学习,优化模型的长期表现和用户体验。
  • 解耦架构: 采用服务器-客户端(Server-Client)架构,将智能体的工作流程开发与模型训练逻辑完全分离。
  • 数据收集与处理: 客户端负责执行任务并收集交互轨迹(trajectories),服务器则聚合这些数据并计算损失,用于优化语言模型。
  • 错误监控: 内置错误监控功能,能够跟踪智能体执行状态,检测失败模式并报告详细错误类型,从而提高优化过程的稳定性。
  • OpenAI兼容API: 框架内部提供一个与OpenAI兼容的LLM API,这使得将任何现有的智能体框架接入变得非常简单,无需修改智能体自身的代码。

使用帮助

Agent Lightning 的设计思想是提供一个桥梁,将智能体的应用开发和底层模型的优化训练连接起来。以下是详细的安装和使用流程,帮助你快速上手。

安装流程

安装 Agent Lightning 需要一个干净的Python环境,并按顺序安装一系列核心依赖。官方推荐使用 Python 3.10 或更高版本。

  1. 创建虚拟环境为了避免与系统中其他库产生冲突,强烈建议创建一个新的虚拟环境。你可以使用 conda 或 venv

    使用 conda:

    conda create --name agent-lightning python=3.10
    conda activate agent-lightning
    

    使用 venv:

    python -m venv agent-lightning-env
    source agent-lightning-env/bin/activate  # on Windows use `agent-lightning-env\Scripts\activate`
    
  2. 安装核心依赖接下来需要安装一些必要的软件包,包括 uvPyTorchFlashAttention, 和 vLLM
    • 安装 uv: 这是一个快速的Python包安装工具。
      curl -LsSf https://astral.sh/uv/install.sh | sh
      
    • 安装 PyTorch, FlashAttention, 和 vLLM: 按照以下顺序和版本进行安装,以确保兼容性。
      pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128
      pip install flash-attn --no-build-isolation
      pip install vllm==0.9.2
      
  3. 安装 VERLAgent Lightning 使用 VERL (Volcano Engine Reinforcement Learning) 进行强化学习训练。你需要从它的GitHub仓库安装最新版本。
    git clone https://github.com/volcengine/verl /path/to/your/verl
    cd /path/to/your/verl
    pip install -e .
    
  4. 安装 Agent Lightning现在可以安装 Agent Lightning 本体了。
    cd /path/to/agentlightning
    pip install -e .
    
  5. 安装可选的智能体框架如果你计划使用其他特定的智能体框架,可以通过以下命令安装。如果暂时不需要,可以跳过此步骤。
    # AutoGen
    pip install "autogen-agentchat" "autogen-ext[openai]"
    # LiteLLM
    pip install "litellm[proxy]"
    # LangChain
    pip install langgraph "langchain[openai]" langchain-community langchain-text-splitters
    

    在安装这些可选框架时,可能会出现一些依赖冲突的提示,通常可以忽略,因为按照推荐的安装顺序,核心功能不会受到影响。

如何操作

Agent Lightning 的运行模式是启动一个训练服务器,然后再启动一个或多个智能体客户端。

  1. 启动训练服务器:服务器进程负责管理整个训练流程。你可以在 examples 文件夹中找到具体的示例代码来启动服务器。服务器会监听来自客户端的连接,分发任务,并收集返回的训练数据。
  2. 启动智能体客户端:客户端进程负责运行具体的智能体逻辑。你需要编写一个脚本来定义你的智能体,并让它连接到训练服务器。客户端会从服务器获取任务,执行任务(这其中可能包括与LLM的交互),然后将执行过程中的数据(即“轨迹”)发送回服务器。
  3. 运行流程:
    • 在一个终端窗口中启动服务器进程。
    • 在另一个终端窗口中启动客户端进程。
    • 启动顺序通常不重要,但必须是两个独立的进程。
    • 客户端从服务器拉取任务。
    • 客户端的智能体执行任务,与LLM进行交互。
    • 客户端将交互的轨迹(prompts 和 responses 列表)发送回服务器。
    • 服务器收集这些轨迹,计算损失,并用于优化语言模型。

重要注意事项

  • 超时处理: 客户端上的任务可能会因为各种原因失败或超时,这可能导致服务器挂起。为了避免这种情况,建议对模型的输入和输出长度进行限制。
  • 环境与路径ray.init() 会受到当前环境变量和工作目录的影响。如果遇到“文件未找到”的错误,可以尝试从你的主工作目录重启Ray。
  • 内存问题: 由于 VERL 和 vLLM 在运行时可能会有较大的内存消耗,建议经常保存训练的检查点(checkpoints)。如果遇到内存溢出等问题,可以从上一个检查点恢复训练。

应用场景

  1. 优化特定任务的AI智能体假如你用 LangChain 创建了一个用于代码生成的AI智能体。在初始阶段,它可能会生成一些不符合规范或者存在错误的代码。你可以使用 Agent Lightning,让这个智能体在大量代码任务中进行练习(rollouts),并根据生成的代码质量(通过自动化测试或人工反馈)进行强化学习训练,从而逐步提升它生成高质量代码的能力。
  2. 提升多智能体协作效率在使用 AutoGen 等框架构建复杂的多智能体系统(例如,一个由“产品经理”、“程序员”和“测试工程师”智能体组成的团队)时,智能体之间的沟通效率和协作能力至关重要。通过 Agent Lightning,可以收集多智能体在协作完成任务时的所有交互数据,并对它们的语言模型进行微调,让它们学会更高效、更默契地沟通和协作,减少无效的沟通回合。
  3. 根据私有数据定制智能体企业通常希望AI智能体能够理解并使用内部的知识库和业务流程。Agent Lightning 可以让开发者在私有数据集上对智能体进行训练。例如,一个客服智能体可以通过在大量的真实客服对话记录上进行训练,来学习如何更准确、更人性化地回答客户的问题,甚至能处理带有特定行业术语的复杂查询。

QA

  1. Agent Lightning 和 LangChain 或 AutoGen 这些框架有什么区别?LangChain 和 AutoGen 主要是用来“构建”和“编排”AI智能体的开发框架,它们提供了各种工具和接口,让你能快速定义一个智能体的工作流程。而 Agent Lightning 是一个“训练”框架,它的作用是在你用那些框架构建出智能体之后,通过强化学习等方法来“优化”这个智能体,让它的表现更好。它与那些框架是互补关系,而不是竞争关系。
  2. 使用 Agent Lightning 需要很强的强化学习背景知识吗?不一定。Agent Lightning 的设计目标之一就是降低使用门槛。它将复杂的强化学习训练过程(基于 VERL)封装在服务器端,而用户只需要关注自己熟悉的智能体开发框架即可。你只需要按照它的架构,让你的智能体能够与训练服务器通信,就可以利用强化学习的威力,而不需要从零开始实现复杂的RL算法。
  3. 为什么 Agent Lightning 需要客户端和服务器分离的架构?这种解耦的架构是 Agent Lightning 的核心优势之一。 首先,它将智能体的具体实现(客户端)和训练逻辑(服务器)分离开,让开发者可以专注于自己的业务逻辑,而不必关心训练的底层细节。其次,这种架构具有很强的扩展性,可以支持一个训练服务器对接多个智能体客户端,进行大规模并行的训练。最后,这也使得 Agent Lightning 可以灵活地支持任何智能体框架,因为只要客户端能遵循其API与服务器通信即可。
微信微博Email复制链接