探索vLLM:释放超大规模语言模型的力量

背景

  vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值。在吞吐量方面,vLLM的性能比HuggingFace Transformers(HF)高出 24 倍,文本生成推理(TGI)高出3.5倍。

 特点

1、PagedAttention

  • LLM 的推理,最大的瓶颈在于显存。
  • 自回归模型的 keys 和 values 通常被称为 KV cache,这些 tensors 会存在 GPU 的显存中,用于生成下一个 token。
  • 这些 KV cache 都很大,并且大小是动态变化的,难以预测。已有的系统中,由于显存碎片和过度预留,浪费了60%-80%的显存。

实现:

  • 受到操作系统中,虚拟内存和分页经典思想的启发
  • PagedAttention 允许在不连续的内存空间中存储连续的 keys 和 values。 具体来说,PagedAttention 会将每个序列的 KV cache 划分为块,每个块包含固定数量 tokens 的 keys 和 values。 在注意力计算过程中,PagedAttention 内核有效地识别并获取这些块。
  • 分块之后,这些 KV cache 不再需要连续的内存,从而可以像在操作系统的虚拟内存中一样,更灵活地对这些 KV cache 进行管理。
  • PagedAttention 对于显存的利用接近理论上的最优值(浪费比例低于4%)。通过对显存进行更好的管理,可以使得单次可以使用更大的 batch size,从而进一步利用 GPU 的并行计算能力。

示意图:

2、memory sharing

  • memory sharing 是 PagedAttention 的另一个关键特性。
  • 当用单个 prompt 产出多个不同的序列时,可以共享计算量和显存。
  • 通过将不同序列的 logical blocks 映射到同一个 physical blocks,可以实现显存共享。
  • 为了保证共享的安全性,对于 physical blocks 的引用次数进行统计,并实现了 Copy-on-Write 机制。
  • 这种内存共享机制,可以大幅降低复杂采样算法对于显存的需求(最高可下降55%),从而可以提升2.2倍的吞吐量。

示意图:

应用场景

vLLM(Very Large Language Model)作为一种高速推理框架,在自然语言处理领域有着广泛的应用场景。下面是关于vLLM应用场景的详细描述:

  1. 文本生成: vLLM在文本生成领域具有突出的应用价值。通过大规模的语言模型,vLLM能够生成高质量、流畅的文本,包括文章、故事、诗歌等。这种能力在自动写作、创意生成、内容生成等应用场景中得到了广泛的应用。例如,可以利用vLLM来自动生成新闻报道、创作小说、生成广告文案等。

  2. 语言建模: vLLM可以用于语言建模任务,即根据给定的文本序列预测下一个单词或字符。通过大规模的预训练模型和高效的推理引擎,vLLM能够实现对语言的深层理解和建模,从而在语言模型评估、词语预测、句子生成等任务中取得良好的性能。语言建模在自然语言处理中是一个基础性的任务,对于机器翻译、语音识别、文本摘要等任务具有重要意义。

  3. 机器翻译: vLLM在机器翻译领域也有着重要的应用。通过将源语言句子输入到vLLM中,再利用其生成的特征向量或上下文表示,可以实现高质量的机器翻译。vLLM能够学习源语言和目标语言之间的语义关系,并生成准确、流畅的翻译结果。这种能力对于跨语言沟通、跨文化交流等具有重要意义。

  4. 问答系统: 在问答系统中,vLLM可以用于自动回答用户提出的问题。通过理解问题的语义和上下文,vLLM能够生成准确、详细的回答。这种能力对于智能客服、虚拟助手、智能搜索等应用场景具有重要意义。vLLM可以帮助用户快速获取所需信息,并提高用户体验和工作效率。

  5. 情感分析: vLLM可以用于情感分析任务,即对文本的情感色彩进行判断和分类。通过学习大量的情感标注数据和情感相关的语义信息,vLLM能够识别文本中蕴含的情感倾向,并进行情感分类。这种能力在舆情监控、社交媒体分析、产品评论分析等领域具有重要意义,可以帮助企业和组织了解用户的情感态度和需求。

总的来说,vLLM作为一种高效的语言模型推理框架,具有广泛的应用场景,涵盖了文本生成、语言建模、机器翻译、问答系统、情感分析等多个领域。其强大的能力和灵活性使其成为自然语言处理领域的重要工具,为各种语言相关任务提供了高效、准确的解决方案。

安装使用

安装命令:

pip3 install vllm

 本文使用的Python第三方模块的版本如下:

vllm==0.2.7
transformers==4.36.2
requests==2.31.0
gradio==4.14.0

vLLM初步使用

线下批量推理

线下批量推理:为输入的prompts列表,使用vLLM生成答案

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "6,7"from vllm import LLM, SamplingParamsllm = LLM('/data-ai/model/llama2/llama2_hf/Llama-2-13b-chat-hf')INFO 01-18 08:13:26 llm_engine.py:70] Initializing an LLM engine with config: model='/data-ai/model/llama2/llama2_hf/Llama-2-13b-chat-hf', tokenizer='/data-ai/model/llama2/llama2_hf/Llama-2-13b-chat-hf', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=False, dtype=torch.float16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, quantization=None, enforce_eager=False, seed=0)
INFO 01-18 08:13:37 llm_engine.py:275] # GPU blocks: 3418, # CPU blocks: 327
INFO 01-18 08:13:39 model_runner.py:501] Capturing the model for CUDA graphs. This may lead to unexpected consequences if the model is not static. To run the model in eager mode, set 'enforce_eager=True' or use '--enforce

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/280717.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式游戏服务器

1、概念介绍 分布式游戏服务器是一种专门为在线游戏设计的大型系统架构。这种架构通过将游戏服务器分散部署到多台计算机(节点)上,实现了数据的分散存储和计算任务的并行处理。每个节点都负责处理一部分游戏逻辑和玩家请求,通过高…

应急响应靶机训练-Web3题解

前言 接上文,应急响应靶机训练-Web3。 前来挑战!应急响应靶机训练-Web3 题解 首先登录用户administrator 寻找隐藏用户 找到隐藏用户hack6618$ 然后去找apache的日志文件 分析得出两个IP地址 192.168.75.129 192.168.75.130 然后更换hack6618$的…

Offline RL : SEABO: A Simple Search-Based Method for Offline Imitation Learning

NIPS 2024 paper Intro 离线强化学习一般需要带奖励标签的数据,而现实中这种标签获取困难。本文提出一种基于搜索的离线方法SEABO。SEABO以无监督学习的方式,对最接近专家演示的transaction较大的奖励,否则分配较小的奖励。 Method SEAB…

Flume-transaction机制源码分析

一、整体流程 FileChannel主要是由WAL预写日志和内存队列FlumeEventQueue组成。 二、Transaction public interface Transaction {// 描述transaction状态enum TransactionState { Started, Committed, RolledBack, Closed }void begin();void commit();void rollback();voi…

Introduction to Data Mining 数据挖掘

Why Data Mining? • The Explosive Growth of Data: from terabytes to petabytes — Data collection and data availability ◦ Automated data collection tools, database systems, Web, computerized society — Major sources of abundant data ◦ Business: Web, e-co…

哔哩哔哩秋招Java二面

前言 作者:晓宜 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 一面过后面试官叫我别走,然后就直接二面,二面比较简短,记录一下,希望可以…

JWT 认证机制

1. 了解 Session 认证的局限性 Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域 Session 认证 注意: 1. 当前端请求后端接…

AMPQ和rabbitMQ

RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP(Advanced Message Queuing Protocol)标准实现的。 AMPQ的网络部分 AMQP没有使用HTTP,使用TCP自己实现了应用层协议。 AMQP实现了自己特有的网络帧格式。 一个Connection…

用 Visual Studio 调试器中查看内存中图像

返回目录:OpenCV系列文章目录(持续更新中......) 前一篇:OpenCV4.9.0在windows系统下的安装 后一篇:OpenCV-Java 开发简介 ​警告 本教程可以包含过时的信息。 Image Watch 是 Microsoft Visual Studio 的插件&a…

气膜馆建造成本高吗?专业气膜厂家告诉你!

气膜馆作为一种现代化建筑结构,在体育、娱乐和展览领域备受青睐。然而,对于许多人来说,最关心的问题之一就是建造气膜馆的成本。下面轻空间气膜厂家将带您深入探讨气膜馆的建设成本,特别关注每平米的建设成本是多少,以…

matlab 将矩阵写入文件

目录 一、概述1、算法概述2、主要函数二、将矩阵写入到文本文件三、将矩阵写入电子表格文件四、将矩阵写入指定的工作表和范围五、将数据追加到电子表格六、将矩阵数据追加到文本文件七、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此…

Android 系统源码快速入门

Android源码快速入门 今天分享的内容是Android源码快速入门,主要分为以下几个步骤: * 硬件要求 * 虚拟机安装 * 开发环境搭建 * 下载编译源码 * 从一个简单的实际开发需求体验 Framework 开发硬件要求 用于 Android Framework 开发的电脑需要较强的 C…

HBase在表操作--显示中文

启动HBase后,Master和RegionServer两个服务器,分别对应进程为HMaster和HRegionServe。(可通过jps查看) 1.进入表操作 hbase shell 2.查看当前库中存在的表 list 3.查看表中数据(注:学习期间可用&#…

传统企业在推行TPM时需要注意哪些问题?

当下,传统企业面临着转型升级的巨大压力。为了提升生产效率和产品质量,许多企业选择推行全面生产维护(Total Productive Maintenance,简称TPM)管理模式。然而,在实际推行过程中,传统企业需要注意…

MAC IntelliJ IDEA搭建Doris Fe

目录 版本信息 安装环境依赖 拉取源码 下载 Doris 编译依赖 修改系统最大文件句柄数 编译 Doris 配置 Debug 环境 生成 FE 代码 FE模块代码导入 配置 Debug FE 启动 FE 报错问题 版本信息 本次安装的doris版本信息为doris-2.1.0-rc11 IntelliJ IDEA 配置jdk17、m…

CCF202309-2——坐标变换(其二)80分代码及思路

思路,还是暴力求解,直接对每一个操作进行遍历,最后结果保留三位小数,但是不知道为什么直接printf("%.3f",x)进行输出没有分,结果完全对得上,以下是80分提交代码,可能大的测试点没有通…

龙芯新世界系统(安同AOCS OS)安装Cinnamon桌面最新版6.0.4

龙芯的新世界系统安同AOCS OS是十分优秀的操作系统,处于纯社区方式运行,她的各组件更新得很及时,很多组件都处于最新的状态,给我们安装使用最新的开源软件提供了很好的基础。由于本人一直使用Cinnamon桌面环境,各方面都…

设计模式|工厂模式

文章目录 1. 工厂模式的三种实现2. 简单工厂模式和工厂方法模式示例3. 抽象工厂模式示例4. 工厂模式与多态的关系5. 工程模式与策略模式的关系6. 面试中可能遇到的问题6.1 **工厂模式的概念是什么?**6.2 **工厂模式解决了什么问题?**6.3 **工厂模式的优点…

Flume入门概述及安装部署

目录 一、Flume概述1.1 Flume定义1.2 Flume基础架构 二、Flume安装部署 一、Flume概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 1.2 Flume基础…

基于深度学习的面部情绪识别算法仿真与分析

声明:以下内容均属于本人本科论文内容,禁止盗用,否则将追究相关责任 基于深度学习的面部情绪识别算法仿真与分析 摘要结果分析1、本次设计通过网络爬虫技术获取了七种面部情绪图片:吃惊、恐惧、厌恶、高兴、伤心、愤怒、自然各若…