This container image is optimized for use with Intel® GPUs. It includes the complete source for this vLLM release in /opt/vllm, and vLLM is installed in the Python virtual environment at /opt/venv (package path: /opt/venv/lib/python3.12/site-packages/vllm). It has been validated on Intel® Arc™ Pro B-Series Graphics. The following bill of materials was used during validation:
| Ingredients | Version |
|---|---|
| vLLM | 0.21.0 |
| vllm-xpu-kernels | 0.1.8.2 |
| Host OS | Ubuntu 24.04 |
| Python | 3.12 |
| PyTorch | 2.11 |
| Transformers | 5.8.0 |
| KMD Driver | 7.0 GA |
| UMD | 26.14.37833.4 |
| Intel(R) OMIX | 0.1.0 |
| oneCCL | 2021.15.9.14 |
For more information about vLLM, visit vLLM Docs.
The Dockerfiles used to build the container images are available by the links below:
--temperature=0 to collect stable and reproducible performance data.deepseek-ai/DeepSeek-V2-Lite model.This release supports core vLLM serving capabilities on Intel® GPUs, including online FP8 quantization, multimodal models, pooling models, and multi-GPU scaling strategies. In addition to dense model serving, it also includes expert parallelism and validated support for MoE models.
| Feature | Description | Note |
|---|---|---|
| FP8 Online Quantization | vLLM supports weight-only online dynamic quantization with FP8, enabling up to a 2x reduction in model memory requirements and up to a 1.6x throughput improvement with minimal accuracy impact. BF16 and FP16 models can be quantized dynamically to FP8 without calibration data. | See the example. |
| Multi-Modality Support | Intel® GPUs support many of the popular multimodal models listed upstream here, including the Qwen VL series, InternVL series, whisper-large-v3, DeepSeek-OCR, and PaddleOCR-VL. | For example, Qwen/Qwen2.5-VL-32B-Instruct can run on four Intel® Arc™ Pro B60 Graphics cards for multimodal workloads. |
| Pooling Models Support | vLLM supports pooling models such as embedding, classification, and reward models, and these model types are supported on Intel® GPUs. | For detailed usage, refer to the guide. |
| Pipeline Parallelism | Pipeline parallelism distributes model layers across multiple GPUs, with each GPU processing a different stage of the model in sequence. | On Intel® GPUs, this is supported on a single node with mp as the backend. |
| Data Parallelism | vLLM supports Data Parallelism, where model weights are replicated across separate instances or GPUs to process independent request batches. | Supports both dense and MoE models. |
| Expert Parallelism | Experimental support for Expert Parallelism, which allows experts in Mixture-of-Experts (MoE) models to be deployed across separate GPUs. | In this release, TP+DP+EP is supported. |
| Speculative Decoding | Speculative Decoding with vLLM helps reduce inter-token latency under medium-to-low QPS (query per second), memory-bound workloads. | XPU supports methods n-gram, EAGLE, EAGLE3, medusa, and suffix. |
| FP8 KV cache | Quantized KV cache can reduce memory footprint by allowing approximately double the amount of space for KV cache allocation. This enables either processing longer context lengths for individual requests, or handling more concurrent request batches. | XPU supports FP8 KV cache with per-tensor quantization. |
In addition, features such as async scheduling, cpu kv cache offloading, automatic prefix caching, reasoning outputs, structured outputs and tool calling are also supported.
The following tables list the models validated by Intel. Support for vLLM on Intel® GPUs extends to a broader set of models beyond this list.
These models primarily use the LLM.generate API. Chat and instruct variants also support the LLM.chat API.
| Model (company/model name) | BF16/FP16 | Dynamic Online FP8 | MXFP4 |
|---|---|---|---|
| openai/gpt-oss-20b | ✅︎ | ||
| openai/gpt-oss-120b | ✅︎ | ||
| deepseek-ai/DeepSeek-R1-Distill-Llama-8B | ✅︎ | ✅︎ | |
| deepseek-ai/DeepSeek-R1-Distill-Qwen-14B | ✅︎ | ✅︎ | |
| deepseek-ai/DeepSeek-R1-Distill-Qwen-32B | ✅︎ | ✅︎ | |
| deepseek-ai/DeepSeek-R1-Distill-Llama-70B | ✅︎ | ✅︎ | |
| deepseek-ai/DeepSeek-Coder-33B-base | ✅︎ | ✅︎ | |
| Qwen/Qwen2.5-72B-Instruct | ✅︎ | ✅︎ | |
| Qwen/Qwen3-14B | ✅︎ | ✅︎ | |
| Qwen/Qwen3-32B | ✅︎ | ✅︎ | |
| Qwen/Qwen3-30B-A3B | ✅︎ | ✅︎ | |
| Qwen/Qwen3-coder-30B-A3B-Instruct | ✅︎ | ✅︎ | |
| Qwen/Qwen3-NEXT-80B-A3B-Instruct | ✅︎ | ✅︎ | |
| Qwen/Qwen3-NEXT-80B-A3B-Thinking | ✅︎ | ✅︎ | |
| Qwen/QwQ-32B | ✅︎ | ✅︎ | |
| openbmb/MiniCPM-V-4 | ✅︎ | ✅︎ | |
| deepseek-ai/DeepSeek-V2-Lite | ✅︎ | ✅︎ | |
| meta-llama/Llama-3.1-8B-Instruct | ✅︎ | ✅︎ | |
| THUDM/GLM-4-9B-chat | ✅︎ | ✅︎ | |
| THUDM/GLM-4v-9B-chat | ✅︎ | ✅︎ | |
| THUDM/CodeGeex4-All-9B | ✅︎ | ✅︎ | |
| chuhac/TeleChat2-35B | ✅︎ | ✅︎ | |
| 01-ai/Yi1.5-34B-Chat | ✅︎ | ✅︎ | |
| meta-llama/Llama-2-13b-chat-hf | ✅︎ | ✅︎ | |
| Qwen/Qwen1.5-14B-Chat | ✅︎ | ✅︎ | |
| Qwen/Qwen1.5-32B-Chat | ✅︎ | ✅︎ |
Per-tensor and per-channel compressed_tensors quantized models such as RedHatAI/Meta-Llama-3.1-8B-Instruct-FP8-dynamic are also supported.
Supported modalities vary by model and include text, image, video, and audio:
| Model (company/model name) | BF16/FP16 | Dynamic Online FP8 | Text | Image | Video | Audio |
|---|---|---|---|---|---|---|
| openai/whisper-large-v3 | ✅︎ | ✅︎ | ||||
| deepseek-ai/DeepSeek-OCR | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ||
| PaddlePaddle/PaddleOCR-VL | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ||
| Qwen/Qwen2-VL-7B-Instruct | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| Qwen/Qwen2.5-VL-72B-Instruct | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| Qwen/Qwen2.5-VL-32B-Instruct | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| OpenGVLab/InternVL3_5-8B | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| OpenGVLab/InternVL3_5-14B | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| OpenGVLab/InternVL3_5-38B | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| OpenGVLab/InternVL3_5-30B-A3B | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ | |
| openbmb/MiniCPM-V-4 | ✅︎ | ✅︎ | ✅︎ | ✅︎ | ✅︎ |
These models primarily support the LLM.embed API. The following table lists the models validated on XPU.
| Model Type | Model (company/model name) | BF16 | Dynamic Online FP8 |
|---|---|---|---|
| Embedding Model | Qwen/Qwen3-Embedding-8B | ✅︎ | ✅︎ |
| Reranker Model | Qwen/Qwen3-Reranker-8B | ✅︎ | ✅︎ |
The following items are currently known issues and limitations:
vllm serve uses aggressive GPU memory allocation by default. If you encounter an out-of-memory (OOM) condition, reduce the GPU memory utilization setting when starting the server. For example: vllm serve --gpu-memory-utilization 0.8.torch.compile is currently not supported.FusedMoE refactor in upstream.| OS | Hardware |
|---|---|
| Ubuntu 24.04 | Intel® Arc™ B-Series |
Pull the released Docker image:
docker pull <docker-image-name>:<tag>
Start the container:
docker run -t -d --shm-size 10g --net=host --ipc=host --privileged \
-v /dev/dri/by-path:/dev/dri/by-path --name=vllm-test \
--device /dev/dri:/dev/dri --entrypoint=/bin/bash <docker-image-name>:<tag>
Open two terminals and run docker exec -it vllm-test bash in both. Use one terminal for the server and the other for the client.
From this point on, all commands are expected to be run inside the Docker container unless noted otherwise.
In both environments, you may want to set the HUGGING_FACE_HUB_TOKEN environment variable so the required files can be downloaded from Hugging Face.
export HUGGING_FACE_HUB_TOKEN=xxxxxx
Command:
VLLM_WORKER_MULTIPROC_METHOD=spawn vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \
--dtype=float16 \
--enforce-eager \
--port 8000 \
--block-size 64 \
--gpu-memory-utilization 0.9 \
--no-enable-prefix-caching \
--trust-remote-code \
--max-num-batched-tokens=8192 \
--max-model-len 4096 \
-tp=4 \
--quantization fp8
Expected output:
INFO 03-20 03:20:29 api_server.py:937] Starting vLLM API server on http://0.0.0.0:8000
INFO 03-20 03:20:29 launcher.py:23] Available routes are:
INFO 03-20 03:20:29 launcher.py:31] Route: /openapi.json, Methods: HEAD, GET
INFO 03-20 03:20:29 launcher.py:31] Route: /docs, Methods: HEAD, GET
INFO 03-20 03:20:29 launcher.py:31] Route: /docs/oauth2-redirect, Methods: HEAD, GET
INFO 03-20 03:20:29 launcher.py:31] Route: /redoc, Methods: HEAD, GET
INFO 03-20 03:20:29 launcher.py:31] Route: /health, Methods: GET
INFO 03-20 03:20:29 launcher.py:31] Route: /ping, Methods: POST, GET
INFO 03-20 03:20:29 launcher.py:31] Route: /tokenize, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /detokenize, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/models, Methods: GET
INFO 03-20 03:20:29 launcher.py:31] Route: /version, Methods: GET
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/chat/completions, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/completions, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/embeddings, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /pooling, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /score, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/score, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/audio/transcriptions, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /rerank, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v1/rerank, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /v2/rerank, Methods: POST
INFO 03-20 03:20:29 launcher.py:31] Route: /invocations, Methods: POST
INFO: Started server process [1636943]
INFO: Waiting for application startup.
INFO: Application startup complete.
Startup may take some time. When INFO: Application startup complete. appears, the server is ready.
Use the following command to send benchmark requests:
vllm bench serve \
--model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \
--dataset-name random \
--random-input-len=1024 \
--random-output-len=1024 \
--ignore-eos \
--num-prompt 16 \
--max-concurrency 16 \
--temperature=0 \
--request-rate inf \
--backend vllm \
--port=8000 \
--host 0.0.0.0 \
--ready-check-timeout-sec 1
This command uses the deepseek-ai/DeepSeek-R1-Distill-Qwen-32B model. Both the input and output lengths are set to 1024 tokens, and the server processes up to 16 requests concurrently.
Expected output:
Maximum request concurrency: 16
============ Serving Benchmark Result ============
Successful requests: 1
Benchmark duration (s): xxx
Total input tokens: 1024
Total generated tokens: 1024
Request throughput (req/s): xxx
Output token throughput (tok/s): xxx
Total Token throughput (tok/s): xxx
---------------Time to First Token----------------
Mean TTFT (ms): xxx
Median TTFT (ms): xxx
P99 TTFT (ms): xxx
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): xxx
Median TPOT (ms): xxx
P99 TPOT (ms): xxx
---------------Inter-token Latency----------------
Mean ITL (ms): xxx
Median ITL (ms): xxx
P99 ITL (ms): xxx
==================================================
If you encounter any issues or have questions, please submit an issue at vLLM GitHub Issues. Include the text [Intel GPU] in the issue title so it is routed appropriately.
By downloading and using these container images and the included software, you agree to the terms and conditions of the software license agreements.
In accordance with the terms and conditions of these licenses, particularly those requiring source code availability, such as GPL, the source code for all open-source components included in these container images can be obtained from here.
All Ubuntu container images are intended for demo purposes only and not intended for production use. To receive expanded security maintenance from Canonical on the Ubuntu base layer, you may follow the how-to guide to enable Ubuntu Pro in a Dockerfile which will require the image to be rebuilt.
FFmpeg is an open source project licensed under LGPL and GPL. See https://www.ffmpeg.org/legal.html. You are solely responsible for determining if your use of FFmpeg requires any additional licenses. Intel is not responsible for obtaining any such licenses, nor liable for any licensing fees due, in connection with your use of FFmpeg.
© Intel Corporation. Intel, Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver and other Intel marks are trademarks of Intel Corporation or its subsidiaries.
* Other names and brands may be claimed as the property of others.
Content type
Image
Digest
sha256:a76ac6b89…
Size
6.8 GB
Last updated
about 2 months ago
docker pull intel/vllmPulls:
3,069
Sep 7 to Sep 13