BigDL容器化部署:Docker一键启动vLLM服务全指南 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组以避免每次使用sudosudo 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_IMAGEintelanalytics/ipex-llm-serving-xpu:latest export CONTAINER_NAMEmulti-arc-container export MODEL_PATH/path/to/your/models sudo docker run -itd \ --nethost \ --privileged \ --device/dev/dri \ -v $MODEL_PATH:/llm/models \ -e no_proxylocalhost,127.0.0.1 \ -e http_proxy$HTTP_PROXY \ -e https_proxy$HTTPS_PROXY \ --name$CONTAINER_NAME \ --shm-size16g \ --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_IMAGEintelanalytics/ipex-llm-serving-cpu:latest export CONTAINER_NAMEipex-llm-serving-cpu-container export MODEL_PATH/path/to/your/models sudo docker run -itd \ --nethost \ --cpuset-cpus0-47 \ # 根据你的CPU核心数调整 --cpuset-mems0 \ -v $MODEL_PATH:/llm/models \ -e no_proxylocalhost,127.0.0.1 \ --memory64G \ --name$CONTAINER_NAME \ --shm-size16g \ $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位整数量化fp66位浮点数量化fp88位浮点数量化默认fp1616位浮点数修改量化参数在启动脚本中修改以下参数export LOAD_IN_LOW_BITfp8 # 可替换为其他量化方案性能调优参数--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 MODELYOUR_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-8b1Llama-2-7B1Qwen2-7B1Qwen1.5-7B1GLM4-9B1chatglm3-6b1Baichuan2-7B1Codegeex4-all-9b1Llama-2-13B2Qwen1.5-14b2TeleChat-13B2Qwen1.5-32b4Yi-1.5-34B4CodeLlama-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_cachingTrue)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),仅供参考