# pytorch **Repository Path**: pengcheng111/pytorch ## Basic Information - **Project Name**: pytorch - **Description**: Ascend PyTorch adapter - **Primary Language**: Python - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1176 - **Created**: 2022-04-20 - **Last Updated**: 2022-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AscendPyTorch # 项目简介 本项目开发了PyTorch Adapter插件,用于昇腾适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。 # 编译/执行约束 gcc版本: 7.3.0(只在编译场景要求) cmake版本:3.12.0以上版本(只在编译场景要求) python版本:3.7.5、3.8.x、3.9.x(PyTorch1.5不支持python3.9.x) # 系统依赖库 ## CentOS & EulerOS yum install -y cmake zlib-devel libffi-devel openssl-devel libjpeg-turbo-devel gcc-c++ sqlite-devel dos2unix openblas ## Ubuntu apt-get install -y gcc g++ make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev m4 cmake dos2unix libopenblas-dev # Ascend配套软件 | AscendPyTorch版本 | CANN版本 | 支持PyTorch版本 | | :------------ | :----------- | :----------- | | 3.0.2 | CANN 5.0.2 | 1.5.0.post2 | | 2.0.3 | CANN 5.0.3 | 1.5.0.post3 | | 2.0.4 | CANN 5.0.4 | 1.5.0.post4 | | 3.0.rc1 | CANN 5.1.RC1 | 1.5.0.post5, 1.8.1.rc1 | # 安装方式 ## 编译安装PyTorch和昇腾插件 下载插件代码 ```sh git clone https://gitee.com/ascend/pytorch.git ``` 当前对应PyTorch 1.8.1版本。根据需求,在当前仓根目录“/pytorch”下获得原生Pytorch源代码并重命名为pytorch_v1.8.1。 ```sh //1.8.1版本 cd pytorch #插件根目录 git clone -b v1.8.1 --depth=1 https://github.com/pytorch/pytorch.git pytorch_v1.8.1 ``` 运行如下命令,进入原生pytorch代码目录“pytorch_v1.8.1“,并获取PyTorch被动依赖代码。 ``` cd pytorch_v1.8.1 git submodule sync git submodule update --init --recursive ``` 完成且没有报错之后就生成了PyTorch及其依赖的三方代码,然后将Patch打入PyTorch源码并编译。 ```sh cd ../patch bash apply_patch.sh ../pytorch_v1.8.1 cd ../pytorch_v1.8.1 指定python版本编包方式: bash build.sh --python=3.7 或 bash build.sh --python=3.8 或 bash build.sh --python=3.9 ``` 然后安装pytorch/pytorch_v1.8.1/dist下生成的torch包,接下来编译安装插件 ``` cd dist pip3 install --upgrade torch-1.8.1+ascend.rc1-cp37-cp37m-linux_{arch}.whl ``` 编译生成pytorch插件的二进制安装包。 ``` cd ../../ci #进入插件根目录 指定python版本编包方式: bash build.sh --python=3.7 或 bash build.sh --python=3.8 或 bash build.sh --python=3.9 ``` 然后安装pytorch/dist下生成的插件torch_npu包 ``` cd ../dist pip3 install --upgrade torch_npu-1.8.1rc1-cp37-cp37m-linux_{arch}.whl ``` # 运行 ## 运行环境变量 在当前仓库根目录中执行设置环境变量脚本 ``` cd ../ source env.sh ``` ## 自定义环境变量 以下环境变量为NPU场景下使用的功能类或可以提升性能的环境变量: ``` export TASK_QUEUE_ENABLE=1 # 使用异步任务下发,异步调用acl接口,建议默认开启,开启设置为1 ``` 可选的环境变量可能会对运行的模型产生影响: ``` export DYNAMIC_COMPILE_ENABLE=1 # 动态shape特性功能,针对shape变化场景,可选,开启设置为1 export COMBINED_ENABLE=1 # 非连续两个算子组合类场景优化,可选,开启设置为1 export ACL_DUMP_DATA=1 # 算子数据dump功能,调试时使用,可选,开启设置为1 export DYNAMIC_OP="ADD#MUL" # 算子实现,ADD和MUL算子在不同场景下有不同的性能表现。可选 ``` ## 执行单元测试脚本 验证运行, 输出结果OK ```shell cd test/test_network_ops/ python3 test_div.py ``` # 文档 有关安装指南、模型迁移和训练/推理教程和API列表等更多详细信息,请参考[用户文档](docs/zh)。 # 建议与交流 热忱希望各位在用户社区加入讨论,并贡献您的建议,我们会尽快给您回复。 # 分支维护策略 Ascend PyTorch的版本分支有以下几种维护阶段: | **状态** | **持续时间** | **说明** | |-------------|---------------|--------------------------------------------------| | Planning | 1 - 3 months | 特性规划。 | | Development | 3 months | 特性开发。 | | Maintained | 6 - 12 months | 允许所有问题修复的合入,并发布版本。 | | Unmaintained| 0 - 3 months | 允许所有问题修复的合入,无专人维护,不再发布版本。 | | End Of Life (EOL) | N/A | 不再接受修改合入该分支。 | # 现有分支维护状态 | **分支名** | **当前状态** | **上线时间** | **后续状态** | **EOL 日期**| |------------|--------------|----------------------|----------------------------------------|------------| | **v2.0.2** | Maintained | 2021-07-29 | Unmaintained
2022-07-29 estimated | | | **v2.0.3** | Maintained | 2021-10-15 | Unmaintained
2022-10-15 estimated | | | **v2.0.4** | Maintained | 2022-01-15 | Unmaintained
2023-01-15 estimated | | | **v3.0.rc1** | Maintained | 2022-04-10 | Unmaintained
2023-04-10 estimated | | # FAQ ## 编译过程执行bash build.sh报错no module named yaml/typing_extensions. pytorch编译依赖 yaml库和typing_extensions库,需要手动安装。 pip3 install pyyaml pip3 install typing_extensions 安装成功后,注意需要执行make clean在执行bash build.sh进行编译,否则可能因缓存出现未知编译错误。 ## 运行遇到找不到te问题 开发态: cd /urs/local/Ascend/ascend-toolkit/latest/{arch}-linux/lib64 用户态: cd /urs/local/Ascend/nnae/latest/{arch}-linux/lib64 pip3 install --upgrade topi-0.4.0-py3-none-any.whl pip3 install --upgrade te-0.4.0-py3-none-any.whl ## 编译cmake报错版本过低 cmake官网下载linux版本安装(当前3.18.0) 1. 使用yum命令安装: yum install -y cmake==3.18.0 2. 下载cmake sh脚本安装:(参考cmake官网) X86_64环境推荐脚本安装: cmake-3.18.2-Linux-x86_64.sh ## GCC版本问题切换问题 目前存在测试环境从GCC4.8.5 切换到 GCC7.3.0。这个过程容易出现错误导致pytorch编译不过,以下是需要软连接的库 gcc, g++,c++(--version 必须是7.3.0) libstdc++->libstdc++.so.6.0.24(7.3.0) ## 找不到libblas.so问题 环境缺少openblas库,需要安装openblas库 Centos,EulerOS环境 ```sh yum -y install openblas ``` Ubuntu环境 ```sh apt install libopenblas-dev ``` # 版本说明 版本说明请参阅[ReleseNote](docs/zh/RELEASENOTE)