在 Ray Data 和 Ray Serve 中推出原生 LLM API

简介: https://www.anyscale.com/blog/llm-apis-ray-data-serve 译文

一、引言

2025年4月2日,我们激动地宣布在 Ray Data 和 Ray Serve 中为 LLM 推理提供原生 API。

随着 LLM 在现代 AI 基础设施部署中变得越来越核心,平台需要能够高效地部署和扩展这些模型。虽然 Ray Data 和 Ray Serve 很适合快速部署和扩展这些模型,但开发人员必须编写大量冗余代码才能利用这些库来扩展 LLM 应用程序。

  • 在 Ray 2.44 中,我们正式发布 Ray Data LLM 和 Ray Serve LLM。
  • Ray Data LLM 提供用于现有 Ray Data pipeline 中对 LLM 进行离线批量推理的 API。
  • Ray Serve LLM 提供用于 Ray Serve 应用程序中为在线推理部署 LLM 的 API。

这两个模块均支持与 vLLM 和 OpenAI 兼容的endpoint的无缝集成。

二、Ray Data LLM

ray.data.llm 模块与关键的大型语言模型(LLM)推理引擎和已部署模型集成,以实现 LLM 批量推理。

Ray Data LLM 旨在解决开发人员在批量推理过程中遇到的几个常见痛点:

  • 我们发现许多用户正在为高吞吐量的批量推理构建临时解决方案。这些解决方案一般需要启动多个在线推理服务器,并构建额外的代理/负载均衡工具来最大化吞吐量。为了解决这个问题,我们希望利用 Ray Data 并利用其预先构建的分布式数据加载和处理功能。
  • 我们发现用户常将批量数据发送至现有推理服务器。为了解决这个问题,我们希望确保用户可以将其数据pipeline与 OpenAI 兼容的 API endpoint集成,并为用户提供灵活的模板化查询功能,以便向服务器发送查询。
  • 我们观察到用户正在将大型语言模型(LLMs)集成到现有的 Ray Data pipeline中(链接 LLM 后处理阶段)。为了解决这个问题,我们希望确保该 API 与现有的惰性加载和函数式的 Ray Data API 兼容。

image.gif

在使用 Ray Data LLM时,用户可以创建一个 Processor 对象,该对象可以对 Ray Data Dataset 进行调用,并返回一个 Ray Data Dataset。其中该 Processor 对象将包含如下配置:

  • 提示词和模板
  • OpenAI 兼容的采样参数,这些参数可以按行进行指定
  • vLLM 引擎配置(如果适用)
import ray
from ray.data.llm import vLLMEngineProcessorConfig, build_llm_processor
import numpy as np
config = vLLMEngineProcessorConfig(
    model="meta-llama/Llama-3.1-8B-Instruct",
    engine_kwargs={
        "enable_chunked_prefill": True,
        "max_num_batched_tokens": 4096,
        "max_model_len": 16384,
    },
    concurrency=1,
    batch_size=64,
)
processor = build_llm_processor(
    config,
    preprocess=lambda row: dict(
        messages=[
            {"role": "system", "content": "You are a bot that responds with haikus."},
            {"role": "user", "content": row["item"]}
        ],
        sampling_params=dict(
            temperature=0.3,
            max_tokens=250,
        )
    ),
    postprocess=lambda row: dict(
        answer=row["generated_text"],
        **row  # This will return all the original columns in the dataset.
    ),
)
ds = ray.data.from_items(["Start of the haiku is: Complete this for me..."])
ds = processor(ds)
ds.show(limit=1)

image.gif

在上面这个特定示例中,Processor 对象将:

  • 执行必要的预处理和后处理,以正确处理 LLM 的输出。
  • 根据指定的并发度和提供的引擎配置,实例化并配置多个 vLLM 副本。这些副本本身也可以进一步分布式部署。
  • 通过利用 Ray 中的异步 actor 持续为每个副本提供数据,以利用连续批处理并最大化吞吐量。
  • 调用各种 Ray Data 方法(map、map_batches),这些方法可以在执行过程中由 Ray Data 将他们与pipeline中的其他预处理阶段进行融合和优化。

正如您所见,Ray Data LLM 可以轻松简化在您现有数据pipeline中使用 LLM 的过程。更多详情请参阅文档

三、Ray Serve LLM

Ray Serve LLM API 允许用户使用熟悉的 Ray Serve API 同时部署多个 LLM 模型,同时兼容 OpenAI API

Ray Serve LLM 的设计具有以下特点:


  • 自动扩展和负载均衡
  • 统一的多节点多模型部署
  • OpenAI 兼容性
  • 支持多 LoRA 模型并共享基础模型
  • 与推理引擎(从 vLLM 开始)的深度集成
  • 可组合的多模型 LLM 管道

尽管 vLLM 在过去一年中发展迅速,但我们观察到越来越多的用户开始利用Ray Serve部署vLLM以支持多个模型,并构建更复杂的pipeline。

对于生产部署,Ray Serve + vLLM 可以绝佳的互补。

image.gif

vLLM 提供了一个简单的抽象层,能够以高吞吐量和低延迟的方式支持数百个不同的模型。然而,vLLM 仅负责单个模型实例,而在生产部署中,通常需要一个编排层,以便能够自动扩展、处理不同的微调适配器、处理分布式模型并行,以及构建可能非常复杂的多模型复合 AI pipeline。

Ray Serve 的构建旨在弥补 vLLM 在扩展和生产化方面的不足。Ray Serve 提供:

  • 用于自动扩展的 Pythonic 风格API
  • 内置对模型复用的支持
  • 提供一种 Python 风格的、命令式的方式来编写复杂的多模型/部署管道
  • 通过利用 Ray,为分布式模型并行提供了一流的支持。

以下是一个简单示例,演示如何使用 Ray Serve 在本地计算机上部署一个 Qwen 模型,该计算机配备两块GPU并连接至与OpenAI兼容的路由器,然后使用 OpenAI 客户端对其进行查询。

from ray import serve
from ray.serve.llm import LLMConfig, LLMServer, LLMRouter
llm_config = LLMConfig(
    model_loading_config=dict(
        model_id="qwen-0.5b",
        model_source="Qwen/Qwen2.5-0.5B-Instruct",
    ),
    deployment_config=dict(
        autoscaling_config=dict(
            min_replicas=1, max_replicas=2,
        )
    ),
    # Pass the desired accelerator type (e.g. A10G, L4, etc.)
    accelerator_type="A10G",
    # You can customize the engine arguments (e.g. vLLM engine kwargs)
    engine_kwargs=dict(
        tensor_parallel_size=2,
    ),
)
# Deploy the application
deployment = LLMServer.as_deployment(
    llm_config.get_serve_options(name_prefix="vLLM:")).bind(llm_config)
llm_app = LLMRouter.as_deployment().bind([deployment])
serve.run(llm_app)

image.gif

然后使用 OpenAI Python API 对其进行查询:

from openai import OpenAI
# Initialize client
client = OpenAI(base_url="http://localhost:8000/v1", api_key="fake-key")
# Basic chat completion with streaming
response = client.chat.completions.create(
    model="qwen-0.5b",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True
)
for chunk in response:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

image.gif

更多详情请访问文档

Ray Serve LLM 也可以通过使用 KubeRay 在 Kubernetes 上进行部署。更多详情请参阅Ray Serve production guide

四、未来发展

欢迎试用这些新功能并向我们反馈!如果您有兴趣与开发人员交流,欢迎加入the Ray Slack讨论,并在此处关注 Ray Serve LLM 和 Ray Data LLM 的路线图以获取未来更新。

Ray 中文社区

Ray 是 UC Berkeley RISELab 针对机器学习领域开源的一种新的分布式计算引擎,用于构建在任何规模下运行的分布式应用。在国内,Ray 中文社区是由蚂蚁集团和 Anyscale 共同运营的针对中国技术爱好者的宣传沟通渠道。

相关文章
|
5月前
|
机器学习/深度学习 数据可视化 算法
Ray Flow Insight:让分布式系统调试不再"黑盒"
作为Ray社区的积极贡献者,我们希望将这些实践中沉淀的技术能力回馈给社区,推动Ray生态在实际场景中的应用深度和广度。因此,2024年底我们做了激活AntRay开源社区的决策,AntRay会始终保持与官方Ray版本强同步(即AntRay会紧随Ray官方社区版本而发布),内部Feature亦会加速推向AntRay以开源研发模式及时反哺内部业务,同时会将社区关注的Feature提交至Ray官方社区,实现内外部引擎双向价值流动。后续我们会以系列文章形式同步蚂蚁推向开源的新特性,本文将重点介绍:Ray Flow Insight —— 让分布式系统调试不再"黑盒"。
|
1月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
479 56
|
20天前
|
JSON 人工智能 安全
HTTP工具解析:功能、应用场景与选型指南
本内容系统介绍了主流接口测试工具的核心功能、应用场景及选型建议。涵盖请求构造、响应分析、自动化测试与团队协作等模块,支持多环境参数切换、JSON/XML数据格式及性能指标监控。典型场景包括接口调试、Mock服务、高并发压测等,推荐工具如Postman、Apifox、JMeter、Locust等。同时分析了低代码化、AI辅助、协议扩展等技术趋势与安全合规挑战。
67 5
|
21天前
|
人工智能 测试技术 Docker
Coze平台指南(2):开发环境的搭建与配置
Coze(扣子)是字节跳动开源的AI智能体开发平台,包含开发工具和运维系统,支持本地部署且硬件要求低。本文将手把手带你完成Coze开发环境的搭建与配置,让你能快速开始本地化的AI智能体开发
|
23天前
|
传感器 人工智能 边缘计算
当无人机遇上5G:远程控制再也不卡了
当无人机遇上5G:远程控制再也不卡了
105 8
|
20天前
|
存储 人工智能 机器人
告别 “缸中之脑”:为何 Agent Runtime 至关重要?MuleRun 如何实现突破?
TL;DR:很多 AI Agent 被困在受限且一刀切的沙箱内,而 MuleRun 是全球首个通过提供可完全自定义且持久化的 Agent Runtime 来解决这一问题的平台——即你可以定义操作系统、访问原生软件、跨会话保留状态并分配硬件资源。这让你能打造真正的“数字化工人”,而不仅仅是受限的聊天机器人。
177 9
|
12天前
|
人工智能 编解码 监控
游戏显卡驱动,NVIDIA App ,0xc000007b,amd显卡驱动下载,解决游戏慢,游戏卡等问题
本文介绍了游戏显卡驱动的重要性及安装方法,涵盖NVIDIA和AMD显卡驱动下载与更新,解决游戏卡顿、闪退及报错0xc000007b等问题。提供三款工具推荐,支持自动识别与手动精准安装,优化游戏性能,提升体验。
185 5
|
30天前
|
人工智能 算法 测试技术
轻量高效,8B 性能强劲书生科学多模态模型Intern-S1-mini开源
继 7 月 26 日开源『书生』科学多模态大模型 Intern-S1 之后,上海人工智能实验室(上海AI实验室)在8月23日推出了轻量化版本 Intern-S1-mini。
466 50
|
2天前
|
机器学习/深度学习 移动开发 资源调度
矩形隧道中MIMO信道特性的模态理论解释——论文解读
本文基于模态理论研究矩形隧道中MIMO信道的传播特性,分析模式正交性、有效模式数及空间相关性对信道容量的影响。结果表明,在损耗壁条件下模式仍具准正交性,有效模式数随距离衰减,收发端相关性制约系统性能。研究为隧道等封闭环境下的MIMO系统设计提供了理论依据。
39 17
矩形隧道中MIMO信道特性的模态理论解释——论文解读
|
20天前
|
机器学习/深度学习 人工智能 JSON
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
Microsoft Research最新推出的rStar2-Agent在AIME24数学基准测试中以80.6%的准确率超越超大规模模型DeepSeek-R1,展现“思考更聪明”而非“更长”的AI推理新方向。
93 8
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型