文档
注册

PyTorch框架在ARM CPU上算子计算结果异常

问题描述

当前使用的PyTorch官方原生框架在ARM CPU上运行时,算子计算结果会出现异常,此问题为原生框架社区的已知问题,详细内容可参考PyTorch官方社区ISSUE

解决措施

可通过以下方式解决:

  • 修改算子输入数据类型,使用float64数据类型进行运算。
  • 升级编译ARM版本PyTorch使用的gcc编译器至9.4版本及以上,并使用相同编译器重新编译torch_npu、APEX、MMCV等其他配套软件(避免因编译器版本不匹配导致兼容性问题)。
  • 在Docker环境编译torch_npu。
    1. 拉取容器镜像。
      docker pull quay.io/pypa/manylinux2014_aarch64:latest
    2. 执行命令查看镜像信息。
      docker images

      回显如下:

      REPOSITORY                                                    TAG                                                                               IMAGE ID       CREATED         SIZE
      quay.io/pypa/manylinux2014_aarch64                            latest                                                                            fe2afc7b4b0d   9 days ago      2.09GB
    3. 启动镜像并在后台运行。
      docker run -dit  [IMAGE ID] bash

      [IMAGE ID]为2查询出的镜像ID。

    4. 执行命令查看运行的容器。
      docker ps

      回显如下:

      CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
      6c2ead81ede5   fe2afc7b4b0d   "manylinux-entrypoin…"   6 seconds ago   Up 4 seconds             dreamy_einstein
    5. 执行命令进入容器。
      docker exec -it [CONTAINER ID] bash

      [CONTAINER ID]为4查询到的容器ID。

    6. 编译torch_npu。
      1. 创建软链接。
        cd /usr/local/bin/
        ln -s /opt/_internal/cpython-3.7.17/bin/pip3.7 pip3.7
        ln -s /opt/_internal/cpython-3.8.17/bin/pip3.8 pip3.8
        ln -s /opt/_internal/cpython-3.9.17/bin/pip3.9 pip3.9
        ln -s python3.7 python3
      2. 安装PyTorch 1.11.0以及依赖。
        pip3.7 install torch==1.11.0
        pip3.7 install pyyaml

        若镜像内无法通过pip命令下载torch包,可使用wget命令下载对应whl包进行安装。

        wget https://download.pytorch.org/whl/torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl

        安装whl包:

        pip3.7 install torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl
      3. 进入任意目录,下载torch_npu源码,此处以“/home/”为例。
        cd /home/
        git clone https://gitee.com/ascend/pytorch.git -b v1.11.0 --depth=1 v1.11.0
        cd v1.11.0/
      4. 编译torch_npu。
        bash ci/build.sh --python=3.7
    7. 退出容器,在服务器取回编译完成的包并安装。
      exit
      docker cp [CONTAINER ID]:/home/v1.11.0/dist/torch_npu-1.11.0.post1-cp37-cp37m-linux_aarch64.whl ./
      pip3 install torch_npu-1.11.0.post1-cp37-cp37m-linux_aarch64.whl
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词