BigDL容器化部署:Docker一键启动vLLM服务全指南
2026/7/12 15:19:38 网站建设 项目流程

BigDL容器化部署:Docker一键启动vLLM服务全指南

BigDL是一个强大的开源项目,提供了基于Docker的vLLM服务一键部署方案,让用户能够轻松在Intel CPU和GPU上运行高效的大语言模型推理服务。本文将详细介绍如何通过Docker快速部署vLLM服务,无论你是新手还是有经验的开发者,都能按照本指南轻松完成部署。

为什么选择BigDL容器化部署vLLM服务?

容器化部署已成为现代应用开发和部署的标准方式,尤其对于大语言模型这样的复杂应用。BigDL提供的Docker解决方案具有以下优势:

  • 简化部署流程:无需手动配置复杂的依赖环境,Docker镜像包含所有必要组件
  • 跨平台兼容性:同时支持Intel CPU和GPU,满足不同硬件环境需求
  • 优化性能:针对Intel硬件进行深度优化,充分发挥硬件性能
  • 灵活扩展:支持多种模型和量化方案,适应不同场景需求

准备工作:安装Docker环境

在开始部署vLLM服务之前,需要确保你的系统已经安装了Docker。根据你的操作系统,按照Docker官方指南进行安装。

对于Linux系统,安装完成后,建议将当前用户添加到docker组以避免每次使用sudo:

sudo usermod -aG docker $USER

安装完成后,可以通过以下命令验证Docker是否正常工作:

docker --version docker run hello-world

部署方案一:Intel GPU环境部署vLLM服务

步骤1:获取Docker镜像

BigDL提供了预构建的Docker镜像,你可以直接从DockerHub拉取:

# 对于Intel Arc A770 GPUs docker pull intelanalytics/ipex-llm-serving-xpu:0.8.3-b19 # 对于Intel Arc BMG GPUs docker pull intelanalytics/ipex-llm-serving-xpu:0.2.0-b2

如果你需要自定义镜像,也可以从源码构建:

cd docker/llm/serving/xpu/docker docker build \ --build-arg http_proxy=... \ --build-arg https_proxy=... \ --build-arg no_proxy=... \ --rm --no-cache -t vllm-serving:test .

步骤2:启动Docker容器

使用以下命令启动容器,确保GPU设备被正确映射:

export DOCKER_IMAGE=intelanalytics/ipex-llm-serving-xpu:latest export CONTAINER_NAME=multi-arc-container export MODEL_PATH=/path/to/your/models sudo docker run -itd \ --net=host \ --privileged \ --device=/dev/dri \ -v $MODEL_PATH:/llm/models \ -e no_proxy=localhost,127.0.0.1 \ -e http_proxy=$HTTP_PROXY \ -e https_proxy=$HTTPS_PROXY \ --name=$CONTAINER_NAME \ --shm-size="16g" \ --entrypoint /bin/bash \ $DOCKER_IMAGE

进入容器:

docker exec -it $CONTAINER_NAME /bin/bash

步骤3:验证GPU访问

在容器内运行以下命令验证GPU是否被正确识别:

sycl-ls

成功的输出应显示类似以下内容:

[level_zero:gpu][level_zero:0] Intel(R) oneAPI Unified Runtime over Level-Zero, Intel(R) Arc(TM) A770 Graphics 12.55.8 [1.6.32224.500000] [level_zero:gpu][level_zero:1] Intel(R) oneAPI Unified Runtime over Level-Zero, Intel(R) Arc(TM) A770 Graphics 12.55.8 [1.6.32224.500000] ...

步骤4:启动vLLM服务

容器中已包含启动脚本,你可以直接修改并使用:

# 修改配置参数 vi /llm/start-vllm-service.sh # 启动服务 bash /llm/start-vllm-service.sh

成功启动后,你将看到类似以下的日志输出:

步骤5:测试vLLM服务

使用curl发送测试请求:

curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "llama2-7b-chat", "prompt": "San Francisco is a", "max_tokens": 128 }'

部署方案二:Intel CPU环境部署vLLM服务

步骤1:构建CPU Docker镜像

cd docker/llm/serving/cpu/docker docker build \ --build-arg http_proxy=.. \ --build-arg https_proxy=.. \ --build-arg no_proxy=.. \ --rm --no-cache -t intelanalytics/ipex-llm-serving-cpu:latest .

步骤2:启动CPU容器

export DOCKER_IMAGE=intelanalytics/ipex-llm-serving-cpu:latest export CONTAINER_NAME=ipex-llm-serving-cpu-container export MODEL_PATH=/path/to/your/models sudo docker run -itd \ --net=host \ --cpuset-cpus="0-47" \ # 根据你的CPU核心数调整 --cpuset-mems="0" \ -v $MODEL_PATH:/llm/models \ -e no_proxy=localhost,127.0.0.1 \ --memory="64G" \ --name=$CONTAINER_NAME \ --shm-size="16g" \ $DOCKER_IMAGE

进入容器:

docker exec -it $CONTAINER_NAME /bin/bash

步骤3:启动CPU上的vLLM服务

# 修改配置参数 vi /llm/start-vllm-service.sh # 启动服务 bash /llm/start-vllm-service.sh

步骤4:验证CPU服务

curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "YOUR_MODEL", "prompt": "San Francisco is a", "max_tokens": 128, "temperature": 0 }' | jq '.choices[0].text'

成功响应示例:

模型量化与性能优化

BigDL vLLM服务支持多种量化方案,以在性能和精度之间取得平衡:

支持的量化方案

  • sym_int4:对称4位整数量化
  • asym_int4:非对称4位整数量化
  • fp6:6位浮点数量化
  • fp8:8位浮点数量化(默认)
  • fp16:16位浮点数

修改量化参数

在启动脚本中修改以下参数:

export LOAD_IN_LOW_BIT="fp8" # 可替换为其他量化方案

性能调优参数

  • --max-model-len:模型上下文长度
  • --max-num-batched-token:每轮迭代的最大批处理token数
  • --max-num-seq:每轮迭代的最大序列数

详细参数说明可参考官方文档

基准测试

在线基准测试

cd /llm # 预热 wrk -t4 -c4 -d3m -s payload-1024.lua http://localhost:8000/v1/completions --timeout 1h # 正式测试 wrk -t8 -c8 -d15m -s payload-1024.lua http://localhost:8000/v1/completions --timeout 1h

离线基准测试

cd /llm wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json source ipex-llm-init -t export MODEL="YOUR_MODEL" python3 ./benchmark_vllm_throughput.py \ --backend vllm \ --dataset ./ShareGPT_V3_unfiltered_cleaned_split.json \ --model $MODEL \ --num-prompts 1000 \ --seed 42 \ --trust-remote-code \ --enforce-eager \ --dtype bfloat16 \ --device cpu \ --load-in-low-bit bf16

支持的模型列表

BigDL vLLM服务已验证支持多种流行模型:

模型 (fp8)GPU数量
llama-3-8b1
Llama-2-7B1
Qwen2-7B1
Qwen1.5-7B1
GLM4-9B1
chatglm3-6b1
Baichuan2-7B1
Codegeex4-all-9b1
Llama-2-13B2
Qwen1.5-14b2
TeleChat-13B2
Qwen1.5-32b4
Yi-1.5-34B4
CodeLlama-34B4

高级功能

多模态模型支持

BigDL vLLM服务支持多模态模型,如MiniCPM-V-2_6(视觉模型)和whisper系列(音频模型),可以处理图像和音频输入。

Prefix Caching

启用Prefix Caching可以缓存查询的KV缓存,当新查询与现有查询共享前缀时,可以直接重用KV缓存,大大提高性能:

llm = LLM(model='/llm/models/Llama-2-7b-chat-hf', ... enable_prefix_caching=True)

LoRA适配器

支持在基础模型上使用LoRA适配器,实现高效的模型微调:

python -m ipex_llm.vllm.xpu.entrypoints.openai.api_server \ ... --enable-lora \ --lora-modules sql-lora=$SQL_LOARA

总结

通过BigDL提供的Docker容器化方案,你可以轻松在Intel CPU或GPU上部署高性能的vLLM服务。无论是开发环境测试还是生产环境部署,这种方式都能为你节省大量配置时间,让你专注于模型应用而非环境搭建。

想要了解更多细节,可以参考项目中的官方文档:

  • GPU部署详细指南
  • CPU部署详细指南
  • vLLM快速入门

现在,你已经掌握了BigDL容器化部署vLLM服务的全部流程,立即尝试部署你自己的大语言模型服务吧!🚀

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询