设想一家生意火爆的奶茶店:调饮大师傅手里的秘方(训练好的神经网络模型)很厉害,但让一个全能机器人照单全做,速度慢还费电。店长于是添置了一台专用自动封口机(Coral Edge TPU)——它不会调奶茶,只负责最重复的封口动作,却能以极小功耗完成海量推理任务。 不过封口机不识字:你得把秘方翻译成机器能读的标准作业卡(把模型编译成专用格式、把小数换成整数),开店前要做设备自检(运行时配置),生意爆棚就多买几台机器协同(多 TPU 级联),再用它去干目标检测、关键词唤醒这类固定又高频的活儿。搞清楚这一整套流程,你就掌握了边缘设备 AI 的落地密码。

岗位关联

对 AI 从业者来说,搞懂 Edge TPU 的编译、量化与部署链路,就能把云端模型低成本搬到摄像头、音箱等边缘设备,这是物联网与边缘智能岗位的核心竞争力。

目录
  1. 可视化演示
  2. 芯片定位
  3. 模型编译流程
  4. INT8量化
  5. 运行时配置
  6. 多TPU级联
  7. 目标检测应用
  8. 关键词唤醒
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示Coral Edge TPU三大核心:模型编译流程(TF→TFLite→INT8量化→Edge TPU编译→部署5阶段8倍压缩)、INT8量化推理(FP32→INT8 4倍加速2W功耗CONV/DW/ELT硬件算子)、多TPU级联(4个TPU流水线并行L1-L4分层部署4倍吞吐),三模式切换理解边缘AI推理全流程。

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

'+C1+'

芯片定位

奶茶店最忙的不是调奶茶,而是给几百杯奶茶封口、装袋。全能机器人什么都会,但每件事都做不快;店长添置一台自动封口机,只干一件事,却每小时能封上千杯,耗电还不到机器人的零头。Coral Edge TPU 就是 Google 为边缘设备准备的这样一台“封口机”——它是一颗专用推理加速芯片(ASIC),不做通用计算,只专注运行神经网络推理。

与之相对的 CPU 像什么都会一点的全能机器人,GPU 像力气很大的搬运工,而 Edge TPU 只在“跑已编译好的推理模型”这一件事上做到极致:约 4 TOPS 的 INT8 吞吐量,平均功耗却只有约 2 瓦。所谓 TOPS,就是芯片每秒钟能完成的万亿次整数运算,数字越大,芯片“封口”越快。

衡量这类芯片最直观的指标是能效比——每一瓦功耗能换来多少算力:

所以一台封口机虽然“只会一件事”,但它把这一件事做到每秒上千杯、几乎不耗电——这正是边缘设备最需要的:固定任务、低功耗、高吞吐。选型时别再盯着“算力大不大”,先问“能效比高不高”。

能效比(TOPS/W)=吞吐量(TOPS)功耗(W)≈42=2\displaystyle \text{能效比(TOPS/W)} = \frac{\text{吞吐量(TOPS)}}{\text{功耗(W)}} \approx \frac{4}{2} = 2
通俗说明:能效比就像“每度电封多少杯奶茶”,是边缘芯片最重要的体检指标。
  1. 吞吐量(TOPS)TOPS 表示芯片每秒能完成的万亿次整数运算,4 TOPS 意味着每秒钟能处理 4 万亿次计算。
    吞吐量=4 TOPS\displaystyle \text{吞吐量} = 4 \text{ TOPS}
  2. 功耗(W)瓦特衡量芯片运行时的耗电速度,约 2 瓦只相当于一盏小夜灯,可以靠 USB 供电,因此能塞进电池设备。
    功耗≈2 W\displaystyle \text{功耗} \approx 2 \text{ W}
  3. 能效比(TOPS/W)用吞吐量除以功耗,得到每瓦功耗换来的算力,是边缘芯片最关键的指标。
    能效比=42=2 TOPS/W\displaystyle \text{能效比} = \frac{4}{2} = 2 \text{ TOPS/W}

模型编译流程

自动封口机不识字,店长得把“每杯封 3 秒、压 2 下”写成机器能读的标准作业卡。在 Edge TPU 的世界里,这个“翻译”动作叫模型编译:训练好的模型通常是 TensorFlow Lite 格式(.tflite),Edge TPU 并不直接认识它。

开发者用 Edge TPU Compiler 工具对模型做编译,编译器逐个检查网络里的每个算子(卷积、池化这类计算单元)是否能由芯片执行,然后把计算图转换成 Edge TPU 专属的指令格式,输出一个新的 .tflite 文件,也就是“Edge TPU 模型”。被编译过的模型才能跑在芯片上,没编译的模型只会被芯片拒之门外。

编译过程本质是一条流水线,每一步都有明确职责:

标准作业卡写得好不好,直接决定封口机能不能顺利干活。日常开发中模型编译失败,十有八九是网络里混入了 Edge TPU 不认识的算子——把不支持的层换成支持的结构,编译立刻通过。

TFLite 模型→算子检查→计算图优化→指令生成Edge TPU 模型\displaystyle \text{TFLite 模型} \xrightarrow{\text{算子检查}} \xrightarrow{\text{计算图优化}} \xrightarrow{\text{指令生成}} \text{Edge TPU 模型}
通俗说明:编译就是把“人话模型”翻译成“机器指令”,翻译不通就换写法或换算子。
  1. TFLite 模型(输入原料)训练好的模型先转换成 TensorFlow Lite 格式,作为编译器的输入,相当于写好的原始秘方。
    输入=TFLite 模型\displaystyle \text{输入} = \text{TFLite 模型}
  2. 算子检查编译器逐个检查网络中的算子是否在 Edge TPU 支持列表内,统计可编译比例,不支持的算子会被标记或报错。
    算子支持率=可编译算子数算子总数\displaystyle \text{算子支持率} = \frac{\text{可编译算子数}}{\text{算子总数}}
  3. 计算图优化把能合并的层合并、能省的计算省掉,就像把“先加糖再搅拌”合并成“直接加糖水”,减少执行步骤。
    优化图=Opt(原始图)\displaystyle \text{优化图} = \text{Opt}(\text{原始图})
  4. 指令生成把优化后的图映射成 Edge TPU 的硬件指令,输出编译产物,供运行时直接加载。
    产物=Map(优化图)\displaystyle \text{产物} = \text{Map}(\text{优化图})

INT8量化

大师傅的秘方写着“盐适量、糖少许”,机器人没法执行。店长于是买来一套定量勺,把所有模糊的量转成精确刻度。INT8 量化干的就是这件事:把模型里的小数(float32)统一换算成整数(int8),让芯片能用最简单的方式高速计算。

浮点数的取值范围极宽,而 int8 只有 -128 到 127 这 256 个整数刻度。要把无数种小数塞进 256 个格子,需要一把“刻度尺”:scale(缩放系数)决定每一格代表多大一段实数,zero point(零点偏移)负责让整数零与实数零对齐。这把刻度尺不是拍脑袋定的,而是用一组校准数据集扫描真实数值范围后算出来的——校准数据选得好不好,直接决定量化精度。

量化公式如下:

封口机不认识“适量”,但认得“3 秒、2 下”这种整数指令。量化就是把秘方里所有模糊的词翻译成它认得的整数刻度,代价是口味损失一点点。实践经验是:配合好的校准数据集,多数检测、分类模型量化后精度损失能控制在 1% 以内。

q=round(rS+Z)\displaystyle q = \text{round}\left( \frac{r}{S} + Z \right)
通俗说明:量化像把连续的温度计改成整度刻度,损失一点精度,换来芯片快好几倍的运算速度。
  1. r(真实浮点值)量化前模型的真实权重或激活值,例如某个权重是 0.1234,是小数字符串。
    r=0.1234\displaystyle r = 0.1234
  2. S(缩放系数)用真实值的最大值最小值之差除以 255,得到每个整数刻度代表的实数范围,就像限量勺每勺代表多少克。
    S=rmax⁡−rmin⁡255\displaystyle S = \frac{r_{\max} - r_{\min}}{255}
  3. Z(零点偏移)补偿整数零与实数零不对齐的偏移量,保证映射平稳不跑偏,是整个刻度的“原点”。
    Z=round(−rmin⁡S)\displaystyle Z = \text{round}\left( -\frac{r_{\min}}{S} \right)
  4. 取整得到 q把浮点值除以 S 再加 Z,四舍五入成整数,存入 int8 张量;反推回实数时有一点点误差,这就是量化精度损失。
    q=round(rS+Z)\displaystyle q = \text{round}\left( \frac{r}{S} + Z \right)

运行时配置

每天开店前,店长要开机预热、检查封口机连没连上、设定封口压力参数。Edge TPU 的运行时配置就是这套“开机流程”:在代码里调用 pycoral 库,用 TensorFlow Lite 的 Edge TPU delegate 把推理任务“委托”给这颗芯片。

核心步骤很有仪式感:先创建解释器(interpreter)并自动挂载 Edge TPU 设备,再为输入输出张量分配内存,最后把图片塞进输入、执行推理、取出结果。要注意的是,如果 delegate 没挂上,模型会悄悄回退到 CPU 执行——结果可能一样,但速度慢十倍,这是部署中最隐蔽的坑。

配置完成后,一次推理的耗时可以拆成三段,吞吐量指标 FPS(每秒帧数)由它们共同决定:

开店前检查到位,营业时才不会中途卡壳。运行时配置看似琐碎,却决定了你的模型在真实设备上是流畅还是卡顿。实战中建议先分别测量三段耗时,再用“打补丁”的方式优化最慢的那一段。

FPS=1t总=1t预处理+t推理+t后处理\displaystyle \text{FPS} = \frac{1}{t_{\text{总}}} = \frac{1}{t_{\text{预处理}} + t_{\text{推理}} + t_{\text{后处理}}}
通俗说明:FPS 是“每秒能端出几杯”的速度指标,想提速就找三段里最慢的瓶颈。
  1. 预处理(t_预处理)把输入图片缩放到模型要求尺寸并转成 int8 格式,花的时间计入总耗时,就像把奶茶杯放上封口台。
    t预处理\displaystyle t_{\text{预处理}}
  2. 推理(t_推理)Edge TPU 真正执行模型计算的时间,通常是三段里最主要的一段,相当于“封口机压下去”那一下。
    t推理\displaystyle t_{\text{推理}}
  3. 后处理(t_后处理)解析模型输出、过滤低置信度结果的时间,例如从检测框坐标里挑出可靠结果。
    t后处理\displaystyle t_{\text{后处理}}
  4. FPS(每秒帧数)三段耗时之和是处理一帧的总时间,取倒数就是每秒能处理的帧数,是吞吐量的直观指标。
    FPS=1t预处理+t推理+t后处理\displaystyle \text{FPS} = \frac{1}{t_{\text{预处理}} + t_{\text{推理}} + t_{\text{后处理}}}

多TPU级联

生意爆棚时一台封口机不够用,店长又买了几台,让四台机器并排工作,分四路同时封口。Coral 的多 TPU 级联(Multi-TPU)就是这个思路:用一块扩展板把多颗 Edge TPU 连接起来,协同完成推理任务。

多 TPU 并不是把一颗芯片变大,而是用分派器把不同的数据批次分给不同芯片,各算各的再汇总。理论上 N 颗芯片吞吐接近 N 倍,但实际有通信开销和共享带宽的瓶颈——就像四台封口机共用一条电线,总电流是有限的。USB 接口的带宽就那么多,数据分发与结果汇总都要占用这条“电线”。

加速比模型如下:

四台封口机确实能装四倍多的奶茶,但如果共用的送杯传送带只有那么宽,机器再多也得排队。级联的意义在于合理扩容:先测出 α,再决定是加到 4 颗还是 8 颗,而不是盲目堆硬件。

SN=T1TN≈N1+(N−1)×α\displaystyle S_N = \frac{T_1}{T_N} \approx \frac{N}{1 + (N-1) \times \alpha}
通俗说明:级联能提速,但受共享带宽限制,不是“加倍买芯片就加倍快”。
  1. 基准耗时(T_1)单颗 TPU 处理一批数据所需的时间,作为衡量起点,相当于一台封口机的效率基线。
    T1=T计算\displaystyle T_1 = T_{\text{计算}}
  2. 通信开销(T_通信)数据分发与结果汇总需要的时间,随芯片数量增加而增大,是并行的“物流成本”。
    TN=T1N+T通信\displaystyle T_N = \frac{T_1}{N} + T_{\text{通信}}
  3. 并行开销系数(α)通信时间与计算时间的比值,α 越大说明并行越不划算,USB 场景下通常不可忽略。
    α=T通信T计算\displaystyle \alpha = \frac{T_{\text{通信}}}{T_{\text{计算}}}
  4. 近似加速比(S_N)把前两步合并化简,得到 N 颗芯片的加速比公式,能直观看到增速递减、最终收敛到 1/α。
    SN=T1TN≈N1+(N−1)α\displaystyle S_N = \frac{T_1}{T_N} \approx \frac{N}{1 + (N-1)\alpha}

目标检测应用

奶茶店装了一台视觉质检相机:每杯奶茶封装完毕经过传送带时,相机要找出“没封严”“盖歪了”的问题杯,并标出位置。这就是边缘设备上的目标检测——在 Edge TPU 上部署 MobileNet SSD 这类轻量检测模型,实时定位画面中的物体。

由于 Edge TPU 只认编译过的 INT8 模型,部署时要把检测模型量化、编译成专用格式。模型输出一大堆候选框,每个框带类别和置信度,但这些框大量重叠——同一个杯子可能被框了四五次。如果不做净化,下游逻辑会被冗余结果淹没。

后处理里最关键的去重算法叫 NMS(非极大值抑制),它用 IoU 判断两个框是否在描述同一个目标:

质检相机看到的“候选框”像同事七嘴八舌的猜测,NMS 帮忙拍板:同一杯奶茶只记一次,位置最准的留下。经过这套流程,Edge TPU 能以每秒几十帧的速度给传送带上的产品把关,吞吐量指标直接决定产线能跑多快。

IoU(A,B)=∣A∩B∣∣A∪B∣\displaystyle \text{IoU}(A, B) = \frac{|A \cap B|}{|A \cup B|}
通俗说明:IoU 就是两个框“重合度”的度量,NMS 像质检员盯着同一杯奶茶只保留最确定的那个框。
  1. 两个候选框(A 与 B)模型输出的两个矩形区域,每框带类别和置信度,代表它“认为”目标所在的位置。
    A,B\displaystyle A, B
  2. 交集面积(|A∩B|)两个矩形重叠部分的面积,重叠越多说明它们越可能在指同一个目标。
    ∣A∩B∣\displaystyle |A \cap B|
  3. 并集面积(|A∪B|)两个矩形覆盖的总面积,等于两框面积之和减去交集面积,是去重比较的基准。
    ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣\displaystyle |A \cup B| = |A| + |B| - |A \cap B|
  4. IoU 与阈值比较交并比大于阈值(如 0.5)的框视为冗余,NMS 只保留置信度最高的框,从而输出干净结果。
    IoU(A,B)=∣A∩B∣∣A∪B∣\displaystyle \text{IoU}(A, B) = \frac{|A \cap B|}{|A \cup B|}

关键词唤醒

奶茶店门口装了一个智能音箱,平时待机不吭声,一听到顾客说“你好”就立刻回应“欢迎光临,请问喝什么?”这个“一叫就醒”的能力,就是关键词唤醒(KWS)——它让设备永远在听,却不必永远在算。

关键词唤醒模型常年运行在低功耗芯片上:麦克风持续采集音频,把声音切成 20~40 毫秒的小帧,提取梅尔频率倒谱系数(MFCC)这类语音特征,再用一个小模型判断当前这段语音是不是唤醒词。Edge TPU 的低功耗特性让它天生适合做这种“永远在听”的活儿,本地完成唤醒后,才把有效指令上传云端。

系统对每一帧音频计算一个唤醒词概率,再与阈值比较,判定逻辑如下:

门口音箱把“听到声音”这件事做得又省电又灵敏,正是 Edge TPU 的拿手好戏——用几瓦功耗换来 24 小时待机的语音入口。调阈值时记住:调高减少误唤醒但容易漏唤醒,调低反之,产品体验就在这两者之间找平衡点。

y={1,p(唤醒词)>θ0,p(唤醒词)≤θ\displaystyle y = \begin{cases} 1, & p(\text{唤醒词}) > \theta \\ 0, & p(\text{唤醒词}) \le \theta \end{cases}
通俗说明:唤醒判定就是“喊得够不够大声(超过阈值)才搭理你”,既要听得准,又要不乱应。
  1. 唤醒概率(p)模型对当前音频片段的输出,表示“这是唤醒词”的置信度,取值在 0 到 1 之间。
    p(唤醒词)∈[0,1]\displaystyle p(\text{唤醒词}) \in [0, 1]
  2. 阈值(θ)业务设定的判定门槛,通常取 0.5 附近,衡量“多大音量才应答”,是产品调优的核心旋钮。
    θ=0.5\displaystyle \theta = 0.5
  3. 比较判定(y)当概率超过阈值输出 1 触发唤醒,否则输出 0 继续待机监听,体现的是低延迟的流水线设计。
    y={1,p>θ0,p≤θ\displaystyle y = \begin{cases} 1, & p > \theta \\ 0, & p \le \theta \end{cases}

AI 应用场景

智能零售:无人货柜的目标检测

阶段:边缘推理部署(模型编译 + 运行时推理)

解决的问题:传统摄像头方案要把视频传云端识别,延迟高、带宽贵、隐私风险大。在货柜内嵌 Edge TPU,本地实时检测商品拿放,毫秒级响应,断网也能稳定运行。

具体案例:某无人售货柜厂商用 Coral Edge TPU 跑量化编译后的 MobileNet SSD,对每帧画面检测商品类别与位置,结合货架重量传感器判断取放动作,单柜硬件成本控制在几百元。

智能家居:音箱关键词唤醒

阶段:端侧推理(关键词唤醒 + 低功耗待机)

解决的问题:若把唤醒词识别放云端,音箱得持续联网传输音频,隐私风险与电量消耗都不可接受。本地唤醒只上传有效指令,既保护隐私又省电。

具体案例:智能音箱内置 Edge TPU 运行 KWS 模型,本地完成“你好,小智”式唤醒,待机功耗压到 2 瓦以内;唤醒后云端大模型才介入理解复杂指令。

工业质检:多TPU级联流水线

阶段:多设备协同推理(多 TPU 级联 + 目标检测)

解决的问题:单颗 TPU 处理不过来的高速产线,用多 TPU 级联按工位分流,突破单芯片吞吐上限,同时保持单点故障可替换。

具体案例:某电子厂用 4 颗 Edge TPU 级联,对 PCB 板焊点缺陷做实时检测,四路视频流同时推理,整体吞吐提升 3 倍以上,良品率抽检效率大幅改善。

Python 演示

python42 行
"""Coral Edge TPU 目标检测推理演示脚本。"""import timefrom pycoral.adapters import common, detectfrom pycoral.utils.dataset import read_label_filefrom pycoral.utils.edgetpu import make_interpreterfrom PIL import Image MODEL_PATH = 'mobilenet_ssd_v2_coco_quant_edgetpu.tflite'LABEL_PATH = 'coco_labels.txt'IMAGE_PATH = 'cup.jpg'SCORE_THRESHOLD = 0.4  def load_edges_model(model_path, label_path):    interpreter = make_interpreter(model_path)    interpreter.allocate_tensors()    labels = read_label_file(label_path)    return interpreter, labels  def run_detection(interpreter, image_path, labels, threshold):    image = Image.open(image_path)    common.set_input(interpreter, image)    start = time.monotonic()    interpreter.invoke()    elapsed = time.monotonic() - start    objs = detect.get_objects(interpreter, threshold)    return objs, elapsed  def main():    interpreter, labels = load_edges_model(MODEL_PATH, LABEL_PATH)    objs, elapsed = run_detection(interpreter, IMAGE_PATH, labels,                                  SCORE_THRESHOLD)    for obj in objs:        name = labels.get(obj.label_id, 'unknown')        print('%s: score=%.2f bbox=%s' % (name, obj.score, obj.bbox))    print('推理耗时: %.1f ms' % (elapsed * 1000))  if __name__ == '__main__':    main()
目的:在 Edge TPU 上运行编译好的 INT8 检测模型,对一张图片做目标检测并输出每个目标的类别、置信度、位置框和单次推理耗时。
  1. interpreter = make_interpreter(model_path)创建解释器并自动挂载 Edge TPU delegate,相当于接通封口机电源。
  2. interpreter.allocate_tensors()为输入输出张量分配内存,相当于摆好封口台。
  3. common.set_input(interpreter, image)把 PIL 图片缩放到模型输入尺寸并转成 int8,相当于把奶茶杯放上封口位。
  4. interpreter.invoke()执行一次推理,是“封口机压下去”的那一下。
  5. detect.get_objects(interpreter, threshold)解析输出候选框、按阈值过滤并执行 NMS,相当于质检员挑出确定的问题杯。
  6. time.monotonic()用单调时钟测量真实推理耗时,避免系统时间跳动干扰 FPS 评估。

常见误区

误区我以为把训练好的模型文件路径填进去就能用,结果一跑就报错,还以为是自己代码写错了。

正解必须先把模型转成 TFLite 并量化成 INT8,再用 Edge TPU Compiler 编译。不支持的算子(如动态 shape、某些浮点运算)会导致编译失败或运行时回退到 CPU 执行,速度大打折扣。就像封口机只认标准作业卡,不认手写秘方。

为何常见:大家习惯了“写代码→运行”的抽象,忽略了硬件指令集的限制,把“模型格式转换”当成无关紧要的细节。

误区量化等于把小数全砍掉,精度肯定崩,我宁愿慢一点也要用浮点模型。

正解量化不是简单截断,而是用 scale 和 zero point 做整体仿射映射,配合校准数据集选好数值范围。多数检测、分类模型量化后精度损失在 1% 以内;真正拉垮精度的往往是校准数据选得不好,导致数值范围失准,好比用错误的刻度勺量盐。

为何常见:直觉上“小数变整数 = 丢信息”,但没注意到量化是整条数值轴的重标定,不是逐个数随手一砍。

误区4 块 TPU 就应该 4 倍速,买 8 块就是 8 倍速,反正扩展板插满就行。

正解多 TPU 共享 USB 带宽和调度开销,实际加速比服从 1 + (N−1)α 的递减规律;当通信占比高时,再叠加芯片的收益趋近于零。就像四台封口机共用一个传送带,传送带才是真正瓶颈。

为何常见:把“并行”想象成完全独立的多条流水线,忽略了它们共用总线、电源等物理资源,加速比不可能线性上涨。

误区Edge TPU 推理这么快,算力这么强,拿它训练模型肯定也厉害。

正解Edge TPU 只支持已编译的 INT8 推理模型,没有反向传播、梯度计算等训练能力,训练仍需在云端 GPU/TPU 上完成。它的定位是“推理执行器”而不是“学习机器”,好比封口机只负责封口,绝不负责研发新饮品。

为何常见:只盯着“芯片算力”这个数字,没区分推理与训练在硬件需求上的本质差异,把并行计算能力等同于学习能力。

误区部署 = 复制文件,跑通了就万事大吉,剩下的事交给运气。

正解运行时还需要正确挂载 Edge TPU delegate、分配张量内存、按输入尺寸做预处理、处理无设备连接等异常。配置错误时模型可能悄悄回退到 CPU,推理慢十倍但“结果依然正确”,极难被察觉。

为何常见:结果正确掩盖了性能问题,开发者没有看日志或做基准测试的习惯,于是“悄悄变慢”成了最常见的隐形事故。

面试题

Q1. Coral Edge TPU 的核心定位是什么?

单选题 · easy

  • A.云端大规模模型训练
  • B.边缘端专用推理加速← 正确答案
  • C.通用中央处理器计算
  • D.大容量数据存储设备

答案:B。Edge TPU 是专用推理加速芯片,好比封口机只负责封口这一件事。A 混淆了推理与训练,C 是 CPU 的定位,D 是存储设备的职责,都与 Edge TPU 无关。

Q2. Edge TPU 能直接运行什么格式的模型?

单选题 · easy

  • A.任意 PyTorch 权重
  • B.未量化的浮点模型
  • C.编译后的 INT8 TFLite← 正确答案
  • D.原始 ONNX 计算图

答案:C。封口机只认标准作业卡,Edge TPU 只接受经过编译器编译、且已完成 INT8 量化的 TFLite 模型。PyTorch 权重、浮点模型、原始 ONNX 都只是“手写秘方”,必须经过转换和编译才能上机。

Q3. 模型编译失败最常见的原因是什么?

单选题 · mid

  • A.训练数据集样本过少
  • B.网络含不支持的算子← 正确答案
  • C.模型权重文件被压缩
  • D.显卡驱动版本偏低

答案:B。编译器逐个检查算子是否在支持列表内,遇到不支持的算子(如动态 shape、特殊激活)就会失败,相当于作业卡上写了封口机不认得的动作。A、C、D 与硬件编译环节无关。

Q4. INT8 量化公式中 S 的作用是什么?

单选题 · mid

  • A.表示零点偏置补偿
  • B.决定整数每格代表的实数范围← 正确答案
  • C.控制模型训练学习率
  • D.设定后处理置信度阈值

答案:B。S 是缩放系数,决定每个整数刻度代表多大一段实数,就像限量勺每勺代表多少克。A 说的是 Z 的职责,C、D 与量化无关,D 甚至属于推理后处理。

Q5. 多 TPU 级联时实际加速比受限的主因?

单选题 · mid

  • A.芯片本身发热过高
  • B.共享 USB 带宽与调度开销← 正确答案
  • C.模型文件体积过大
  • D.编译器版本不一致

答案:B。多颗 TPU 共用一条 USB 总线,数据分发和结果汇总都要抢占带宽,通信开销随芯片数增长,加速比因此有上限。这就像四台封口机共用一个传送带,传送带才是瓶颈。

Q6. NMS 用哪个指标判断两个框是否重叠?

单选题 · hard

  • A.置信度乘积
  • B.中心点欧氏距离
  • C.交并比 IoU← 正确答案
  • D.框面积比值

答案:C。NMS 用 IoU 度量两个候选框的重合程度,保留置信度最高的框,删除与它 IoU 过大的冗余框。A 是置信度运算,B 是几何距离,D 只比较面积,都不是标准判据。

Q7. 关键词唤醒中调高阈值 θ 会怎样?

单选题 · mid

  • A.唤醒率上升且误唤醒下降
  • B.唤醒率下降且误唤醒下降← 正确答案
  • C.唤醒率上升且误唤醒上升
  • D.唤醒率下降且误唤醒上升

答案:B。阈值调高,需要更高的置信度才触发唤醒,相当于店长把“多大音量算喊我”的标准定得更严——喊应的人变少(唤醒率降),乱应的也变少(误唤醒降)。这是此消彼长的权衡。

Q8. 一次 Edge TPU 推理的完整耗时包含哪些部分?

多选题 · easy

  • A.输入预处理← 正确答案
  • B.芯片上执行推理← 正确答案
  • C.输出后处理← 正确答案
  • D.云端数据备份

答案:ABC。推理总耗时 = 预处理 + 推理 + 后处理,FPS 是这三段之和的倒数。云端数据备份属于“联网上传”业务逻辑,不在端侧推理管线内,D 是干扰项。

Q9. 下列哪些情况会导致 Edge TPU 编译失败?

多选题 · hard

  • A.模型含浮点动态算子← 正确答案
  • B.输入张量形状不确定← 正确答案
  • C.使用不支持的激活函数← 正确答案
  • D.训练时学习率设置过大

答案:ABC。浮点动态算子、不确定的输入形状、不支持的激活函数,都会让编译器“翻译不了”,就像作业卡出现封口机不认得的动作。D 是训练阶段的超参问题,与编译无关,且不会导致编译失败。

Q10. 关于 Edge TPU 部署,下列说法正确的有?

多选题 · extreme

  • A.运行时未挂载 delegate 会回退到 CPU← 正确答案
  • B.校准数据集影响量化精度← 正确答案
  • C.多 TPU 级联可无限线性扩展
  • D.检测后处理通常包含 NMS← 正确答案

答案:ABD。delegate 没挂上时模型会悄悄回退到 CPU,结果正确但速度骤降;校准数据集决定 scale 与 zero point 的取值,直接影响量化精度;检测后处理普遍用 NMS 去冗余框。C 说反了,级联受共享带宽限制,加速比有上限而非无限扩展。