第1章:vLLM基础入门 本章导读:通过本章学习,读者将掌握vLLM的核心概念、安装方法和基础使用,为后续深入学习打下坚实基础。 学习目标 理解vLLM的架构价值与核心优势 熟练掌握vLLM的环境准备与安装流程 能够编写基础vLLM推理代码 了解vLLM与主流LLM框架的区别 核心概念 vLLM(Very Large Language Model serving)是一个专为高效LLM推理而设计的开源服务引擎。它通过创新的内存管理和调度算法,实现了传统方案数倍的性能提升。其核心价值体现在:更高的吞吐量、更低的内存占用、更智能的批处理。 vLLM最初由UC Berkeley Sky Computing Lab开发,现已发展为由2000+贡献者维护的活跃开源项目。
本章导读:通过本章学习,读者将掌握vLLM的核心概念、安装方法和基础使用,为后续深入学习打下坚实基础。
vLLM(Very Large Language Model serving)是一个专为高效LLM推理而设计的开源服务引擎。它通过创新的内存管理和调度算法,实现了传统方案数倍的性能提升。其核心价值体现在:更高的吞吐量、更低的内存占用、更智能的批处理。
vLLM最初由UC Berkeley Sky Computing Lab开发,现已发展为由2000+贡献者维护的活跃开源项目。它支持OpenAI兼容API,可以无缝替代OpenAI服务接口。
# 使用uv安装(推荐) uv pip install vllm --torch-backend auto # 或使用pip安装 pip install vllm # 支持的版本 # - Stable:最稳定的测试版本 # - Nightly:最新开发版本 # - CPU版本:无GPU环境可用
from vllm import LLM, SamplingParams # 初始化LLM llm = LLM(model="Qwen/Qwen1.5-7B-Chat") # 设置采样参数 sampling_params = SamplingParams( temperature=0.8, top_p=0.95, max_tokens=1000 ) # 提示词 prompts = [ "解释一下什么是vLLM,它有哪些核心优势?", "如何使用vLLM部署大型语言模型?" ] # 执行推理 outputs = llm.generate(prompts, sampling_params) # 输出结果 for i, output in enumerate(outputs): prompt = prompts[i] generated_text = output.outputs[0].text print(f"Prompt: {prompt}") print(f"Generated: {generated_text}\n")
from vllm import LLM, SamplingParams from fastapi import FastAPI import uvicorn # 创建API应用 app = FastAPI() # 初始化LLM llm = LLM(model="Qwen/Qwen1.5-7B-Chat") @app.post("/v1/completions") def create_completion(request): sampling_params = SamplingParams( temperature=request.temperature, max_tokens=request.max_tokens ) outputs = llm.generate([request.prompt], sampling_params) return { "id": "cmpl-test", "object": "text_completion", "created": 1640995200, "model": "Qwen/Qwen1.5-7B-Chat", "choices": [{ "text": outputs[0].outputs[0].text, "index": 0, "logprobs": None, "finish_reason": "stop" }] } if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)
import time from vllm import LLM, SamplingParams # 传统方式 print("传统LLM推理测试...") start_time = time.time() # 这里使用模拟的传统推理方法 for i in range(5): time.sleep(0.1) # 模拟推理时间 print(f"传统推理 {i+1}/5 完成") traditional_time = time.time() - start_time print(f"传统方式总耗时: {traditional_time:.2f}秒") # vLLM方式 print("\nvLLM推理测试...") start_time = time.time() llm = LLM(model="Qwen/Qwen1.5-7B-Chat") sampling_params = SamplingParams(max_tokens=100) for i in range(5): prompt = f"测试提示词 {i+1}" outputs = llm.generate([prompt], sampling_params) print(f"vLLM推理 {i+1}/5 完成") vllm_time = time.time() - start_time print(f"vLLM方式总耗时: {vllm_time:.2f}秒") # 性能提升 improvement = (traditional_time - vllm_time) / traditional_time * 100 print(f"性能提升: {improvement:.1f}%")
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ vLLM基础使用完整示例 演示vLLM的核心功能和API使用 """ from vllm import LLM, SamplingParams import time def main(): print("=== vLLM基础使用示例 ===") # 1. 初始化模型 print("1. 初始化vLLM...") llm = LLM( model="Qwen/Qwen1.5-7B-Chat", tensor_parallel_size=1, gpu_memory_utilization=0.9 ) print("模型初始化完成") # 2. 设置采样参数 sampling_params = SamplingParams( temperature=0.7, top_p=0.9, top_k=40, max_tokens=500, repetition_penalty=1.1 ) # 3. 测试不同场景的推理 test_prompts = [ { "title": "技术解释", "prompt": "请简单解释vLLM的核心技术创新点。" }, { "title": "使用指南", "prompt": "如何选择vLLM的批处理参数来优化性能?" }, { "title": "实践建议", "prompt": "在生产环境中使用vLLM有哪些注意事项?" } ] print("\n2. 执行推理测试...") for test_case in test_prompts: print(f"\n--- {test_case['title']} ---") print(f"Prompt: {test_case['prompt']}") start_time = time.time() outputs = llm.generate([test_case['prompt']], sampling_params) end_time = time.time() response = outputs[0].outputs[0].text print(f"Response: {response}") print(f"推理耗时: {end_time - start_time:.2f}秒") print("\n=== 测试完成 ===") if __name__ == "__main__": main()
A:vLLM主要优势在于内存效率和推理吞吐量。传统方案每次推理都需要重新计算,而vLLM通过PagedAttention和连续批处理技术,可以复用计算结果,减少70-80%的内存占用,吞吐量提升3-5倍。
A:vLLM支持所有主流LLM模型,包括:
A:选择GPU时需考虑:
本章系统介绍了vLLM的基础知识,包括技术概念、环境配置、API使用和性能对比。通过实例代码演示,读者已经掌握了vLLM的基本使用方法。下一章将深入探讨vLLM的核心架构原理,重点关注PagedAttention和连续批处理等关键技术。
关键词:vLLM, PagedAttention, 推理优化, 性能提升, 基础使用
难度:入门
预计阅读:30分钟