在您第一次向 Torch MLU 提交代码之前,需要签署 CLA(TBD)。
- 总体与PyTorch社区构建保持一致。
- 编译器:推荐g++版本>=9.4.0。
- Python >= 3.10.0。
- CMake >= 3.18.0。
- 寒武纪基础软件平台软件包:CNToolkit、CNNL、CNCL、CNCV、DALI、CNNL_Extra、BANGC OPS。
Note:
寒武纪发布的docker包含了从源码构建所需要的所有依赖包,推荐您使用寒武纪发布的docker镜像作为开发环境进行源码构建。
base/
: 根目录torch_mlu/
: torch_mlu仓库源码pytorch/
: pytorch仓库源码
mkdir base
pushd base
#克隆torch_mlu源码
git clone https://gitee.com/cambricon/torch_mlu.git -b r1.22_pt2.1.0
#克隆对应版本的pytorch源码
git clone https://github.com/pytorch/pytorch.git -b v2.1.0
popd
pushd base
$(which pip3) install virtualenv #安装虚拟环境,此处pip3可按需更换为指定版本
$(which python3) -m virtualenv venv/pytorch #安装虚拟环境,此处python3可按需更换为指定版本
source venv/pytorch/bin/activate #激活虚拟环境
popd
(可选)配置NEUWARE_HOME
通常容器内的开发环境会默认配置好NEUWARE_HOME环境变量指向正确的SDK路径。如果您需要更换其他版本的SDK,可以执行
export NEUWARE_HOME=/path/neuware_home
按如下步骤执行env_pytorch.sh
后,会自动设置编译所需环境变量
#设置环境变量:(如PYTORCH_HOME,TORCH_MLU_HOME,LD_LIBRARY_PATH等)
pushd base
export SRC_PACKAGES=$PWD
source $SRC_PACKAGES/torch_mlu/scripts/release/env_pytorch.sh
popd
安装Cambricon PyTorch所依赖的第三方包,并编译Cambricon PyTorch。
第三方依赖包列表可在PyTorch源码主目录下的requirements.txt中查询。
pushd ${PYTORCH_HOME}
git submodule sync
git submodule update --init --recursive
#打patch到pytorch源码中
pushd ${TORCH_MLU_HOME}
./scripts/apply_patches_to_pytorch.sh
popd
pip install numpy==1.26.0 #numpy建议指定为1.26.x
pip install -r requirements.txt #安装第三方包
rm -rf build #清理环境
pip uninstall -y torch
python setup.py install #开始编译
popd
第三方依赖包列表可在TORCH_MLU源码主目录下的requirements.txt中查询。
pushd ${TORCH_MLU_HOME}
pip install -r requirements.txt #安装第三方包
rm -rf build
pip uninstall -y torch_mlu
python setup.py install #开始编译
popd
可在Python中引用PyTorch与Cambricon TORCH_MLU测试是否编译成功。
# Python:
>>> import torch
>>> import torch_mlu
pip install --isolated torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cpu --no-deps
该示例需要在MLU服务器上运行, 且依赖torchvision。
${TORCH_MLU_HOME}/examples/training
目录下为训练脚本。
# 训练模式测试
python $TORCH_MLU_HOME/examples/training/single_card_demo.py
Torch-MLU继承了PyTorch社区的编码风格。使用Lintrunner进行代码风格检查。
代码风格检查是强制的,如果您提交的代码不能通过代码风格检查,在代码合入流水中会被拦截。
# 安装LintRunner
pip install lintrunner
cd torch_mlu
lintrunner init
常用的lintrunner命令。建议您在提交代码前在本地执行 lintrunner -f
进行自动代码格式化。
# 检查head commit的style
lintrunner
# 检查并自动修复style
lintrunner f
# 检查一整个PR/branch,比如你的PR的目标是main, 执行以下:
lintrunner -m main
# 只检查指定的文件:
lintrunner torch/jit/_script.py torch/jit/_trace.py
# 检查仓库里所有的文件:
lintrunner --all-files
您可以使用issue报告问题。我们会尽快回复您的问题。