EffBench
该文档介绍如何在NPU进行EffBench的profiling。
主要依赖
TensorFlow: 1.15.0
数据集准备
-
对于 Criteo 数据集, 我们采用 AFN 的预处理,根据其提供的链接下载libsvm格式的数据集,进一步将其转换为tfrecord格式。
-
download url 'https://worksheets.codalab.org/rest/bundles/0x8dca5e7bac42470aa445f9a205d177c6/contents/blob/', 替换到download_criteo.py中的url。 注:请保障url的可靠性,避免url不可信、返回超大结构体、OOM等问题。
cd feature_interaction/data/ python download_criteo.py python libsvm2tfrecord.py -
对于 Ali-CCP 数据集, 我们提供了一套完整的 预处理流程 :
cd behaviour_and_multi_task/data/aliccp/ bash run.sh
训练
首先需要在train.sh中修改PREPROCESSED_DATASET为数据集的路径。
-
For feature interaction learning models:
cd feature_interaction/src/ bash train.sh -
For behaviour sequence modeling and multi-task learning models:
cd behaviour_and_multi_task/src/ bash train.sh
Profiling
Profiling方法参考自CANN官网。
-
添加环境变量:
export PROFILING_MODE=true export PROFILING_OPTIONS='{"output":"/home/ma-user/work/EffBench/feature_interaction/profiling/train","training_trace":"on","task_trace":"on","aicpu":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}' -
若profiling模型的训练过程,运行
profiling_train.sh脚本,以特征交互模型为例:cd feature_interaction/src/ bash profiling_train.sh # 推理 # bash profiling_infer.sh -
使用msprof工具解析:
export MSPORF_TOOL=/usr/local/Ascend/ascend-toolkit/latest/tools/profiler/profiler_tool/analysis/msprof/msprof.py python $MSPORF_TOOL import -dir <profile的output路径> (比如:/home/ma-user/work/EffBench/feature_interaction/profiling/train/PROF_000001_20241116222226387_LMAKGCJJFNJORPKC) -
查询性能数据信息,找到最大的
Iteration Number对应的Model ID:python $MSPORF_TOOL query -dir <profile的output路径> -
使用msprof工具导出profiling文件:
python $MSPORF_TOOL export timeline -dir <profile的output路径> --iteration-id 100 --model-id <上一步找到的Model ID> python $MSPORF_TOOL export summary -dir <profile的output路径> --iteration-id 100 --model-id <上一步找到的Model ID>