使用vLLM推理大语言模型并通过Docker部署
本教程详细介绍如何使用vLLM推理大型语言模型,并通过Docker进行部署。我们将从创建配置文件开始,详细解释命令参数,并展示如何通过API进行模型测试。
步骤1:创建配置文件
首先,创建一个docker-compose配置文件,以便部署vLLM服务。以下是一个配置文件示例:
version: '3'
services:
vllm-openai:
image: vllm/vllm-openai:latest
ulimits:
stack: 67108864
memlock: -1
restart: always
ipc: host
command: --model=TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ --tensor-parallel-size 2 --dtype=auto --trust-remote-code -q=awq
volumes:
- /root/.cache/huggingface:/root/.cache/huggingface
environment:
- HF_ENDPOINT=https://hf-mirror.com
ports:
- "86:8000"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
了解,我将提供一个详细的参数说明,并将具有多个子选项的参数以数字列表的形式展示。
完整的命令参数说明
以下是vLLM服务启动命令中可以使用的详细参数列表:
基础参数
--model <model_name_or_path>: 指定要使用的HuggingFace模型的名称或路径。--tokenizer <tokenizer_name_or_path>: 指定要使用的HuggingFace分词器的名称或路径。--revision <revision>: 特定模型版本,可以是分支名、标签名或提交ID。如果未指定,将使用默认版本。--tokenizer-revision <revision>: 特定分词器版本,可以是分支名、标签名或提交ID。如果未指定,将使用默认版本。--trust-remote-code: 允许信任并执行HuggingFace上的远程代码。
分词器模式
--tokenizer-mode {auto,slow}: 指定分词器模式。auto: 在可用的情况下使用快速分词器。slow: 始终使用慢分词器。
下载和加载
--download-dir <directory>: 指定下载并加载权重的目录,默认为HuggingFace的默认缓存目录。--load-format {auto,pt,safetensors,npcache,dummy}: 指定加载模型权重的格式。auto: 尝试加载safetensors格式的权重,如果不可用,则回退到pytorch bin格式。pt: 加载pytorch bin格式的权重。safetensors: 加载safetensors格式的权重。npcache: 加载pytorch格式的权重并存储一个numpy缓存以加速加载。dummy: 使用随机值初始化权重,主要用于性能分析。
数据类型和模型配置
--dtype {auto,half,float16,bfloat16,float,float32}: 指定模型权重和激活的数据类型。auto: 根据模型自动选择精度。half/float16: 使用FP16精度。bfloat16: 使用BF16精度,平衡精度和数值范围。float/float32: 使用FP32精度。
--max-model-len <length>: 模型上下文长度。如果未指定,将自动从模型配置中推导。
并行和分布式设置
--worker-use-ray: 使用Ray进行分布式服务,当使用超过1个GPU时会自动设置。--pipeline-parallel-size (-pp) <size>: 管道并行阶段的数量。--tensor-parallel-size (-tp) <size>: 张量并行副本的数量,多卡一般填显卡数量。--max-parallel-loading-workers <workers>: 以多个批次顺序加载模型,避免在使用张量并行和大型模型时出现RAM OOM。
性能和优化
--block-size {8,16,32}: 连续令牌块的大小。--seed <seed>: 操作的随机种子。--swap-space <size>: 每个GPU的CPU交换空间大小(以GiB为单位)。--gpu-memory-utilization <fraction>: GPU内存的使用比例,范围从0到1。--max-num-batched-tokens <tokens>: 每次迭代的最大批处理令牌数。--max-num-seqs <sequences>: 每次迭代的最大序列数。--max-paddings <paddings>: 批次中的最大填充数量。--disable-log-stats: 禁用日志统计。--quantization (-q) {awq,gptq,squeezellm,None}: 用于量化权重的方法。
通过采用数字列表来展示具有多个选项的参数,我们确保了信息的清晰传达并提高了文档的可读性。希望这个详细的参数说明能够帮助您更好地理解和使用vLLM服务。
步骤2:配置完成,启动
一旦配置文件准备就绪,通过以下命令启动服务:
docker-compose up -d
步骤3:通过API调用测试
在模型部署完成后,可以通过以下curl命令调用API来测试模型是否正常工作:
curl --request POST \
--url http://127.0.0.1:86/v1/chat/completions \
--header 'Content-Type: application/json' \
--header 'content-type: application/json' \
--data '{
"model": "TheBloke/Mixtral-8x7B-Instruct-v0.1-AWQ",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "hello!"
}
]
}'
这个API调用测试可以帮助您验证大语言模型是否已成功部署并能够响应请求。
以上就是使用vLLM推理大语言模型并通过Docker进行部署的详细步骤,包括命令参数的完整说明。希望这能帮助您顺利完成部署和测试。
评论区