链载Ai

标题: Docker vLLM内网离线部署Qwen3教程 [打印本页]

作者: 链载Ai    时间: 前天 14:03
标题: Docker vLLM内网离线部署Qwen3教程
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;">出于传递知识而非盈利之目的,同时并不代表赞成其观点或证实其描述,内容仅供参考。
图片

一、Docker部署

vllm的优势

图片

1. 环境隔离:Docker通过容器隔离技术为VLLM提供独立的运行环境,避免系统库版本冲突和依赖错误问题。


2. 便捷的跨平台迁移:使用Docker部署的VLLM容器可以轻松迁移到不同的服务器、数据中心或云平台上,大大降低了环境搭建和维护的成本。


3. 轻松扩展:借助容器化,VLLM可以轻松进行水平扩展,通过在多节点上运行多个容器实例实现高并发的推理服务。


4. 统一管理:容器化部署后,可以使用Docker Compose、Kubernetes等容器编排工具进行自动化管理,包括负载均衡、故障转移等操作,极大地简化了多实例部署的管理难度。

    图片


    图片

    二、环境准备





    图片















    01

    Nvidia显卡驱动、CUDA、nvidia-container安装

    图片
    参考文章:显卡驱动、CUDA、NVIDIA Container Toolkit内网安装教程

    02

    Docker环境安装

    图片
    参考文章:Docker 和 Docker Compose 内网离线安装教程

    注意:在进行VLLM容器化部署之前,需要确保已在服务器上安装了Docker 和
    Nvidia显卡驱动、CUDA、nvidia-container。

    图片

    三、

    vllm内网离线部署Qwen3-32B

    图片

    系统环境:

    01

    拉取vllm/vllm-openai镜像


    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镜像就安装成功了。

    02

    下载Qwen/Qwen3-32B模型文件


    常用模型下载地址:
    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/目录中,如下:

    03

    vllm内网部署Qwen/Qwen3-32B


    直接运行下面命令即可将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,需要换成自己的:
    dockerlogs-fvllm-qwen3
    看见下面日志,则模型启动成功。
    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模型的推理解析器,用于处理特定格式的推理任务。


    其他vllm参数:

    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参数。






    欢迎光临 链载Ai (http://www.lianzai.com/) Powered by Discuz! X3.5