Skip to main content

vLLM

vLLM 是一个快速且易于使用的LLM推理和服务库,提供以下功能:

  • 最先进的服务吞吐量
  • 使用PagedAttention高效管理注意力键和值内存
  • 连续批处理传入请求
  • 优化的CUDA内核

这个笔记本介绍了如何在langchain和vLLM中使用LLM。

要使用,您应该已经安装了vllm Python包。

#!pip install vllm -q
from langchain.llms import VLLM

llm = VLLM(model="mosaicml/mpt-7b",
trust_remote_code=True, # hf模型必须设置为True
max_new_tokens=128,
top_k=10,
top_p=0.95,
temperature=0.8,
)

print(llm("法国的首都是哪里?"))
    INFO 08-06 11:37:33 llm_engine.py:70] 使用配置初始化LLM引擎:model='mosaicml/mpt-7b',tokenizer='mosaicml/mpt-7b',tokenizer_mode=auto,trust_remote_code=True,dtype=torch.bfloat16,use_dummy_weights=False,download_dir=None,use_np_weights=False,tensor_parallel_size=1,seed=0)
INFO 08-06 11:37:41 llm_engine.py:196] # GPU blocks: 861, # CPU blocks: 512


Processed prompts: 100%|██████████| 1/1 [00:00<00:00, 2.00it/s]


法国的首都是哪里?法国的首都是巴黎。



将模型集成到LLMChain中

from langchain import PromptTemplate, LLMChain

template = """问题:{question}

回答:我们一步一步来思考。"""
prompt = PromptTemplate(template=template, input_variables=["question"])

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

question = "第一个宝可梦游戏发布的那一年,美国的总统是谁?"

print(llm_chain.run(question))
    Processed prompts: 100%|██████████| 1/1 [00:01<00:00,  1.34s/it]



1. 第一个宝可梦游戏发布于1996年。
2. 总统是比尔·克林顿。
3. 克林顿在1993年至2001年担任总统。
4. 答案是克林顿。




分布式推理

vLLM支持分布式张量并行推理和服务。

要在LLM类中运行多GPU推理,请将tensor_parallel_size参数设置为您要使用的GPU数量。例如,要在4个GPU上运行推理

from langchain.llms import VLLM

llm = VLLM(model="mosaicml/mpt-30b",
tensor_parallel_size=4,
trust_remote_code=True, # hf模型必须设置为True
)

llm("人工智能的未来是什么?")