想象你是一位厨师,突然接到一单千人宴席——要同时端出 1000 道菜。自家厨房只有一个灶头,火力全开也来不及。街角恰好有一家「云端超级厨房」:里面排着几百口商用猛火灶,你不需要买下它们,只需按小时租用。高峰时段随到随租,价格公道;深夜空闲时段价格只有 1.5 折,代价是万一有包场客人,你得中途让出灶台。这家厨房还配有调度长、共享食材仓库和一套快速恢复的备菜流程。这就是 Cloud TPU 服务的故事:Google 把世界上最快的 AI 专用芯片 TPU,像租厨房一样租给你。本文从服务总览、计费模式、GKE 集成、实例创建、存储挂载、分布式训练和故障恢复七个角度,带你从零跑通云端 TPU 训练的全流程。

岗位关联

对 AI 从业者来说,掌握 Cloud TPU 的租用、调度与容错,意味着能用更低成本跑更大的模型——这是从「能训练」走向「高效训练」的关键一步。

目录
  1. 可视化演示
  2. 服务总览
  3. 计费模式
  4. GKE集成
  5. 实例创建
  6. 存储挂载
  7. 分布式训练
  8. 故障恢复
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示Cloud TPU三模式:脉动阵列数据流机制、v1到v5代际算力演进对比、Pod分布式训练拓扑与互联,递进呈现TPU从芯片到集群的核心原理。

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

脉动阵列:TPU执行核心 4×4 PE阵列逐拍流动执行乘加运算 激活水平流入,权重垂直流入,部分和传递 O[i][j] = sum(A[i][k] * W[k][j]) 数据复用减少片外访存提升能效

服务总览

把 Cloud TPU 服务想象成一间可以按小时租用的「超级厨房」。你不需要在自己家里添置上百万的设备,只需走进这间厨房,挑几口灶、开火、炒菜,用完结账走人。灶台的火力有多大、数量能扩到多少,直接决定了你能接到多大的宴席。

厨房里的「猛火灶」就是 TPU 芯片。TPU 全称是张量处理单元(Tensor Processing Unit),是 Google 专门为深度学习设计的 AI 专用芯片。它不像 CPU 那样什么活儿都接,而是只专注矩阵乘法这类 AI 最常做的运算,就像猛火灶只负责把火力顶到最大,蒸煮煎炸各有专锅。Cloud TPU 服务把若干颗 TPU 芯片组织成 TPU Pod 供你租用:一个 Pod 少则 4 颗、多则上千颗芯片,芯片之间通过自研的 ICI(Inter-Chip Interconnect)高速互连,相当于一口口灶台之间用传送带相连,食材可以快速流转。需要更多算力时,在控制台扩容即可,几分钟内就能从 8 颗扩到 64 颗——这就是云上的弹性。

要估算一次训练能拿到多少算力,可以用下面的公式:

对厨师来说,灶台规模决定了宴席的上限;对 AI 工程师来说,TPU Pod 的规模决定了模型的天花板。理解了「算力可以像租厨房一样按需获取」,你就抓住了 Cloud TPU 服务的本质。

P总=P单芯×N芯片×η利用\displaystyle P_{\text{总}} = P_{\text{单芯}} \times N_{\text{芯片}} \times \eta_{\text{利用}}
总算力 = 单颗芯片的峰值算力 × 芯片数量 × 实际利用率。三者相乘,才是一桌宴席真正端上菜的速度。
  1. P_单芯(单灶极限火力)每颗 TPU 芯片的峰值算力,单位是 TFLOPS(每秒万亿次浮点运算),相当于一口猛火灶开到最大时的火力输出。
    P单芯P_{\text{单芯}}
  2. N_芯片(灶台数量)本次训练实际租用的 TPU 芯片颗数,租 4 颗就是 4 口灶一起开火,租 64 颗就是 64 口灶同时工作。
    N芯片N_{\text{芯片}}
  3. η_利用(实际利用率)真实训练中不可能 100% 满负荷,数据读取、通信等待、同步开销都会让灶火间歇空烧,所以要用一个小于 1 的系数来折算。
    η利用\eta_{\text{利用}}

计费模式

租厨房有两种价格。一种是「黄金时段包价」:任何时候想用都有灶,按小时计费,价格稳定透明;另一种是「深夜特价」:只有厨房没被包场时才开放,价格低到一五折,但一旦有正式客人订场,你必须立刻腾出灶台。Cloud TPU 的计费模式,就是这两种价格的云端翻版。

按需计费(On-demand)模式随时可以创建实例、按秒计量、费用透明,适合正式训练和需要稳定运行的场景。抢占式(Preemptible)模式只需要按需价格约 15% 的费用,但 Google 可能在 24 小时内的任意时刻回收资源。乍一听,抢占式好像很「坑」,但对可以断点续训的模型训练来说,它恰恰是省钱的利器——只要你的训练任务不怕被打断,就能用一五折的价格租到同样的猛火灶。

训练账单由三要素决定:

聪明的做法是「混合用餐」:关键路径上的正式训练用按需实例保证准点,实验调参、数据预处理这类可容错任务放到抢占实例上。就像主菜用黄金时段灶台保证宴席准点,甜品用深夜特价灶台慢慢打磨——总账单立刻瘦身。

C总=r时价×h时长×n设备\displaystyle C_{\text{总}} = r_{\text{时价}} \times h_{\text{时长}} \times n_{\text{设备}}
总费用 = 每小时单价 × 租用小时数 × 设备数量。想省钱,砍掉任何一个乘数都有效。
  1. r_时价(每小时租金)单颗 TPU 芯片每小时的计费单价,按需模式贵、抢占模式便宜,如同一口灶在黄金时段和深夜的价差。
    r时价r_{\text{时价}}
  2. h_时长(租用小时)从创建实例到销毁实例的累计时长,按秒级精度计费,用得越久账单越厚。
    h时长h_{\text{时长}}
  3. n_设备(灶台数量)同时租用的 TPU 芯片颗数,租 8 颗的费用就是单颗的 8 倍,和请 8 位厨师开 8 口锅一个道理。
    n设备n_{\text{设备}}

GKE集成

超级厨房里有一位调度长,他知道哪口灶空着、哪位厨师擅长什么,把每道菜按顺序排给合适的灶台。在云端,这位调度长就是 GKE(Google Kubernetes Engine)。它是 Google 托管的 Kubernetes 服务,也是 Cloud TPU 容器化训练的标准入口。

GKE 的角色可以这样理解:你把自己的训练代码和依赖打包成一个容器镜像——好比写好的厚厚一本菜谱卡片;GKE 收到「开宴」指令后,把容器调度到绑定了 TPU 的节点池上。节点池(Node pool)是一组带有特定 TPU 拓扑的虚拟机,比如一个拓扑为 2×2×2 的节点池包含 8 颗按三维网格互连的芯片,相当于 8 口灶台按固定队形拼成一组。训练 Pod 通过 nodeSelector 精确匹配到 TPU 节点,就像调度长按菜谱需求分配灶台。

一个训练任务需要多少个副本 Pod?可以用这个公式估算:

没有调度长,1000 道菜会挤在一口锅里;有了 GKE,每道菜都有专属的灶台和出炉顺序。容器化 + 自动调度的组合,让云端万亿参数训练变成可能。

R=⌈W负载c单副本容量⌉\displaystyle R = \left\lceil \frac{W_{\text{负载}}}{c_{\text{单副本容量}}} \right\rceil
副本数 = 向上取整(总工作量 ÷ 单个副本能承载的工作量)。算出来 3.2 个也得开 4 个,因为工作不能拆半个。
  1. W_负载(任务总量)需要处理的总工作量,比如 1000 道菜、或 1000 个 epoch 的训练数据,是整个宴席的规模。
    W负载W_{\text{负载}}
  2. c_单副本容量(每灶产能)一个训练副本(一个 Pod)能承载的工作量,一组厨师同时开工的产能上限。
    c单副本容量c_{\text{单副本容量}}
  3. ⌈⌉(向上取整)数学里的天花板符号,计算结果带小数时一律进位,保证副本数足够装下全部工作。
    ⌈⋅⌉\left\lceil \cdot \right\rceil

实例创建

开灶前要办手续:先向厨房管理方申请「贵宾会员资格」,确认进货通道畅通,再挑选适合本次宴席的灶台型号和数量。Cloud TPU 实例的创建也是一套固定流程,走顺了只需几分钟。

流程分三步。第一步是申请配额:TPU 算力按区域和型号限量供应,你需要先在 Google Cloud 控制台或通过 gcloud 命令申请 TPU 配额,相当于向厨房申请「今晚我能占几口灶」的名额,审核通过后才能创建。第二步是配置网络:通常使用默认 VPC 或自定义子网,确保 TPU 实例能访问 GCS 存储桶,就像把进货通道和食材仓库接驳好。第三步是选择类型:v4 系列适合大规模预训练,v5e 系列兼顾性价比,型号后缀如 v4-8 表示 8 颗芯片组成的最小单元——灶台规格直接对应预算和需求。

创建前还要估算一下网络带宽是否够用:

手续办得越利索,开火越顺畅。提前申请配额就像提前订灶,千万别等到宴席当天才发现没有灶可用——这在云上世界叫「配额不足,创建失败」。

B需求=D数据T预算时间\displaystyle B_{\text{需求}} = \frac{D_{\text{数据}}}{T_{\text{预算时间}}}
所需带宽 = 数据总量 ÷ 预算传输时间。带宽不够就像进货通道太窄,食材全堵在路上。
  1. D_数据(食材总量)训练数据集的总大小,比如 200GB 图片或 50GB 文本,是必须搬进厨房的全部食材。
    D数据D_{\text{数据}}
  2. T_预算时间(备菜时限)你希望在多少小时内把所有数据传输到位,是这场宴席的上菜倒计时。
    T预算时间T_{\text{预算时间}}
  3. B_需求(进菜通道宽度)由此推算出的网络带宽需求,万一现有通道达不到,就得提前扩容或改用 GCS 逐步拉取。
    B需求B_{\text{需求}}

存储挂载

超级厨房不自建冰箱,而是共用一个巨大的食材仓库:所有灶台随取随用。厨师不需要把整头猪背在身上,只拿今天要用的那块肉。这个仓库在 Google Cloud 里叫 GCS(Google Cloud Storage),是 TPU 训练的标配存储。

TPU 实例本身没有大容量本地磁盘,训练数据通常放在 GCS 桶(Bucket)中,通过 gcsfuse 把桶挂载到实例上,看起来就像读写本地目录一样。读取过的数据会进入内存缓存,多个训练轮次反复读取同一批数据时能直接命中缓存,训练速度大幅提升。模型权重和检查点文件同样定期写入 GCS——任务销毁了,数据还在仓库里。

缓存到底省了多少力气,可以用命中率衡量:

仓库越大越乱,取货越慢。把高频数据放在缓存里、低频数据留在仓库里,是整个训练流程提速的关键——这也是为什么「存储挂载」看似不起眼,却常常是性能瓶颈的藏身之处。

H命中率=R命中次数R总读取次数×100%\displaystyle H_{\text{命中率}} = \frac{R_{\text{命中次数}}}{R_{\text{总读取次数}}} \times 100\%
缓存命中率 = 命中缓存的读取次数 ÷ 总读取次数 × 100%。命中率越高,等数据的时间越少,训练跑得越快。
  1. R_命中(直接取到的次数)在本地缓存里直接拿到食材的次数,没有去远端的 GCS 仓库搬货,省时省力。
    R命中次数R_{\text{命中次数}}
  2. R_总(总取食材次数)训练过程中发起数据读取的全部次数,是取货总次数。
    R总读取次数R_{\text{总读取次数}}
  3. × 100%(百分比换算)把比例换算成百分数,方便直观对比不同缓存策略的效果。
    ×100%\times 100\%

分布式训练

千人宴席不可能一人掌勺。要么每位厨师各炒同一种菜的不同桌份,最后比对味道统一步调——这叫数据并行;要么有人切配、有人掌勺、有人摆盘,各管一道工序在流水线上接力——这叫模型并行。Cloud TPU 的分布式训练,正是这两种分工的工程化实现。

在 TPU Pod 里,数据并行是最常用的方式:每颗芯片持有完整的模型副本,各自处理不同的数据切片,每训练一步,通过全归约(All-reduce)操作把各芯片算出的梯度取平均,再同步更新模型。这颗芯片之间的同步消息,就靠 ICI 高速互连传递——相当于厨师们通过传菜电梯快速交换进度。启动分布式训练通常用 JAX 或 TensorFlow 的 PJRT 运行时,一行配置就能声明「本次训练使用 8 颗芯片、拓扑为 2×2×2」。

但分工协作不是免费的。芯片数量翻倍,通信成本也会上升,加速比存在理论上限:

人越多,传话成本越高。好的厨师团队懂得分工明确、队列整齐,好的分布式训练同样需要精心设计并行策略——盲目堆芯片,只会让账单膨胀而速度停滞。

Sp=1(1−q)+qp\displaystyle S_p = \frac{1}{(1 - q) + \dfrac{q}{p}}
加速比 = 1 ÷(串行比例 + 并行比例 ÷ 处理器数量)。它告诉我们:加芯片有用,但加得越多,收益越少。
  1. q(可并行比例)整个训练流程中能并行完成的部分占比,比如 90% 的计算可以分工并行,剩下 10% 必须串行等待。
    qq
  2. p(厨师人数)参与训练的分布式设备数量,比如 32 颗 TPU 芯片就是 32 位厨师同时开工。
    pp
  3. S_p(加速比)使用 p 个设备比单设备快多少倍。当 p 趋于无穷时,加速比趋近于 1/(1−q),串行部分决定了天花板。
    SpS_p

故障恢复

深夜特价灶台最大的风险,是包场客人突然出现,厨房请你立刻停火让位。真正专业的厨房会提前把每道菜的半成品状态记在菜谱本上,换个灶台照着记录继续做,而不是从头再来。这个「菜谱本」在训练世界里叫检查点(Checkpoint)。

检查点机制的做法是:训练过程中每隔 N 步,把模型权重和优化器状态保存到 GCS。一旦抢占发生,训练脚本检测到中断信号,自动重启任务并加载最近的检查点继续训练。配合 GKE 的 Job 控制器,Pod 被回收后会自动重新拉起;再叠加弹性伸缩,恢复后还能根据剩余数据量动态调整 TPU 数量——训练不断档,成本不掉队。

一套恢复机制是否可靠,用「可用率」来衡量:

保险丝不是为了预测火灾,而是为了火灾后能快速重来。检查点、自动重启、弹性伸缩这「三件套」,就是 AI 训练世界里的保险丝——它们让抢占式实例从「不敢用」变成「真香」。

A=T运行T运行+T中断×100%\displaystyle A = \frac{T_{\text{运行}}}{T_{\text{运行}} + T_{\text{中断}}} \times 100\%
可用率 = 正常运行时间 ÷(正常运行 + 中断时间)× 100%。这个数字越接近 100%,训练越让人放心。
  1. T_运行(正常出菜时长)系统正常提供训练服务的时间,灶台稳定开火的时间越长越好。
    T运行T_{\text{运行}}
  2. T_中断(停火时长)发生抢占或故障后无法训练的时间,包括检测、重启、加载检查点所花费的全部时间。
    T中断T_{\text{中断}}
  3. A(可用率)正常运行时间占总时间的比例,99% 与 95% 的差别,就是一年里多出 15 天的停工损失。
    AA

AI 应用场景

大模型预训练的成本优化

阶段:模型训练与算力调度

解决的问题:大模型预训练动辄需要数百张加速卡连续跑数周,全程按需计费账单惊人。用抢占式 TPU + 检查点 + 自动重启的组合,可以把可容错的训练阶段放进「深夜特价时段」,大幅压缩成本。

具体案例:一家初创公司在 Cloud TPU 上预训练 70 亿参数模型,采用「工作日关键实验按需 + 夜间/周末抢占」的混合策略,每 500 步保存一次检查点到 GCS,配合自动重启脚本,训练总成本从约 120 万元降至 45 万元,训练时长仅延长了 12%。

分布式训练故障自愈平台

阶段:训练运维与容灾

解决的问题:长周期训练最怕中途中断,人工盯守成本高、反应慢。把 GKE 的自动重启与检查点恢复结合起来,可以搭建一套故障自愈的分布式训练平台。

具体案例:某 NLP 团队用 GKE 部署 TPU 训练 Job,监听 preemption 事件,一旦 Pod 被回收,自动以最新检查点重启,并触发节点池弹性扩容补回算力。训练损失曲线几乎无断档,团队不再需要半夜爬起来手动恢复任务。

Python 演示

python53 行
import random  class CloudTPUCostSimulator:    """模拟 Cloud TPU 抢占式实例的训练成本与恢复过程"""     def __init__(self, on_demand_rate=3.5, preempt_rate=0.53,                 total_steps=1000, preempt_prob=0.03, ckpt_gap=100):        self.on_demand_rate = on_demand_rate        self.preempt_rate = preempt_rate        self.total_steps = total_steps        self.preempt_prob = preempt_prob        self.ckpt_gap = ckpt_gap        self.gc_count = 0        self.ckpt_step = 0        self.current_step = 0        self.cost = 0.0        self.hours = 0     def train_one_hour(self):        """推进一小时训练: 正常推进 100 步, 可能触发抢占中断"""        self.hours += 1        if self.current_step - self.ckpt_step >= self.ckpt_gap:            self.ckpt_step = self.current_step        self.current_step += 100        if random.random() < self.preempt_prob:            self.gc_count += 1            self.current_step = self.ckpt_step            print(f"第 {self.gc_count} 次抢占: 回退到检查点 {self.ckpt_step}")        return self.current_step >= self.total_steps     def run(self):        while not self.train_one_hour():            pass        on_demand_hours = self.total_steps / 100        self.cost = round(self.hours * self.preempt_rate, 2)        on_demand_cost = round(on_demand_hours * self.on_demand_rate, 2)        return {            "hours": self.hours,            "preemptions": self.gc_count,            "preempt_cost": self.cost,            "on_demand_cost": on_demand_cost,            "saving": round((1 - self.cost / on_demand_cost) * 100, 1),        }  if __name__ == "__main__":    random.seed(42)    sim = CloudTPUCostSimulator(preempt_prob=0.04)    result = sim.run()    print(f"训练完成: 耗时 {result['hours']} 小时, 抢占 {result['preemptions']} 次")    print(f"抢占式费用 ${result['preempt_cost']}, 按需费用 ${result['on_demand_cost']}")    print(f"节省比例 {result['saving']}%")
目的:蒙特卡洛模拟还原「抢占式 TPU 训练 + 检查点恢复」的全过程,并对照按需计费算出使用抢占实例能省多少钱。
  1. class CloudTPUCostSimulator:定义「记账模拟器」:把每次租用行为记录成账单和训练进度,就像给厨房记流水账。
  2. def train_one_hour(self):模拟一个 TPU 计费小时:推进训练、判断是否该存检查点、以一定概率触发抢占中断。
  3. if self.current_step - self.ckpt_step >= self.ckpt_gap:每推进 100 步就更新一次检查点位置,相当于把半成品状态记进菜谱本。
  4. self.current_step = self.ckpt_step抢占发生后回退到最近检查点,而不是从零开始计算,这是省钱不断档的关键。
  5. while not self.train_one_hour():循环训练直到达到目标步数,模拟一间不断开火、偶尔让位、但总能做完宴席的厨房。
  6. self.cost = round(self.hours * self.preempt_rate, 2)最终账单 = 实际占用小时 × 抢占单价,同时输出按需价格做对照。

常见误区

误区抢占式 TPU 随时可能被回收,训练到一半进度全丢,这种便宜谁敢占?我看还是老老实实用按需实例吧。

正解抢占式确实会中断,但这不等于「从头再来」。只要定期保存检查点到 GCS,并配置自动重启脚本,中断后训练会从最近检查点继续,最多损失一个保存间隔的计算量。用约 15% 的价格承担少量回退,对训练类任务是非常划算的交易。

为何常见:人们把「实例被回收」等同于「数据丢失」,没有意识到检查点机制正是专门解决这个问题的。

误区买台带 TPU 的虚拟机,SSH 上去装个 PyTorch 就能训练,跟用 GPU 服务器没什么两样。

正解Cloud TPU 是托管服务,不是一个可以随意登录折腾的操作系统。它通常通过 TPU VM、GKE 节点池或 JAX/TensorFlow 运行时来使用,环境由平台编排,本地装驱动、手动起进程的方式并不适用。

为何常见:多数 AI 工程师先接触 GPU 服务器,习惯了「登录 - 装环境 - 跑训练」的流程,容易把 TPU 套进旧模板里。

误区把数据集直接拷到 TPU 机器的本地硬盘上,读取最快,还不用担心网络抖动。

正解TPU 实例几乎没有可持久化的本地大容量磁盘。数据应放在 GCS 存储桶中,通过 gcsfuse 挂载或异步流式读取。实例销毁后数据仍然在 GCS 里,下次创建实例直接挂载即可,这才是「数据与计算分离」的云原生做法。

为何常见:本地磁盘的概念太深入人心,而云原生「数据与计算分离」的设计是反直觉的。

误区检查点保存在 GCS 里,抢占发生后它自己就会接管,把训练继续下去,完全不用人工干预。

正解检查点只负责「保存进度」,不会自动「继续炒菜」。你还得配上故障检测和自动重启机制(如 GKE 的 Job 重试策略)把训练进程重新拉起来、加载最新检查点、继续训练。三个环节缺一不可。

为何常见:把「保存机制」和「恢复机制」混为一谈,就像以为把菜谱放进冰箱,菜就会自己做好一样。

误区从 8 颗 TPU 扩到 16 颗,训练时间直接减半,多租点芯片准没错。

正解分布式训练的加速比受 Amdahl 定律约束:同步通信、数据加载、偶尔的故障回退等串行部分不会因为加芯片而变快。芯片越多,通信开销越大,加速曲线会逐渐饱和,盲目扩卡只会让成本翻倍、收益递减。

为何常见:人们习惯用「人多好办事」的直觉推断分布式系统,忽略了协作本身有成本。

面试题

Q1. Cloud TPU 抢占式实例的价格约为按需实例的多少?

单选题 · easy

  • A.按需价格的100%
  • B.按需价格的50%
  • C.按需价格的15%← 正确答案
  • D.按需价格的3%

答案:C。抢占式实例是云端出租闲置算力的「深夜特价」,约为按需价格的 15%,以可能被回收的代价换取大幅省钱。50% 太高,3% 低得不像话,100% 就是按需本身了。

Q2. Cloud TPU 训练数据通常存储在哪个位置?

单选题 · easy

  • A.TPU本地高速磁盘
  • B.GCS云端存储桶← 正确答案
  • C.CPU共享内存条
  • D.外部关系型数据库

答案:B。TPU 实例没有大容量持久化本地盘,数据放在 GCS 桶中,训练时通过 gcsfuse 挂载读取。这就像厨房不建冰箱,而是从共享仓库取食材。

Q3. GKE 在 Cloud TPU 训练流程中的主要职责是什么?

单选题 · easy

  • A.清洗训练数据
  • B.调度训练容器← 正确答案
  • C.部署推理应用
  • D.生成训练报告

答案:B。GKE 是云端调度长,负责把训练容器调度到 TPU 节点池并管理其生命周期。数据清洗、推理部署、报告生成都不是它的核心职责。

Q4. 抢占式 TPU 被回收后,训练如何继续?

单选题 · mid

  • A.从第一步重新训练
  • B.从最近检查点恢复← 正确答案
  • C.直接放弃当前任务
  • D.换用更小的模型

答案:B。检查点把模型权重和优化器状态保存在 GCS,中断后加载最近检查点即可续训,最多损失一个保存间隔的计算量,就像照着菜谱本的记录换灶继续做菜。

Q5. Amdahl 定律揭示了分布式训练的什么规律?

单选题 · mid

  • A.加速比可以无限提升
  • B.串行部分限制加速上限← 正确答案
  • C.通信开销始终为零
  • D.数据越多加速越快

答案:B。即使并行部分做到无限快,加速比也被串行比例 1/(1−q) 封顶。所以加芯片有边际递减,通信与同步成本不能忽视。

Q6. TPU Pod 内芯片之间通过什么技术高速互连?

单选题 · mid

  • A.PCIe 总线互连
  • B.自研 ICI 互连← 正确答案
  • C.USB 接口连接
  • D.蓝牙无线组网连接

答案:B。ICI(Inter-Chip Interconnect)是 TPU 自研的芯片间互连技术,带宽极高,分布式训练中同步梯度就靠它。PCIe、USB、蓝牙在性能或场景上都不匹配。

Q7. 创建 Cloud TPU 实例前通常需要先做什么?

单选题 · mid

  • A.向云平台申请配额← 正确答案
  • B.购买独立网站域名
  • C.手动安装显卡驱动
  • D.自行编译完整内核

答案:A。TPU 算力按区域和型号限量供应,需要先在控制台申请配额,审核通过后才能创建实例。这就像订宴席前先确认厨房今晚还有没有位置。

Q8. 关于抢占式 TPU 实例的使用策略,以下说法合理的是?

多选题 · hard

  • A.搭配检查点机制使用← 正确答案
  • B.搭配自动重启机制使用← 正确答案
  • C.用于可容错的训练任务← 正确答案
  • D.用于不可中断的线上推理

答案:ABC。抢占实例配合检查点与自动重启,可以安全用于能容忍中断的训练任务;线上推理要求稳定不中断,用抢占实例随时可能影响服务质量,不合理。

Q9. 以下哪些属于 Cloud TPU 分布式训练的并行策略?

多选题 · hard

  • A.数据并行策略← 正确答案
  • B.模型并行策略← 正确答案
  • C.通信优化策略
  • D.全量并行策略

答案:AB。数据并行(每芯各算一部分数据)和模型并行(每芯分管一部分网络层)是两种经典并行策略;通信优化是辅助手段而非并行策略,「全量并行」也不是标准术语。

Q10. 关于抢占式 TPU 实例的故障恢复,正确的说法是?

多选题 · extreme

  • A.检查点需保存到持久化存储← 正确答案
  • B.抢占后必须从零开始训练
  • C.自动重启后从检查点续训← 正确答案
  • D.所有已训练数据会永久丢失

答案:AC。检查点必须存入 GCS 这类持久化存储,实例销毁也不丢;抢占后自动重启任务并加载检查点续训。B 和 D 都是对回收机制的误解,中断不等于归零。