training-xpu-pytorch 26.01

更新时间:
复制 MD 格式

This document provides the release notes for the training-xpu-pytorch 26.01 image.

Main features and bug fixes

Main features

  • Upgraded the PPU SDK to version 2.0.0.

  • Upgraded transformer_engine to 2.8 and the vLLM inference component to 0.12.0+ppu2.0.0.oe.

  • Updated health_check to be compatible with shuttle 1.5.3.

  • Added a new image compatible with vLLM 0.14.0, which includes upgrades to torch 2.9, triton 3.5, deepspeed 0.18.5, and transformers 4.57.6.

  • Upgraded vLLM to 0.16.0, which also upgrades Flashinfer to 0.6.3 and megatron-core to 0.16.0.

Bug fixes

  • Fixed the following issues in vLLM 0.16.0:

    • Fixed garbled output in GLM-5 responses.

    • Fixed a server failure when running the Qwen3.5-35B-A3B model with TP=2.

Contents

Image name

training-xpu-pytorch

Image tag

26.01

26.01-pytorch2.9-20260215

26.01-pytorch2.9-20260320

Application scenarios

training/inference

Framework

pytorch 2.8.0

pytorch 2.9.0

pytorch 2.9.0

Requirements

PPU SDK 2.0.0

Supported architectures

amd64

Core components

  • Ubuntu: 24.04

  • Python: 3.12.7+gc

  • CUDA: 12.9

  • perf: 5.4.30

  • gdb: 15.0.50.20240403-git

  • ffmpeg: n8.0

  • torch: 2.8.0+ali.9.ppu2.0.0.cu129

  • triton: 3.4.0+post1.ppu2.0.0.cu129

  • transformer_engine: 2.8+ppu2.0.0.oe

  • deepspeed: 0.18.1+ali

  • flash-attn: 2.7.4.post1+ppu2.0.0.oe

  • xformers: 0.0.30+ppu2.0.0.oe

  • cupy: 13.5.1+ppu1.7.0.ce

  • transformers: 4.57.1+ali

  • accelerate: 1.11.0+ali

  • diffusers: 0.34.0

  • bitsandbytes: 0.48.1+ppu1.7.0.ce

  • mmengine: 0.10.7

  • mmcv: 2.1.0+ppu1.7.0.ce

  • mmdet3d: 1.4.0+ppu1.7.0.ce

  • vllm: 0.12.0+ppu2.0.0.oe

  • pytorch-dynamic-profiler: 0.24.11

  • peft: 0.16.0

  • ray: 2.53.0

  • cumm-cu129: 0.8.1+ppu1.7.0.ce

  • spconv-cu129: 2.3.6+ppu1.7.0.ce

  • imageio-ffmpeg: 0.5.1

  • open3d: 0.19.0+ppu1.7.0.ce

  • flashinfer-python: 0.5.3+ppu2.0.0

  • megatron-core: 0.15.0

  • Ubuntu: 24.04

  • Python: 3.12.7+gc

  • CUDA: 12.9

  • perf: 5.4.30

  • gdb: 15.0.50.20240403-git

  • ffmpeg: n8.0

  • torch: 2.9.0+ali.10.ppu2.0.0.cu129

  • triton: 3.5.0+ppu2.0.0

  • transformer_engine: 2.8+ppu2.0.0.oe

  • deepspeed: 0.18.1+ali

  • flash-attn: 2.7.4.post1+ppu2.0.0.oe

  • xformers: 0.0.30+ppu2.0.0.oe

  • cupy: 13.5.1+ppu1.7.0.ce

  • transformers: 4.57.6+ali

  • accelerate: 1.11.0+ali

  • diffusers: 0.34.0

  • bitsandbytes: 0.49.1+ppu2.0.0.ce

  • mmengine: 0.10.7

  • mmcv: 2.1.0+ppu2.0.0.ce

  • mmdet3d: 1.4.0+ppu2.0.0.ce

  • vllm: 0.14.0+ppu2.0.0.oe

  • pytorch-dynamic-profiler: 0.24.11

  • peft: 0.16.0

  • ray: 2.53.0

  • cumm-cu129: 0.8.1+ppu1.7.0.ce

  • spconv-cu129: 2.3.6+ppu1.7.0.ce

  • imageio-ffmpeg: 0.5.1

  • open3d: 0.19.0+ppu2.0.0.ce

  • flashinfer-python: 0.5.3+ppu2.0.0

  • megatron-core: 0.15.0

  • Ubuntu: 24.04

  • Python: 3.12.7+gc

  • CUDA: 12.9

  • perf: 5.4.30

  • gdb: 15.0.50.20240403-git

  • ffmpeg: n8.0

  • torch: 2.9.0+ali.10.ppu2.0.0.cu129

  • triton: 3.5.0+ppu2.0.0

  • transformer_engine: 2.8+ppu2.0.0.oe

  • deepspeed: 0.18.1+ali

  • flash-attn: 2.7.4.post1+ppu2.0.0.oe

  • xformers: 0.0.30+ppu2.0.0.oe

  • cupy: 13.5.1+ppu1.7.0.ce

  • transformers: 4.57.6+ali

  • accelerate: 1.11.0+ali

  • diffusers: 0.34.0

  • bitsandbytes: 0.49.1+ppu2.0.0.ce

  • mmengine: 0.10.7

  • mmcv: 2.1.0+ppu2.0.0.ce

  • mmdet3d: 1.4.0+ppu2.0.0.ce

  • vllm: 0.16.0+ppu2.0.0

  • pytorch-dynamic-profiler: 0.24.11

  • peft: 0.16.0

  • ray: 2.53.0

  • cumm-cu129: 0.8.1+ppu1.7.0.ce

  • spconv-cu129: 2.3.6+ppu1.7.0.ce

  • imageio-ffmpeg: 0.5.1

  • open3d: 0.19.0+ppu2.0.0.ce

  • flashinfer-python: 0.6.3+ppu2.0.0

  • megatron-core: 0.16.0

Assets

Public images

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-xpu-pytorch:26.01

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-xpu-pytorch:26.01-pytorch2.9-20260215

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-xpu-pytorch:26.01-pytorch2.9-20260320

VPC images

Replace the AI container image asset URI egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag} with acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag} for accelerated pulling of PPU AI container images from within your VPC.

  • {region-id}: The region ID of the available region for your ACS product (including Finance Cloud, Government Cloud, and others). For example: cn-beijing, cn-wulanchabu, or cn-shanghai-finance-1.

  • {image:tag}: The name and tag of the AI container image. For example: inference-xpu-pytorch:25.11-v1.7.0-vllm0.10.2-torch2.8-cu129-20251113 or training-xpu-pytorch:25.11.

Driver requirements

  • Driver version >= 1.1.0

Key features and enhancements

PyTorch compilation optimization

The compilation optimization feature introduced in PyTorch 2.0 usually provides significant benefits in small-scale, single-GPU scenarios, but in LLM training, the need to incorporate memory optimization and distributed frameworks such as FSDP and Deepspeed makes it difficult for torch.compile() to provide benefits and can even cause performance degradation:

  • This optimization controls communication granularity within the DeepSpeed framework, allowing the compiler to capture a more complete computation graph and apply broader optimizations.

  • This release includes an optimized version of PyTorch with the following enhancements:

    • An optimized PyTorch compiler frontend that ensures successful compilation even when arbitrary graph breaks occur.

    • Enhanced pattern matching and dynamic shape capabilities to improve the performance of compiled code.

With these optimizations, you can typically achieve an end-to-end (E2E) throughput gain of around 20% when training an 8B LLM.

Memory optimization with gradient checkpointing

A model to predict memory overhead was built using extensive benchmark data from various models, clusters, and training configurations—along with system metrics like memory utilization. This allows the system to recommend the optimal number of activation checkpointing layers. Integrated into PyTorch and compatible with the DeepSpeed framework, this feature helps users optimize memory usage.

ACCL communication library

ACCL is a high-performance network communication library developed by Alibaba for Lingjun products. It is available in three versions: ACCL-N for NVIDIA GPUs, ACCL-P for PPUs, and ACCL-R for AMD accelerators. ACCL-N is based on NVIDIA NCCL, offering full compatibility and including bug fixes and optimizations for performance and stability. ACCL-P is a collective communication library built upon T-Head's open-source pccl. ACCL-R is built upon AMD's open-source ROCm rccl. This release ports key features from ACCL and ACCL-N to pccl, resolves known issues, and is deeply customized for integration with Alibaba Cloud's proprietary networking components.

End-to-end performance evaluation

Using CNP, a cloud-native AI performance evaluation and analysis tool, we conducted a comprehensive end-to-end performance comparison against the standard base image with mainstream open-source models and framework configurations. We also performed an ablation study to evaluate the performance contribution of each optimization component to the overall model training performance.

Image comparison with base image and iterative evaluation

image.png

E2E performance contribution analysis of PPU and GPU core components

The following tests were based on version 26.01 and conducted on a multi-node PPU cluster to evaluate and compare end-to-end training performance. The comparison items include:

  1. Base: The PPU PyTorch base image.

  2. ACS AI Image: Base+ACCL: The base image using the ACCL communication library.

  3. ACS AI Image: AC2+ACCL: The golden image using AC2 BaseOS with no optimizations enabled.

  4. ACS AI Image: AC2+ACCL+CompilerOpt: The golden image using AC2 BaseOS with only the torch.compile optimization enabled.

  5. ACS AI Image: AC2+ACCL+CompilerOpt+CkptOpt: The golden image using AC2 BaseOS with both torch.compile and selective gradient checkpointing optimizations enabled.

image.png

Quick start

The following example shows how to pull the training-xpu-pytorch image by using Docker.

Note

In ACS, use the training-xpu-pytorch image by providing its address when you create a workload in the console or by referencing it in a YAML file.

Step 1: Log in to the image registry

docker login egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com

Step 2: Enable performance optimizations

  • Enable compilation optimization

    Use the transformers Trainer API:

    image.png

  • Enable gradient checkpointing

    export CHECKPOINT_OPTIMIZATION=true

Step 3: Start the container

The image has a built-in model training tool named ljperf, which is used to demonstrate how to start a container and run a training task.

Note

For ACS products, use a YAML file to reference the image.

LLM tasks

# Start the container and enter it.
docker run --rm -it --ipc=host --net=host  --privileged egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-xpu-pytorch:[tag]

# Run a training demo.
ljperf --action train --model_name deepspeed/llama3-8b

Usage recommendations

  • This image contains modified versions of libraries such as PyTorch and DeepSpeed. Do not reinstall them.

  • In the DeepSpeed configuration, leave zero_optimization.stage3_prefetch_bucket_size empty or set it to auto.

  • The built-in environment variable NCCL_SOCKET_IFNAME in this image needs to be dynamically adjusted based on the usage scenario:

    • When a single Pod requests only 1, 2, 4, or 8 GPUs for training or inference tasks, you need to set NCCL_SOCKET_IFNAME=eth0 (the default configuration in this image).

    • When a single pod requests all 16 GPUs on a machine to perform training/inference tasks by using HPN, you must set NCCL_SOCKET_IFNAME=hpn0.

  • We recommend that you use this image with "Use the Alibaba Cloud PPU PIP service in ACS products". This provides password-free access to the PIP service within an ACS VPC, eliminating the need to use other PIP sources. The image includes the necessary pip configuration, but you may need to make additional adjustments based on your specific use case by following the guide.

  • To use AcclEP-P (the PPU version of DeepEP) in an ACS environment, you must set the environment variable export EIC_VSOLAR=1. This setting is required for the current image, and this limitation is expected to be removed in future images.

  • For optimal performance, we recommend that you use this image with the latest driver version. For instructions, see Specify GPU models and driver versions for ACS GPU Pods and GPU driver version notes.

  • Quantization support in PPU SDK 2.0.0 container images:

    • Standard quantization capability supported in SAIL vLLM 0.12.0: per-token/per-channel w8a8 (int8).

      SAIL vLLM 0.12.0 is not yet adapted for or optimized with the Marlin kernel. As a result, performance for AWQ (w4a16), GPTQ (w4a16, w8a16), and mxfp4 is poor. We recommend that you use the int8 w8a8 quantization scheme.
    • Examples of quantized models compatible with SDK 2.0 are provided. The system login credentials are the same as your PTG PIP credentials. If you do not have them, contact your account manager.

      • DeepSeek-R1: Supports the per-token/per-channel a8w8 (int8) quantization scheme.

      • DeepSeek v3.2: Supports the per-token/per-channel a8w8 (int8) quantization scheme.

      • Kimi-K2-Instruct: Supports the per-token/per-channel a8w8 (int8) quantization scheme.

      • Qwen3-235B-A22B: Supports the per-token/per-channel a8w8 (int8) quantization scheme.

      • GLM-5: Supports the per-token/per-channel w8a8 (int8) quantization scheme.

      • MiniMax-M2.5: Supports the per-token/per-channel w8a8 (int8) quantization scheme.

      • Qwen3.5-397B-A17B: Supports the per-token/per-channel w8a8 (int8) quantization scheme.

  • When running inference with vLLM 0.14.0, you must update the flash-attn dependency to v2.8.2.

Known issues

Known issues in vLLM 0.16.0

  • The community version of vLLM 0.16.0 does not support Qwen3.5 series models. PPU provides partial support, but not all features and use cases of the Qwen3.5 models are supported. Potential issues include but are not limited to:

    • Probabilistic failures when the MTP feature is enabled.

    • Precision test failures for bfcl_v3 when the tool call feature is enabled.

  • To adapt to GLM-5 and Qwen3.5 series models, the transformers version has been upgraded to 5.2.0. This version does not support Qwen VL models. To run Qwen VL models, you must downgrade the transformers version to 4.57.1.

  • DP+EP+DeepEP low latency issues:

    • When you start the server for the first time, you must set export VLLM_ENGINE_READY_TIMEOUT_S=6000. Otherwise, the server will fail to start. The community also encounters this issue on the GU8TF card model.

    • A precision issue exists for the Qwen3 MoE BF16 scenario. This is also a known issue in the community.

  • The MiniMax-M2.5 model fails to start when TP=16. Use TP=8 to run int8 quantized weights.

  • The MiniMax-M2 model scores low on the ifeval precision test. This issue also occurs on GU8TF instances.

  • When the value of --gpu_memory_utilization exceeds 0.96, a segment fault may rarely occur due to a Driver OOM.

  • The Flashinfer Sampler may cause a drop in precision. If you encounter this issue, you can use export VLLM_USE_FLASHINFER_SAMPLER=0 to disable the feature.

  • The Kimi-linear model has a precision issue, which is also a known issue in the community.

  • For Kimi-linear or DeepSeek-OCR series models, using DeepGemm causes the server to fail to start. Set the following environment variables to use the Acext MoE backend.

    # Set environment variables to use the Acext MoE backend.
    export VLLM_USE_DEEP_GEMM=0
    export VLLM_MOE_USE_ACEXT=1
    export VLLM_DENSE_USE_ACEXT=1
    export ACEXT_NUM_TOKENS_LIMIT=16385
  • If you use the DeepGemm backend, the server automatically performs a warmup during startup to compile the required DeepGemm kernels. This may lead to a long warmup time:

    • The warmup time is long. We recommend specifying the deepgemm cache path by using an environment variable to avoid repeated compilation: export DG_CACHE_DIR=<your path>.

    • You can use export VLLM_DEEP_GEMM_WARMUP="skip" to skip the DeepGemm warmup. During performance testing, ensure that DeepGemm JIT compilation does not occur. Otherwise, this will cause performance degradation.

  • Regarding quantization, SAIL vLLM 0.16.0 is not yet adapted to or optimized for the Marlin kernel. As a result, performance for AWQ (w4a16), GPTQ (w4a16, w8a16), and mxfp4 is suboptimal. We recommend using the int8 w8a8 quantization scheme.