
用于在纯CPU系统上运行vLLM的预构建Docker镜像,针对不同CPU指令集进行了优化。
特性:OpenAI兼容API、CPU优化(AVX512、VNNI、BF16、AMX)、多架构支持、健康检查、PUID/PGID用户映射。
要求:4GB+内存(推荐16GB+)、4+ CPU核心、Docker 20.10+、2GB+共享内存。
根据CPU指令集支持选择合适的变体:
| 变体 | 标签 | 优化 | 目标CPU | 架构 |
|---|---|---|---|---|
| noavx512 | noavx512-<version> | 基准 | 所有CPU | x86_64、ARM64 |
| avx512 | avx512-<version> | AVX512 | Intel Skylake-X+ | x86_64 |
| avx512vnni | avx512vnni-<version> | AVX512 + VNNI | Intel Cascade Lake+ | x86_64 |
| avx512bf16 | avx512bf16-<version> | AVX512 + VNNI + BF16 | Intel Cooper Lake+ | x86_64 |
| amxbf16 | amxbf16-<version> | AVX512 + VNNI + BF16 + AMX | Intel Sapphire Rapids+ | x86_64 |
每个变体有两种标签格式:
<variant>-<version>(如 avx512bf16-0.12.0)<variant>-latest(如 avx512bf16-latest)bash# 检查可用指令集 lscpu | grep -E "avx512|vnni|amx" # 或使用标志检查 grep -o 'avx512[a-z_]*\|amx[a-z_]*' /proc/cpuinfo | sort -u
bash# 拉取镜像 docker pull mekayelanik/vllm-cpu:noavx512-latest # 运行小型模型 docker run -d \ --name vllm-cpu \ --restart unless-stopped \ --cap-add SYS_NICE \ --security-opt seccomp=unconfined \ --shm-size 4g \ -p 8000:8000 \ -v vllm-data:/data \ -e VLLM_MODEL=Qwen/Qwen3-0.6B \ -e VLLM_SERVER_HOST=0.0.0.0 \ -e VLLM_SERVER_PORT=8000 \ mekayelanik/vllm-cpu:noavx512-latest \ --max-model-len 8192 # 查看日志 docker logs -f vllm-cpu # 测试API curl http://localhost:8000/v1/models
| 端点 | 描述 |
|---|---|
/health | 健康检查端点 |
/v1/models | 列出可用模型 |
/v1/completions | 文本补全API |
/v1/chat/completions | 聊天补全API |
/v1/embeddings | 嵌入API |
最简单且最具可移植性的配置,适用于大多数部署场景。
yaml# docker-compose.yml - 标准桥接网络 # 保存此文件后运行:docker compose up -d services: vllm-cpu: image: mekayelanik/vllm-cpu:noavx512-latest container_name: vllm-cpu hostname: vllm-cpu domainname: local restart: unless-stopped # CPU优化所需的权限 cap_add: - SYS_NICE security_opt: - seccomp=unconfined # 模型加载共享内存 shm_size: 4g # 端口映射 ports: - "8000:8000" # 持久化存储 volumes: - vllm-data:/data - vllm-cache:/data/cache # 可选:挂载本地HuggingFace缓存 # - ${HOME}/.cache/huggingface:/data/models # 环境配置 environment: # 用户/组映射(可选) - PUID=1000 - PGID=1000 - TZ=UTC # 模型配置 - VLLM_MODEL=Qwen/Qwen3-0.6B # - HF_TOKEN=your_huggingface_token # 用于 gated 模型 # 服务器配置 - VLLM_SERVER_HOST=0.0.0.0 - VLLM_SERVER_PORT=8000 # - VLLM_API_KEY=your_api_key # 可选API密钥 # 日志 - VLLM_LOGGING_LEVEL=INFO - VLLM_CONFIGURE_LOGGING=1 # 内存优化 - MALLOC_TRIM_THRESHOLD_=100000 # CPU特定优化(根据系统调整) # KV缓存大小(GB)- 增加以支持更多并发请求 # 默认4GB。公式:(内存 - 模型大小 - 8GB)/2 - VLLM_CPU_KVCACHE_SPACE=8 # vLLM参数(传递给入口点) command: - "--max-model-len" - "8192" - "--dtype" - "auto" # 健康检查已内置于Docker镜像(30秒间隔,120秒启动期) # 资源限制(可选) deploy: resources: limits: memory: 16G reservations: memory: 4G # 持久化命名卷 volumes: vllm-data: driver: local vllm-cache: driver: local
部署:
bash# 启动服务 docker compose up -d # 查看日志 docker compose logs -f vllm-cpu # 检查状态 docker compose ps # 停止服务 docker compose down
MACVLAN为容器提供本地网络上的独立IP地址,使其表现为独立物理设备。适用于:
前提条件:
eth0、ens18、enp0s3)yaml# docker-compose-macvlan.yml - MACVLAN网络配置 # 保存此文件后运行:docker compose -f docker-compose-macvlan.yml up -d services: vllm-cpu: image: mekayelanik/vllm-cpu:avx512bf16-latest container_name: vllm-cpu hostname: vllm-cpu domainname: local restart: unless-stopped # 所需权限 cap_add: - SYS_NICE security_opt: - seccomp=unconfined # 共享内存 shm_size: 4g # MAC地址(为网络生成唯一地址) mac_address: "02:42:c0:a8:01:64" # 带静态IP的MACVLAN网络 networks: vllm-macvlan: ipv4_address: 192.168.1.100 # 持久化存储 volumes: - vllm-data:/data - vllm-cache:/data/cache # 挂载本地模型目录 - /path/to/models:/data/models:ro # 环境配置 environment: # 用户/组映射 - PUID=1000 - PGID=1000 - TZ=UTC # 模型配置 - VLLM_MODEL=Qwen/Qwen3-0.6B - HF_HOME=/data/models # - HF_TOKEN=your_huggingface_token # 服务器配置(绑定到所有接口) - VLLM_SERVER_HOST=0.0.0.0 - VLLM_SERVER_PORT=8000 # 日志 - VLLM_LOGGING_LEVEL=INFO - VLLM_CONFIGURE_LOGGING=1 # 性能调优 - MALLOC_TRIM_THRESHOLD_=100000 - OMP_NUM_THREADS=8 - MKL_NUM_THREADS=8 # CPU特定优化 # KV缓存大小(GB)- 根据内存调整 - VLLM_CPU_KVCACHE_SPACE=12 # vLLM参数 command: - "--max-model-len" - "16384" - "--dtype" - "bfloat16" - "--cpu-offload-gb" - "0" # 健康检查已内置于Docker镜像(30秒间隔,120秒启动期) # 资源限制 deploy: resources: limits: memory: 32G reservations: memory: 8G # MACVLAN网络定义 networks: vllm-macvlan: driver: macvlan driver_opts: # 更改为您的网络接口名称 parent: eth0 ipam: driver: default config: # 根据网络配置调整 - subnet: 192.168.1.0/24 gateway: 192.168.1.1 # 容器IP范围(可选,限制可分配IP) ip_range: 192.168.1.100/30 # 命名卷 volumes: vllm-data: driver: local vllm-cache: driver: local
使用MACVLAN部署:
bash# 查找网络接口:ip link show # 创建并启动 docker compose -f docker-compose-macvlan.yml up -d # 通过专用IP访问 curl http://192.168.1.100:8000/v1/models
注意:使用MACVLAN时,主机无法直接访问容器。如需访问,需在主机上创建macvlan shim接口。
此配置针对高负载、高并发生产环境优化,旨在实现最大吞吐量。适用于高端Intel Xeon或AMD EPYC服务器上的企业部署。
目标硬件:
关键优化:VLLM_CPU_KVCACHE_SPACE
CPU推理最重要的设置是KV缓存大小。默认4GB对于生产环境太小。此配置将其设置为40GB以支持高并发。
使用场景:
yaml# docker-compose-high-performance.yml - 高负载生产配置 # 针对最大吞吐量和并发优化 # 运行:docker compose -f docker-compose-high-performance.yml up -d services: vllm-cpu-prod: image: mekayelanik/vllm-cpu:amxbf16-latest container_name: vllm-cpu-prod hostname: vllm-prod domainname: local restart: always # 使用主机网络以获得最大网络性能 network_mode: host # 扩展权限以优化性能 cap_add: - SYS_NICE - IPC_LOCK security_opt: - seccomp=unconfined # 大共享内存用于并发请求处理 shm_size: 16g # CPU固定用于NUMA优化(根据拓扑调整) # cpuset: "0-31" # 带性能优化的持久化存储 volumes: # 使用快速NVMe存储存放模型 - /mnt/nvme/vllm-data:/data - /mnt/nvme/vllm-cache:/data/cache - /mnt/nvme/models:/data/models:ro # tmpfs用于临时文件 - type: tmpfs target: /tmp tmpfs: size: 4G mode: 1777 # 生产环境配置 environment: # 以root运行以获得最大性能(或设置特定用户) # - PUID=0 # - PGID=0 - TZ=UTC # 模型配置 - 使用功能强大的模型 - VLLM_MODEL=Qwen/Qwen3-8B - HF_HOME=/data/models - HF_HUB_OFFLINE=1 # - HF_TOKEN=your_token # 服务器配置 - VLLM_SERVER_HOST=0.0.0.0 - VLLM_SERVER_PORT=8000 - VLLM_API_KEY=${VLLM_API_KEY:-} # ============================================================ # CPU特定vLLM优化(性能关键) # ============================================================ # KV缓存大小(GB)- 关键:默认仅4GB! # 根据可用内存和模型大小设置 # 公式:(总内存 - 模型大小 - 8GB余量)/2 # 示例:128GB内存,16GB模型 = (128-16-8)/2 = 52GB - VLLM_CPU_KVCACHE_SPACE=40 # OpenMP线程绑定用于CPU亲和性 # "auto" = 自动绑定,或指定核心如"0-31" # 提高缓存局部性并减少上下文切换 - VLLM_CPU_OMP_THREADS_BIND=0-31 # 为框架开销保留CPU核心(调度器、HTTP服务器) # 这些核心不会用于推理,减少竞争 - VLLM_CPU_NUM_OF_RESERVED_CPU=2 # ============================================================ # 高负载扩展超时 - VLLM_HTTP_TIMEOUT_KEEP_ALIVE=30 - VLLM_ENGINE_ITERATION_TIMEOUT_S=300 - VLLM_RPC_TIMEOUT=30000 # 日志 - 降低详细度以提高性能 - VLLM_CONFIGURE_LOGGING=1 - VLLM_LOGGING_LEVEL=WARNING - VLLM_LOG_STATS_INTERVAL=60 # 内存优化 - 激进设置 - MALLOC_TRIM_THRESHOLD_=65536 - MALLOC_MMAP_THRESHOLD_=*** - MALLOC_MMAP_MAX_=65536 # 线程 - 设置为(物理核心数 - 保留核心数) # 如果有32个核心并保留2个,设置为30 - OMP_NUM_THREADS=30 - MKL_NUM_THREADS=30 - OMP_PROC_BIND=close - OMP_PLACES=cores # NUMA优化(GNU OpenMP) - GOMP_CPU_AFFINITY=0-29 # 使用tcmalloc获得更好的内存性能 - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 # 禁用使用统计以保护隐私/提高性能 - VLLM_NO_USAGE_STATS=1 - VLLM_DO_NOT_TRACK=1 # 高性能vLLM参数 command: # 上下文长度 - "--max-model-len" - "32768" # Intel AMX的数据类型 - "--dtype" - "bfloat16" # 高
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务