|
ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;visibility: visible;">特别声明:该文章ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;background-color: rgb(255, 255, 255);font-weight: bolder;visibility: visible;">出于传递知识而非盈利之目的,同时并不代表赞成其观点或证实其描述,内容仅供参考。 1. 环境隔离:Docker通过容器隔离技术为VLLM提供独立的运行环境,避免系统库版本冲突和依赖错误问题。
2. 便捷的跨平台迁移:使用Docker部署的VLLM容器可以轻松迁移到不同的服务器、数据中心或云平台上,大大降低了环境搭建和维护的成本。
3. 轻松扩展:借助容器化,VLLM可以轻松进行水平扩展,通过在多节点上运行多个容器实例实现高并发的推理服务。
4. 统一管理:容器化部署后,可以使用Docker Compose、Kubernetes等容器编排工具进行自动化管理,包括负载均衡、故障转移等操作,极大地简化了多实例部署的管理难度。
Nvidia显卡驱动、CUDA、nvidia-container安装 参考文章:显卡驱动、CUDA、NVIDIA Container Toolkit内网安装教程参考文章:Docker 和 Docker Compose 内网离线安装教程注意:在进行VLLM容器化部署之前,需要确保已在服务器上安装了Docker 和Nvidia显卡驱动、CUDA、nvidia-container。vllm官方地址:https://github.com/vllm-project/vllm.git在能联网的机器上拉取vllm/vllm-openai镜像,然后导出镜像,再导入到内网的服务器上,我导入的目录是 /data (根据个人习惯导入对应的目录即可),对应的操作命令如下:#1.docker拉取vllm/vllm-openai镜像,20G需要等一会。dockerpullvllm/vllm-openai#2.从联网的机器上导出镜像dockersave-ovllm-openai-image.tarvllm/vllm-openai:latest#3.将压缩包vllm-openai-image.tar上传到/data目录cd/data#4.docker加载上传的本地镜像包dockerload<vllm-openai-image.tar#5.查看docker镜像dockerimages 到这一步vllm/vllm-openai镜像就安装成功了。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">Hugging Face Hub:全球最大的开源模型和数据集托管平台,提供大量 GGUF 格式等多种类型的大模型下载。网址为https://huggingface.co/,国内镜像为https://hf-mirror.com/,访问镜像网站速度更快。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">ModelScope 魔搭社区:由阿里云开源的大模型社区,支持 GGUF 格式模型的下载和在线推理。网址是https://www.modelscope.cn/models,可通过 SDK 或 git 进行下载。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">GitCode:全新上线了国产模型专区,是国产大模型的汇聚地,为开发者提供便捷获取各类优质模型的途径,网址为https://gitcode.net/。下载命令:魔塔社区提供多种下载方式,我是用git下载的:#Git下载#请确保lfs已经被正确安装gitlfsinstallgitclonehttps://www.modelscope.cn/Qwen/Qwen3-32B.git 先在联网的电脑上把模型下载到本地,然后复制模型文件到内网的服务器的/data/目录中,如下:直接运行下面命令即可将Qwen/Qwen3-32B模型运行起来,注意模型文件的路径需要换成自己的,模型的参数根据自己的显卡情况进行调参。dockerrun-d--privileged--gpusall--restartunless-stopped--networkhost-v/data/Qwen3-32B:/app/model--shm-size32G--namevllm-qwen3vllm/vllm-openai:latest--model/app/model--served-model-nameqwen3:32b--dtypehalf--kv-cache-dtype=fp8_e4m3--calculate-kv-scales--port8008--tensor-parallel-size4--trust-remote-code--max-model-len32000--max-num-batched-tokens64000--max-num-seqs4--gpu-memory-utilization0.95--api-keyOPENWEBUl123--reasoning-parserDeepSeek_r1 dockerrun-d--privileged--gpusall\--restartunless-stopped--networkhost\-v/data/DeepSeek-R1-Distill-Qwen-32B:/app/model\--shm-size32G\--namevllm-deepseekvllm/vllm-openai:latest\--model/app/model\--served-model-namevllm-qwen3\--dtypehalf\--kv-cache-dtype=fp8_e4m3\--calculate-kv-scales\--port8006\--tensor-parallel-size4\--trust-remote-code\--max-model-len16000\--max-num-batched-tokens32000\--max-num-seqs8\--gpu-memory-utilization0.85\--api-keyOPENWEBUl123\--enable-reasoning\--reasoning-parserdeepseek_r1
运行成功后,查看容器日志(我这里用的是8008端口,APIKey用的是OPENWEBUl123,需要换成自己的:docker run命令中关于 vLLM 部署的各个参数:容器运行参数:
1.-d:让容器在后台运行,也就是以守护进程模式启动。
2.--privileged:赋予容器近乎宿主机的root权限,这样容器才能访问特殊设备,比如GPU。
3.--gpus all:使容器能够使用宿主机上的所有GPU资源。
4.--restart unless-stopped:设定容器的重启策略,除非手动停止,否则容器会在各种情况下自动重启。
5.--network host:容器会直接使用宿主机的网络栈,这样容器内的服务可以通过宿主机的IP地址直接访问。
6.-v/data/Qwen3-32B:/app/model:将宿主机的/data/Qwen3-32B目录挂载到容器内的/app/model目录,方便容器读取模型文件。
7.--shm-size 32G:把容器的共享内存大小增加到32GB,这对多进程间的高效通信很有帮助。
8.--namevllm-qwen3:给运行的容器命名为vllm-qwen3,便于后续的管理和操作。
vLLM服务参数:
9.--model /app/model:指定容器内模型文件所在的路径,也就是之前挂载的目录。
10.--served-model-nameqwen3:32b:设置对外提供服务时模型的名称。
11.--dtype half:将模型参数的数据类型设置为半精度浮点数(FP16),以此来减少内存占用。
12.--kv-cache-dtype=fp8_e4m3:使用E4M3格式的FP8数据类型来存储键值缓存,进一步优化内存使用。
13.--calculate-kv-scales:开启对键值缓存动态缩放因子的计算,有助于提升量化的精度。
14.--port 8008:设置服务监听的端口为8008。
15.--tensor-parallel-size 4:将模型在4个GPU上进行张量并行处理,加快推理的速度。
16.--trust-remote-code:允许执行模型附带的自定义代码,使用时需要注意安全问题。
17.--max-model-len 32000:把模型支持的最大输入长度限制为16000个token。
18.--max-num-batched-tokens 64000:设置批处理时允许的最大token数量为32000,这影响着吞吐量。
19.--max-num-seqs 8:限制同时处理的最大序列数为8。
20.--gpu-memory-utilization 0.95:将GPU内存的使用率上限设置为95%,防止出现内存溢出的情况。
21.--api-key OPENWEBUl123:设置API访问的密钥为OPENWEBUl123,用于身份验证。
22.--enable-reasoning:开启推理功能,这可能涉及到多轮对话或者复杂问题的解决。
23.--reasoning-parser deepseek_r1:指定使用DeepSeek-R1模型的推理解析器,用于处理特定格式的推理任务。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">1. 推理性能优化
#启用PagedAttention优化内存碎片--swap-space20#每个GPU分配20GB磁盘交换空间--gpu-memory-utilization0.9#提高GPU内存使用率上限#批处理优化--max-num-batched-tokens64000#增大批处理token数量--max-num-seqs16#增加并发处理的序列数--continuous-batching#启用连续批处理,动态调整批大小#量化优化--quantizationawq#使用AWQ量化进一步压缩模型--quantizationint8#使用INT8量化替代FP16 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2. 模型加载与初始化#模型加载优化--model-cache/cache/models#指定模型缓存路径,加速重启--download-dir/data/models#指定模型下载目录#权重加载方式--load-formatpt#直接加载PyTorch权重--load-formatsafetensors#加载safetensors格式权重(更快) ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">3. 网络与 API 配置#API服务配置--host0.0.0.0#监听所有网络接口--workers2#启动多个工作进程(需配合--no-huggingface-available)--timeout300#设置请求超时时间(秒)#安全增强--cors-allow-origins"*"#允许跨域请求--api-version2#使用OpenAIAPIv2兼容模式 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">4. 日志与监控#日志配置--log-levelinfo#日志级别:debug,info,warning,error--log-file/var/log/vllm.log#日志输出文件#性能监控--trace#启用性能追踪--trace-output/data/trace.json#输出追踪结果 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">5. 特定模型优化#DeepSeek模型专用优化--disable-logits-warper#禁用logits调整(部分模型需要)--rope-scalinglinear#启用RoPE缩放以支持更长上下文--rope-factor2.0#设置RoPE缩放因子#大模型优化--pipeline-parallel-size2#结合张量并行与流水线并行 API调用示例:vLLM 提供实现了 OpenAI Completions API,Chat API等接口的 HTTP 调用服务,调用服务时,可使用官方OpenAI Python 客户端或任意 HTTP 客户端:fromopenaiimportOpenAIclient=OpenAI(base_url="http://ip:8008/v1",api_key="OPENWEBUl123",)completion=client.chat.completions.create(model="qwen3:32b",messages=[{"role":"user","content":"你是谁?"}])print(completion.choices[0].message)提示: vLLM支持部分OpenAI未包含的参数(如top_k),可通过在请求的extra_body参数中传递,例如:extra_body={"top_k": 50}。 重要信息: 默认情况下,服务器会加载 Hugging Face 模型仓库中的generation_config.json文件(若存在)。这意味着某些采样参数的默认值可能被模型创建者推荐的配置覆盖。如需禁用此行为,请在启动服务时添加--generation-config vllm参数。 |