数学分析和ML调参
对于zenfs运用数学分析和ML进行调参
方案一 基于方差的方法判定参数重要性
参考论文:Carver: Finding Important Parameters for Storage System Tuning
流程:
1. 首先根据PI系数计算出最重要的参数,PI系数根据方差给出定义:
$$ Var(S)=\frac{1}{|S|} \sum_{i=1}^{|S|}(y_i-μ)^2 $$
$$ PI(P)=Var(S)-\sum_{i=1}^N\frac{S_{P=P_i}}{S}Var(S_{P=p_i}) $$
这里PI系数越大,由于Var(S)是个常数,PI系数的后一项是当参数中的P取不同值时将S拆分成子集,获得这些子集的方差加权而成,如果后半部分越小,说明P这个参数的影响力越大,也就是说当PI系数大时,参数P是重要的参数。因此第一步选出这里最大的作为最重要的调参参数。
2. 再用固定之前选定参数的方式选择最重要参数,给出了条件参数重要性的公式如下所示:
$$ CPI(Q|P=p)=Var(S_{P=p})-\sum_{j=1}^m\frac{|S_{Q=w_j,P=p|}}{S_P=p}Var(S_{Q=q_j|P=p}) $$
对于所有P中的取值,选择其中最大的作为CPI指数: $$ CPI(Q|P)=\mathop{\max}_{i=1}^nCPI(Q|p=p_i) $$ 选择下一个最大值的参数作为次重要参数。
3. 停止条件
停止的方案有两种:
-
当选择的参数到了一定个数
-
CPI指数已经降低到一定阈值以下,说明剩余的参数对于目标而言影响不大
现存问题
- 确定调参的参数是哪些
- 数据集如何收集,论文中提到了数据集训练了4年,虽然拉丁超采样可以让我们只需要部分数据集,但是这仍然是个问题
- 如何测试调参的效果