Quick Start
Environment Setup
Section titled “Environment Setup”Choose your Hardware, host CPU architecture, and Release or Dev image to get the Docker commands for your environment.
Enable JavaScript to use the installation selector, or follow the hardware-specific instructions below.
- Release images include a pre-built
xllmbinary, ready to run without compiling. - Dev images include the development environment; build xLLM from source inside the container.
- CPU selects the host architecture (
x86_64orARM64), not a CPU-only inference backend. Rununame -mon your Linux host if you are unsure.
Install Docker and the appropriate accelerator drivers on the host first. NVIDIA GPU containers also require the NVIDIA Container Toolkit. The commands above mount your home directory and grant access to accelerator devices; use them only with trusted images on a suitable development host.
The commands create named containers that remain after you exit. To re-enter a stopped container, run docker start -ai <container-name>, replacing <container-name> with the value of --name (for example, xllm-npu). To try a different image or hardware setup, choose an unused --name in the new docker run command. Restarting an existing container keeps its original image and configuration.
Browse the Ascend and NVIDIA image tags, or see the full setup instructions for your hardware:
Image availability and release versions vary by platform. Combinations without a listed image show a notice instead of a Docker command. Cambricon MLU requires a vendor-provided image.
Build xllm
Section titled “Build xllm”Skip this step when using a Release image: it includes a pre-built binary that you can invoke with xllm. For a Dev image, run the following commands inside the container.
Download xllm and dependencies:
git clone https://github.com/xLLM-AI/xllm.gitcd xllm
# Install pre-commit for the first timepip install pre-commitpre-commit install
git submodule update --init --recursiveIn a new image, the first compilation of xllm takes a long time because all dependencies in vcpkg need to be compiled, but subsequent compilations will be much faster.
# Build the C++ binaries and Python extension (without unit-test targets)python setup.py build
# Build the product, then build and run unit testspython setup.py build test
# Build and run one unit-test targetpython setup.py test --test-name common_test
# Compile python wheelpython setup.py bdist_wheel
# Compile python wheel and installpython setup.py installbuild compiles the product targets; build test then builds and runs unit tests
in the same build directory. You can also run python setup.py test separately
to build and run tests after an existing product build. Test targets remain
registered in CMake for compatibility with third-party build definitions.
Pass --device npu (or another
supported backend) to select the target device. bdist_wheel and install
build the product and package the wheel without compiling or running unit tests;
run python setup.py test explicitly when needed. SKIP_EXPORT=1 disables
the Python extension in the normal build. Set MAX_JOBS to control native
compilation parallelism, including xllm_ops (override it separately with
OPS_CPU_NUMBER if needed). NPU test runs should use CTEST_PARALLEL=1 to avoid
exceeding the device’s process limit.
Launch xllm
Section titled “Launch xllm”Please refer to How to Launch xllm.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-0.10.0-release-hb-rc2-x86 \ /bin/bashThis image includes a pre-built xllm binary. Skip the build step and launch xLLM inside the container.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-dev-a2-x86-cann9-20260911 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-0.10.0-release-hb-rc2-arm \ /bin/bashThis image includes a pre-built xllm binary. Skip the build step and launch xLLM inside the container.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-dev-a2-arm-cann9-20260911 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
No release image is listed here for Ascend A3 / x86_64. Choose another CPU or build, or consult the hardware guide.
No dev image is listed here for Ascend A3 / x86_64. Choose another CPU or build, or consult the hardware guide.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-0.10.0-release-hc-rc2-arm \ /bin/bashThis image includes a pre-built xllm binary. Skip the build step and launch xLLM inside the container.
docker run -it \ --name xllm-npu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \ -v /var/log/npu/slog/:/var/log/npu/slog \ -v /var/log/npu/profiling/:/var/log/npu/profiling \ -v /var/log/npu/dump/:/var/log/npu/dump \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-dev-a3-arm-cann9-20260911 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
docker run -it \ --name xllm-cuda \ --gpus all \ --privileged \ --shm-size=128g \ --ipc=host \ --network=host \ --pid=host \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-0.8.0-release-cuda-x86 \ /bin/bashThis image includes a pre-built xllm binary. Skip the build step and launch xLLM inside the container.
docker run -it \ --name xllm-cuda \ --gpus all \ --privileged \ --shm-size=128g \ --ipc=host \ --network=host \ --pid=host \ -v "$HOME:$HOME" \ -w "$HOME" \ quay.io/jd_xllm/xllm-ai:xllm-dev-cuda-x86 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
No release image is listed here for NVIDIA GPU / ARM64. Choose another CPU or build, or consult the hardware guide.
No dev image is listed here for NVIDIA GPU / ARM64. Choose another CPU or build, or consult the hardware guide.
A public Cambricon MLU image is not provided. Obtain a compatible development image from your vendor and follow the hardware guide.
A public Cambricon MLU image is not provided. Obtain a compatible development image from your vendor and follow the hardware guide.
A public Cambricon MLU image is not provided. Obtain a compatible development image from your vendor and follow the hardware guide.
A public Cambricon MLU image is not provided. Obtain a compatible development image from your vendor and follow the hardware guide.
No release image is listed here for Hygon DCU / x86_64. Choose another CPU or build, or consult the hardware guide.
docker run -it \ --name xllm-dcu \ --ipc=host \ -u 0 \ --privileged \ --network=host \ --shm-size=256g \ --device=/dev/kfd \ --device=/dev/dri \ --device=/dev/mkfd \ --security-opt seccomp=unconfined \ --group-add video \ -v /opt/hyhal:/opt/hyhal \ -v "$HOME:$HOME" \ -w "$HOME" \ harbor.sourcefind.cn:5443/dcu/admin/base/custom:xllm-dev-dcu-x86-20260617 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
No release image is listed here for Hygon DCU / ARM64. Choose another CPU or build, or consult the hardware guide.
No dev image is listed here for Hygon DCU / ARM64. Choose another CPU or build, or consult the hardware guide.
No release image is listed here for MetaX MACA / x86_64. Choose another CPU or build, or consult the hardware guide.
docker run -it \ --name xllm-maca \ --ipc=host \ -u 0 \ --network=host \ --privileged \ --shm-size=100g \ --device=/dev/mxcd \ --device=/dev/dri \ --device=/dev/infiniband \ --security-opt seccomp=unconfined \ --security-opt apparmor=unconfined \ --group-add video \ --ulimit memlock=-1 \ -v /opt/maca:/opt/maca \ -v "$HOME:$HOME" \ -w "$HOME" \ pub-registry1.metax-tech.com/dev-m01421/xllm-maca3.7.1.9:v1 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
No release image is listed here for MetaX MACA / ARM64. Choose another CPU or build, or consult the hardware guide.
No dev image is listed here for MetaX MACA / ARM64. Choose another CPU or build, or consult the hardware guide.
No release image is listed here for Mthreads MUSA / x86_64. Choose another CPU or build, or consult the hardware guide.
docker run -it \ --name xllm-musa \ --ipc=host \ --network=host \ --privileged \ --shm-size=128g \ --device=/dev/mtgpu0 \ --device=/dev/dri \ --group-add video \ --ulimit memlock=-1 \ -v "$HOME:$HOME" \ -w "$HOME" \ registry.mthreads.com/presale/devtech/xllm:0710 \ /bin/bashThis is a development environment. Continue with Build xllm inside the container.
No release image is listed here for Mthreads MUSA / ARM64. Choose another CPU or build, or consult the hardware guide.
No dev image is listed here for Mthreads MUSA / ARM64. Choose another CPU or build, or consult the hardware guide.