大模型框架:vLLM

目录

一、vLLM 介绍

二、安装 vLLM

2.1 使用 GPU 进行安装

2.2 使用CPU进行安装

2.3 相关配置

三、使用 vLLM

3.1 离线推理

3.2 适配OpenAI-API的API服务


一、vLLM 介绍

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

二、安装 vLLM

2.1 使用 GPU 进行安装

        vLLM 是一个Python库,同时也包含预编译的C++和CUDA(12.1版本)二进制文件。

       1. 安装条件:

  • OS: Linux
  • Python: 3.8 – 3.11
  • GPU: compute capability 7.0 or higher (e.g., V100, T4, RTX20xx, A100, L4, H100, etc.)

        2.使用 pip 安装:

# 使用conda创建python虚拟环境(可选)
conda create -n vllm python=3.11 -y
conda activate vllm

# Install vLLM with CUDA 12.1.
pip install vllm

2.2 使用CPU进行安装

        vLLM 也支持在 x86 CPU 平台上进行基本的模型推理和服务,支持的数据类型包括 FP32 和 BF16。

        1.安装要求:

  • OS: Linux
  • Compiler: gcc/g++>=12.3.0 (recommended)
  • Instruction set architecture (ISA) requirement: AVX512 is required.

        2.安装编译依赖:

yum install -y gcc  gcc-c++

        3.下载源码:

git clone https://github.com/vllm-project/vllm.git

        4.安装python依赖:

pip install wheel packaging ninja setuptools>=49.4.0 numpy psutil

# 需要进入源码目录
pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu

        5.执行安装:

VLLM_TARGET_DEVICE=cpu python setup.py install

2.3 相关配置

       1. vLLM默认从HuggingFace下载模型,如果想从ModelScope下载模型,需要配置环境变量:

export VLLM_USE_MODELSCOPE=True

三、使用 vLLM

3.1 离线推理

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams# Initialize the tokenizer
tokenizer = AutoTokenizer.from_pretrained("/data/weisx/model/Qwen1.5-4B-Chat")# Pass the default decoding hyperparameters of Qwen1.5-4B-Chat
# max_tokens is for the maximum length for generation.
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, repetition_penalty=1.05, max_tokens=512)# Input the model name or path. Can be GPTQ or AWQ models.
llm = LLM(model="Qwen/l/Qwen1.5-4B-Chat", trust_remote_code=True)# Prepare your prompts
prompt = "Tell me something about large language models."
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)# generate outputs
outputs = llm.generate([text], sampling_params)# Print the outputs.
for output in outputs:prompt = output.promptgenerated_text = output.outputs[0].textprint(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

3.2 适配OpenAI-API的API服务

        借助vLLM,构建一个与OpenAI API兼容的API服务十分简便,该服务可以作为实现OpenAI API协议的服务器进行部署。默认情况下,它将在 http://localhost:8000 启动服务器。您可以通过 --host 和 --port 参数来自定义地址。请按照以下所示运行命令:

python -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen1.5-4B-Chat

        使用curl与Qwen对接:

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
    "model": "Qwen/Qwen1.5-4B-Chat",
    "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me something about large language models."}
    ]
    }'

        使用python客户端与Qwen对接:

from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"client = OpenAI(api_key=openai_api_key,base_url=openai_api_base,
)chat_response = client.chat.completions.create(model="Qwen/Qwen1.5-4B-Chat",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Tell me something about large language models."},]
)
print("Chat response:", chat_response)

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

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

相关文章

Codeforces Round 946 (Div.3)

C o d e f o r c e s R o u n d 946 ( D i v . 3 ) \Huge{Codeforces~Round~946~(Div.3)} Codeforces Round 946 (Div.3) 题目链接:Codeforces Round 946 (Div. 3) 文章目录 Problems A. Phone Desktop题意思路标程 Problems B. Symmetric Encoding题意思路标程 Pr…

Java-RabbitMQ

RabbitMQ使用场景 1、跨系统异步通信 2、多应用之间解耦 3、应用内流程同步变异步 4、整体架构即采用消息驱动 5、应用内部解耦 RabbitMQ内部角色 角色简介生产者消息创建者消费者消息接收者代理RabbitMQ本身,用于存储转发消息,快递功能 RabbitMQ有哪…

ubuntu 配置用户登录失败尝试次数限制

前言: 通过修改pam配置来达到限制密码尝试次数! 1:修改 /etc/pam.d/login 配置(这里只是终端登录配置,如果还需要配置SSH远程登录限制,只配置下面的 /etc/pam.d/pam.d/common-auth 即可) vim…

SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?

SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端? 在SpringCloud的Config配置中心中分了Server服务端和Client客户端,为什么需要这样分呢?它的思想是所有微服务的配置文件都放到git远程服务器上,让…

Java---图书管理系统(练习版)

1.主函数 import book.Book; import book.BookList; import user.AdminUser; import user.NormalUser; import user.User;import java.util.Scanner;public class Main {public static User Login(){//确认你的身份System.out.println("请输如你的名字");Scanner sc…

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器?如何自定义分词器?拼音分词器注意事项? 自动补全数据同步集群搭建ES集群结构创…

CSS3边框与轮廓

CSS3边框与轮廓 border-radius border-radius 属性用于设置元素边框的圆角半径。通过这个属性,您可以使元素的角呈现圆形或椭圆形外观,而不是传统的直角。其语法格式如下: .element {border-radius: [horizontal-radius vertical-radius] | [radius];}horizontal-radius 和…

蓝桥杯备赛——DP【python】

一、小明的背包1 试题链接:https://www.lanqiao.cn/problems/1174/learning/ 问题描述 输入实例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 37 问题分析 这里我们要创建一个DP表,DP(i,j)表示处理到第i个物品时消耗j体…

Atlas 200 DK(Model 3000)安装MindSpore Ascend版本

一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本,Atlas 200 DK(Model 3000)无法安装MindSpore Ascend版本。 三、准备工作 1. 测试环境 设备型号:Atlas 200 DK(Model: 3000) Operating System Vers…

Vue框架案例学习

1.项目搭建 利用vitets框架进行搭建 npm create vite 启动项目 npm run dev 2.项目配置 ①运行项目,浏览器自动打开 package.json "scripts": {"dev": "vite --open",} ②配置src文件夹的别名 在根目录下配置tsconfig.json文件 …

依赖的各种java库(工具类) :fastjson,lombok,jedis,druid,mybatis等

lombok 功能&#xff1a; Lombok 是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 导入包&#xff1a;使用Lombok首先要将其作为依赖添加到项目中&#xff0c;在pom.xml文件中手动添加 <dependency><groupId&g…

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

判断视频moov的位置

前言 MP4文件由若干称为Atom&#xff08;或称为box&#xff09;的数据对象组成&#xff0c;每个Atom的起首为四个字节的数据长度&#xff08;Big Endian&#xff09;和四个字节的类型标识&#xff0c;数据长度和类型标志都可以扩展。Atom可以嵌套&#xff0c;即其数据域可以由…

24款奔驰S450升级原厂后排娱乐系统 主动氛围灯有哪些功能

24款奔驰S400豪华升级原厂主动氛围灯与后排娱乐系统&#xff1a;画蛇添足还是锦上添花&#xff1f; 在当今汽车市场竞争激烈的环境下&#xff0c;汽车制造商们为了满足消费者的多元化需求&#xff0c;不断推出各种升级配置和豪华版本。24款奔驰S400豪华版作为奔驰S级的一款重要…

听说部门来了个00后测试开发,一顿操作给我整麻了

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势&#xff0c;需要使用touchstart和touchend两个api&#xff0c;因为没有原生的左右滑监听api&#xff0c;所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对&#xff0c;右滑的话&#xff0c;结束时候的x坐…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…

FPGA状态机设计详解

一.什么是状态机&#xff1f; 想象一下你正在玩一个电子游戏&#xff0c;角色有多种状态&#xff0c;比如“行走”、“跳跃”、“攻击”等。每当你按下不同的按键或者满足某些条件时&#xff0c;角色的状态就会改变&#xff0c;并执行与该状态对应的动作。这就是状态机的一个简…

Java 类加载和实例化对象的过程

1. 类加载实例化过程 当我们编写完一个*.java类后。编译器&#xff08;如javac&#xff09;会将其转化为字节码。转化的字节码存储在.class后缀的文件中&#xff08;.class 二进制文件&#xff09;。接下来在类的加载过程中虚拟机JVM利用ClassLoader读取该.class文件将其中的字…