来源 examples/offline_inference/basic.

基础#

LLM 类提供了主要的 Python 接口,用于执行离线推理,即在不使用单独的模型推理服务器的情况下与模型交互。

使用方法#

本示例中的第一个脚本展示了 vLLM 最基本的使用方法。如果您是 Python 和 vLLM 的新手,应该从这里开始。

python examples/offline_inference/basic/basic.py

其余脚本包含一个 参数解析器,您可以使用它传递任何与 LLM 兼容的参数。尝试使用 --help 运行脚本以获取所有可用参数的列表。

python examples/offline_inference/basic/classify.py
python examples/offline_inference/basic/embed.py
python examples/offline_inference/basic/score.py

聊天和生成脚本也接受 采样参数max_tokenstemperaturetop_ptop_k

python examples/offline_inference/basic/chat.py
python examples/offline_inference/basic/generate.py

特性#

在支持传递参数的脚本中,您可以尝试以下特性。

默认生成配置#

--generation-config 参数指定在调用 LLM.get_default_sampling_params() 时,生成配置将从哪里加载。如果设置为 ‘auto’,则生成配置将从模型路径加载。如果设置为文件夹路径,则生成配置将从指定的文件夹路径加载。如果未提供,则将使用 vLLM 默认值。

如果在生成配置中指定了 max_new_tokens,则它将为所有请求设置服务器范围的输出 token 数量限制。

使用以下参数亲自尝试一下

--generation-config auto

量化#

AQLM#

vLLM 支持使用 AQLM 量化的模型。

通过将以下模型之一传递给 --model 参数来亲自尝试一个

  • ISTA-DASLab/Llama-2-7b-AQLM-2Bit-1x16-hf

  • ISTA-DASLab/Llama-2-7b-AQLM-2Bit-2x8-hf

  • ISTA-DASLab/Llama-2-13b-AQLM-2Bit-1x16-hf

  • ISTA-DASLab/Mixtral-8x7b-AQLM-2Bit-1x16-hf

  • BlackSamorez/TinyLlama-1_1B-Chat-v1_0-AQLM-2Bit-1x16-hf

其中一些模型可能对于单个 GPU 来说太大。您可以通过将 --tensor-parallel-size 设置为所需的 GPU 数量,将它们拆分到多个 GPU 上。

GGUF#

vLLM 支持使用 GGUF 量化的模型。

通过下载一个 GGUF 量化模型并使用以下参数来亲自尝试一个

from huggingface_hub import hf_hub_download
repo_id = "bartowski/Phi-3-medium-4k-instruct-GGUF"
filename = "Phi-3-medium-4k-instruct-IQ2_M.gguf"
print(hf_hub_download(repo_id, filename=filename))
--model {local-path-printed-above} --tokenizer microsoft/Phi-3-medium-4k-instruct

CPU 卸载#

--cpu-offload-gb 参数可以被视为一种虚拟的方式来增加 GPU 内存大小。例如,如果您有一个 24 GB 的 GPU 并将其设置为 10,实际上您可以将其视为一个 34 GB 的 GPU。然后,您可以加载一个具有 BF16 权重的 13B 模型,这至少需要 26GB 的 GPU 内存。请注意,这需要快速的 CPU-GPU 互连,因为模型的一部分是在每次模型前向传递中从 CPU 内存动态加载到 GPU 内存的。

使用以下参数亲自尝试一下

--model meta-llama/Llama-2-13b-chat-hf --cpu-offload-gb 10

示例材料#