Skip to content

0.50.0: Faster 4-bit inference, CPU/ROCm/Apple Silicon improvements, and more!

Latest

Choose a tag to compare

@matthewdouglas matthewdouglas released this 25 Jul 01:42

This release brings a new fused 4-bit GEMM for inference on CUDA and ROCm, faster CPU ops on x86-64 and ARM64, reduced host-side overhead, and a much improved Apple Silicon backend. We've also added Windows on ARM CPU support, ROCm builds for Windows, additional ROCm and CUDA build variants, and new optimizer support on CPU and Intel XPU.

Highlights

🚀 New 4-bit GEMM kernels for inference (CUDA)

New fused 4-bit dequantize + GEMM kernels replace the old GEMV and dequantize + F.linear paths for small-to-medium batch sizes. 4-bit inference is up to 4x faster at batch sizes of 2 through 64 across Turing through Blackwell, with wins at batch size 1 in many cases too. Nested (double) quantization and bias are fused in as well, so nested quant sees an additional benefit. Kernel selection happens automatically at runtime based on shape, GPU architecture, and SM count. See #1949 for benchmarks and details.

🚀 Fused 4-bit SIMT GEMM on ROCm

The SIMT version of the new 4-bit GEMM has been ported to ROCm and wired into the same dispatch for small inference batches, validated on gfx1100, gfx1201, and gfx1151 (#1979).

AMD ROCm improvements

Stability and performance improvements bring AMD ROCm support out of preview; it is now considered stable.

  • ROCm wheels for Windows are now published for ROCm 7.2 and 7.14 (#1915, #2007).
  • Added ROCm 7.14 and dropped the ROCm 6.2 and 6.3 builds (#2007).
  • Expanded GPU target coverage to add RDNA2 consumer GPUs, additional RDNA3 and RDNA3.5 GPUs, and CDNA1 (gfx908) data center GPUs (#1886, #2007).

Apple Silicon (MPS)

Apple Silicon support is improved. The MPS backend added optimized Metal kernels from the Hub (#1875) and was substantially improved (#1960, #1983, #1994) so that all 4-bit and LLM.int8() configurations now work on MPS. On macOS 26+, install the kernels package for the best performance, which enables the optimized Metal kernels; otherwise a naive fallback is used. The MPS path requires torch >= 2.9.

The last remaining feature for support parity is the 8bit optimizers, which will land in a future release.

CPU performance on x86-64 and ARM64

Blockwise quantization and dequantization on CPU are considerably faster, mostly from better SIMD usage plus some compile flag tuning. Improvements range from 1.1x to over 20x depending on op, dtype, and hardware, with the largest gains on fp16 and on x86-64 CPUs without AVX-512. The LLM.int8() matmul on CPU was improved as well. See #1968 for benchmarks.

Reduced host-side CPU overhead

Reduced Python dispatch overhead, especially on the CUDA/ROCm backend (#1953).

Windows on ARM CPU support

Windows ARM64 CPU wheels are now built with NEON-optimized kernels (#1959), with nightly test coverage added (#1962).

New optimizer support

  • CPU optimizers are now supported for both 32-bit and 8-bit blockwise (#1901).
  • Intel XPU gained paged optimizer support (#1898) and support for the LARS and LAMB optimizers (#1902).
  • Fixed Lion to use decoupled weight decay (#1993, #2001).
  • Other optimizer fixes (#1869, #1998, #1855).

NVIDIA CUDA

  • Added CUDA 13.2 build wheels and nightly test coverage (#1925).
  • Smaller wheels: reduced the CUDA build matrix and added a closest-version fallback for library loading (#1980).

Intel XPU

  • Added a oneAPI 2026 build; wheels now package both the 2025 and 2026 variants and pick the right one at runtime based on the PyTorch XPU version (#2002).
  • Fixed gemv_4bit bf16 correctness on Intel Arc A-series (Alchemist) GPUs (#1942).

🚨 Breaking Changes

  • Minimum PyTorch version is now 2.4 (#1926).
  • Removed deprecated APIs: the research module, non-blockwise (block_wise=False) optimizers, and legacy dynamic quantization functions, along with their CUDA/HIP kernels (#1871, #1880).
  • Removed legacy sparse functionality (spmm_coo, spmm_coo_very_sparse) and dropped the cusparse/hipsparse dependencies (#1881).

Deprecations

  • igemm, batched_igemm, and check_matmul are deprecated and now emit warnings (#2003).
  • Passing 4-bit weights quantized in transposed [in_features, out_features] orientation to matmul_4bit now emits a DeprecationWarning. Support is likely to be removed in the future. This is not a typical use case (#1949).

Other improvements and bug fixes

This release also includes a number of other improvements, bug fixes, and documentation updates. See the full changelog below.

What's Changed

New Contributors

Full Changelog: 0.49.2...0.50.0