摘要:在昇騰平臺上運行PyTorch業務時,需要搭建異構計算架構CANN軟體開發環境,并安裝PyTorch 框架,從而實作訓練腳本的遷移、開發和除錯,
本文分享自華為云社區《手把手教你在昇騰平臺上搭建PyTorch訓練環境》,作者:昇騰CANN,
PyTorch是業界流行的深度學習框架,用于開發深度學習訓練腳本,默認運行在CPU/GPU上,在昇騰AI處理器上運行PyTorch業務時,需要搭建異構計算架構CANN(Compute Architecture for Neural Networks)軟體開發環境,并安裝PyTorch 框架,從而實作訓練腳本的遷移、開發和除錯,
下面帶大家了解如何在昇騰平臺上快速安裝驅動韌體、CANN軟體及PyTorch框架,
環境檢查
在昇騰平臺上安裝驅動和韌體前,首先需要檢查安裝環境的NPU是否正常在位,并確認作業系統版本與內核版本是否滿足對應的版本配套要求,
以Atlas 800 訓練服務器(型號:9010)(昇騰AI處理器型號Ascend 910)為例,檢查NPU是否正常在位可執行lspci | grep d801命令,如果服務器上有 N路NPU,回顯N行含“d801”欄位,則表示NPU正常在位,
安裝驅動和韌體
1.創建驅動運行用戶HwHiAiUser,
groupadd -g 1000 HwHiAiUser useradd -g HwHiAiUser -u 1000 -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
2.安裝驅動和韌體,
在昇騰社區的“韌體與驅動”下載頁面下載配套產品的韌體驅動軟體,并上傳到服務器任意目錄,然后參考如下命令進行韌體驅動軟體包的安裝,需要注意,需要以root用戶進行安裝,
a.為軟體包增加可執行權限,
chmod +x Ascend-hdk-910-npu-driver_23.0.rc1_linux-x86-64.run chmod +x Ascend-hdk-910-npu-firmware_6.3.0.1.241.run
b.安裝驅動,
./Ascend-hdk-910-npu-driver_23.0.rc1_linux-x86-64.run --full --install-for-all
默認安裝路徑為“/usr/local/Ascend”,出現類似如下回顯資訊,說明安裝成功,
Driver package installed successfully!復制
您還可以通過執行npu-smi info命令查看,出現類似如下資訊,說明驅動加載成功,
c.安裝韌體,
./Ascend-hdk-910-npu-firmware_6.3.0.1.241.run --full
出現型別如下回顯資訊,說明安裝成功,
Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect
3.驅動韌體安裝完成后,重啟系統,
reboot
安裝CANN軟體依賴
CANN軟體安裝程序需要下載相關依賴,請確保安裝環境能夠連接網路,并已配置軟體源,以下步驟以root用戶操作為例,
1. 安裝第三方依賴
Ubuntu系統(Debian、UOS20、Linux等系統操作一致):
apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3
openEuler系統(EulerOS、CentOS、BCLinux等系統操作一致):
yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel gcc-gfortran
2. 安裝Python及其依賴
以安裝Python 3.7.5為例,
1)通過wget命令下載python3.7.5原始碼包,
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
2)解壓縮原始碼包
tar -zxvf Python-3.7.5.tgz
3)原始碼編譯安裝Python,
?cd Python-3.7.5 ./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared make make install
以--prefix=/usr/local/python3.7.5路徑為例進行說明,執行配置、編譯和安裝命令后,安裝包在/usr/local/python3.7.5路徑,
4)設定python3.7.5環境變數,
#用于設定python3.7.5庫檔案路徑 export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH #如果用戶環境存在多個python3版本,則指定使用python3.7.5版本 export PATH=/usr/local/python3.7.5/bin:$PATH
5)檢查是否安裝成功,
?python3 --version
pip3 --version
回傳相關版本資訊,則說明安裝成功,
6)安裝pip依賴,
pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py
安裝CANN開發套件包
1. 從昇騰社區“CANN”產品頁,根據作業系統架構下載CANN開發套件包,
例如“Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run”,并將其上傳到安裝環境任意目錄,
2. 安裝CANN開發套件包,
# 添加可執行權限 chmod +x Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run # 校驗軟體包的一致性和完整性 ./Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run --check # 執行安裝命令 ./Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run --install --install-for-all
安裝完成后,若顯示如下資訊,則說明軟體安裝成功:
[INFO] xxx install success
xxx表示安裝的實際軟體包名,
安裝PyTorch
CANN軟體包安裝完成后,就可以進行PyTorch的安裝了,開發者可以選擇PyTorch 1.8.1或PyTorch 1.11.0版本,PyTorch安裝成功后再安裝APEX混合精度模塊,在安裝Pytorch前,需要先安裝以下依賴,
pip3 install wheel
pip3 install typing_extensions
安裝PyTorch 1.8.1
1)安裝官方torch包,
x86_64架構
wget https://download.pytorch.org/whl/cpu/torch-1.8.1%2Bcpu-cp37-cp37m-linux_x86_64.whl pip3 install torch-1.8.1+cpu-cp37-cp37m-linux_x86_64.whl
aarch64架構
wget https://repo.huaweicloud.com/kunpeng/archive/Ascend/PyTorch/torch-1.8.1-cp37-cp37m-linux_aarch64.whl pip3 install torch-1.8.1-cp37-cp37m-linux_aarch64.whl
2)安裝昇騰提供的PyTorch適配插件torch_npu,
x86_64架構
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.8.1/torch_npu-1.8.1.post1-cp37-cp37m-linux_ x86_64.whl pip3 install torch_npu-1.8.1.post1-cp37-cp37m-linux_ x86_64.whl
aarch64架構
?wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.8.1/torch_npu-1.8.1.post1-cp37-cp37m-linux_aarch64.whl pip3 install torch_npu-1.8.1.post1-cp37-cp37m-linux_aarch64.whl
此處以5.0.rc1版本為例,實際請選擇CANN配套的PyTorch插件版本進行安裝,
3)安裝對應框架版本的torchvision,
pip3 install torchvision==0.9.1
4)驗證是否安裝成功,
python -c "import torch;import torch_npu; a = torch.ones(3, 4).npu(); print(a + a);"
如果輸出包含如下關鍵資訊則說明PyTorch安裝成功,
[[2., 2., 2., 2.], [2., 2., 2., 2.], [2., 2., 2., 2.]]
安裝PyTorch 1.11.0
1)安裝官方torch包,
x86_64架構
wget https://download.pytorch.org/whl/cpu/torch-1.11.0%2Bcpu-cp37-cp37m-linux_x86_64.whl pip3 install torch-1.11.0+cpu-cp37-cp37m-linux_x86_64.whl
aarch64架構
wget https://repo.huaweicloud.com/kunpeng/archive/Ascend/PyTorch/torch-1.11.0-cp37-cp37m-linux_aarch64.whl pip3 install torch-1.11.0-cp37-cp37m-linux_aarch64.whl
2)安裝昇騰提供的PyTorch適配插件torch_npu,
x86_64架構
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.11.0/torch_npu-1.11.0-cp37-cp37m-linux_ x86_64.whl pip3 install torch_npu-1.11.0-cp37-cp37m-linux_ x86_64.whl
aarch64架構
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.11.0/torch_npu-1.11.0-cp37-cp37m-linux_aarch64.whl pip3 install torch_npu-1.11.0-cp37-cp37m-linux_aarch64.whl
3)安裝對應框架版本的torchvision,
pip3 install torchvision==0.12.0
4)驗證PyTorch是否安裝成功,
python -c "import torch;import torch_npu; a = torch.ones(3, 4).npu(); print(a + a);"
如果輸出包含如下關鍵資訊則說明PyTorch安裝成功,
[[2., 2., 2., 2.], [2., 2., 2., 2.], [2., 2., 2., 2.]]
安裝APEX混合精度模塊
APEX混合精度模塊是一個集優化性能、精度收斂于一身的綜合優化庫,可以提供不同場景下的混合精度訓練支持,
1. 獲取昇騰適配的APEX原始碼以及原生APEX代碼,
# 獲取昇騰適配的APEX原始碼 git clone -b master https://gitee.com/ascend/apex.git # 在apex目錄下獲取原生APEX代碼 cd apex git clone https://github.com/NVIDIA/apex.git
2. 切換到原生APEX代碼對應分支,
cd apex
git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a
cd ..
3. 在昇騰適配APEX原始碼目錄的scripts路徑下生成昇騰適配全量代碼,
cd scripts
bash gen.sh
4. 編譯生成昇騰適配的APEX二進制安裝包,
cd ../apex
python3 setup.py --cpp_ext --npu_float_status bdist_wheel
5. 安裝APEX,
86_64架構
cd dist pip3 install apex-0.1_ascend-cp37-cp37m-linux_ x86_64.whl
aarch64架構
cd dist pip3 install apex-0.1_ascend-cp37-cp37m-linux_aarch64.whl
到此,PyTorch訓練環境就搭建完畢了,開發者可以將PyTorch網路腳本遷移到昇騰平臺執行訓練,使用昇騰平臺的強大算力,
關于更多檔案介紹,可以在昇騰檔案中心[1]查看,您也可在“昇騰社區在線課程[2]”板塊學習視頻課程,學習程序中的任何疑問,都可以在“昇騰論壇[3]”互動交流!
相關參考
[1]昇騰檔案中心
[2]昇騰社區在線課程
[3]昇騰論壇
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553531.html
標籤:其他
下一篇:返回列表
