LMDeploy
Apache 2.0 LLM serving and quantization toolkit from Shanghai AI Laboratory's InternLM group. Builds for NVIDIA, Huawei Ascend, Cambricon and AMD ROCm from a single codebase.
Overview
Shanghai AI Laboratory's InternLM group maintains LMDeploy as the compression and serving toolkit for its own models, and it has long since outgrown that origin. Two engines ship in the same package. TurboMind is the C++ and CUDA implementation built for raw throughput, carrying hand-written kernels including SM90 native BF16 and FP8 GEMM paths. The PyTorch engine is pure Python and exists so that supporting a new architecture does not require kernel work first. Quantization covers AWQ weight-only 4-bit, K/V cache quantization, FP8 for MoE layers and MXFP4 on recent NVIDIA silicon.
The reason it matters outside the InternLM ecosystem is hardware. Set LMDEPLOY_TARGET_DEVICE at build time and the same codebase targets NVIDIA CUDA, Huawei Ascend, Cambricon or AMD ROCm. For any organisation in China operating under domestic-chip procurement rules, that one environment variable is the difference between a working deployment and a rewrite, and no Western serving stack offers an equivalent. The licence is plain Apache 2.0 with no field-of-use restriction and no user cap, so it can go into a commercial product without a legal review cycle.
Judge the performance claims yourself. The README states up to 1.8 times the request throughput of vLLM and 2.4 times FP16 speed at 4-bit, both from the project's own benchmarks, and that gap narrows or reverses depending on model shape and batch profile. Community size is the real trade-off: 8,030 stars against a vastly larger vLLM ecosystem means fewer integrations and thinner third-party answers when something breaks. v0.16.0 arrived 19 August 2026 with GLM-5.2 support, TurboMind ViT paths for InternVL and Qwen-VL plus the SM90 kernels, following v0.15.0 on 31 July with DeepSeek V4 support. English documentation sits on readthedocs and is adequate rather than generous.
Key Features
- ✓ Two engines in one package: TurboMind, a C++ and CUDA kernel implementation aimed at throughput, and a pure Python PyTorch engine that lowers the barrier to adding new architectures
- ✓ Quantization across AWQ weight-only 4-bit, K/V cache quantization, FP8 for MoE layers and MXFP4 on recent NVIDIA parts
- ✓ Multi-vendor builds selected through the LMDEPLOY_TARGET_DEVICE environment variable, covering NVIDIA CUDA from V100 through RTX 50 series, Huawei Ascend, Cambricon and AMD ROCm
- ✓ OpenAI-compatible serving plus an Anthropic-compatible endpoint and an OpenAI Responses-compatible endpoint added through the 0.13 and 0.14 lines
- ✓ Automatic prefix caching, speculative decoding with guided decoding support and long-context prefix-cache hits
- ✓ v0.16.0 on 19 August 2026 added GLM-5.2, TurboMind ViT paths for InternVL and Qwen-VL plus SM90 native BF16 and FP8 GEMM kernels
Where it holds
- • Plain Apache 2.0 with no field-of-use clause and no user cap, unlike several Chinese model and infrastructure releases
- • Multi-accelerator support from one codebase, which no Western serving stack matches for Huawei Ascend. That single build flag can decide whether a domestic-procurement deployment happens at all
- • Vision-language serving is a first-class path, with InternVL and Qwen-VL running on TurboMind rather than a slow generic fallback
- • Tracks new Chinese model architectures quickly. GLM-5.2 and DeepSeek V4 support landed within weeks of the weights
Where it breaks
- • 8,030 stars against a far larger vLLM community means fewer third-party integrations and much thinner troubleshooting material when something breaks at 2am
- • The 1.8x throughput advantage over vLLM and the 2.4x FP16 figure at 4-bit are the project's own benchmark claims. They depend on model, batch shape and hardware, so reproduce them on your traffic before committing
- • Ascend, Cambricon and ROCm builds trail the CUDA path on model coverage. Check the support matrix for your specific architecture first
- • TurboMind kernels are C++ and CUDA, so extending it for an unusual architecture is a real engineering project rather than a config change
My Take
For teams that have to serve on Ascend, this is the short list. LMDeploy comes out of Shanghai AI Laboratory's InternLM group under a clean Apache 2.0 licence, and its build system targets NVIDIA CUDA, Huawei Ascend, Cambricon and AMD ROCm from one codebase, which matters enormously if your procurement is subject to domestic hardware rules. The README claims up to 1.8 times the request throughput of vLLM and 2.4 times FP16 speed at 4-bit, both figures worth reproducing on your own traffic before you commit to them. v0.16.0 landed 19 August 2026 with GLM-5.2 and FP8 MoE support.
Quick Info
- Pricing:
- open-source
- Openness:
- Open source
- Licence:
- Apache 2.0
- Starting at:
- Free under a plain Apache 2.0 licence with no field-of-use restriction and no user cap. Installable from PyPI as lmdeploy or built from source, selecting the accelerator target at build time. Your only costs are the GPU or NPU hardware and the electricity to run it. Docker images are published for the CUDA path, with separate build instructions for Ascend, Cambricon and ROCm targets.
- Added:
- Aug 2026
- Updated:
- Aug 2026
Use Cases
Judge it on your own work
The notes above say where LMDeploy holds and where it breaks. The fastest check is your own workload.
Visit website ↗LMDeploy compared head to head
Alternatives to LMDeploy
vLLM
open-sourceOpen-source inference server for self-hosted LLMs. PagedAttention and continuous batching for high-concurrency serving across Nvidia, AMD, Intel and CPU backends.
llama.cpp
open-sourceC/C++ LLM inference engine behind the GGUF format, running quantised models on CPU, CUDA, Metal, Vulkan, ROCm and Hexagon NPUs with no Python at runtime.
Ollama
freemiumLocal LLM runtime with a one-command install and an OpenAI-compatible server on localhost. For laptop development, edge deployment and air-gapped environments.