神经网络组件样例 (Neural Network Components)
本目录包含使用 PyPTO 构建常见神经网络组件的中级开发样例。这些组件是构建大型 Transformer 模型的基础。
总览介绍
在这一阶段,开发者将学习如何将基础算子组合成具有特定功能的神经网络层。本目录涵盖了以下核心组件:
- Layer Normalization: 展示了标准 LayerNorm 和 RMSNorm 的实现,涉及均值和方差的归约计算。
- FFN Module (Feed-Forward Network): 实现完整的前馈网络,支持多种激活函数(ReLU, GELU, SwiGLU)以及动态 Batch Size 处理。
样例代码特性
本目录下的代码展示了 PyPTO 的以下高级应用特性:
- 模块化设计: 演示如何通过封装
pypto.frontend.jit函数来构建可复用的网络模块。 - 动态形状支持: 在 FFN 模块中展示了如何使用
dynamic_axis处理多变的 Batch 维度。 - 高性能算子组合: 展示了矩阵乘法、逐元素运算与归约运算(如 Sum, Max)的深度集成。
代码结构
layer_normalization/:layer_norm.py: 包含 LayerNorm 和 RMSNorm 的核心实现及其精度验证。
ffn/:ffn_module.py: FFN 模块的核心实现与各种场景测试。
运行方法
环境准备
# 配置 CANN 环境变量
# 安装完成后请配置环境变量,请用户根据set_env.sh的实际路径执行如下命令。
# 上述环境变量配置只在当前窗口生效,用户可以按需将以上命令写入环境变量配置文件(如.bashrc文件)。
# 默认路径安装,以root用户为例(非root用户,将/usr/local替换为${HOME})
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 设置设备 ID
export TILE_FWK_DEVICE_ID=0
执行脚本
进入对应子目录后运行脚本:
# 运行 LayerNorm 样例
cd layer_normalization
python3 layer_norm.py
# 运行 FFN 样例
cd ../ffn
python3 ffn_module.py
学习建议
- 建议先从
layer_normalization开始学习,掌握基础的归约计算模式。 - 随后学习
ffn,了解如何整合矩阵乘法与复杂的激活函数逻辑。 - 参考各目录下的子 README 获取更详细的算法说明。