vllm
server 提供了多个参数来配置模型部署的方式,涵盖了资源管理、并行策略、模型缓存等。下面是常见的 vllm
server 参数及其功能:
主要参数列表
-
--tensor-parallel-size
:指定张量并行度的大小。张量并行是将模型的计算分成若干份,每份由一个 GPU 处理。这个参数的值通常等于使用的 GPU 数量。 -
--pipeline-parallel-size
:指定流水线并行的大小。流水线并行用于模型的逐层并行化,将模型层分配给不同 GPU 处理。 -
--gpu-memory-utilization
:设置 GPU 内存利用率的上限,通常为 0 到 1 之间的浮点数(如0.9
表示 90% 的利用率)。在模型大小接近 GPU 内存容量时非常有用,以避免内存溢出。 -
--cpu-offload-gb
:指定模型卸载到 CPU 的内存大小,单位为 GB。当 GPU 内存不足时,可以将模型的部分计算或存储卸载到 CPU。 -
--max-model-len
:指定模型的最大输入序列长度(token 数)。该参数控制模型接收的最大输入 token 数量,用于控制内存和计算资源。 -
--swap-space
:分配的交换空间大小,单位为 GB。用于处理多个 GPU 之间的交换操作,提升内存利用效率,尤其在多 GPU 设置中有用。 -
--fp16
:是否使用 16 位浮点数(FP16)进行推理。启用后模型精度将从 32 位浮点数降低至 16 位,这可以节省大量内存和计算资源,但可能会影响模型精度。 -
--model-cache-dir
:指定模型缓存目录的路径,允许将模型的权重文件存储在指定目录中。这在多次启动相同模型或在不同机器之间共享模型时很有帮助。 -
--batch-size
:设置推理的 batch size。较大的 batch size 可以更好地利用 GPU,但可能需要更多内存。 -
--port
:设置服务的端口号。默认端口通常为 5000,可以通过此参数更改。 -
--log-level
:设定日志的详细程度,如DEBUG
、INFO
、WARNING
等,用于控制输出的日志信息量。 -
--max-concurrent-requests
:最大并发请求数。限制了同时接收的最大请求数,用于避免资源过载。 -
--sharding
:启用分片存储,将模型权重在多个 GPU 间分片存储。这在处理大模型或内存限制较严苛的情况下有效。 -
--low-cpu-memory
:是否开启低 CPU 内存模式。启用后将降低 CPU 内存使用,但可能会稍微增加推理延迟。 -
--enable-mixed-precision
:启用混合精度推理(Mixed Precision)。使用混合精度可以在不大幅影响精度的前提下,进一步减少内存占用和加快计算。 -
--streaming
:是否启用流式传输。开启流式传输可以更快地返回推理结果,有助于降低延迟。 -
--max-batch-delay
:设定最大的批处理延迟(单位为毫秒)。批处理延迟指的是在积累足够的请求数之前等待的时间,数值越小延迟越低,但批处理效率也会降低。
示例用法
启动 vllm
server 时可以结合多个参数以获得最佳性能。例如:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 vllm serve "defog/sqlcoder-70b-alpha" \
--tensor-parallel-size 8 \
--pipeline-parallel-size 1 \
--gpu-memory-utilization 0.9 \
--cpu-offload-gb 0 \
--max-model-len 8192 \
--swap-space 8 \
--fp16 \
--batch-size 16 \
--port 8080 \
--log-level INFO \
--enable-mixed-precision \
--streaming
通过 vllm --help
命令可以查看所有可用的参数选项和默认值,以帮助进行详细配置。