DeepEP-Ascend

English | 中文

## 介绍 DeepEP的ascend实现 ## 软硬件配套说明 硬件型号支持:Atlas A2 和 A3 系列产品 平台:aarch64/x86 配套软件 - 驱动 Ascend HDK 25.0.RC1.1、CANN社区版8.2.RC1.alpha003及之后版本(参考《[CANN软件安装指南](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha003/softwareinst/instg/instg_0001.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)》安装CANN开发套件包以及配套固件和驱动) - 安装CANN软件前需安装相关[依赖列表](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha003/softwareinst/instg/instg_0045.html) - Python >= 3.9 - PyTorch >= 2.5.1, torch-npu >= 2.5.1-7.0.0 ## 快速上手 DeepEP-Ascend支持A2和A3,需要在A2和A3上分别生成包。 ### 编译执行 1、准备CANN的环境变量(根据安装路径修改) ```bash source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` 2、构建项目 执行工程构建脚本 build.sh前,根据CANN安装路径,修改`build.sh:line7`的`_ASCEND_INSTALL_PATH`。 - A3 ```bash # Building Project bash build.sh -a deepep ``` - A2 ```bash # Building Project bash build.sh -a deepep2 ``` ### 安装 1、执行pip安装命令,将`.whl`安装到你的python环境下 ```bash pip install output/deep_ep*.whl # 设置deep_ep_cpp*.so的软链接 cd "$(pip show deep-ep | grep -E '^Location:' | awk '{print $2}')" && ln -s deep_ep/deep_ep_cpp*.so && cd - # (可选)确认是否可以成功导入 python -c "import deep_ep; print(deep_ep.__path__)" ``` 2、执行CANN的环境变量(根据安装路径修改) ```bash source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` 3、在python工程中导入`deep_ep` ### 特性 1. A2 的 `low_latency_dispatch` 和 `low_latency_combine` 算子支持两种内部算子类型:不分层和分层。 在分层算子的实现中,节点内通信使用 HCCS,节点间通信使用 RDMA。在不分层算子的实现中,节点内和节点间通信均使用纯 RDMA。 默认情况下,执行的是非层次化算子。如果配置了环境变量 `HCCL_INTRA_PCIE_ENABLE=1` 和 `HCCL_INTRA_ROCE_ENABLE=0`,则将执行分层算子。 A3 无需分层,节点内和节点间通信均使用纯 HCCS 通信。 ### 测试 执行deepep相关测试脚本 ```bash python3 tests/python/deepep/test_fused_deep_moe.py python3 tests/python/deepep/test_intranode.py python3 tests/python/deepep/test_low_latency.py # 在A2双机下执行,测试internode (需要先设置run_test_internode.sh中的主节点IP) bash run_test_internode.sh ``` ### 常见问题 1、如果安装`.whl`后,在工程中`import deep_ep`出现找不到`deep_ep`库,则检查是否正确安装到当前Python环境的`site-packages`目录下; 查看安装路径: ``` pip show deep-ep ``` 2、如果安装`.whl`后,出现找不到`deep_ep_cpp`,则需要将`site-packages/deep_ep`目录下的`deep_ep_cpp*.so`文件软链接到`site-packages`目录下; 在`site-packages`目录下执行: ``` ln -s deep_ep/deep_ep_cpp*.so ```