Skip to main content

Ascend Extension for PyTorch

Overview

This repository develops the Ascend Extension for PyTorch named torch_npu to adapt Ascend NPU to PyTorch so that developers who use the PyTorch can obtain powerful compute capabilities of Ascend AI Processors.

Ascend is a full-stack AI computing infrastructure for industry applications and services based on Huawei Ascend processors and software. For more information about Ascend, see Ascend Community.

Installation

From Binary

Provide users with wheel package to quickly install torch_npu. Before installing torch_npu, complete the installation of CANN according to Ascend Auxiliary Software. To obtain the CANN installation package, refer to the CANN Installation.

  1. Install PyTorch

Install PyTorch through pip.

For Aarch64:

pip3 install torch==2.7.1

For x86:

pip3 install torch==2.7.1+cpu  --index-url https://download.pytorch.org/whl/cpu
  1. Install torch-npu dependencies

Run the following command to install dependencies.

pip3 install pyyaml
pip3 install setuptools

If the installation fails, use the download link or visit the PyTorch official website to download the installation package of the corresponding version.

OS arch Python version link
x86 Python3.9 link
x86 Python3.10 link
x86 Python3.11 link
aarch64 Python3.9 link
aarch64 Python3.10 link
aarch64 Python3.11 link
  1. Install torch-npu
pip3 install torch-npu==2.7.1

From Source

In some special scenarios, users may need to compile torch-npu by themselves.Select a branch in table Ascend Auxiliary Software and a Python version in table PyTorch and Python Version Matching Table first. The docker image is recommended for compiling torch-npu through the following steps(It is recommended to mount the working path only and avoid the system path to reduce security risks.), the generated .whl file path is ./dist/. Note that gcc version has the following constraints if you try to compile without using docker image: we recommend to use gcc 11.2 for both ARM and X86.

  1. Clone torch-npu

    git clone https://github.com/ascend/pytorch.git -b 2.7.1-7.2.0 --depth 1
    
  2. Build Docker Image

    cd pytorch/ci/docker/{arch} # {arch} for X86 or ARM
    docker build -t manylinux-builder:v1 .
    
  3. Enter Docker Container

    docker run -it -v /{code_path}/pytorch:/home/pytorch manylinux-builder:v1 bash
    # {code_path} is the torch_npu source code path
    
  4. Compile torch-npu

    Take Python 3.9 as an example.

    cd /home/pytorch
    bash ci/build.sh --python=3.9
    

Tips

If you would like to compile with new C++ ABI, then first run this command, at this point, the recommended compilation environment is same to community torch package: glibc 2.28, gcc 11.2.1

export _GLIBCXX_USE_CXX11_ABI=1

Meanwhile, we support configuring -fabi-version using the following variables,require consistency with the community torch package

export _ABI_VERSION=16

Getting Started

Prerequisites

Initialize CANN environment variable by running the command as shown below.

# Default path, change it if needed.
source /usr/local/Ascend/ascend-toolkit/set_env.sh

Quick Verification

You can quickly experience Ascend NPU by the following simple examples.

import torch
- import torch_npu # No longer needed in torch_npu 2.5.1 and later versions

x = torch.randn(2, 2).npu()
y = torch.randn(2, 2).npu()
z = x.mm(y)

print(z)

User Manual

Refer to API of Ascend Extension for PyTorch for more detailed information.

PyTorch and Python Version Matching Table

PyTorch Version Python Version
PyTorch1.11.0 Python3.7.x(>=3.7.5),Python3.8.x,Python3.9.x,Python3.10.x
PyTorch2.1.0 Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.2.0 Python3.8.x,Python3.9.x,Python3.10.x
PyTorch2.3.1 Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.4.0 Python3.8.x,Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.5.1 Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.6.0 Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.7.1 Python3.9.x,Python3.10.x,Python3.11.x
PyTorch2.8.0 Python3.9.x,Python3.10.x,Python3.11.x

Ascend Auxiliary Software

PyTorch Extension versions follow the naming convention {PyTorch version}-{Ascend version}, where the former represents the PyTorch version compatible with the PyTorch Extension, and the latter is used to match the CANN version. The detailed matching is as follows:

CANN Version Supported PyTorch Version Supported Extension Version Github Branch
CANN 8.5.0 2.9.0 2.9.0 v2.9.0-7.3.0
2.8.0 2.8.0.post2 v2.8.0-7.3.0
2.7.1 2.7.1.post2 v2.7.1-7.3.0
2.6.0 2.6.0.post5 v2.6.0-7.3.0
CANN 8.3.RC1 2.8.0 2.8.0 v2.8.0-7.2.0
2.7.1 2.7.1 v2.7.1-7.2.0
2.6.0 2.6.0.post3 v2.6.0-7.2.0
2.1.0 2.1.0.post17 v2.1.0-7.2.0
CANN 8.2.RC1 2.6.0 2.6.0 v2.6.0-7.1.0
2.5.1 2.5.1.post1 v2.5.1-7.1.0
2.1.0 2.1.0.post13 v2.1.0-7.1.0
CANN 8.1.RC1 2.5.1 2.5.1 v2.5.1-7.0.0
2.4.0 2.4.0.post4 v2.4.0-7.0.0
2.3.1 2.3.1.post6 v2.3.1-7.0.0
2.1.0 2.1.0.post12 v2.1.0-7.0.0
CANN 8.1.RC1.alpha002 2.6.0 2.6.0rc1 v2.6.0
CANN 8.0.0 2.4.0 2.4.0.post2 v2.4.0-6.0.0
2.3.1 2.3.1.post4 v2.3.1-6.0.0
2.1.0 2.1.0.post10 v2.1.0-6.0.0
CANN 8.0.RC3 2.4.0 2.4.0 v2.4.0-6.0.rc3
2.3.1 2.3.1.post2 v2.3.1-6.0.rc3
2.1.0 2.1.0.post8 v2.1.0-6.0.rc3
CANN 8.0.RC2 2.3.1 2.3.1 v2.3.1-6.0.rc2
2.2.0 2.2.0.post2 v2.2.0-6.0.rc2
2.1.0 2.1.0.post6 v2.1.0-6.0.rc2
1.11.0 1.11.0.post14 v1.11.0-6.0.rc2
CANN 8.0.RC1 2.2.0 2.2.0 v2.2.0-6.0.rc1
2.1.0 2.1.0.post4 v2.1.0-6.0.rc1
1.11.0 1.11.0.post11 v1.11.0-6.0.rc1
CANN 7.0.0 2.1.0 2.1.0 v2.1.0-5.0.0
2.0.1 2.0.1.post1 v2.0.1-5.0.0
1.11.0 1.11.0.post8 v1.11.0-5.0.0
CANN 7.0.RC1 2.1.0 2.1.0.rc1 v2.1.0-5.0.rc3
2.0.1 2.0.1 v2.0.1-5.0.rc3
1.11.0 1.11.0.post4 v1.11.0-5.0.rc3
CANN 6.3.RC3.1 1.11.0 1.11.0.post3 v1.11.0-5.0.rc2.2
CANN 6.3.RC3 1.11.0 1.11.0.post2 v1.11.0-5.0.rc2.1
CANN 6.3.RC2 2.0.1 2.0.1.rc1 v2.0.1-5.0.rc2
1.11.0 1.11.0.post1 v1.11.0-5.0.rc2
1.8.1 1.8.1.post2 v1.8.1-5.0.rc2
CANN 6.3.RC1 1.11.0 1.11.0 v1.11.0-5.0.rc1
1.8.1 1.8.1.post1 v1.8.1-5.0.rc1
CANN 6.0.1 1.5.0 1.5.0.post8 v1.5.0-3.0.0
1.8.1 1.8.1 v1.8.1-3.0.0
1.11.0 1.11.0.rc2(beta) v1.11.0-3.0.0
CANN 6.0.RC1 1.5.0 1.5.0.post7 v1.5.0-3.0.rc3
1.8.1 1.8.1.rc3 v1.8.1-3.0.rc3
1.11.0 1.11.0.rc1(beta) v1.11.0-3.0.rc3
CANN 5.1.RC2 1.5.0 1.5.0.post6 v1.5.0-3.0.rc2
1.8.1 1.8.1.rc2 v1.8.1-3.0.rc2
CANN 5.1.RC1 1.5.0 1.5.0.post5 v1.5.0-3.0.rc1
1.8.1 1.8.1.rc1 v1.8.1-3.0.rc1
CANN 5.0.4 1.5.0 1.5.0.post4 2.0.4.tr5
CANN 5.0.3 1.8.1 1.5.0.post3 2.0.3.tr5
CANN 5.0.2 1.5.0 1.5.0.post2 2.0.2.tr5

Hardware support

The Ascend training device includes the following models, all of which can be used as training environments for PyTorch models

Product series Product model
Atlas Training series products Atlas 800(model: 9000)
Atlas 800(model:9010)
Atlas 900 PoD(model:9000)
Atlas 300T(model:9000)
Atlas 300T Pro(model:9000)
Atlas A2 Training series products Atlas 800T A2
Atlas 900 A2 PoD
Atlas 200T A2 Box16
Atlas 300T A2

The Ascend inference device includes the following models, all of which can be used as inference environments for large models

Product series Product model
Atlas 800I A2 Inference product Atlas 800I A2

Pipeline Status

Due to the asynchronous development mechanism of upstream and downstream, incompatible modifications in upstream may cause some functions of torch_npu to be unavailable (only upstream and downstream development branches are involved, excluding stable branches). Therefore, we built a set of daily tasks that make it easy to detect relevant issues in time and fix them within 48 hours (under normal circumstances), providing users with the latest features and stable quality.

OS CANN Version(Docker Image) Upstream Branch Downstream Branch Period Status
openEuler 22.03 SP2 CANN 7.1 main master UTC 1200 daily Ascend NPU

Suggestions and Communication

Everyone is welcome to contribute to the community. If you have any questions or suggestions, you can submit Github Issues. We will reply to you as soon as possible. Thank you very much.

Branch Maintenance Policies

The version branches of AscendPyTorch have the following maintenance phases:

Status Duration Description
Planning 1-3 months Plan features.
Development 6-12 months Develop new features and fix issues, regularly release new versions. Different strategies are adopted for different versions of PyTorch, with a regular branch development cycle of 6 months and a long-term support branch development cycle of 12 months.
Maintained 1 year/3.5 years Regular Release branch for 1 year, Long Term Support branch maintenance for 3.5 years. Fix major issues, do not incorporate new features, and release patch versions based on the impact of fixed bugs.
End Of Life (EOL) N/A Do not accept any modification to a branch.

PyTorch Maintenance Policies

PyTorch Maintenance Policies Status Launch Date Subsequent Status EOL Date
2.9.0 Regular Release Development 2026/01/15 Expected to enter maintenance status from July 15, 2026 -
2.8.0 Regular Release Development 2025/10/15 Expected to enter maintenance status from March 15, 2026 -
2.7.1 Long Term Support Development 2025/10/15 Expected to enter maintenance status from October 15, 2026
2.6.0 Regular Release Development 2025/07/25 Expected to enter maintenance status from January 15, 2026 -
2.5.1 Regular Release Maintained 2024/11/08 Expected to enter maintenance free status from August 8, 2026
2.4.0 Regular Release Maintained 2024/10/15 Expected to enter maintenance free status from June 15, 2026
2.3.1 Regular Release Maintained 2024/06/06 Expected to enter maintenance free status from June 7, 2026
2.2.0 Regular Release EOL 2024/04/01 2025/10/14
2.1.0 Long Term Support Maintained 2023/10/15 Expected to enter maintenance free status from December 30, 2026
2.0.1 Regular Release EOL 2023/7/19 2024/3/14
1.11.0 Long Term Support EOL 2023/4/19 2025/10/25
1.8.1 Long Term Support EOL 2022/4/10 2023/4/10
1.5.0 Long Term Support EOL 2021/7/29 2022/7/29

Reference Documents

For more detailed information on installation guides, model migration, training/inference tutorials, and API lists, please refer to the Ascend Extension for PyTorch on the HiAI Community.

Document Name Document Link
Installation Guide link
Network Model Migration and Training link
Operator Adaptation link
API List (PyTorch and Custom Interfaces) link

License

Ascend Extension for PyTorch has a BSD-style license, as found in the LICENSE file.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_x86_64.whl (37.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_aarch64.whl (34.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_x86_64.whl (37.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_aarch64.whl (34.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_aarch64.whl (34.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_aarch64.whl (34.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_aarch64.whl (34.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

File details

Details for the file torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 274566591e736f24e1177da06252b0b4c258af0e79394390fcecd1adc98441c9
MD5 aca96b8ddbd0b2e77c1bd718b009ea19
BLAKE2b-256 56946de589061a365f14a1ceb20cb10b74f75c784bd0fc0d2e3f93b183eb7447

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 226b5e6b4906e5bee5d6a8d98515d38685a44a6283bc73a1ac95402d771deaea
MD5 bf654d7db126dc15dc669538e6e81365
BLAKE2b-256 255cc5a7a9c237d7ca6f1f922e59cb1231393812d492b35a4bb983f737942816

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a6c52c60d16b6ab7a781da2883377eaea5a336f3bcb07cc1e98de7dede9fbc8
MD5 7670051b658a61dda18ec733c45b1f4a
BLAKE2b-256 a3a3211ab8653c77820644ba226a993b34831fced234548151f7b5886cde8e0c

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 68844b6b24ee4858f6b4babacfa84551db88b4e8e06baef06b3a82c7e9a14ff7
MD5 889057d0de10d448a85099e6b372c93d
BLAKE2b-256 2100bc3dbf69e0bb2e246cb7f17f4b472b861f4ff9e43930fae2a99698004883

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de96ca619a6b0133e026ca7e454e8a7572a167a67323fa3c79d96b7b57f90e0b
MD5 9c77b0cee746600a2f8236fce2e50725
BLAKE2b-256 58c7e40aa25e1b89790e2cdadde1f4c7a8efa9fd6ce76f034c3e8fe9c3852224

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aafd49265036153081b4e2b1c94dd8e52a4fdd94993987eeef443497cf57be77
MD5 ab5491c71d7af0032ba750a635fd872b
BLAKE2b-256 b46500f3d8c21cab14c869fd6fb874ee741a9a4e4153fb1c2fcff92f0ea8a080

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c403b8f86addf79b8baf5622c29c55e51dd17c23c234c89b91648e5d3dc9f310
MD5 721f8b84b04c4537265d2a19a53ecfa6
BLAKE2b-256 20e082f5e75fe73e426b53927b255fb0d5ea73d7908a1dc152e35c59eb74b048

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3b65991505f215af76ca84ca05da7f64e942eedb0f6fd638f59a0976f6685f68
MD5 8300b574852178a9be4e665eb3c747a1
BLAKE2b-256 cd4670cbac49aa21b9900c06167f3d8d987bcfa07cdd5daac4cfbfab54b02dea

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1083a8a9afa6cd6ed3ed769f2354faf4932a74c109a025a96e3d021f6d58119f
MD5 9848065284eb7b227f9697bbf569b85a
BLAKE2b-256 c686117a1d5ca26e1bbb3e6b1cd7b9a278fc3755956057121ddc274b1cd4aab4

See more details on using hashes here.

File details

Details for the file torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torch_npu-2.7.1.post8-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0faf67aa4ec9978a4efb542c9b84361e48700ae0f63ed86832fb44270e6fbcb
MD5 29597f117f9dc4e0ec0908eb87b2fbd9
BLAKE2b-256 d53ddd2d02f52f7fd693a58b08730dfc67f40dc3a8d302044cd351770c79a3ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page