开发者
资源
天秤静态分析系列——XX广告Tensorflow客户自定义算子调优案例

天秤静态分析系列——XX广告Tensorflow客户自定义算子调优案例

开发框架编译

发表于 2026/06/01

0

一、 介绍

XX正在推进核心推荐模型向鲲鹏单机纯 K 方案迁移,业务覆盖各种在线推理链路,并面临大促前灰度扩容与性能达标压力。为保障 TensorFlow 2.20 + openEuler 24.03 LTS SP3 软件栈在鲲鹏 950(7592C)上稳定承载高峰流量,本项目聚焦“迁得上、跑得稳、性能优”目标,依托 DevKit 天秤工具重点分析客户自定义算子(热点占比 10%+)中的代码,识别可向量化改写与性能优化机会,协同 OS、编译器、基础库、算子库及业务算子团队,围绕稀疏模型推理中的算子热点、访存效率、线程调度、编译优化和库函数调用等关键瓶颈开展全栈性能攻关,形成从平台底座到业务模型的端到端优化闭环,持续释放鲲鹏 950 平台性能潜力,支撑客户核心业务在大促场景下高效运行。

二、热点分析

采集火焰图,同时根据调用链获取每一级函数调用所在的文件。

xxxx\yyy_ops\sparse_tensor_reshape_op.cc

-pino_ops::lite::SparseTensorReshapeOp::Compute

xxxx\lib\ops_example_unify_pb_parser.cc

-pino_ops::PinoExampleUnifyPbParser::features_to_sparse_simple

xxxx\lib\hash.cc(.h)

-pino_ops::uniform_hash_64

-pino_ops::Hasher::hashstring64

三、工具使用

本次使用天秤2.0 Q1版本

https://www.hikunpeng.com/zh/developer/devkit/download?tab=commandLine


1. 使用指令:tiancheng -i /path/to/file.cpp -o /path/to/result.json  -v

其中使用-v可以输出中间结果,辅助人工在工具基础上进行进一步调优。

2. 打开/path/to/result.json 既可看到可直接被工具向量化的示例代码,可直接替换原始代码实现向量化调优调优。


3.对于性能要求较高的项目,推荐打开-v查看中间信息输出。

例如下HASH算法,在热点函数中,虽然循环中均为计算,但是其中因为存在循环依赖,使得整个函数无法直接向量化。这类在热点中代码,由于一个变量的依赖导致无法整体优化十分可惜,进行可向量化改造后其实可以实现部分向量化,从而进一步提升性能。



借助天秤工具-v输出中间结果,可以辅助修改该循环。天秤工具并不会抛弃这类循环,反而通过跨函数分析被调函数的可向量化情况(如line143 结果),并且逐行扫描给出可向量化结果,对于不可向量化的代码行,还可以给出不可向量化原因(如line151 结果)。

根据这些信息,我们进行人工改写,进行循环拆分,将可向量化部分暴露出来,具体如下:

四、结果

结合工具与人工分析,最终达成

-- CVR、Presort 模型 QPS 分别提升 5.00%、3.76%,P99 时延分别降低 10.87%、3.97%

-- 4 个模型平均性能提升 2.9%,超过既定 2% 目标。Q2中天秤工具根据XX攻关经验,进一步新增循环展开分析,控制流分析等高级分析功能,同时将我们中间结果输出到html实现可视化,方便用户能协同工具,共同对目标源码进行极致优化。



本页内容