【vLLM 学习】使用 OpenAI 批处理文件格式进行离线推理

vllm学习 shm-size=1g 是设置共享内存为 1GB,适用于大多数情况,但深度学习任务可能需要更大值(如 2g 或 4g)。如果遇到 CUDA OOM 或数据库崩溃,优先检查 shm-size 是否足够。启动容器时设置,运行后无法修改。 阅读详情

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/openai

重要信息

本指南介绍如何使用 OpenAI 批处理文件格式执行批量推理,而非完整的 Batch (REST) API。

文件格式

​OpenAI 批处理文件格式由多行 JSON 对象组成。

点击此处查看示例文件。

每行代表一个独立请求。详情请参阅 OpenAI 包参考文档。

We currently support /v1/chat/completions, /v1/embeddings, and /v1/score endpoints (completions coming soon).

准备工作​

  • 本文示例使用 meta-llama/Meta-Llama-3-8B-Instruct 模型。

    • 创建 用户访问令牌
    • 在本地安装令牌(运行 huggingface-cli login)。
    • 访问 模型卡片 并同意条款以获取受限模型访问权限。

示例 1:使用本地文件运行

步骤 1:创建批处理文件

您可以下载示例批处理文件,或在工作目录中创建自己的批处理文件。

wget https://raw.githubusercontent.com/vllm-project/vllm/main/examples/offline_inference/openai/openai_example_batch.jsonl

创建完成后,文件内容应如下所示:

$ cat offline_inference/openai/openai_example_batch.jsonl
{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello world!"}],"max_completion_tokens": 1000}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role": "user", "content": "Hello world!"}],"max_completion_tokens": 1000}}

步骤 2:运行批处理​

批处理工具设计为通过命令行使用。

运行以下命令执行批处理,结果将写入 results.jsonl 文件:

python -m vllm.entrypoints.openai.run_batch -i offline_inference/openai/openai_example_batch.jsonl -o results.jsonl --model meta-llama/Meta-Llama-3-8B-Instruct

步骤 3:查看结果​

结果现已保存在 results.jsonl 中。可通过 cat results.jsonl 查看:

$ cat results.jsonl
{"id":"vllm-383d1c59835645aeb2e07d004d62a826","custom_id":"request-1","response":{"id":"cmpl-61c020e54b964d5a98fa7527bfcdd378","object":"chat.completion","created":1715633336,"model":"meta-llama/Meta-Llama-3-8B-Instruct","choices":[{"index":0,"message":{"role":"assistant","content":"Hello! It's great to meet you! I'm here to help with any questions or tasks you may have. What's on your mind today?"},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":25,"total_tokens":56,"completion_tokens":31}},"error":null}
{"id":"vllm-42e3d09b14b04568afa3f1797751a267","custom_id":"request-2","response":{"id":"cmpl-f44d049f6b3a42d4b2d7850bb1e31bcc","object":"chat.completion","created":1715633336,"model":"meta-llama/Meta-Llama-3-8B-Instruct","choices":[{"index":0,"message":{"role":"assistant","content":"*silence*"},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":27,"total_tokens":32,"completion_tokens":5}},"error":null}

示例 2:使用远程文件​

批处理运行器支持通过 http/https 访问的远程输入输出 URL。

例如,要运行位于 https://raw.githubusercontent.com/vllm-project/vllm/main/examples/offline_inference/openai/openai_example_batch.jsonl 的示例输入文件,可执行:

python -m vllm.entrypoints.openai.run_batch -i https://raw.githubusercontent.com/vllm-project/vllm/main/examples/

示例 3:与 AWS S3 集成​

要与云存储集成,我们推荐使用预签名 URL。

[了解更多关于 S3 预签名 URL 的信息]

额外准备工作​

  • 创建 S3 存储桶。

  • 安装 awscli 包(运行 pip install awscli)以配置凭证并交互式使用 S3。

  • 安装 boto3 Python 包(运行 pip install boto3)以生成预签名 URL。

步骤 1:上传输入脚本​

您可以下载示例批处理文件,或在工作目录中创建自己的批处理文件。

wget https://raw.githubusercontent.com/vllm-project/vllm/main/examples/offline_inference/openai/openai_example_batch.jsonl

创建完成后,文件内容应如下所示:

$ cat offline_inference/openai/openai_example_batch.jsonl
{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello world!"}],"max_completion_tokens": 1000}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role": "user", "content": "Hello world!"}],"max_completion_tokens": 1000}}

现在将批处理文件上传至 S3 存储桶:

aws s3 cp offline_inference/openai/openai_example_batch.jsonl s3://MY_BUCKET/MY_INPUT_FILE.jsonl

步骤 2:生成预签名 URL​

预签名 URL 只能通过 SDK 生成。运行以下 Python 脚本生成预签名 URL。请将 MY_BUCKET、MY_INPUT_FILE.jsonl 和 MY_OUTPUT_FILE.jsonl 替换为您的存储桶和文件名。

(脚本改编自 https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/s3/s3_basics/presigned_url.py)

import boto3
from botocore.exceptions import ClientError


def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):

 """

生成可用于执行操作的预签名 Amazon S3 URL。

    :param s3_client: Boto3 Amazon S3 客户端。
    :param client_method: URL 执行的客户端方法名称。
    :param method_parameters: 指定客户端方法的参数。
    :param expires_in: 预签名 URL 的有效秒数。
    :return: 预签名 URL。
    """


 try:
        url = s3_client.generate_presigned_url(
            ClientMethod=client_method, Params=method_parameters, ExpiresIn=expires_in
 )
 except ClientError:
 raise
 return url




s3_client = boto3.client("s3")
input_url = generate_presigned_url(
    s3_client, "get_object", {"Bucket": "MY_BUCKET", "Key": "MY_INPUT_FILE.jsonl"}, 3600
)
output_url = generate_presigned_url(
    s3_client, "put_object", {"Bucket": "MY_BUCKET", "Key": "MY_OUTPUT_FILE.jsonl"}, 3600
)
print(f"{input_url=}")
print(f"{output_url=}")

脚本输出应类似:

input_url='https://s3.us-west-2.amazonaws.com/MY_BUCKET/MY_INPUT_FILE.jsonl?AWSAccessKeyId=ABCDEFGHIJKLMNOPQRST&Signature=abcdefghijklmnopqrstuvwxyz12345&Expires=1715800091'
output_url='https://s3.us-west-2.amazonaws.com/MY_BUCKET/MY_OUTPUT_FILE.jsonl?AWSAccessKeyId=ABCDEFGHIJKLMNOPQRST&Signature=abcdefghijklmnopqrstuvwxyz12345&Expires=1715800091'

步骤 3:使用预签名 URL 运行批处理​

现在可以使用上一步生成的 URL 运行批处理:

python -m vllm.entrypoints.openai.run_batch \
    -i "https://s3.us-west-2.amazonaws.com/MY_BUCKET/MY_INPUT_FILE.jsonl?AWSAccessKeyId=ABCDEFGHIJKLMNOPQRST&Signature=abcdefghijklmnopqrstuvwxyz12345&Expires=1715800091" \
    -o "https://s3.us-west-2.amazonaws.com/MY_BUCKET/MY_OUTPUT_FILE.jsonl?AWSAccessKeyId=ABCDEFGHIJKLMNOPQRST&Signature=abcdefghijklmnopqrstuvwxyz12345&Expires=1715800091" \
    --model --model meta-llama/Meta-Llama-3-8B-Instruct

步骤 4:查看结果​

结果现已保存在 S3 上。可通过以下命令在终端查看:

aws s3 cp s3://MY_BUCKET/MY_OUTPUT_FILE.jsonl -

示例 4:使用 embeddings 端点​

额外准备工作​

  • 确保使用 vllm >= 0.5.5 版本。

步骤 1:创建批处理文件​

在批处理文件中添加 embedding 请求。示例如下:

{"custom_id": "request-1", "method": "POST", "url": "/v1/embeddings", "body": {"model": "intfloat/e5-mistral-7b-instruct", "input": "You are a helpful assistant."}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/embeddings", "body": {"model": "intfloat/e5-mistral-7b-instruct", "input": "You are an unhelpful assistant."}}

您甚至可以在批处理文件中混合 chat completion 和 embedding 请求,只要您使用的模型同时支持这两种功能(注意所有请求必须使用同一模型)。

步骤 2:运行批处理​

使用与之前示例相同的命令运行批处理。

步骤 3:查看结果​

通过 cat results.jsonl 查看结果:

$ cat results.jsonl
{"id":"vllm-db0f71f7dec244e6bce530e0b4ef908b","custom_id":"request-1","response":{"status_code":200,"request_id":"vllm-batch-3580bf4d4ae54d52b67eee266a6eab20","body":{"id":"embd-33ac2efa7996430184461f2e38529746","object":"list","created":444647,"model":"intfloat/e5-mistral-7b-instruct","data":[{"index":0,"object":"embedding","embedding":[0.016204833984375,0.0092010498046875,0.0018358230590820312,-0.0028228759765625,0.001422882080078125,-0.0031147003173828125,...]}],"usage":{"prompt_tokens":8,"total_tokens":8,"completion_tokens":0}}},"error":null}
...

示例 5:使用 score 端点​

额外准备工作​

  • 确保使用 vllm >= 0.7.0 版本。

步骤 1:创建批处理文件​

在批处理文件中添加 score 请求。示例如下:

{"custom_id": "request-1", "method": "POST", "url": "/v1/score", "body": {"model": "BAAI/bge-reranker-v2-m3", "text_1": "What is the capital of France?", "text_2": ["The capital of Brazil is Brasilia.", "The capital of France is Paris."]}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/score", "body": {"model": "BAAI/bge-reranker-v2-m3", "text_1": "What is the capital of France?", "text_2": ["The capital of Brazil is Brasilia.", "The capital of France is Paris."]}}

您可以在批处理文件中混合 chat completion、embedding 和 score 请求,只要您使用的模型支持所有这些功能(注意所有请求必须使用同一模型)。

步骤 2:运行批处理​

使用与之前示例相同的命令运行批处理。

步骤 3:查看结果​

通过 cat results.jsonl 查看结果:

$ cat results.jsonl
{"id":"vllm-f87c5c4539184f618e555744a2965987","custom_id":"request-1","response":{"status_code":200,"request_id":"vllm-batch-806ab64512e44071b37d3f7ccd291413","body":{"id":"score-4ee45236897b4d29907d49b01298cdb1","object":"list","created":1737847944,"model":"BAAI/bge-reranker-v2-m3","data":[{"index":0,"object":"score","score":0.0010900497436523438},{"index":1,"object":"score","score":1.0}],"usage":{"prompt_tokens":37,"total_tokens":37,"completion_tokens":0,"prompt_tokens_details":null}}},"error":null}
{"id":"vllm-41990c51a26d4fac8419077f12871099","custom_id":"request-2","response":{"status_code":200,"request_id":"vllm-batch-73ce66379026482699f81974e14e1e99","body":{"id":"score-13f2ffe6ba40460fbf9f7f00ad667d75","object":"list","created":1737847944,"model":"BAAI/bge-reranker-v2-m3","data":[{"index":0,"object":"score","score":0.001094818115234375},{"index":1,"object":"score","score":1.0}],"usage":{"prompt_tokens":37,"total_tokens":37,"completion_tokens":0,"prompt_tokens_details":null}}},"error":null}

示例材料

openai_example_batch.jsonl

{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello world!"}],"max_completion_tokens": 1000}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/chat/completions", "body"
vLLM官方中文教程:使用vLLM的两种方式(离线推理和vllm server) 本文介绍了使用vllm推理框架的两种方式,离线推理和vllm server 阅读详情

相关推荐

【大模型】大模型推理部署工具之vLLM的使用(1)

首先介绍一下vLLM是什么?vLLM 是一个快速且易用的用于 LLM 推理和服务的库。vLLM最初由UC Berkeley的Sky Computing Lab 开发,现已发展成为一个由学术界和工业界共同贡献的社区驱动项目。最先进的服务吞吐量使用对注意力键和值内存进行高效管理对传入请求进行连续批处理使用 CUDA/HIP 图进行快速模型执行量化:GPTQ、AWQ、INT4、INT8 和 FP8优化的 CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成。

酒酿小圆子呀~ 2853

【vLLM 学习】基础教程

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

HyperAI超神经 1526

大模型推理框架:vLLM

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAttention」,提供易用、快速、便宜的LLM服务。

奔跑的蜗牛的博客 2617

vLLM 快速入门学习指南

vLLM是一个开源的大语言模型推理和部署引擎,通过PagedAttention技术和连续批处理显著提升性能。本文档详细介绍了vLLM的核心概念、安装方法(支持pip/uv/conda/Docker)、编程实践(从Hello World到高级API),以及OpenAI兼容服务的部署。重点讲解了性能优化技巧,包括GPU资源调优和批处理配置,并提供了常见问题排查指南。vLLM相比传统方案可提升24倍吞吐量,节省50%显存,适用于在线API、批量推理等多种场景。

lsgzn的博客 487

vLLM官方中文教程:快速入门

本文是vLLM的中文新手入门教程,内容来自于vLLM的英文官方教程

my_name_is_learn的博客 6052

VLLM V1 serve在线推理基本流程

VLLM V1 serve在线推理基本流程

LuchangLi 的专栏 2256

【vLLM 学习】快速入门

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。更多 vLLM 中文文档及教程可访问 →在继续进行本指南之前,请务必完成。默认情况下,vLLM 从下载模型。如果您想在以下示例中使用。

HyperAI超神经 2014

LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]

LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]

丨汀、的博客 6373

vLLM推理部署Qwen2.5

借助vLLM,构建一个与OpenAI API兼容的API服务十分简便,该服务可以作为实现OpenAI API协议的服务器进行部署。适用于大批量Prompt输入,并对推理速度要求高的场景,吞吐量比HuggingFace Transformers高10多倍。它旨在提供高性能、低延迟的推理服务,并支持多种硬件加速器,如 GPU 和 CPU。现在的Ubuntu是最简单配置的,如果使用wget等命令,需要使用apt-get下载再使用。这是一款流行的文本生成Web界面工具,拥有多个交互界面,并支持多种模型后端。

小森的博客 7263

强化学习-----DQN(Deep Q-network)

DQN(Deep Q-Network)是一种基于深度学习和强化学习的算法,由DeepMind提出,用于解决离散动作空间下的马尔科夫决策过程(MDP)问题。它是首个成功将深度学习应用于解决强化学习任务的算法之一。DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。那什么是Q-leaning?可以看上一篇文章Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。

qq_74722169的博客 2万+

Ansys Fluent DPM模型实战:旋风分离器颗粒轨迹仿真全流程解析(附案例文件)

本文详细解析了使用Ansys Fluent中的离散相模型进行旋风分离器颗粒轨迹仿真的全流程。从几何简化、网格策略到物理模型界定,重点阐述了DPM模型的关键设置步骤,包括单向耦合假设、颗粒注入与受力配置,并提供了结果分析与优化方法,帮助工程师精准模拟气固分离过程,提升设计效率。

sunny的博客 703

VLLM 详细学习笔记 第 3 章 快速上手:离线推理 + OpenAI 兼容服务

本文介绍了vLLM的两种服务形态:Python API和OpenAI兼容RESTful API。重点讲解了Python API的核心组件LLM类和SamplingParams类,以及同步和异步调用方式。LLM类负责加载模型并配置GPU资源,而SamplingParams类则控制文本生成参数如温度、top_p、max_tokens等。文章提供了同步推理的完整代码示例,并介绍了异步接口AsyncLLMEngine的使用场景和实现方法,适合需要与网络I/O结合的应用。这些功能使vLLM能够满足从批处理任务到实时服

qq_38334677的博客 1246

ISO 26262中的失效率计算:Mission profile的使用

Mission profile:任务剖面,即产品在完成规定任务这段时间内所经历的时间和环境的时序描述;集成电路在工作时环境温度是在不停变化的,同时也存在运行状态和非运行状态;为此标准提出了根据任务剖面(Mission profile)以及集成电路的实际结温来评估热幅度变化、循环温度幅值等因素的影响;汽车电子元器件相关的Mission profile参考IEC TR 62380:Table 11。

weixin_47071127的博客 4811

vLLM-Ascend 推理服务构建与优化

vLLM-Ascend 推理服务构建与优化

记录学习路上的一些拙见 6329

项目管理——14规划绩效域论文套路

规划绩效域论文套路

Flee Elf 1153

硬件笔记——HDMI接口

HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。

2501_94625908的博客 541

vLLM 部署大模型

vLLM 是来自 UC Berkeley 的 LMSYS 在 LLM 推理方面的最新工作(没错就是搞出 Vicuna 的那个 group),最大亮点是采用 Paged Attention 技术,结合 Continuous Batching,极大地优化了 realtime 场景下的 LLM serving 的 throughput 与内存使用。

哦豁灬 13万+

YOLOv12改进策略【Neck】| 使用CARAFE轻量级通用上采样算子

CARAFE内容感知的特征重新组合。

Limiiiing的博客 664

vLLM镜像实测:连续批处理让Qwen推理效率翻倍

本文实测基于vLLM的Qwen模型推理性能,展示连续批处理与PagedAttention技术如何显著提升吞吐量5–10倍,降低首token延迟,提高显存利用率,实现高效并发处理,适用于生产环境的大模型部署优化。

weixin_35982453的博客 1104

18006.STM32通过SPI读取LAN9253数据

【代码】18006.STM32通过SPI读取LAN9253数据。

写给自己的笔记 556

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Kimi-VL 专家混合视觉语言模型(三):基于vLLM 部署推理实战指南

本文介绍了Kimi-VL视觉语言模型基于vLLM框架的推理部署实践。vLLM通过PagedAttention机制有效提升大模型推理效率,支持多GPU并行计算。文章详细展示了vLLM的安装步骤(pip install vllm)和本地离线部署代码示例,包括模型加载、图像处理及推理生成过程。示例代码演示了如何加载Kimi-VL-A3B-Instruct模型,处理图像输入,并生成多模态响应。输出日志显示了模型初始化、配置加载等关键步骤,验证了vLLM在保障数据安全性和离线环境可用性方面的优势。该方案适用于金融、医

寻道AI,探索AI无限可能! 1665

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大模型框架:vLLM

​vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAttention」,提供易用、快速、便宜的LLM服务。

m0_37559973的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vLLM能否用于离线批量推理任务?队列机制设计

本文探讨vLLM在离线批量推理中的应用,重点分析其PagedAttention和连续批处理技术如何提升显存利用率与吞吐性能,并结合消息队列、量化、监控等设计要点,构建高效稳定的批量处理系统。

weixin_36474966的博客 260

一篇彻底搞清楚vLLM:新一代大语言模型 LLM 加速推理引擎,大模型入门到精通,收藏这篇就足够了!

本文主要介绍了一种用于大语言模型(LLM)推理的框架 vLLM的底层工作机制、安装和基于vLLM的OpenAI兼容服务器搭建及其实践应用

huang9604的博客 2716

vLLM 部署实战:从单卡推理到多卡并发的完整路径

模型终于加载完,单请求测试通过,一放开并发显存直接爆掉——卡住你的不是模型,是推理引擎。vLLM(Very Large Language Model 的缩写)就是为此而生:用 PagedAttention 按块管理 KV 缓存(请求的注意力中间状态),一条 `vllm serve` 命令给你 OpenAI 兼容接口。 读完你能做到: - 30 秒装好 vLLM,拉起一个可被 HTTP 调用的推

gitblog_01178的博客 807
上一篇: 中国科大创建乾坤网络精确求解多电子薛定谔方程
下一篇: 实时目标检测SOTA!YOLOv13拓展全局感知能力;入选NeurIPS 2025,UltraHR-100K解锁超高分辨率文生图
HyperAI超神经
博客等级 码龄7年 8873粉丝 1753原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值