在 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 共同运营的针对中国技术爱好者的宣传沟通渠道。

相关文章
|
3月前
|
人工智能 分布式计算 PyTorch
Ray Forward 2025 定档 12 月 20 日北京!议题征集通道已开放
由蚂蚁集团发起的 Ray 中文社区与蚂蚁开源联合主办的 Ray Forward 2025,将于 12 月 20 日在北京蚂蚁 T 空间正式启幕,以 “拥抱 AI,Ray 向未来” 为主题,邀您共探下一代智能计算架构的进化方向。
|
9月前
|
机器学习/深度学习 数据可视化 算法
Ray Flow Insight:让分布式系统调试不再"黑盒"
作为Ray社区的积极贡献者,我们希望将这些实践中沉淀的技术能力回馈给社区,推动Ray生态在实际场景中的应用深度和广度。因此,2024年底我们做了激活AntRay开源社区的决策,AntRay会始终保持与官方Ray版本强同步(即AntRay会紧随Ray官方社区版本而发布),内部Feature亦会加速推向AntRay以开源研发模式及时反哺内部业务,同时会将社区关注的Feature提交至Ray官方社区,实现内外部引擎双向价值流动。后续我们会以系列文章形式同步蚂蚁推向开源的新特性,本文将重点介绍:Ray Flow Insight —— 让分布式系统调试不再"黑盒"。
|
5月前
|
存储 消息中间件 人工智能
Fluss:重新定义实时数据分析与 AI 时代的流式存储
Apache Fluss(孵化中)是新一代流式存储系统,旨在解决传统架构中数据重复复制、高成本与复杂性等问题。它基于 Apache Arrow 构建,支持列式存储、实时更新与高效查询,融合流处理与湖仓架构优势,适用于实时分析、AI 与多模态数据场景。Fluss 提供统一读写、冷热分层与开放生态,已在阿里巴巴大规模落地,助力企业实现低成本、高效率的实时数据处理。
640 26
|
弹性计算 容器 RDMA
在Kubernetes上使用RDMA
### RDMA RDMA(全称RemoteDirect Memory Access) 它为了解决网络传输中服务器端数据处理的延迟而产生。 它的原理是将待传输的数据从一台计算机的内存,直接传输到另一台计算机的内存,整个传输过程无需操作系统和协议栈的介入。
10989 0
|
5月前
|
负载均衡 并行计算 异构计算
大模型训练推理优化(5): FlexLink —— NVLink 带宽无损提升27%
本期我们将介绍蚂蚁集团ASystem团队在大模型通信优化上的新工作FlexLink,旨在通过动态聚合多路通信(NVLink,PCIe,RDMA),在H800等典型硬件上将典型通信算子如(AllReduce, All Gather)吞吐提升最高达27%,尤其适合大模型长序列推理(Prefill阶段),及训练等通信密集的带宽bound场景。方案对精度无影响。
|
3月前
|
存储 人工智能 算法
从 VLDB‘25 看向量数据库发展方向:行业观察与技术前瞻
第 51 届国际大型数据库会议(The 51st International Conference on Very Large Data Bases,简称VLDB 2025)是数据管理、数据库系统与大规模数据处理领域最具影响力的国际顶级学术会议之一。本届 VLDB 在于2025 年 9 月 1 日至 9 月 5 日在英国伦敦Queen Elizabeth II Centre (QEII Centre) 举办。
|
7月前
|
人工智能 OLAP 数据处理
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
AnalyticDB Ray 是AnalyticDB MySQL 推出的全托管Ray服务,基于开源 Ray 的丰富生态,经过多模态处理、具身智能、搜索推荐、金融风控等场景的锤炼,对Ray内核和服务能力进行了全栈增强。
|
3月前
|
并行计算 PyTorch 算法框架/工具
vLLM 架构学习指南
本指南深入解析vLLM高性能推理引擎架构,涵盖核心创新PagedAttention与连续批处理技术,结合代码结构、学习路径与实践建议,系统指导用户从入门到贡献源码的全过程。
1531 2
vLLM 架构学习指南
|
4月前
|
设计模式 开发框架 Cloud Native
责任链模式
责任链模式是一种行为设计模式,通过将请求沿处理链传递,实现请求发送者与接收者的解耦。该模式使多个对象都有机会处理请求,提升系统的灵活性与可扩展性。适用于审批流程、中间件处理、事件分发等场景,能有效降低耦合度,增强职责清晰度。合理使用可提升架构健壮性,但需注意终止条件与性能开销。
|
4月前
|
存储 人工智能 安全
企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
通过 Sandbox 与 Serverless 的深度融合,AI Agent 不再是“黑盒”实验,而是可被企业精准掌控的生产力工具。这种架构不仅适配当前 AI Agent 的动态交互特性,更为未来多模态 Agent、跨系统协作等复杂场景提供了可复用的技术底座。若您的企业正面临 AI Agent 规模化落地的挑战,不妨从 Sandbox 架构入手,结合函数计算 FC 的能力,快速验证并构建安全、高效、可扩展的 AI 应用系统。