论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

发布于:2025-06-10 ⋅ 阅读:(18) ⋅ 点赞:(0)

Muffin 论文

  • 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。
  • API 库覆盖低,因为各个 API 都是在各种具体场景下使用。

Muffin首先生成DAG作为结构信息,然后利用一种贪婪的层选择算法来生成层信息。通过这种方式,Muffin能够生成多样化的DL模型。为了进行差异性测试,Muffin在模型训练阶段执行数据跟踪分析。特别是,Muffin从不同的训练阶段(即正向计算(FC)、损失计算(LC)和反向计算(BC))收集数据跟踪。然后,它根据一套提出的指标来检测不同库之间的不一致性,这些指标衡量连续层的输出变化。
在这里插入图片描述
借鉴 NAS 生成模版,生成 chain structure with skips、cell-based structure(structure information),同时确保生成的 DAG,只有一个入度为 0 的顶点作为输入层,只有一个出度为 0 的顶点作为输出层,没有孤立点。在逐个实例化时,考虑输入数量限制、输入/输出形状限制,并且为了增加拓扑多样性,设计了基于适应度比例选择的方法。 s = 1 c + 1 p = s ∑ k = 1 r s k s=\frac{1}{c+1} \quad p=\frac{s}{\sum_{k=1}^rs_k} s=c+11p=k=1rsks
同一层输出差异: D ( X , Y ) = m a x m ( ∣ x m − y m ∣ ) D(X,Y)=max_m(|x_m-y_m|) D(X,Y)=maxm(xmym)

  • 正向计算:比较当前层 l i l_i li ​的输出与它的前驱层 l p l_p lp ​的输出差异: I n c _ F C = { l i , i ∈ [ 1 , n ] ∣ ( D ( O j i , O k i ) > t ) ∧ ( D ( O j p , O k p ) < ϵ , p ∈ P ( i ) ) } Inc\_{FC}=\{l_{i},i\in[1,n]\mid(D(O_{j}^{i},O_{k}^{i})>t)\wedge(D(O_{j}^{p},O_{k}^{p})<\epsilon,p\in P(i))\} Inc_FC={li,i[1,n](D(Oji,Oki)>t)(D(Ojp,Okp)<ϵ,pP(i))} 切比雪夫距离定义为两个张量在任何坐标维度上的最大差异。这种距离度量方法可以避免因张量形状不同而导致的比较问题。
  • 损失函数:比较损失函数的输出和梯度值的差异: I n c _ L C = { L ∣ ( ( ∣ L O j − L O k ∣ > t ) ∨ ( ∣ L G j − L G k ∣ > t ) ) ∧ ( D ( O j n , O k n ) < ϵ ) } Inc\_{LC}=\{L\mid((|LO_j-LO_k|>t)\lor(|LG_j-LG_k|>t))\wedge(D(O_j^n,O_k^n)<\epsilon)\} Inc_LC={L((LOjLOk>t)(LGjLGk>t))(D(Ojn,Okn)<ϵ)}
  • 反向传播:比较每一层的梯度值差异: I n c _ B C = { l i , i ∈ [ 1 , n ] ∣ ( D ( G j i , G k i ) > t ) ∧ ( D ( G j s , G k s ) < ϵ , s ∈ P ( i ) ) } Inc\_{BC}=\{l_{i},i\in[1,n]\mid(D(G_{j}^{i},G_{k}^{i})>t)\wedge(D(G_{j}^{s},G_{k}^{s})<\epsilon,s\in P(i))\} Inc_BC={li,i[1,n](D(Gji,Gki)>t)(D(Gjs,Gks)<ϵ,sP(i))}

虽然这种方式产生了巨大的模型拓扑多样性,但从微观层面而言,Structure内的多样性是匮乏的。

参数:

  1. MAXc:用于控制模型结构的大小,具体来说是控制模型中层的最大数量。
  2. MAXv:同样用于控制模型结构的大小,具体来说是控制模型中每个层的最大输入维度。
  3. t:用于不一致性检测的阈值。在比较不同库的输出差异时,如果差异大于这个阈值,则认为存在不一致性。
  4. ε:另一个用于不一致性检测的阈值,通常是一个很小的值,用于判断差异是否足够小以至于可以认为是正常的浮点数偏差。

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述