买房时,你不会把每套房子都住上一个月再决定买不买——那样时间成本太高了。你更可能找一位房产估价师:TA看一眼地段、面积、朝向、装修,就能报出一个相当靠谱的价格参考。AutoTVM/Ansor编译器里的“代价模型”(Cost Model)就扮演着这位估价师:它不编译、不运行任何代码,只打量一下候选调度方案(schedule)的“长相”,就能预测它跑得快不快。 但估价师也不是天生就会估价的。TA需要从一笔笔真实成交记录中学习,把“看起来不错”与“真正跑得快”对应起来。更巧妙的是,每当一次真实测量完成,代价模型就会像估价师签成一单后复盘那样,把自己的经验更新一版——这就是在线学习(Online Learning)。如果被派到一座新城市,TA还能把老城市的经验迁移过来,快速适应新市场——这就是迁移学习(Transfer Learning)。 本文就用“房产估价师”这个贯穿始终的比喻,带你拆解代价模型如何在AutoTVM/Ansor中平衡测量成本与搜索效率,成为深度学习编译器自动调优背后那个“先看一眼便知好坏”的快枪手。

岗位关联

理解代价模型对AI从业者的职业价值:无论是训练大模型还是裁减推理服务,都离不开编译器自动调优。掌握代价模型的设计思路,能帮你理解TVM等工具的核心加速原理,并把这一套“预测驱动搜索”的方法迁移到任何需要搜索与评估的场景中。

目录
  1. 可视化演示
  2. 角色定位
  3. 特征工程
  4. 模型架构
  5. 在线学习
  6. 迁移学习
  7. 效率影响
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

三步展示代价模型Cost Model:schedule特征工程(循环结构/内存访问/计算特征)、XGBoost/GNN预测性能拟合、以及在线学习增量训练与迁移学习迭代收敛。

本节配有交互动效(进入视口后自动加载,约 3KB)。

schedule特征工程 循环结构:循环层级/规模 内存访问:访问模式 计算特征:运算负载 schedule→特征向量 预测优劣无需实际测量。

角色定位

估价师坐在中介店里,面前摊开一沓房源资料。客户问:“这套值不值?”TA只瞄一眼地段、户型、装修,就能立刻报出一个数字——不需要亲自跑去看房,更不需要住进去体验一个月。AutoTVM/Ansor里的代价模型正是这样一位“估价师”:候选调度方案(schedule)动辄上亿种,如果每个都实际编译、跑一遍再打分,一次调优可能要耗上几天几夜。逐套试住的成本,谁也无法承受。

于是编译器请来了它的估价师。代价模型是一个回归模型,接收描述某个调度方案的特征向量,输出一个预测得分$\hat{s}$,表示“这个方案预计能跑多快”。搜索过程中,模型对大量候选快速排序,只把最有希望的第一梯队送去实测。AutoTVM用它来指导模拟退火等搜索算法,Ansor则用它给每个候选生成“先验分数”,让搜索避开水下摸针式的盲目尝试。

这一过程可以形式化为一个参数化映射:模型从调度代码与硬件环境中提取特征,通过训练好的参数映射为标量分数,供搜索模块排序取舍。

有了这位估价师,搜索不再大海捞针。它先凭经验筛掉一眼就不行的房子,再让客户亲自去看剩下的两三套——实测只留给最有潜力的候选。你也许会问:估价师的眼光从哪来?答案就在下一节:它要看的东西,比普通人多得多。

s^=fθ(x)\hat{s} = f_\theta(\mathbf{x})
这个公式表示:一条调度方案(用特征向量 $\mathbf{x}$ 描述)经过模型 $f_\theta$ 的打分,得到一个性能预估 $\hat{s}$。它是整个“预测代替实测”逻辑的基石。
  1. 特征输入 $\mathbf{x}$调度方案的特征向量,由程序结构与硬件参数共同构成,是模型唯一的“观察窗口”。
    x∈Rd\mathbf{x} \in \mathbb{R}^d
  2. 模型映射 $f_\theta$带参数 $\theta$ 的回归函数,把高维特征压缩成一个实数分数。
    fθ:Rd→Rf_\theta: \mathbb{R}^d \to \mathbb{R}
  3. 预测输出 $\hat{s}$模型给出的性能得分,数值越大表示预计运行越快,供搜索排序使用。
    s^=fθ(x)\hat{s} = f_\theta(\mathbf{x})

特征工程

估价师的本事,一半在眼光,一半在“看什么”。地段权重多少、朝向折算多少、装修年限如何折旧——这些维度构成了TA判断的“特征表”。同样一块地皮,外行只看到“偏远”,内行能看到地铁规划、学区划分与商圈辐射。代价模型要想估得准,第一步就是设计出能区分好方案与差方案的“特征表”。

AutoTVM从调度代码中抽取程序特征:循环层数、向量化宽度、缓存访问量、计算密集度、并行线程数等;同时从目标硬件抽取硬件特征:缓存容量、核心数量、内存带宽等。这些特征被拼接成向量输入模型,每个维度都对应着影响真实运行时间的物理因素。

特征的质量直接决定模型预测上限。如果喂给模型的都是“小区物业叫什么名字”这类无关信息,再聪明的估价师也算不出房价。AutoTVM/Ansor花大量精力设计特征抽取规则,正是因为特征工程决定了代价模型能力的“天花板”。

就像估价师既要看房子本身,也要看所在城市和小区配套,代价模型必须“两头都盯”才能给出有意义的分数。特征表设计好了,接下来就要选一位能用好这张表的估价师——模型架构的取舍,是第三节的主题。

x=[xprog;xhw]\mathbf{x} = [\mathbf{x}_{prog}; \mathbf{x}_{hw}]
这个公式表示:把程序特征向量 $\mathbf{x}_{prog}$ 与硬件特征向量 $\mathbf{x}_{hw}$ 拼接在一起,形成完整的特征向量 $\mathbf{x}$。只有两头都看,预测才能贴合实际。
  1. 程序特征 $\mathbf{x}_{prog}$描述调度方案结构的信息,如循环层数、向量化宽度、访存模式,来自编译器静态分析。
    xprog∈Rd1\mathbf{x}_{prog} \in \mathbb{R}^{d_1}
  2. 硬件特征 $\mathbf{x}_{hw}$描述目标平台能力的信息,如缓存容量、核心数、内存带宽,来自硬件配置查询。
    xhw∈Rd2\mathbf{x}_{hw} \in \mathbb{R}^{d_2}
  3. 拼接向量 $\mathbf{x}$两者顺序拼接为统一特征向量,输入后续模型。
    x∈Rd1+d2\mathbf{x} \in \mathbb{R}^{d_1 + d_2}

模型架构

估价师手里的工具各不相同。新手可能抱着厚厚一本估价手册,按表格逐项查分;老手心里有一棵决策树:先看地段,再看面积,几次分叉就能出价;真正的大师则能同时权衡三四十个维度的微妙交互,那种“感觉”很难用几页纸写清楚。代价模型的架构选择,也分这几个段位。

AutoTVM默认采用XGBoost梯度提升树:它擅长处理表格型特征,在小样本(几百到几千条)上表现稳健,训练速度快,几乎不用调参就能用。Ansor则进一步采用神经网络(MLP)作为代价模型:网络能自动捕捉特征间的高阶非线性关系,还能输出一个“预测分布”而非单点数值——既给期望性能,也给不确定性,让搜索算法知道“哪个预测值得信任”。

两种架构各有取舍。XGBoost在数据量少时占优,神经网络在数据充足时上限更高。二者本质都在优化同一个目标:让预测分数无限逼近真实运行时间。XGBoost通过逐轮加法训练多个决策树;神经网络则通过反向传播更新连接权重。它们共同遵守一个“拟合+约束”的框架:

选择什么工具,不取决于谁更高深,而取决于手头有多少数据、多少算力——如同估价师在城市里选手册,在乡村靠经验。模型选好之后,它并不会一直“吃老本”;每签一单都要更新认知,这正是下一节的在线学习。

L=∑i=1ml(yi,y^i)+λ∑k=1KΩ(fk)\mathcal{L} = \sum_{i=1}^m l(y_i, \hat{y}_i) + \lambda \sum_{k=1}^K \Omega(f_k)
这个公式是XGBoost等树模型训练目标:第一项让预测贴近真实;第二项约束模型复杂度,防止它把训练样本“背”下来而非“学”到规律。
  1. 经验损失项 $\sum_i l(y_i, \hat{y}_i)$衡量第 $i$ 个样本的预测值与真实实测值之间的误差,误差越小拟合越好。
    l(y,y^)=(y−y^)2l(y, \hat{y}) = (y - \hat{y})^2
  2. 复杂度惩罚项 $\Omega(f_k)$对第 $k$ 棵树的结构复杂度进行惩罚,限制树的深度与叶子权重,避免过拟合。
    Ω(f)=γT+12λ∥w∥2\Omega(f) = \gamma T + \frac{1}{2}\lambda \|w\|^2
  3. 平衡系数 $\lambda$控制“拟合数据”与“保持简单”两项之间的权重,$\lambda$ 越大模型越保守。
    λ>0\lambda > 0

在线学习

估价师最值钱的本事是“越卖越准”。每签下一单,TA都会默默记下成交价与当初估价的差距:原来这个地段的房子比想象中抢手,下次报价要加两成。AutoTVM/Ansor中的代价模型同样“边搜边学”——搜索过程中被送去实测的候选方案,跑完后会带回真实运行时间,这些鲜活样本立刻回流到模型里做增量更新。

为什么不能攒够一批再重新训练?因为搜索是一个动态过程:搜索算法会不断向“模型看好的区域”采样,导致候选分布随时间漂移。如果模型不跟进更新,它对新区域的预测会越来越不准。在线学习用梯度下降做增量更新,每来一个实测样本就微调一步模型参数,成本低、反应快。

Ansor更进一步,在搜索过程中刻意加入“模型认为不佳”的候选去实测——这是一种探索策略:模型预测值本身有不确定性,那些“看着不好但实际可能很好”的方案,正是不确定性的来源,只有实测才能消除盲区。这就是探索与利用的经典权衡:利用模型选“看起来最好”的方案,探索“模型没把握”的方案。

一次实测就像一次付费咨询,代价模型把每一条反馈都变成经验沉淀下来,越调越快,最终像老估价师一样“一眼就是行情价”。但这里还有个现实问题:每调到一个新硬件平台,模型又要从零开始学吗?下一节的迁移学习给出了答案。

wt+1=wt−η∇L(wt)w_{t+1} = w_t - \eta \nabla \mathcal{L}(w_t)
这是在线学习最核心的更新规则:每收到一条新的实测反馈,就把模型参数沿着损失下降的方向微调一小步,让预测逐渐向真实值靠拢。
  1. 当前参数 $w_t$第 $t$ 轮搜索时的模型权重,代表此刻的“估价经验”。
    wt∈Rdw_t \in \mathbb{R}^d
  2. 学习率 $\eta$控制每步更新的幅度,太大容易震荡,太小收敛过慢。
    η>0\eta > 0
  3. 损失梯度 $\nabla \mathcal{L}$损失函数对参数各维度的偏导数向量,指向“下降最快”的方向。
    ∇L=∂L∂w\nabla \mathcal{L} = \frac{\partial \mathcal{L}}{\partial w}

迁移学习

一个在北京干了十年的估价师被调到上海。TA不会从零学起:地段概念相似,楼盘逻辑相通,只需要快速熟悉几个本地参数——学区政策、地铁规划、老洋房行情——就能迅速进入状态。代价模型部署到新硬件平台时,也是同样道理:在新GPU上从零收集样本又贵又慢,但旧平台上已有的调度经验明明能帮上大忙。

迁移学习的做法很直接:先在旧平台的大量历史数据上训练一个基础模型(相当于让估价师在北京积累十年经验),再把它“空降”到新平台,用新平台的小批量实测数据微调(fine-tune)。Ansor论文正是这样做的:把在旧硬件上学习到的调度规律迁移到新硬件,显著减少冷启动时间。

这种“带着经验转岗”的策略,在形式化上体现为一个带约束的优化问题:我们希望找到一组新参数,既要适配新硬件的数据分布,又不要和旧参数偏离太远——偏离太远意味着把旧经验全都忘光了。

迁移学习让估价师“带着经验转岗”,每一个新硬件都不必从零开始调优——这对于芯片快速迭代的今天格外重要。当模型既准又能快速适应新环境,整个调优系统的效率提升就是水到渠成的事了。

θ∗=arg⁡min⁡θLnew(θ)+λ∥θ−θpre∥22\theta^* = \arg\min_{\theta} \mathcal{L}_{new}(\theta) + \lambda \|\theta - \theta_{pre}\|_2^2
这个公式描述迁移学习的本质:新模型的参数 $\theta$ 要让新平台上的预测误差尽量小(第一项),同时不要离预训练参数 $\theta_{pre}$ 太远(第二项),从而保留可迁移的通用经验。
  1. 新任务损失 $\mathcal{L}_{new}(\theta)$在新平台样本上计算的预测误差,衡量模型适应当前硬件的能力。
    Lnew(θ)=1m∑i=1m(fθ(xi)−yi)2\mathcal{L}_{new}(\theta) = \frac{1}{m}\sum_{i=1}^{m} (f_\theta(x_i) - y_i)^2
  2. 偏离惩罚 $\|\theta - \theta_{pre}\|_2^2$新旧参数逐维之差的平方和,限制新模型不要剧烈偏离旧经验。
    ∥θ−θpre∥22=∑j(θj−θpre,j)2\|\theta - \theta_{pre}\|_2^2 = \sum_{j} (\theta_j - \theta_{pre,j})^2
  3. 权重系数 $\lambda$调节“适应新平台”与“保留旧知识”的平衡,$\lambda$ 越大越保守。
    λ∈[0,+∞)\lambda \in [0, +\infty)

效率影响

没有估价师时,看房是体力活:每套都要亲自看、挨个试住,一天下来看不了三套;有了估价师,九成房子直接过滤,只有两套需要亲自去——搜索效率的差别正在于此。代价模型将需要实测的候选比例从100%压到个位数百分比,而一次实测(编译+运行)可能需要几秒甚至几分钟,预测只需要几毫秒。

更重要的是,节省下来的时间被搜索算法重新投入到“模型认为有希望”的方案上:搜索可以在同样的总耗时内多看几个数量级的候选,找到的最终方案质量也随之提升。这是一笔双重收益:既省时间,又调得更好。

端到端的调优时间可以拆成两部分:搜索决策本身的计算开销,加上不可避免的实测开销。代价模型把实测比例 $\alpha$ 压到极小,相当于把乘法中的第二大项几乎消掉:

代价模型就像整个自动调优系统的杠杆:一点训练开销,撬动百倍效率提升。那位估价师的服务费,比起逐套试住的时间成本,简直微不足道。理解了这一整套“预测驱动搜索”的逻辑,你就能明白为什么AutoTVM/Ansor能把深度学习算子的调优从几天压缩到几小时。

Ttotal=Tsearch+α⋅n⋅Tmeasure,α≪1T_{total} = T_{search} + \alpha \cdot n \cdot T_{measure}, \quad \alpha \ll 1
这个公式说明总调优时间由“搜索耗时”和“实测耗时”组成。代价模型让需要实测的候选比例 $\alpha$ 趋近于零,总耗时主要由毫秒级的预测搜索主导。
  1. 搜索耗时 $T_{search}$模型打分与搜索决策的总计算开销,与候选数量 $n$ 成正比,但单次预测只需毫秒。
    Tsearch=n⋅TpredT_{search} = n \cdot T_{pred}
  2. 实测候选数 $\alpha \cdot n$全部候选 $n$ 中真正送去编译运行的占比,$\alpha$ 是模型节省下的关键系数。
    nmeasured=α⋅nn_{measured} = \alpha \cdot n
  3. 总时间 $T_{total}$端到端调优耗时,当 $\alpha$ 很小时,主要由 $T_{search}$ 决定。
    Ttotal=Tsearch+nmeasured⋅TmeasureT_{total} = T_{search} + n_{measured} \cdot T_{measure}

AI 应用场景

神经网络架构搜索(NAS)中的性能预测器

阶段:模型设计与自动化机器学习(AutoML)

解决的问题:验证一个神经网络结构需要完整训练+评估,动辄数小时甚至数天。传统NAS方法逐个训练候选结构,资源开销巨大。借鉴代价模型思路:先用特征描述网络结构(层数、通道数、核大小、跳跃连接),轻量预测器打出“性能分”,只对高分段候选做真实训练。

具体案例:某AutoML平台在CIFAR-10上搜索图像分类网络时,对12000个候选网络先用MLP预测准确率,只实测Top 5%的候选,搜索耗时从120 GPU天降至12 GPU天。这与TVM中“代价模型过滤→少数实测”完全同构。

数据库查询优化器的代价估算

阶段:系统软件优化

解决的问题:数据库执行一条SQL时,查询优化器需要在多个执行计划之间选择。传统优化器依赖手工编写的代价公式,误差大、维护难。引入机器学习代价模型后,可以根据表统计信息、索引情况、谓词选择性等特征,预测每个执行计划的耗时,选出最优计划——这正是“房产估价师”在数据库世界的化身。

具体案例:PostgreSQL扩展中,用历史查询的执行耗时训练LightGBM代价模型,对新查询的执行计划进行排序,复杂查询的端到端耗时平均降低27%,同时避免了人工调整代价因子的痛苦。

推荐系统的在线实时学习

阶段:在线推理与持续学习

解决的问题:用户偏好随时间漂移,离线训练的推荐模型往往“估价过时”。借鉴在线学习的思路:每次用户点击/购买行为发生后,立刻作为新样本增量更新模型参数,让推荐系统“越卖越准”——就像代价模型每收到一个实测结果就更新一次经验。

具体案例:某电商平台对商品点击率预估模型做在线梯度下降更新,每天处理数亿次曝光反馈,模型从“周级更新”变为“秒级更新”,推荐页点击率相对提升11%。

Python 演示

python58 行
"""代价模型:合成特征训练与在线更新演示"""import numpy as np  def gen_data(n_samples=200, seed=42):    """生成合成调度特征与真实性能分(含非线性关系)"""    rng = np.random.default_rng(seed)    X = rng.random((n_samples, 6))    # 真实性能由非线性函数生成,模拟程序真实运行时间    y = 12.0 / (X[:, 0] + 0.5) + 3.0 * X[:, 2] - 5.0 * X[:, 4] * X[:, 4]    y = (y - y.min()) / (y.max() - y.min()) * 100.0    return X, y  class CostModel:    """简化的线性代价模型,支持批量预训练与在线更新"""     def __init__(self, feat_dim=6, lr=0.05):        self.lr = lr        self.w = np.zeros(feat_dim)        self.b = 0.0     def predict(self, X):        return X @ self.w + self.b     def update(self, x, y):        error = self.predict(x) - y        self.w -= self.lr * error * x        self.b -= self.lr * error  def main():    X, y = gen_data()    idx = np.random.default_rng(0).permutation(len(X))    X, y = X[idx], y[idx]    X_train, y_train = X[:160], y[:160]    X_new, y_new = X[160:], y[160:]     model = CostModel(feat_dim=6, lr=0.05)     # 阶段1:冷启动预训练(模拟旧平台历史数据)    for _ in range(30):        for x, yi in zip(X_train, y_train):            model.update(x, yi)     # 阶段2:在线学习(实测结果逐个回流)    for x, yi in zip(X_new, y_new):        model.update(x, yi)     pred = model.predict(X_new)    mse = float(np.mean((pred - y_new) ** 2))    corr = float(np.corrcoef(pred, y_new)[0, 1])    print(f"MSE: {mse:.3f}")    print(f"预测与真实相关系数: {corr:.3f}")  if __name__ == "__main__":    main()
目的:用合成特征数据演示一个极简代价模型的完整流程——先在“旧平台”数据上预训练,再用“新平台”实测样本做在线学习,最后用均方误差和相关系数评估预测效果。
  1. self.w = np.zeros(feat_dim)初始化模型权重为零,代表估价师“从零开始”
  2. return X @ self.w + self.b矩阵乘法一次性完成所有候选的打分预测
  3. error = self.predict(x) - y算出“估价”与“成交价”的差距
  4. self.w -= self.lr * error * x沿着梯度方向微调权重,让下次更准
  5. for _ in range(30):预训练阶段在旧数据上滚动30轮,充分吸收历史经验
  6. for x, yi in zip(X_new, y_new):在线阶段实测样本逐一到达,即学即用
  7. np.corrcoef(pred, y_new)[0, 1]预测与真实值的相关系数,越接近1说明模型越可靠

常见误区

误区“有了代价模型之后,是不是所有候选都不用实测了?反正它已经练得很准了,直接用模型选最优的不就行了吗?”

正解代价模型只是“估计”,精度永远有限。实测数据是训练样本的根本来源——没有实测,模型就没有学习素材。搜索过程中仍要保留一定比例的真实测量,用于校正模型盲区,并在最终选出方案后做确认验证。这就像估价师再准,成交时买家还是要亲自验房;完全靠预测就下单,迟早会在隐蔽问题上栽跟头。

为何常见:人们容易高估预测模型的精度,当模型在已见区域表现很好时,就误以为它对所有未知区域同样可靠。但极端值往往藏在模型没见过的特征组合里。

误区“特征工程不就是加维度吗?多塞一些特征,模型总能学到有用的,反正不用我手动调。”

正解冗余或噪声特征会增加训练开销,引入虚假相关性,甚至降低泛化能力。好的特征工程聚焦于影响性能的物理因素:缓存层级、内存带宽、循环结构、访存模式等。就像估价师不会去统计房主的鞋码或窗帘颜色——这些信息看似丰富,实则无助于预测房价。

为何常见:“多填几个字段”的心理成本极低,容易让人产生“做了更多努力”的错觉,忽略了特征质量、量纲和相互关系比数量重要得多。

误区“代价模型嘛,深度学习肯定吊打传统树模型,直接上Transformer就完事了,反正现在都是大模型时代了。”

正解数据量少(数百到数千条)时,XGBoost在表格特征上往往更稳、训练更快、调参更少;神经网络的优势体现在大数据量、高维特征、需要输出不确定性分布的场景。AutoTVM默认用XGBoost而Ansor用神经网络,正是因为它们面对的数据规模与预测需求不同。工具没有绝对高下,只有适配与否。

为何常见:深度学习热潮容易让人形成“新工具必然碾压旧工具”的直觉,忽略了小样本场景下传统方法的正则化优势与可解释性。

误区“模型在GPU A上训好了,直接拿到GPU B上应该就能用,反正都是GPU,差距能有多大?”

正解不同硬件的缓存层级、核心数量、指令集、内存带宽差异显著,性能分布完全不同,直接复用会导致严重误判。正确做法是迁移学习:用旧平台训练的模型做初始化,在新平台的小样本上微调;或采用多任务学习,让模型同时学习多个硬件平台的共享知识。

为何常见:忽略了硬件特性对算子性能的决定性影响。人们习惯把"GPU"当作同质事物,实际上不同代际、不同厂商的GPU之间的性能规律差别巨大,如同北京与上海虽然都是大城市,但房价规律并不相同。

面试题

Q1. 在AutoTVM/Ansor中,代价模型的核心职责是?

单选题 · easy

  • A.直接编译所有候选方案
  • B.预测候选方案的性能分← 正确答案
  • C.替代用户手动调整参数
  • D.自动生成新的调度代码

答案:B。代价模型输入调度特征、输出性能预测分,用于对大量候选快速排序。直接编译候选、替代用户调参、生成调度代码都是其他组件(如搜索模块、调度器)的职责。它就像估价师只负责“估”,不负责“住”和“改”。

Q2. 代价模型的特征向量通常包含哪些内容?

单选题 · easy

  • A.仅包含目标硬件参数
  • B.仅包含程序循环结构
  • C.硬件特征与程序特征← 正确答案
  • D.只包含输入数据形状

答案:C。特征向量由程序特征(循环层数、向量化宽度、访存模式)和硬件特征(缓存容量、核心数、带宽)拼接而成。单看任何一面都会导致预测失真——正如估价师必须同时看房子本身和周边配套。

Q3. 样本量较小时,哪种模型更适合代价模型任务?

单选题 · mid

  • A.XGBoost梯度提升树← 正确答案
  • B.大语言模型Transformer
  • C.深层CNN卷积网络
  • D.GAN生成对抗网络

答案:A。在数百到数千样本的表格特征场景,XGBoost凭借强正则化和成熟的梯度提升机制表现稳健、训练快。Transformer、CNN、GAN都是为大数据、高维非结构化数据设计的,小样本下容易过拟合。AutoTVM选择XGBoost正是这个道理。

Q4. 在线学习给代价模型带来的好处有哪些?

多选题 · mid

  • A.充分复用实测反馈数据← 正确答案
  • B.避免全量重新训练开销← 正确答案
  • C.彻底消除测量时间成本
  • D.保证模型不再发生漂移

答案:AB。在线学习让搜索中产生的新实测样本即时回流,增量更新参数(A、B正确)。但它不能消除测量时间——实测仍要发生;也不能阻止分布漂移——漂移是持续的过程,在线学习只是去适应它(C、D错误)。

Q5. 迁移学习在代价模型中的核心作用是?

单选题 · mid

  • A.提升单次编译的速度
  • B.加快新硬件上的冷启动← 正确答案
  • C.简化特征提取的流程
  • D.替代所有实测必要性

答案:B。迁移学习让旧平台训练好的模型参数作为新硬件模型的起点,只需少量新平台样本微调就能快速达到可用精度,解决冷启动问题。它不提升编译速度、不简化特征提取,更不能替代实测——只是让实测需求大幅减少。

Q6. 代价模型如何提升调优系统的整体效率?

多选题 · hard

  • A.减少需要实测的候选数← 正确答案
  • B.引导搜索聚焦有希望区← 正确答案
  • C.完全消除编译时间消耗
  • D.提升端到端调优的速度← 正确答案

答案:ABD。代价模型将实测比例压到个位数(A),搜索算法把省下的时间投入到“模型看好的区域”以找到更优方案(B),最终端到端调优耗时大幅缩短(D)。但编译时间只是被“不再频繁触发”而并未消失——被实测的少数候选仍需编译(C错误)。

Q7. 为什么代价模型需要持续在线学习?

单选题 · mid

  • A.搜索分布随进程不断变化← 正确答案
  • B.模型参数初始化太困难
  • C.硬件性能会加速衰减
  • D.特征提取需要实时计算

答案:A。搜索算法会不断向“模型看好的区域”采样,导致候选分布随搜索进程持续演变。模型若不跟进更新,对新区块的预测会失准。参数初始化困难、硬件衰减、特征实时计算都不是主要动因——核心在于数据分布本身在移动。

Q8. 代价模型预测偏差较大时,最可能的影响是?

单选题 · hard

  • A.搜索偏向次优调度区域← 正确答案
  • B.编译时间反而会减少
  • C.实测过程被自动跳过
  • D.特征维度被强行压缩

答案:A。搜索算法依赖模型分数做取舍,预测偏差会误导搜索向“模型误以为好、实际不好”的区域集中,导致最终方案次优。编译时间、实测流程、特征维度不受预测偏差直接影响——它们由系统流程和特征工程决定。

Q9. 代价模型的训练样本来源包括?

多选题 · mid

  • A.实际编译运行的测量值← 正确答案
  • B.历史搜索积累的记录← 正确答案
  • C.随机数生成器伪造值
  • D.用户手动输入的估计值

答案:AB。训练样本必须来自真实测量:一是搜索过程中主动实测的候选结果(A),二是历史调优任务中积累下来的调度与性能记录(B)。随机伪造值与真实硬件性能无关,用户手动估计值可作为先验但不可作为主要训练数据(C、D错误)。

Q10. 代价模型输出的典型形式是?

单选题 · easy

  • A.一个标量性能得分← 正确答案
  • B.完整的可执行文件
  • C.一段优化的源代码
  • D.一组编译选项列表

答案:A。代价模型是回归模型,输出一个标量(如预计运行时间倒数的得分),供排序与搜索使用。生成可执行文件、源代码、编译选项分别是编译器后端、调度生成器和配置搜索的职责。