想象你在城东写好一封信,要送给城西的朋友。你把信交给普通快递:它先到收件点,再运到分拣中心;分拣员看了一眼地址,决定它上哪辆车;车到了下一个中转站,又被卸下来重新分拣……每一站都在“现场商量下一步怎么办”。信件的大部分时间,其实都花在等待和调度上,真正赶路的时间少得可怜。 现在换成一条专线快递:出发前,调度中心已经把整条路线写进快递员的行程单——几点出发、走哪条路、先送谁后送谁,全部安排妥当;路上需要的所有东西都装在他的随身背包里,不用中途绕回仓库取。于是,从取件到送达,几乎只剩“跑路”本身的时间。 大语言模型(LLM)生成回答,就像连续寄出几十封信——每生成一个词(token)就是寄出一封。GPU 这种通用芯片,每个词都要走一遍分拣调度、回仓库取参数的流程;而 LPU(Language Processing Unit,语言处理单元)就是那条专线:用编译器提前排好全程路线,把参数装进片上 SRAM 背包,把单次推理延迟压缩到亚毫秒级。这篇文章就带你拆开这条专线,看看它到底快在哪里。

岗位关联

掌握 LPU 的延迟优化思想,能帮你在真实部署中做出“芯片选型 + 推理服务调优”的正确决策——知道什么时候该用专线,什么时候该用干线。

目录
  1. 可视化演示
  2. 延迟基础:先等第一个词,再等每下一个词
  3. 架构设计:免掉每一步的现场请示
  4. 存储优化:食材就在手边的档口厨房
  5. 编译调度:演出前就发好的总谱
  6. 批处理策略:既承诺速度又凑整车
  7. 性能对比:专线与干线谁更划算
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示LPU通过SRAM片上存储消除访存延迟、编译器全图静态调度消除运行时开销,实现亚毫秒级推理。切换模式对比LPU与GPU方案。

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

SRAM片上存储架构 LPU将模型参数常驻片上SRAM,推理时直接就地读取,单次访问延迟仅1-3ns;GPU需从片外HBM搬运参数,访问延迟高达100-200ns,相差约75倍 SRAM容量限制(单片约百MB级)决定可部署模型规模,7B参数模型需量化压缩或多LPU分区扩展;HBM虽容量大(数十GB)但高延迟成为推理瓶颈 latency_SRAM ≈ 1-3ns; latency_HBM ≈ 100-200ns; ratio ≈ 75x SRAM常驻是LPU超低延迟的第一来源

延迟基础:先等第一个词,再等每下一个词

专线快递的“快”到底体现在哪?不是信送出去那一下变快了,而是“第一句话说出来”变快了。用户发问后,AI 并不是把整段回答写好再一次性给你,而是一个词一个词地“蹦”出来。你感受到的速度由两段组成:从按回车到第一个词出现的等待,以及之后每两个词之间的间隔。前者像快递的“揽收装车”时间,后者像“每封信的路途”时间。

在 LLM 推理里,第一个词前的等待叫首 token 延迟(TTFT,Time To First Token),主要花在读取并处理全部 prompt 上;之后每多生成一个词花的时间叫每 token 延迟(token interval)。回答一共有 N 个词,那么总时间就是首词延迟加上剩下的 N-1 个词的间隔:

普通快递(GPU)每个词的间隔可能高达十几毫秒,整段 32 个词要几百毫秒;LPU 把 T_token 压到亚毫秒,就像专线快递把“每封信的路途时间”缩到极限——用户几乎感觉不到“打字”的过程,而是像有人直接把话说完。这也是为什么“亚毫秒级目标”对交互式 AI 意义如此重大。

Ltotal=TTTFT+(N−1)×Ttoken\displaystyle L_{\text{total}} = T_{\text{TTFT}} + (N - 1) \times T_{\text{token}}
通俗地说:整段回答的时间 = 开头等第一个字 + 后面每个字之间的间隔乘上字数。
  1. 总延迟 L_total从用户按下发送到回答全部显示完毕的总时间,是用户体验的直接指标。
    LtotalL_{\text{total}}
  2. 首 token 延迟 T_TTFT模型读完 prompt、输出第一个词的时间,类似快递的揽收与装车时间。
    TTTFTT_{\text{TTFT}}
  3. 后续词数 (N-1)回答共有 N 个词,第一个已算进 T_TTFT,剩下 N-1 个逐词生成。
    (N−1)(N - 1)
  4. 每 token 延迟 T_token每多生成一个词所需的墙钟时间,是 LPU 重点压缩的对象。
    TtokenT_{\text{token}}

架构设计:免掉每一步的现场请示

专线快递和普通快递最大的区别,是普通快递在每个中转站都要停下“现场决策”:这封信该上哪辆车?先卸哪件?调度员现场拍板,每一站都在烧时间。专线快递没有中转站,路线出发前就已写死,快递员只负责闷头赶路。

GPU 正是那个“现场决策”的系统。它的底层有硬件调度器(warp scheduler),每执行一小段算子就要动态地把计算任务分派给线程束:谁先算、谁等内存、谁让路,全在运行时决定。这些动态调度和分支处理,就是每次推理都要缴纳的“调度税”。LPU 则反向设计:计算单元按顺序流水推进,每个单元职责固定,控制逻辑极简,运行时几乎没有需要拍板的决策:

LPU 的架构就像一条装配流水线:每个工人只负责自己工位上的固定动作,传送带按固定节拍推进,没有人在每个工位前停下问“下一个零件该装哪”。专线快递员不用在每个路口停下来问路,自然就跑得快。

TtokenGPU=Tcompute+Tmemory+Tschedule,TtokenLPU=Tcompute+Tmemory\displaystyle T_{\text{token}}^{\text{GPU}} = T_{\text{compute}} + T_{\text{memory}} + T_{\text{schedule}}, \qquad T_{\text{token}}^{\text{LPU}} = T_{\text{compute}} + T_{\text{memory}}
左边是 GPU 的每 token 时间:算、取数、调度三者叠加;右边是 LPU 的:调度项被消除,只剩算和取数。
  1. GPU 每 token 时间由计算时间、访存时间、调度时间三部分相加,调度税每次推理都收。
    TtokenGPU=Tcompute+Tmemory+TscheduleT_{\text{token}}^{\text{GPU}} = T_{\text{compute}} + T_{\text{memory}} + T_{\text{schedule}}
  2. LPU 每 token 时间通过流水线设计与静态调度消除调度项,等号右边少了一项。
    TtokenLPU=Tcompute+TmemoryT_{\text{token}}^{\text{LPU}} = T_{\text{compute}} + T_{\text{memory}}

存储优化:食材就在手边的档口厨房

为什么很多餐馆上菜慢?因为配菜在仓库,厨师每做一道菜都要跑到仓库取食材。专线快递的背包之所以重要,是因为“回仓库取东西”是最容易被忽略的隐形时间黑洞。LPU 的做法,是把整个菜单的食材都摆在自己的档口厨房里。

GPU 推理时,模型权重存在片外 HBM(高带宽内存)里。每生成一个 token,都要把全部权重从 HBM 读一遍:单次访存延迟约 100 纳秒,带宽虽高但“路程远”。LPU 则将权重常驻在芯片上的 SRAM 中——容量虽小(几十到几百 MB),但访问延迟只有约 2 纳秒,聚合带宽可达数十 TB/s。对能装进片上容量的模型来说,“回仓库”这一步被完全省掉:

把权重放在片上 SRAM,就像把食材全部备在手边——厨师伸手就能拿到,不需要跑仓库;而 GPU 的 HBM 更像中央大冷库,带宽再高,来回一趟的时间成本依然无法抹平。“背包容量决定专线能跑多远”,这也是为什么 LPU 最适合那些能整体装进片上存储的模型。

Tmemory=DweightsBeffective\displaystyle T_{\text{memory}} = \frac{D_{\text{weights}}}{B_{\text{effective}}}
读权重的耗时 = 要搬的数据量 ÷ 有效带宽。SRAM 的有效带宽比 HBM 高出一个量级,时间自然就短。
  1. 访存时间 T_memory每生成一个 token 读取权重的耗时,是每 token 延迟的主要组成部分。
    TmemoryT_{\text{memory}}
  2. 权重数据量 D_weights模型全部参数的大小;模型必须装进存储,否则就要反复从别处搬。
    DweightsD_{\text{weights}}
  3. 有效带宽 B_effective存储系统实际能提供的数据搬运速度,SRAM 的数值远高于片外 HBM。
    BeffectiveB_{\text{effective}}

编译调度:演出前就发好的总谱

一场交响乐演出,几十个乐手各吹各的,为什么能做到分秒不差?因为总谱在演出前就写好、分发好了:每个乐手第几小节进、什么力度、什么时候让位给主旋律,全部事先排练定死。演出时指挥只需要给个起始拍子,没人现场翻谱问“下一个该吹什么”。LPU 的编译器就是这本总谱。

推理和训练不同:训练时数据形状、梯度计算高度动态;而推理时网络结构、每层张量形状、算子顺序全部在编译期已知。LPU 的编译器对整个计算图做“全图静态调度”:哪个算子用哪个计算单元、数据放在哪块 SRAM、什么时候搬运、搬运到哪个端口,在运行之前全部排好。于是运行时没有分支判断、没有动态等待,计算单元的空闲时间被压到极致:

GPU 的运行时调度像即兴爵士:乐手们现场听、现场配,灵活但总有人要等;LPU 的编译器全图调度像交响乐总谱:每个人什么时候做什么早已写死,演出(推理)开启后只管按谱执行。这种“事前编排、事后零决策”的结构,正是亚毫秒延迟的基石。

UPU=TbusyTbusy+Tidle\displaystyle U_{\text{PU}} = \frac{T_{\text{busy}}}{T_{\text{busy}} + T_{\text{idle}}}
计算单元利用率 = 真正干活的时间 ÷(干活 + 空闲)。静态调度让“空闲”趋近于零,利用率自然高。
  1. 计算单元利用率 U_PU衡量芯片算力有多少时间在干正事,而不是空转等待。
    UPUU_{\text{PU}}
  2. 忙碌时间 T_busy计算单元实际执行算子运算的时间,由编译器排好的流水决定。
    TbusyT_{\text{busy}}
  3. 空闲时间 T_idle等数据、等调度、等下一个指令的时间;静态调度能把它压到接近零。
    TidleT_{\text{idle}}

批处理策略:既承诺速度又凑整车

专线快递承诺“件件都快”,但生意多了,快递员也不可能同时送一百件。他聪明的做法是:没人排队就立刻单飞;一旦排队,就把几个顺路的件凑成一车同时送,但前提是每一件都还在承诺的送达时间内。绝不为了凑车而让任何一件超时。

芯片同理:一个请求虽然快,但芯片资源富余时闲着也是浪费。批处理(batching)把多个请求合在一起推理,能显著提升吞吐;但批越大,单个请求等待 batch 凑齐的时间越长,延迟越高。LPU 因为权重重读成本极低(都在片上 SRAM),可以采用连续批处理(continuous batching),动态调整批大小,在吞吐与延迟之间取平衡。这个平衡有一个硬底线——服务承诺 SLO:

LPU 就像那个聪明的专线快递员:人少时单飞抢速度,人多时动态拼车保吞吐,但一切以“SLO 不超时”为底线。批处理不是 LPU 的敌人,而是它既“承诺快”又“接更多单”的平衡术。

Bmax⁡=⌊TtargetTper-token⌋\displaystyle B_{\max} = \left\lfloor \frac{T_{\text{target}}}{T_{\text{per-token}}} \right\rfloor
在承诺的延迟目标下,一批最多能塞多少请求:目标时间除以单个请求的每 token 时间,向下取整。
  1. 最大批大小 B_max满足延迟承诺的前提下,一批最多容纳的请求数。
    Bmax⁡B_{\max}
  2. 延迟目标 T_target服务承诺的 SLO(服务等级目标),例如“95% 请求 200ms 内出首词”。
    TtargetT_{\text{target}}
  3. 每 token 时间 T_per-token单个请求生成一个词的时间,越大能容纳的批越小。
    Tper-tokenT_{\text{per-token}}
  4. 向下取整 floor批大小必须是整数,且只能保守取小,不能取大超了 SLO。
    ⌊⋅⌋\left\lfloor \cdot \right\rfloor

性能对比:专线与干线谁更划算

专线快递在市区寄一封急件,确实快得惊人;但如果你要发一整车十吨货物到三千公里外,专线的小背包显然装不下,这时干线物流(GPU)的规模和成本优势就出来了。选择哪种,取决于你的货(负载)长什么样。

把两者放在同一模型上对比:小 batch、单请求、实时交互时,LPU 的端到端延迟能做到 GPU 的几十分之一(亚毫秒级 vs 数十毫秒级);但当 batch 拉到很大、以吞吐为目标的离线场景,GPU 依靠峰值 FLOPS 与超大 HBM 带宽,单位时间处理的 token 数反而更高。LPU 的 SRAM 容量有限,模型超出后也要回退到片外存储,优势随之收窄。适合 LPU 的典型场景:实时对话、agent 多轮链式调用、交互式代码补全、同声传译;适合 GPU 的典型场景:离线批量推理、大模型训练、把吞吐当第一指标的管道任务。用加速比可以量化这个差距:

专线不是万能的,LPU 也不是“GPU 杀手”。它是一把为“低延迟实时交互”打磨的专用快刀:在它擅长的赛道里,延迟优势是数量级的;但换一个赛道(超大模型、超大 batch 的吞吐竞赛),干线的价值同样不可替代。“先看清负载,再选择线路”是每个部署者最该记住的一句话。

Speedup=LGPULLPU\displaystyle \text{Speedup} = \frac{L_{\text{GPU}}}{L_{\text{LPU}}}
加速比 = GPU 端到端延迟 ÷ LPU 端到端延迟。同一负载下,比值越大说明 LPU 相对越快。
  1. 加速比 Speedup同一个推理任务在两种芯片上的延迟比值,衡量专线相对干线的提速倍数。
    Speedup\text{Speedup}
  2. GPU 端到端延迟 L_GPUGPU 从输入到输出的完整耗时,包含动态调度与片外访存开销。
    LGPUL_{\text{GPU}}
  3. LPU 端到端延迟 L_LPULPU 完成同一任务的耗时,通常短得多。
    LLPUL_{\text{LPU}}

AI 应用场景

场景1:实时多轮 Agent 工作流

阶段:推理部署 / 模型服务

解决的问题:Agent(智能体)为了完成一个任务,常常要“想一步、调工具、再想一步”,串联多次 LLM 调用。每次调用都要等完整回答,普通 GPU 单次一两秒,三步下来用户等五秒以上,体验像电话转接。LPU 把单次延迟压到毫秒级,多轮链式调用几乎无感。

具体案例:一个“订机票 + 订酒店”的 agent,需要先判断意图、查询航班、再确认酒店。传统 GPU 方案每步约 800ms,整链路三次调用约 2.4 秒;换成 LPU 后每步降到 20-40ms,整链路不到 100ms,用户觉得 AI 是“秒懂秒回”。

场景2:交互式代码补全

阶段:应用开发 / 云边协同推理

解决的问题:程序员每敲几个字符,IDE 就要触发一次补全请求。研究显示,补全延迟超过 200ms 就会打断心流。GPU 单个 token 数毫秒到十几毫秒,补全一整行要等待明显;LPU 的亚毫秒级 token 延迟让补全“跟着手走”。

具体案例:某云端 IDE 将补全后端从 GPU 切换到 LPU 后,首词延迟从 150ms 降到 8ms,用户“接受补全”的比例提升了约 30%。

场景3:实时语音翻译(同传)

阶段:在线推理 / 流式服务

解决的问题:同声传译要求“听到后半句时前半句译文已经出现”,LLM 翻译的流式输出延迟直接决定可用性。LPU 的低每 token 延迟让译文像水流一样即时涌出,而不是一段一段卡顿。

具体案例:视频会议产品接入 LPU 后,英译中的首词延迟低于 50ms,后续每词约 1ms,实现了“说完一句、译文几乎同步”的现场体验。

Python 演示

python46 行
class Engine:    """模拟一颗推理芯片的单token延迟构成."""     def __init__(self, name, peak_flops, sram_bytes, sram_bw, dram_bw, sched_per_kernel):        self.name = name        self.peak_flops = peak_flops          # 每秒浮点运算数        self.sram_bytes = sram_bytes          # 片上存储容量        self.sram_bw = sram_bw                # 片上带宽 B/s        self.dram_bw = dram_bw                # 片外带宽 B/s        self.sched_per_kernel = sched_per_kernel  # 每算子调度开销     def token_latency(self, model_bytes, flops_per_token, kernel_count):        # 模型装得进片上存储就用片上带宽, 否则回退到片外        if model_bytes <= self.sram_bytes:            effective_bw = self.sram_bw        else:            effective_bw = self.dram_bw        load_time = model_bytes / effective_bw          # 搬权重的时间        compute_time = flops_per_token / self.peak_flops  # 纯计算时间        sched_time = self.sched_per_kernel * kernel_count  # 调度税        return load_time + compute_time + sched_time  def main():    gpu = Engine("GPU", peak_flops=1.5e15, sram_bytes=40e6,                 sram_bw=8e12, dram_bw=2e12, sched_per_kernel=5e-6)    lpu = Engine("LPU", peak_flops=5e14, sram_bytes=230e6,                 sram_bw=80e12, dram_bw=5e12, sched_per_kernel=0.0)     models = [("small_200MB", 200e6), ("large_2GB", 2e9)]    flops_per_token = 1.2e9    kernel_count = 4    tokens = 32     print("model          engine   ms/token   ms/32token   speedup")    for model_name, model_bytes in models:        gpu_lat = gpu.token_latency(model_bytes, flops_per_token, kernel_count)        lpu_lat = lpu.token_latency(model_bytes, flops_per_token, kernel_count)        for eng_name, lat in (("GPU", gpu_lat), ("LPU", lpu_lat)):            ratio = ("%.1fx" % (gpu_lat / lpu_lat)) if eng_name == "LPU" else "-"            print("%-12s %-6s %9.3f %12.3f %8s" % (                model_name, eng_name, lat * 1e3, lat * tokens * 1e3, ratio))  if __name__ == "__main__":    main()
目的:用三段式延迟模型(访存 + 计算 + 调度)模拟 GPU 与 LPU 在两种模型规模下的每 token 延迟,直观看到“模型能否装进片上 SRAM”如何影响加速比。
  1. class Engine:把芯片抽象成“带宽、容量、调度税”三个核心参数的延迟模型
  2. if model_bytes <= self.sram_bytes:模型装得进片上 SRAM 吗?决定走“档口取菜”还是“回仓库取菜”
  3. load_time = model_bytes / effective_bw权重读取时间 = 要搬的数据量 ÷ 有效带宽
  4. sched_time = self.sched_per_kernel * kernel_count为每个算子缴纳的“调度税”;LPU 是 0
  5. gpu = Engine(...)GPU 参数:大算力 + 小片上容量(40MB)+ 每算子 5 微秒调度税
  6. lpu = Engine(...)LPU 参数:230MB 片上 SRAM + 80TB/s 带宽 + 零调度税
  7. gpu_lat / lpu_lat加速比:小模型约 25 倍,大模型因超出片上容量缩水到约 2.5 倍

常见误区

误区LPU 每秒能生成这么多 token,肯定用了特别高的主频或者特别大的算力,FLOPS 比 GPU 高一个量级。

正解LPU 的峰值算力通常反而低于同代 GPU。它的快来自“消除等待”:不缴调度税、不跑片外取数。就像专线快递不是油门踩到底,而是不绕路、不停车、不排队。算力高只减少 T_compute,而延迟里占比更大的往往是 T_schedule 和 T_memory。

为何常见:我们习惯用“力气大 = 跑得快”来理解速度,忽略了在真实系统里“等待”往往比“干活”更耗时。

误区LPU 延迟这么低,吞吐肯定也全面碾压 GPU,直接把 GPU 换掉就行。

正解延迟和吞吐是两个正交指标。小批单请求时 LPU 延迟占优;大批离线任务时 GPU 靠峰值 FLOPS 和超大 HBM 带宽赢回吞吐。好比专线快递单件快,但十吨干线货物还是大卡车划算。换硬件前要先定义指标是“快不快”还是“装得多不多”。

为何常见:日常里“快”常常同时指“响应快”和“产能高”,让人误以为两个指标总是一起增长。

误区LPU 不就是 SRAM 大吗?给 GPU 加个几百 MB 的缓存,效果一样。

正解SRAM 是必要条件但不是充分条件。缓存大还不够,还得知道“下一步取什么、放哪里”;GPU 的缓存是运行时硬件猜的,猜不中就要付出 miss 惩罚。LPU 的杀手锏是编译器全图静态调度:每个数据何时移动、移到哪个单元都提前排好,运行时根本没有“猜”这一步。好比背包里装满了东西还不够,还得有张写死的行程单。

为何常见:只看到“食材在手边”这个表象,忽略了背后“谁来安排、何时取用”的编排机制。

误区LPU 那么快,每个请求直接串行处理就行,完全不用 batch。

正解单请求快不代表系统能同时服务很多用户。为了把计算单元喂饱、摊薄固定开销,LPU 依然会做批处理,只是用连续批处理 + 动态批缩放,在 SLO 内尽可能多接请求。它做的是“聪明拼车”,不是“不拼车”。

为何常见:把“单请求延迟快”等同于“系统并发能力强”,忽略了对芯片资源利用率的追求。

误区既然 LPU 是未来,所有推理任务都该迁移到 LPU 上。

正解模型必须整体装进片上 SRAM 才有数量级优势;超大模型、稀疏访问型负载、以及以吞吐为目标的离线批量任务,LPU 的优势会大幅缩水甚至变成劣势。正确姿势是按“模型尺寸 × 延迟要求 × 吞吐要求”做匹配——专线走实时快件,干线走大宗货物。

为何常见:拿着单一指标(延迟)做全局决策,忽略了负载特征对架构适用性的决定性影响。

面试题

Q1. LLM 生成 N 个词的推理总延迟,正确的表达式是?

单选题 · easy

  • A.首词延迟与后续(N-1)个词间隔之和← 正确答案
  • B.首词延迟与N个词间隔之乘积
  • C.每个词间隔延迟的简单累加
  • D.首词延迟与总词数直接相乘

答案:A。总延迟 = 首词延迟 + (N-1) 个后续词的间隔。像专线快递:第一封信要等揽收(TTFT),后面的信每封都走同样快的专线;B 把加号错当成乘号,C 漏了首词的独立地位,D 没有体现“首词单独一段”的结构。

Q2. LPU 实现超低延迟最核心的设计思想是?

单选题 · easy

  • A.用更高主频把运算加速十倍
  • B.消除调度开销并简化控制← 正确答案
  • C.用更大显存容纳超大模型
  • D.只支持简单线性网络结构

答案:B。LPU 的核心是消除动态调度开销、简化控制逻辑,让每 token 只剩“算 + 取数”。主频高、显存大都不是本质手段;LPU 面向的是通用 transformer 推理,不是只支持简单网络。

Q3. 权重数据放在片上 SRAM 的主要优势是?

单选题 · mid

  • A.SRAM容量大可以存更多参数
  • B.SRAM免去片外访存等待延迟← 正确答案
  • C.SRAM断电后数据依然不丢失
  • D.SRAM存储密度比HBM更高

答案:B。权重重读是每 token 最大的访存开销,放在片上 SRAM 就近访问,免去片外 HBM 的往返等待。SRAM 容量小、断电会丢失、密度也不比 HBM 高,所以 A/C/D 都错。

Q4. 编译器全图静态调度的作用是?

单选题 · mid

  • A.在运行时动态分配计算资源
  • B.提前排好运算与数据移动流程← 正确答案
  • C.把网络结构随机化防止过拟合
  • D.让推理过程支持任意动态分支

答案:B。全图静态调度把算子顺序、数据移动在编译期排好,运行时零决策。A 是 GPU 动态调度的特征;C 与调度无关;D 恰恰相反——静态调度不支持运行时任意动态分支。

Q5. 关于延迟与吞吐的关系,正确的是?

单选题 · mid

  • A.两者之间没有任何关系
  • B.低延迟方案吞吐必然最高
  • C.小批低延迟与最大吞吐常矛盾← 正确答案
  • D.吞吐只由批大小单独决定

答案:C。小批最优延迟与最大吞吐常互相矛盾:批太小算力喂不饱,批太大排队延迟暴涨。A 完全割裂两者,B 太绝对,D 忽略了算力、带宽等因素。

Q6. SLO 约束下最大批大小 B_max 的计算方法是?

单选题 · hard

  • A.SLO时间除以单token延迟后取整← 正确答案
  • B.SLO时间与单token延迟相乘
  • C.SLO时间减去单token延迟
  • D.固定等于并发用户数的一半

答案:A。B_max = floor(T_target / T_per_token),正是“目标时间 ÷ 单 token 时间再取整”。相乘、相减都没有物理意义,固定值更不可能是通用答案。

Q7. GPU 硬件调度与 LPU 编译器调度的本质区别是?

单选题 · hard

  • A.一个运行时决策,一个事前排程← 正确答案
  • B.一个执行速度快,一个速度慢
  • C.一个适合大模型一个适合小模型
  • D.一个用于训练一个用于推理

答案:A。GPU 的硬件调度在运行时根据缓存命中、资源争用实时决定下一步;LPU 的编译器在推理前就把全部时序写死。本质是“实时决策 vs 事前排程”,与速度、模型规模、训练还是推理无关。

Q8. LPU 超低延迟主要来源于哪些设计?(多选)

多选题 · easy

  • A.片上SRAM消除外部访存← 正确答案
  • B.编译器全图静态调度← 正确答案
  • C.更小的片上存储容量
  • D.运行时动态分支预测

答案:AB。超低延迟的两大支柱:片上 SRAM 消除访存延迟、编译器全图静态调度消除运行时分支。C 与直觉相反,D 是 GPU 的动态机制,不是 LPU 的特征。

Q9. 以下哪些场景更适合 LPU 而不是 GPU?(多选)

多选题 · mid

  • A.实时对话与agent多轮调用← 正确答案
  • B.离线海量数据批量刷分
  • C.交互式代码补全服务← 正确答案
  • D.训练超大规模基础模型

答案:AC。实时对话、代码补全这类交互场景对延迟极度敏感,LPU 占优;后台批量刷分和超大模型训练以吞吐、容量为主,GPU 更合适。

Q10. 关于批处理与延迟的权衡,下列说法正确的有?(多选)

多选题 · hard

  • A.批大小增大通常提升吞吐← 正确答案
  • B.批大小增大会增加排队延迟← 正确答案
  • C.批大小永远越大越好
  • D.LPU完全不需要批处理

答案:AB。批越大单次吞吐越高,但请求要等批凑齐、算完,排队延迟上升,所以要在 SLO 约束下动态平衡。C 忽略延迟代价,D 错误——LPU 同样需要连续批处理保持利用率。