inference-xpu-pytorch 25.08

更新时间:
复制 MD 格式

This topic provides the release notes for inference-xpu-pytorch 25.08.

Main features and bug fixes

Main features

  • The PPU SDK in the base image is upgraded to v1.6.0.

  • Added support for flashinfer 0.2.6.post1.

Bug fixes

  • Fixed an issue in the SGLang image of version 25.07 where the generate API returned incorrect inference results.

  • Fixed an issue in the vLLM image of version 25.07 where deploying the Qwen2.5-VL-32B-Instruct-AWQ model failed.

Contents

inference-xpu-pytorch

inference-xpu-pytorch

Image tag

25.08-v1.6.0-vllm0.9.1-torch2.7-cu128-20250815

25.08-v1.6.0-sglang0.4.7-torch2.7-cu128-20250811

Use cases

large model inference

large model inference

Framework

pytorch

pytorch

Requirements

PPU SDK V1.6.0

PPU SDK V1.6.0

System components

  • Ubuntu 24.04

  • Python 3.12

  • Torch 2.7.0

  • CUDA 12.8

  • ACCL-P 1.6.0-10

  • EIC 1.3.8.2

  • eic-sailshmem 1.0.3.1.0.gda3c51b

  • accelerate 1.9.0

  • apex 0.1

  • deepseed 0.14.4

  • vllm 0.9.1

  • diffusers 0.34.0

  • transformers 4.51.3

  • flash-attn 2.7.4.post1

  • imageio 2.37.0

  • imageio-ffmpeg 0.6.0

  • peft 0.12.0

  • ray 2.48.0

  • xformers 0.0.30

  • triton 3.3.0+git36ef89f7

  • flashinfer-python 0.2.6.post1

  • xgrammar 0.1.19

  • xfuser 0.4.4

  • Ubuntu 24.04

  • Python 3.12

  • Torch 2.7.0

  • CUDA 12.8

  • ACCL-P 1.6.0-10

  • AcclEP-P 1.0.0.4+9fab99e

  • EIC 1.3.8.2

  • eic-sailshmem 1.0.3.1.0.gda3c51b

  • accelerate 1.9.0

  • diffusers 0.34.0

  • vllm 0.9.1+cu126

  • sglang 0.4.7

  • sgl-kernel 0.1.7

  • transformers 4.51.3

  • flash-attn 2.7.4.post1

  • flash_mla 1.0.0

  • flashinfer-python 0.2.6.post1

  • imageio 2.37.0

  • imageio-ffmpeg 0.6.0

  • ray 2.48.0

  • peft 0.12.0

  • xformers 0.0.29.post1

  • triton 3.3.0+git36ef89f7

  • xgrammar 0.1.19

  • torchao 0.11.0

  • xfuser 0.4.4

Image assets

Public image

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:25.08-v1.6.0-vllm0.9.1-torch2.7-cu128-20250815

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:25.08-v1.6.0-sglang0.4.7-torch2.7-cu128-20250811

VPC images

  • acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}

    {region-id} is the ID of the region where your Container Service for Kubernetes (ACK) cluster is located, such as cn-beijing or cn-wulanchabu.
    {image:tag} is the actual image name and tag.

End-to-end performance benchmarks

This benchmark measured the maximum concurrency and throughput in vLLM online inference mode, while maintaining a Time to First Token (TTFT) under 3s and a Time Per Output Token (TPOT) under 100 ms.

  • vllm 0.9.1:

    • The single-node Output Token Throughput for the DeepSeek-R1-bf16 model, which degraded in version 25.07, has been restored in this release.

    • The single-node output token throughput for the DeepSeek-R1-W8A8 model is 197% of that of the bf16 model.

image.png

Quick start

The following example shows how to pull the inference-xpu-pytorch image using Docker and test the inference service with the Qwen2.5-7B-Instruct model.

Note

To use the inference-xpu-pytorch image in Container Service for Kubernetes (ACK), you can select it from the artifact center page when you create a workload in the Console, or specify the image reference in a YAML file.

  1. Pull the inference image.

    docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:[tag]
  2. Download the open-source model in ModelScope format.

    pip install modelscope
    cd /mnt
    modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir ./Qwen2.5-7B-Instruct
  3. Run the following command to start and enter the container.

    docker run -d -t --network=host --privileged --init --ipc=host \
    --ulimit memlock=-1 --ulimit stack=67108864  \
    -v /mnt/:/mnt/ \
    egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-xpu-pytorch:[tag]
  4. Run an inference test to verify the conversational inference feature of vLLM.

    1. Start the server.

      python3 -m vllm.entrypoints.openai.api_server \
      --model /mnt/Qwen2.5-7B-Instruct \
      --trust-remote-code --disable-custom-all-reduce \
      --tensor-parallel-size 1
    2. Run a test on the client.

      curl http://localhost:8000/v1/chat/completions \
          -H "Content-Type: application/json" \
          -d '{
          "model": "/mnt/Qwen2.5-7B-Instruct",  
          "messages": [
          {"role": "system", "content": "You are a friendly AI assistant."},
          {"role": "user", "content": "Tell me about deep learning."}
          ]}'

      The following output is returned:

      image.png

      For more information about using vLLM, see the vLLM documentation.

Usage notes

Quantization support in SDK 1.6.0

  • DeepSeek R1 (671B):

    • vLLM 0.9.1: Supports per-token/per-channel a8w8 (int8), AWQ (w4a16), and GPTQ (w4a16, w8a16) quantization methods.

    • SGLang 0.4.7: Supports per-token/per-channel A8W8 (int8), AWQ (w4a16), and GPTQ (w4a16, w8a16) quantization methods. To run an A8W8 (int8) quantized model, you must add the --quantization w8a8_int8 option.

  • Qwen3:

    • vLLM 0.9.1: Supports per-token/per-channel a8w8 (int8), AWQ (w4a16), and GPTQ (w4a16, w8a16) quantization methods.

    • SGLang 0.4.7: Supports per-token/per-channel A8W8 (int8), AWQ (w4a16), and GPTQ (w4a16, w8a16) quantization methods. To run an A8W8 (int8) quantized model, you must add the --quantization w8a8_int8 option.

  • For optimal performance, we recommend using this image with driver version 1.5.1 or later. For configuration instructions, see Specify the GPU model and driver version for an ACS GPU pod and GPU driver versions.

  • The NCCL_SOCKET_IFNAME environment variable in this image must be set based on your use case:

    • When a single pod requests 1, 2, 4, or 8 GPUs for an inference task, set NCCL_SOCKET_IFNAME=eth0 (this is the default in the inference image).

    • When a single pod requests all 16 GPUs on a node for an inference task (allowing you to use the HPN network), set NCCL_SOCKET_IFNAME=hpn0.

  • We recommend using this image with the PPU PIP service, which provides one-stop, credential-free access to PIP services within an ACS VPC without using other PIP sources. This image includes the required pip configuration, but you may need to make additional adjustments for your use case as described in the documentation.

Known issues

  • vLLM stability issues:

    • During multi-GPU inference, you may encounter an mp_distributed_executor error. To work around this issue, set VLLM_WORKER_MULTIPROC_METHOD=spawn. See the open source community.

    • After multi-GPU inference completes, vLLM may randomly exit with an error. This is a known upstream issue. See the open source community for details.

  • vLLM quantization issues:

    • vLLM uses the Marlin kernel by default to accelerate GPTQ/AWQ quantized inference. You can explicitly specify quantization gptq_acext or quantization awq_acext to use acext for quantized inference instead. However, acext does not currently support quantization with act_order=True or GPTQ-Int8 weights.

    • vLLM FP8 quantization requires an SM89/90 architecture, which PPU does not natively support. vLLM 0.9.1 provides an FP8 Marlin implementation (which performs W8A16 quantized inference) that allows FP8 models to run on architectures with SM versions lower than 89. While PPU can run FP8 models this way, it has not yet been adapted or optimized for this purpose.

  • vLLM-v0.9.1 estimates less available KV cache space than v0.8.5. This reduces concurrency and degrades performance in scenarios constrained by the KV cache, such as running DeepSeek-R1-bf16 on a single-node Zhenwu 810E.

    • Use the A8W8 quantization model on Zhenwu 810E to avoid this performance degradation.

  • By default, SGLang-v0.4.7 uses shared experts when running the DeepSeek-R1 / DeepSeek-V3 A8W8-INT8 model, while SGLang-v0.4.6.post1 does not. This causes SGLang-v0.4.7 to have lower performance than SGLang-v0.4.6.post1. To disable shared experts, use the --disable-shared-experts-fusion option. With this option, the performance of SGLang-v0.4.7 is comparable to that of SGLang-v0.4.6.post1.

  • Setting the --mem-fraction-static option to a large value for the SGLang-v0.4.7 image causes insufficient single-node GPU memory, resulting in a decode out of memory error. This is a known community issue.

  • The following flashinfer modules have known precision issues that cause unit tests to fail.

    1. PoD Attention.

    2. Segment gemm.