导读 :在模型的全链路测试过程中,模型的问题对立定义成狭义一致性性问题,一致性问题也是模型稳定性的根底保障,落地到具体点上从维度上划分能够分为数据不统一、延时不统一、策略机制不统一、性能不统一等几个方向,在结果衍生上都会导致模型稳定性指标抖动,预估成果不合乎预期,所以一致性测试在以后大规模机器学习的测试过程中有着十分重要的作用,然而在通常对于模型的测试计划也很难做到全局解决,其中也牵扯到成果和效率的折中。文章在一致性几个方面要做到外围节点的策略和成果重点保障,最大限度保障停更和回滚的产生,以后一致性计划在百度商业外部落地收益较好,在成果和效率上也做了很多的优化策略,整体计划满足业务线的需要。
全文 6948 字,预计浏览工夫 12 分钟。
一、背景与概述
点击率模型在广告检索阶段预估广告可能被点击的概率,在广告的排序、截断中起着重要的作用。
点击率模型分为在线预估和离线训练两局部,离线训练次要进行模型的训练和评估,在线预估次要是模型的利用和反馈。具体的在离线模型闭环链路如图 1 所示,线上点击和展示的广告数据到视图日志,通过反作弊零碎和流式特色抽取后失去样本作用于模型训练,训练好的模型通过评估后利用到线上进行广告粗选和精选阶段点击率的预估,预估的点击率 q 值又作用于广告的排序、截断,进而造成残缺的解决链路。
△图 1:在离线模型闭环
但因为零碎的复杂性包含特色工程、训练损失、存储精度损失等,导致在策略迭代中经常出现在、离线模型作用成果不统一,例如新减少的策略在离线训练阶段失去模型,该模型在评估数据中体现优异,然而在线上零碎中的广告成果指标如点击率,千次点击展示值等方面不尽人意。
如图 2 所示,广告在线上预估须要经验:预估样本 → 线上特色集 → 离散 embedding 向量查问 → 离散 embedding 向量聚合 → dnn 网络计算 → 预估 Q 值,而在线下训练的时候也须要经验:训练样本 → 线下特色集 → 离散模型查问 → embedding 向量聚合 → dnn 网络计算 → Q/ 模型。在 q 值计算的任何一个过程中呈现差别,就会造成预估后果和模型训练的后果不匹配,影响模型的线上成果,进而影响广告的成果指标。
△图 2:模型在离线残缺解决流程
二、一致性保障的定义与指标
2.1 一致性问题的定义
机器学习能够依照是否有标记划分为监督学习 / 非监督学习,广告的点击率预估问题属于监督学习中的排序问题,这也是互联网中常见的一类学习业务。分类学习迭代过程的根本步骤如下图,每个方框示意一种数据状态,图例中给出了每个字面代表的含意,其下标表征了数据的上游起源及版本。
_△图 3:分类学习机制
_
步骤 1 展现了训练过程:训练集通过特色抽取和训练过程产出了模型,在步骤 2 的评估阶段应用训练产出的模型,并输出未进入训练集的样本进行预估,从而评估该模型的成果。当评估的模型指标合乎预期时,便会将该模型利用于进行线上的预估(步骤 3),预估后的值又利用于具体的问题(步骤 4),而利用后又会产生新的训练集,回到步骤 1。
模型的不统一问题可能呈现在 2.1 介绍的分类学习迭代过程中离线训练、离线模型评估、在线预估、特色抽取、预估利用的任何一个解决步骤中,概括起来次要包含数据一致性和解决逻辑一致性两方面。
数据一致性包含样本一致性和模型一致性,这里所说的样本统一是逻辑上的,不是说训练、评估、预估应用完全相同的样本数据,而是指雷同的输出数据集在通过这几个阶段解决后的值统一;模型的一致性是指离线训练后产出的模型和线上预估应用的模型转换精度在预期范畴内,这块的统一也是指逻辑上的,因为离线训练后的模型到预估零碎的加载会通过离线离散模型 → 两头态压缩数据 → 线上加载的离散模型这三种状态,通过局部特色的过滤和精度的转换,会存在预期内的损失。
如下图 4 所示:
△图 4:数据一致性
保持数据统一后,解决逻辑统一同样重要。如图 5 圈出的局部,逻辑统一包含步骤 1 - 3 中特色抽取的逻辑统一以及产出的模型在评估、预估的应用逻辑匹配。
△图 5:逻辑一致性
特色抽取的逻辑统一是指雷同的输出数据通过特色抽取库后,产出的特色签名统一。而产出模型的预估、评估逻辑统一次要是通过保障模型应用逻辑统一进而保障模型成果。分类学习中个别的假如函数为:
y = H (w.x)
其中 y 是学习的指标输入,x 是特征向量,w 是特色的权重向量,H 是特色和目标值之间的计算函数,不同的业务模型就是对应不同的 H 求解的过程。而模型的训练过程就是已知 y 和 x,最小化误差函数获取失去 w 的过程。评估和预估都能够看做是已知输出 x、模型 w 求解计算 y 的过程,因而保障计算逻辑统一是确保模型利用成果的重要措施。
值得一提的是,数据一致性和逻辑一致性也是相互影响的。任一阶段的解决逻辑不同,会导致下一阶段的输出数据不同;解决逻辑匹配,输出数据不同最终输出的 q 值也不统一。因而,保障模型数据和逻辑解决的一致性是保障模型衰弱迭代的关键步骤。
2.2 一致性问题的指标
依据一致性问题的定义,能够确定一致性工作发展的 3 个指标:
- 验证不统一是否存在,用于判断以后模型零碎的迭代更新是否衰弱;
- 定位不统一产生的起因,试图解决不统一问题的关键步骤;
- 评估不统一对系统所产生的影响,评估不统一问题修复的老本和获得收益的根据。
如何针对上述的指标进行一一验证呢?能够采纳补充校验流的形式。
如下图 6 所示,当 P1 预估集预测出的 Qp1 作用于策略,产生新的训练集 T2 后,咱们能够应用 T2 来代替评估步骤中的 E1,作为补充流的输出:
△图 6:补充校验流
预估过程可代表在线下同的数据和逻辑流,附加的校验流能够代表离线零碎的数据和逻辑流,并且,因为对立了预估和校验的输出(T2 实践是 P1 的子集,P1 是全副预估后果,T2 是展示点击之后的数据)。将指标验证和理论的解决阶段对应起来,模型一致性问题的验证内容转化为:
- 在离线样本 T2 和 P1 的内容是否统一;
- 在离线样本的特色抽取后果 Fp1 和 Ft2 是否统一;
- 在离线样本应用的模型 Mp1 和 Mt2 是否统一;
- 在离线样本加载雷同模型最终预估输入的后果 Qp1 和 Qt2 是否统一。
三、技术计划
3.1 全链路一致性计划
点击率 q 的计算分为多个步骤,以其中一个 q 为例,其解决步骤如下图 7 所示,次要包含参数解析、特色抽取、离散 embedding 向量查问、dnn 网络计算、隐层信息写入、后果填充等多个操作算子,不同的操作算子之间串行执行,后一个算子的执行依赖于前一个算子的输入。
△图 7:预估解决步骤
咱们思考预估所经验的整个过程,采纳归一变量、逐渐替换的形式笼罩预估的每个环节,来比照是否有不统一,以及寻找不统一呈现的地位和起因,因为离散模型数据的量级在 TB 级别,间接比照数据 diff 的形式不可行,咱们也通过比照输入 q 值的形式来间接评估应用的模型是否统一。首先对下图 8 中每个局部的具体含意进行解释:
- online\_fea 线:上特色抽取后输出预估的样本;
- offline\_ins:用于训练的离线样本;
- offline\_table:离线训练后存储的离散模型,存储不同特色对应的历史点展向量;
- mid\_compress:离散大模型依据特定的阈值过滤掉局部特色之后的数据,训练之后和 s 离散大模型存储在雷同门路下;
- online\_table:线上预估理论用到的离散模型,由 mid\_pb 经压缩脚本过滤后加载到线上;
- cvm\_fea:查问完大模型聚合后的网络输出数据;
- online\_calc\_dnn:线上加载小模型进行 dnn 计算;
- offline\_calc\_dnn:离线训练加载模型进行 dnn 前向计算。
△图 8:计算与验证流
思考特色抽取、大模型查问、Dnn 计算这三大部分,总共计算和验证 5 条流。
第一条流是原始在线预估所失去的原始 q1,第二条流输出数据是和线上预估阶段所对应的离线样本,加载在线预估时离线对应的大、小模型,计算失去 q2,第三条流输出线上预估的离散特色,加载和线上预估时离线对应的大、小模型,计算失去 q3,第四条流输出预估的离散特色,加载由 mid\_pb 转换成的离散大模型计算失去 q4,第五条流数输出在线预估聚合后的网络输出数据,加载线上预估时的小模型,计算失去 q5。
q2 和 q3 的比照保障特色抽取的逻辑和输入数据统一,q3 → q4 → q5 比照保障计算应用的离散模型统一;q5 和 q1 比照保障 dnn 计算统一。别离比照 q1 → q5 能够剖析失去在、离线零碎是否存在不统一以及不统一呈现的地位。
关键问题 1:是否存在不统一
如果 q1 和 q2 比照存在 diff 且 diff 不在预期范畴内,则阐明模型在、离线存在 diff,这是因为 q1 和 q2 的输出是雷同时间段进行拼接对应确定的样本,输出雷同然而最终输入的 q 值不同,阐明模型在、离线预估的确存在 diff。须要评估的是 diff 量是否在承受范畴内,若无奈容忍以后 diff 所造成的较差的线上成果,须要进一步剖析与确定 diff 产生的地位和起因。
关键问题 2:不统一产生的地位
对输入的 q 值逐渐进行比照,能够断定不统一产生的地位,如下图 9 所示。
△图 9:q 值比照流程
- q2 和 q3 不统一:q2 和 q3 只有输出的 ins 不统一,输入不统一示意在离线特色抽取的后果不统一;
- q3 和 q4 不统一:q3 和 q4 的输出雷同,只是在查问大模型时一个用原始的 offline table,一个用 mid\_pb 转换后的 offline table,输入不统一阐明 offline table 和 mid pb 的转换存在问题;
- q4 和 q5 不统一:q4 和 q5 的输出雷同,大模型别离采纳 mid\_pb 和 online table,输入不统一表明 mid\_pb 和 online table 之间的转换存在问题;
- q5 和 q1 不统一:q5 和 q1 是输出、查问大模型以及聚合后网络输出数据统一,DNN 网络计算一个采纳在线,一个采纳离线,输入不统一示意模型的在、离线 DNN 计算存在 diff。
3.2 关键步骤
3.2.1 在线数据获取
在线数据的获取须要从预估模块中采集,即同步线上的预估模块到测试环境,复制线上流量,关上 debug 开关,导出预估步骤中所有的数据,包含特色抽取后果、聚合后的网络输出数据、真是预估后的 q 值等。而通常预估模块都是采纳多线程解决预估申请,典型的 debug 日志打印模式如下图 10 所示:
△图 10:debug 日志模式
图 9 中 A - E 是不同信息下样本的序号,能够看出 debug 日志的特点为:
1)多线程间交替打印;
2)每个线程内有序打印;
3)样本的残缺信息跨行;
4)残缺的样本解决信息可能跨文件,而可能比照的日志是顺序排列的。
因而,在替换和计算前须要对在线采集的 debug 日志进行解析和格式化,因为待处理的日志数据量很大,单机执行耗时很长,能够采取边引流、边解析的实时处理策略,如下图 11 所示,晋升数据的解决效率。
△图 11:debug 日志解决
3.2.2 在离线数据拼接
获取失去在线数据后,须要找到雷同时间段所对应的样本数据,在离线数据汇合的关系如下图 12 所示。
△图 12:在离线数据汇合关系
对于预估的申请样本,在样本阶段会有一部分被策略过滤掉,而训练样本中也可能存在一些样本未通过在线预估,因而在离线比照无效的数据是两者的合集,须要进行拼接。因离线数据用于训练,为了不便查问和存储,个别采纳一个字段惟一标识样本行号, 然而在线局部中并不存在,因而无奈通过该字段进行拼接,须要寻找其余字段进行拼接,拼接的字段称为“主键”,而对于主键的抉择,须要遵循如下准则:
1)在离线样本中都蕴含;
2)可能惟一标识一条样本;
3)本身产生不统一的可能性比拟小;
4)通常选取 id 类而非文本类,选取了适合的“主键”后能够惟一的确定在、离线对应的样本,该样本是整体 q 比照和计算的原始输出,须要保证数据和解决逻辑统一,否则后续预估中的所有阶段的验证都会生效。
3.2.3 离线预估输入
如 2.1 介绍,训练的过程就是已知输出 x 和输入 y,求解参数 w 的过程,深度神经网络在训练时,输出 x 通过模型参数计算失去网络的输入,网络输入与理论 y 计算失去误差,计算误差对于模型参数的梯度,反向流传不断更新模型参数,最终使得系统误差最小。Dnn 网络的构造如下图所示,是一个四层的 dnn 网络:一层 input,一层 output,一层归一化层,两头一层隐层。整体构造如下图 13 所示:
_△图 13:dnn 网络结构
_
模型训练非阶段进行,别离更新 dnn 网络参数和离散特色信息。离线训练中要想输入和在线预估逻辑统一的 q 值,须要开启 test 模式,即只进行网络的前向流传不进行梯度的回传。同时为了失去最终的 q 值,须要对 dnn 网络的输入通过 sigmoid 函数之后的后果进行打印输出,如下图 14 所示。
△图 14 dnn 网络输入
3.2.4 q 比照与后果展现
从模型全流程剖析,测试报告须要展现多角度 Q 值,都须要涵盖统计角度和详情角度。统计角度剖析显示了数据的整体散布和变动,更好地体现了一致性指标中的验证有无问题和问题的严重性;详情角度剖析则是展现更多的 diff 线索,更好地帮助排查 diff 的起源。
- Q 值 diff 统计报告
1) 按不同精度区间统计的在离线 Q 值 diff 绝对值及比例(掂量 diff 范畴);
2) Q 分布图(直观展现 Q 散布偏移状况);
- Q 值 diff 详情
1) 该样本各阶段 Q 值;
2) 该样本拼接主键(不便人工进一步排查)
3.3 残缺实现(整体串联,提测,应用)
3.3.1 串联执行
依据 3.2 所形容的关键步骤,将模型端到端一致性的执行划分成六个阶段:
1)引流阶段:获取与部署线上预估用的环境,将流量实时引到环境中,开启 debug 日志,获取预估中各阶段的两头处理结果,包含线上特色、聚合后的网络输出等信息;
2)日志格式化:将引流阶段的 debug 日志进行解析和格式化,即依照线程 id 将一条 ins 的残缺处理过程切分成不同的子文件日志;
3)日志拼接:依据选取的主 key,将在线预估模块的引流日志和引流对应时间段离线 ins 进行拼接和过滤,惟一确定在离线相互对应的 ins,用于后续阶段的 q 值计算;
4)online 解析:从在线 debug 日志中,依据主 key 解析失去特定 ins 聚合后的网络输出数据;
5)q 值替换与计算:依据全链路一致性的设计方案,笼罩 q 值预估中特色抽取、大模型查问、dnn 计算的每个过程,计算失去 q2 到 q5;
6)报告展现:将步骤 1 - 5 中计算失去 q1-q5 进行展现,比拟 q 值之间的差别,将 diff 起因定位与细化到特色,大模型与转换或网络计算阶段。
每个阶段具体的实现形式如下图 15 所示:
△图 15:端到端一致性残缺执行步骤
3.3.2 工作提测
将上述的处理过程进行平台化,反对自助工作提测和工作查看,并依据提测的参数,进行引流获取线上 q 值、ins、离散向量等信息,用来替换离线训练的 ins/ 离散模型 /dnn 计算等逻辑去计算 q 值并产出最终的报告。
提测页面须要填入的参数如下,次要用于输出数据处理和 q 值计算,如下图 16 所示:
△图 16:提测输出参数
为了晋升解决和排查效率,咱们将每个步骤的耦合进行拆分,依据排查需要选择性的执行工作的特定步骤,如下图 17 所示。当齐全新增一个问题排查时,须要执行残缺的步骤,包含引流 / 日志切分 → 日志格式化 → 日志拼接 → online 解析 → 替换预估 q 值 → q 值计算 → q 散布报告 → 日志比照 → 特色一致性报告 → 残缺报告。
若以后曾经存在引流日志,则能够跳过线上引流间接进行后续的 2 -10 步骤;若引流日志曾经进行格式化,则能够跳过线上引流和日志格式化,顺次类推。
值得阐明的是:因为在离线 ins 是整体排查的原始输出且产生 diff 的可能性比拟大,总是默认产出特色一致性报告,如果剖析了 q 值散布报告后,发现特色完全一致或在预期范畴内,能够设定不产出特色一致性报告, 晋升工作执行效率。
△图 17:工作执行设定与划分
3.3.3 工作查看与报告示例
以后存在两种查看工作的模式:
- 页面查看形式:针对执行流程的每一个阶段,可依据提测工夫和提测人查问到工作在每个阶段的运行状态,默认状态是 Pending,若失败则对应的工作阶段会变为 Failed,执行胜利状态会变成 Succeed。
- 报告接管形式:针对端到端一致性的每个阶段,均增加了工作失败给工作负责人和提测者发邮件的性能,若没有查到则是工作还在运行或者运行胜利。邮件中针对失败的可能起因进行了列举,并标出了工作失败对应的接口人,若自排查遇到问题,可单 hi 邮件中表明的接口人帮忙排查。
产出的报告范例如下图 18 所示,蕴含 q 精度 diff 和 q 值散布,能够依据不同阶段比照失去 diff 地位等。
_△图 18:端到端一致性报告示例
四、成果与后续
- 应用雷同的在线预估和离线训练架构的 q 均可反对排查,拓展性强,以后能反对 pc 相干的点击率 q;
- 迭代较多的 q 排查反对平台化执行,策略成果不合乎预期时可在平台上自助提测与排查;端到端一致性工具目前已反对多个模型策略成果不合乎预期的问题排查,发现包含特色不统一、网络结构未对齐等多个不统一问题,并推动解决与修复。
———- END ———-
百度 Geek 说
百度官网技术公众号上线啦!
技术干货 · 行业资讯 · 线上沙龙 · 行业大会
招聘信息 · 内推信息 · 技术书籍 · 百度周边
欢送各位同学关注