How to Deploy vLLM Ascend with Docker: Step-by-Step Tutorial
Deploy vLLM on Huawei Ascend NPUs in minutes with the official ascendai/vllm-ascend Docker image. Pull, run, and query an OpenAI-compatible LLM endpoint.
In this tutorial you'll get vLLM Ascend serving an LLM on Huawei Ascend hardware using the official Docker image. The whole flow β from pull to a working OpenAI-compatible endpoint β takes about ten minutes on a machine with an Ascend 910B or 310P NPU.
π Want to deploy vLLM Ascend yourself?
Docker configs, system requirements, and installation guides β all on one page.
View vLLM Ascend Tool Page βPrerequisites
- An Ascend 910B / 310P NPU with the CANN toolkit installed and
npu-smi inforeporting your device - Docker with the Ascend container runtime (Ascend Docker Runtime)
- 8 GB+ RAM minimum; 32 GB recommended for larger models
Step 1 β Pull the image
docker pull ascendai/vllm-ascend:latest
The image bundles vLLM, the vllm-ascend plugin, and the Ascend runtime β no manual pip installs needed. It has been pulled over 315,000 times, so it is battle-tested in production setups.
Step 2 β Run the server
docker run --rm \
--device=/dev/davinci0 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-p 8080:8080 \
ascendai/vllm-ascend:latest \
--model Qwen/Qwen2.5-7B-Instruct --max-model-len 8192
This exposes the standard vLLM server on port 8080. You can swap in any model from Hugging Face that fits your NPU memory.
Step 3 β Query the endpoint
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "Qwen/Qwen2.5-7B-Instruct", "messages": [{"role": "user", "content": "Hello from Ascend!"}]}'
Because the API is OpenAI-compatible, your existing clients β LangChain, LiteLLM, Open WebUI β work without modification. Just point base_url at http://localhost:8080/v1.
Performance notes
| Setting | Recommendation |
|---|---|
| Tensor parallelism | Use --tensor-parallel-size to split across multiple NPUs |
| Max model length | Tune --max-model-len to fit NPU memory |
| Batching | Continuous batching is on by default β no tuning needed |
π Ready to run LLMs on Ascend?
Get the full Docker Compose config, requirements, and installation guide.
View vLLM Ascend Tool Page β