# 为了能在全局访问paddleapex
export PYTHONPATH=[abs_path to PaddleAPEX]:$PYTHONPATH
Step4: 记录算子信息。
以demo.py为例:
import paddle
from paddleapex import Tracer
if __name__ == "__main__":
a = paddle.randn([2,2])
b = paddle.randn([2,2])
apex = Tracer()
apex.start()
y = paddle.add(a,a)
y = paddle.add(a,a)
apex.stop()
简体中文🀄 | English🌎
PaddleAPEX 是精度和性能扩展包,用于PaddlePaddle,支持算子精度检查、算子性能分析以及运行时设备内存消耗分析。PaddleAPEX旨在帮助开发者实现模型训练的精度检查和性能分析。
API追踪工具
精度自动检查器,可以抓取训练模型中的目标算子。
在开始之前,让我们先检查一下全局配置
Step1: 设置你的配置文件。
抓取工具需要一些配置才能启动,你需要设置target_step, dump_mode。 如果你设置dump_mode=real_data,你需要设置dump_root_path。(这个路径可以是本地路径或远程路径)
进阶用法: 你可以设置Async_data=True来异步地传输数据。当使用远端路径时,Apex会加快抓取速度。
性能模式可以通过设置Profile_mode=True来开启。在性能模式中,Apex会使用paddle.max, paddle.min来分析张量。这可能会导致精度损失,但能够获得更高的训练性能。 更多细节问题请参考文件PaddleAPEX/paddleapex/api_tracer/configs/tool_config.yaml。
Step2: 设置配置文件位置。
如果你使用默认配置文件,你可以在这个文件中修改特定的变量,比如target_step, dump_root_path。
进阶用法: 你也可以设置自己的配置文件,通过设置环境变量来实现:
export APEX_CONFIG_PATH=your_own_path/tool_config.yamlStep3: 将PaddleAPEX安装到你的python环境中。
Step4: 记录算子信息。
以demo.py为例:
以Llama2-13b模型分布式训练为例: 对于其中的调用细节,可以参考Llama2-13b
运行你的训练代码: ``` 在运行上述代码之后,我们的工具可以异步地抓取算子信息。 这里我们得到了json文件和张量文件(可选)。
进阶使用: 如果你有一些特定的api需要抓取(例如LayerNorm,你可以在PaddleAPEX/paddleapex/api_tracer/configs/op_target.yaml中添加这些api的调用栈。下方是使用示例:
Step5: 精度比较工具
直接比较:
这个脚本运行后会产生一个目录,其中包含api fwd/bwd的输出结果。结构如下:
|– local_path
运行中的错误和告警均会记录在Warning_list.txt中。 在不同后端运行两次该脚本后,你可以运行比对工具来获得精度结果:
这个脚本生成两个csv文件,他们分别包含精度结果和细节。
Step6: 性能、显存分析工具
直接比对的标准:
我们提供了一个逻辑流程图,用于直接比较不同设备之间的精度。
如何运行自动测试