资讯动态

AI芯片选型指南:GPU、TPU、LPU架构演进与适配场景解析

发布时间:2026/8/27 17:45:32 来源:尧图企业网站定制
AI 芯片架构演进这件事很多人一上来就纠结一个问题TPU、GPU、LPU 到底谁更强。这个问题的答案取决于你手里跑的是训练任务、微调任务还是纯推理服务。TPU 是面向矩阵运算的领域专用加速器GPU 是当前最通用的并行计算主力LPU 则把语言模型推理当成核心设计目标。它们都属于领域专用架构只不过“专用”的程度和方向不一样。对一个要做落地的人来说最值得关注的不是厂商宣传的峰值数字而是你的任务在什么环境下能稳定跑通、吞吐和延迟能不能接受、工具链是否成熟。这篇文章按我的实测经验把这三种架构的演进逻辑、适用边界和选型思路拆一遍最后会讲常见环境问题和排查顺序。1. 先想清楚为什么 AI 芯片会从“通用计算”走向“领域专用”1.1 通用 CPU 的瓶颈不是算力不够而是数据搬运太贵很多年前大家习惯用 CPU 跑所有程序。CPU 的优势是灵活什么任务都能跑逻辑分支、系统调用、内存管理都擅长。但 AI 的核心计算是矩阵乘法、卷积、注意力机制这些运算的规律性很强同样的操作要在大量数据上重复执行。CPU 的每个核心虽然能处理复杂逻辑但单核并行度有限数据要从内存搬到寄存器和缓存再送进计算单元。这个过程里有大量等待和调度开销。说白了AI 任务里真正有用的计算密度高但数据搬运次数也多CPU 的架构在搬运上浪费了太多周期。你可以把它类比成工厂流水线。CPU 更像一个全能工人每道工序都要重新理解任务专用芯片更像一条只做某一种产品的流水线虽然不能做别的事但单位时间产量高得多。AI 场景里我们需要的恰恰是这种“只做一件事但做到极致”的能力。1.2 领域专用架构的出发点牺牲灵活性换取吞吐和能效领域专用架构的思路很简单如果知道这个领域内绝大多数计算是什么形态就把硬件设计成最适合这种形态的样子。比如通信芯片可以做专用网络处理音视频芯片可以做专用编解码。AI 芯片也一样既然知道大量计算是矩阵乘法和张量运算那就把计算单元、数据通路、缓存层次和控制逻辑都围绕这个形态设计。这种做法的代价是灵活性下降一个专门为矩阵运算设计的芯片可能不擅长跑数据库也不擅长跑浏览器。但它能在同样功耗和面积下把 AI 任务的吞吐和能效提升一个数量级。为什么要强调“领域专用”而不是“单点性能”因为芯片的物理限制还在晶体管数量、功耗、散热、内存带宽都是有限资源。通用处理器为了兼顾所有任务必须留下大量调度、分支预测、缓存一致性逻辑。专用芯片可以把这些逻辑砍掉把面积让给更多计算单元。这块内容后面讲 TPU 和 LPU 时会反复出现。这里给一个实际判断标准一个架构适不适合你的 AI 任务先看两个指标。第一它能不能跑你需要的精度FP32、FP16、BF16 还是 INT8第二它的显存或片上 SRAM 够不够放你的模型和中间激活值。厂商宣传的 TOPS 或 TFLOPS 是理论峰值实际吞吐往往只有峰值的几分之一因为还要考虑带宽、功耗墙、任务并行度和框架调度开销。2. GPU从图形渲染到并行计算它是怎么被 AI“重用”的2.1 GPU 能成为 AI 主力靠的不是“显卡”这个名字GPU 最初是为了图形渲染设计的。图形渲染需要同时处理大量顶点、纹理和像素天然适合并行计算。后来研究人员发现这种大规模并行能力也能用来做科学计算和神经网络训练。于是 NVIDIA 推出 CUDA把 GPU 从“显卡”变成了可编程的通用并行计算设备。AMD 有 ROCmIntel 有 oneAPIOpenCL 也是跨平台的并行编程方案。这里的核心变化是硬件仍然偏并行但软件层把一个专为图形服务的设备变成了开发者可以直接编程的通用计算设备。很多第一次接触 GPU 编程的人会以为换了一块好显卡就万事大吉。实际上显卡只是硬件基础能不能发挥作用还要看驱动、CUDA 运行时、深度学习框架是否匹配。这个问题后面会专门讲。2.2 GPU 在 AI 任务里到底强在哪GPU 的强项是训练阶段。训练神经网络需要反复执行前向传播和反向传播大量矩阵运算可以拆成很多小任务并行执行。GPU 的核心数非常多每个核心的计算单元相比 CPU 更简单但数量优势可以堆出极高的吞吐。再加上高带宽显存比如 HBM 或 GDDR 系列GPU 可以快速把权重和中间数据喂给计算单元。判断 GPU 是否够用我会重点看四类信息计算精度支持、显存容量、显存带宽、软件生态。PyTorch、TensorFlow、Ollama、vLLM 这些主流框架都优先支持 CUDA这也是很多人选 NVIDIA GPU 而不是其他品牌的原因。软件生态有时候比硬件峰值更重要。下面这张表是实际选择时我会对照的维度不同 GPU 的具体数值会变但判断思路固定维度判断标准影响计算精度是否支持 FP16 / BF16 / INT8决定训练和推理的显存占用、速度显存容量能否放下模型权重、优化器状态、激活值决定单卡能跑多大模型显存带宽带宽越高权重搬运越快推理时尤其明显软件生态CUDA / ROCm / oneAPI 支持情况决定你能不能用现成工具链功耗和散热功耗墙和散热条件决定长时间运行稳定性实际运行时我一般不会只看 GPU 利用率一个数字。用nvidia-smi看显存占用用系统监控看 CPU 和内存还要区分 SM 利用率、显存带宽利用率和功率。GPU 利用率高不一定代表有效计算多有时候是显存带宽已经打满计算单元在等数据。判断瓶颈在计算还是搬运最简单的办法是降低输入序列长度或 batch size看耗时是否线性下降。如果下降不明显说明瓶颈在固定开销或者驱动调度。2.3 本地使用 GPU 时最常见的环境问题我在实际调试里遇到最多的不是模型本身报错而是环境问题。比如在 WSL 里跑 PyTorch提示failed to initialize nvml: GPU access blocked by the operating system这时候先别急着怀疑显卡坏了。检查顺序是Windows 宿主机是否安装了匹配的 NVIDIA 驱动WSL 里是否正确安装了 CUDA toolkit容器或虚拟机的 GPU 直通是否配置好。Ollama 这类工具没识别到 GPU通常也是驱动或权限问题。docker 需要 GPU 直通吗这个问题经常被问答案是容器默认看不到宿主机的 GPU需要在运行时传设备参数或使用 NVIDIA Container Toolkit不然容器里只能靠 CPU 跑。另一个很容易被忽略的问题Windows 下 WSL 里 GPU 已经被识别但 OpenGL 渲染仍然走 CPU 软件模拟。这是两套不同的事。GPU 计算驱动和图形渲染驱动在 WSL 里的状态是分开的。如果只是跑 AI 训练和推理计算设备能被 PyTorch 或 Ollama 识别就够用如果还指望图形界面或 3D 渲染要单独确认图形驱动和 Vulkan 支持。3. TPU把脉动阵列和低精度计算变成硬件设计的主线3.1 TPU 的硬件思路让数据在计算单元里“流”起来TPU 是 Google 为神经网络推断和训练设计的专用加速器。它的设计思路和 GPU 不一样。GPU 靠大量并行核心堆吞吐TPU 在 Matrix Unit 里用脉动阵列Systolic Array实现矩阵乘法。脉动阵列的核心特点是把多个计算单元排成阵列数据像在管道里流动一样从左到右、从上到下依次经过每个单元。每个单元只做一次乘加运算然后把结果传给相邻单元。这样能减少数据反复从外存读取的次数让计算单元在同一个时钟周期里做更多有效计算。简单理解GPU 更像一群工人同时领任务TPU 的脉动阵列更像一条流水线任务经过每一站都顺手完成一部分。脉动阵列的优点是数据复用率高缺点也随之而来灵活度低。如果某个算子的数据流形态和脉动阵列不匹配计算单元的利用率会明显下降。这也是为什么 TPU 更适合模型结构固定、算子相对标准的场景。你拿一个带很多自定义算子的模型直接上去跑大概率需要做算子适配。3.2 TPU 走向低精度不是拍脑袋而是量化实践的结果TPU 的另一个关键设计是低精度计算。神经网络推理阶段很多场景不需要 FP32 的精度用 INT8 甚至更低精度就能保持可接受的效果。低精度的好处非常直接数据占用的内存和带宽更少计算单元在同样面积下可以做得更多功耗也更低。这反映了一个行业趋势与其让所有任务都用高精度跑不如针对模型量化后的需求在硬件层面做适配。对生产环境来说这会直接影响成本和吞吐。当然低精度不是没有代价。量化精度越低越依赖校准方法和模型本身的鲁棒性。训练阶段通常还是要 FP16 或 BF16所以 TPU 的演进也会在训练支持上做文章。实际评估低精度时我建议不要只看规格表上的“支持 INT8”。要拿几个关键层做单独测试看量化后的精度损失和实际吞吐提升。有些硬件对常见卷积层支持很好但对 Transformer 里的某些算子支持一般容易出现“宣称支持实际回退到高精度”的问题。3.3 什么情况下选 TPU 更合理TPU 不是买来就能直接跑的通用硬件多半绑定云平台。如果你的任务已经固定模型结构相对稳定推理请求量大而且你有精力把算子适配到 TPU 工具链上那么 TPU 的性价比值得评估。反过来如果团队同时跑很多种模型需要频繁改算子或者希望复用社区里大量的 CUDA 工具那 TPU 的学习成本和迁移成本会明显更高。我的建议是先用小规模样本做算子适配验证确认精度、吞吐、延迟都能接受再考虑批量迁移。不要因为峰值算力好看就直接换平台。另外要注意一点TPU 的调试工具和 CUDA 生态相比少很多。遇到性能问题能查到的资料和能用的 profiling 工具都不如 GPU 丰富。对团队来说这个隐形成本要提前算进去。4. LPU从“算得快”升级到“推理快”的专用路线4.1 LPU 不是用来训练的大路货它把语言推理当成中心任务LPU 的定位比 GPU 和 TPU 更聚焦。它的名字是 Language Processing Unit主要面向语言模型的推理场景。GPT 这类 decoder-only 模型在生成时有一个特点每一步生成一个 token当前 token 依赖之前的全部结果这个串行依赖链很难完全并行化。GPU 在这种场景里的瓶颈不一定是计算算力而是权重体量太大带宽不足导致每一步推理都要反复搬运参数。LPU 的设计目标就是减少这种搬运开销。具体做法通常包括把更多参数放到片上存储使用更大的内存带宽针对自回归生成优化缓存和数据流。它的思路不是“更快的通用计算芯片”而是“更适配语言模型推理流程的专用芯片”。一个很容易误解的地方是LPU 并不是“不处理训练”而是它的设计重心不在训练。如果主营业务是训练和微调大模型LPU 不一定是你第一个要看的选项。它是针对推理吞吐和延迟做优化的专用路线。4.2 判断推理快不快不能只看单个算力峰值很多人衡量 AI 芯片习惯性只看 TFLOPS 和 TOPS。但语言生成场景里更关键的指标是 tokens per second也就是每秒能生成多少个词。还要看首 token 延迟TTFT、端到端延迟和吞吐。GPU 峰值算力高但如果显存带宽跟不上生成长文本时可能每一轮都被数据搬运卡住。LPU 在这些场景里的优势是减少数据搬运、提高 token 生成吞吐。不过它的通用性和生态不如 GPU。比如有些模型算子需要重新适配不是所有框架开箱即用。这个边界要提前想清楚。推理性能测试有一条原则同一个模型同一个提示词同一组解码参数才有可比性。温度、top_p、最大生成长度不一样测出来的延迟和吞吐相差很大。我一般会跑固定长度的生成任务记录首 token 延迟、每秒生成速度再取多次结果的中位数和 P95。只跑一次或者只看平均值容易被偶发卡顿和热降频误导。4.3 LPU 的适用场景和选型提醒LPU 适合的场景是模型结构已知推理请求量大对 token 生成吞吐和稳定性有明确要求并且团队能接受专门的编译器或运行时。如果只是个人学习、跑 Ollama或者需要在本地快速验证多个模型那用普通 GPU 甚至 CPU 可能更方便。我实测时的判断方法是先跑一个固定长度的生成任务记录首 token 延迟和每秒生成速度同时观察显存占用和温度。对比不同硬件时用同一个模型、同一个提示词、同一个解码参数比如温度和高重复惩罚保持一致不然结果没有可比性。任何架构的宣传数值最终都要落到你的真实负载上验证。LPU 的编译器生态通常比 GPU 更封闭调试工具少遇到问题能搜到的社区资料也不多。选型时要打足提前量尤其是团队里没有人熟悉这套链路的初期阶段稍微一个算子不支持就可能卡住好几天。5. 三种架构放在一起算力、带宽、功耗、生态怎么比5.1 训练、微调和推理对硬件的要求完全不同先区分三个阶段。训练阶段需要高精度、大显存和强大的反向传播能力微调阶段有 LoRA 这类参数高效方案对显存要求会低一些但仍需要可靠的精度支持推理阶段更看重延迟、吞吐和单位请求成本。GPU 在三个阶段都很通用尤其是训练和微调生态最完整。TPU 适合规模化训练和固定模型的推理但对团队的算子适配能力有要求。LPU 更适合规模化推理尤其语言生成但训练和通用任务不是它的主战场。如果只看一个指标容易选错。可以简单算一笔账一个 70 亿参数的模型用 FP16 存权重大约要 14GB 显存。训练时还要算优化器状态、梯度和激活值实际占用可能是推理的好几倍。推理时虽然有 KV cache 随序列长度增长但比起训练的一整套状态还是小得多。这个例子是在算数量级实际以你的框架和序列长度为准但它能说明为什么同一个模型在不同任务阶段对硬件要求完全不同。架构典型定位擅长任务主要限制GPU通用并行计算训练、微调、推理、多模态功耗高生态依赖 CUDATPU矩阵运算加速大规模训练、固定模型推理工具链专用迁移成本高LPU语言推理加速高吞吐生成、低延迟语言任务通用性弱生态不成熟5.2 用同一个基准流程对比不同类型的芯片我自己做选择时会把对比拆成四步。第一步挑三到五个代表性任务覆盖训练、微调、推理。第二步固定模型版本和输入数据记录峰值显存、单次迭代时间或推理延迟。第三步看连续任务成功率跑十次以上不能只看一次顺利结果。第四步算单位成本包括硬件价格、运行功耗、运维时间。这套流程对 GPU、TPU、LPU 都适用。表格只是一种辅助真正要记录的是你的业务负载。测试时要注意热稳定问题。芯片刚启动时性能通常最好跑一段时间后可能因为温度升高而降频。所以我会先让设备跑几分钟预热再开始记录数据。对比时还要控制环境温度、电源模式和驱动版本。否则你对比出来的可能不是硬件差异而是散热和驱动的差异。5.3 一个容易误判的点支持某种精度不等于适合所有任务很多芯片宣称支持 BF16、INT8但实际性能和精度衰减范围取决于算子实现和量化方案。我在实践里遇到过宣称支持 INT8 的加速器跑某些模型的中间算子时会回退到高精度导致速度下降和显存占用上升。所以判断时要看实际执行计划而不是看规格表。如果条件允许先跑一个带量化算子的模型再检查哪些算子没有落到底层硬件。还有一个误判点是只看显存容量不看显存带宽。同一个模型一个显存大但带宽低的设备可能比显存小但带宽高的设备生成速度更慢。因为自回归推理每一步都要把所有权重参数读一遍。带宽高每一步的等待时间就短。生产系统里带宽和容量的权衡经常比单纯的大容量更重要。6. 实际落地从模型、框架到驱动环境选型和排查顺序6.1 先分清你的任务类型再决定硬件方向回到最开始的问题TPU、GPU、LPU 怎么选。如果任务是本地学习、快速验证模型效果GPU 是最稳的选择驱动好装、框架多、社区资料全。如果任务是训练大模型GPU 或云上 GPU 集群更常见因为生态成熟。如果任务是高并发规模化推理而且模型固定才需要认真评估 TPU 或 LPU 这类专用架构。这里容易犯的错是先看硬件再想任务。正确顺序应该是先确定模型规模、请求量、精度要求再反推硬件需求。举个例子你只是想在本机跑一个 7B 模型的对话 Demo那优先看能不能装好驱动和 Ollama显存够不够而不是一开始就讨论 TPU 的脉动阵列。反过来如果是一个每天几百万次请求的固定模型推理服务那 GPU 的通用性反而是次要的重点要看单次请求成本、吞吐峰值和稳定性。6.2 本地 GPU 环境调试Ollama、PyTorch、WSL 的常见问题我在本地跑 Ollama 和 PyTorch 时最常遇到的问题是 GPU 没被识别、显存不够、版本不匹配。排查顺序可以固定成一套先跑一个最小示例比如nvidia-smi或 PyTorch 的torch.cuda.is_available()。确认驱动版本和 CUDA 版本是否匹配不要只看最新版本要看能支持的 CUDA 运行时范围。确认 WSL 或容器是否把 GPU 正确暴露出来。WSL 里跑 Ubuntu如果还提示failed to initialize nvml先检查 Windows 侧驱动和 WSL 内核更新。确认框架版本。PyTorch 的 CUDA 版本要和安装包对应装错版本会出现看似能导入、实际无法使用 GPU 的情况。最后才看模型和参数。显存不足时降低 batch size、开启梯度检查点、换低精度推理是更常见的解决路径。这几条顺序看起来基础但我在不同项目里反复踩过。很多人一看到GPU access blocked就怀疑显卡驱动结果其实是 WSL 里的 CUDA 环境没配对。6.3 云 GPU 和多卡场景别只看“能跑”还要看调度和成本很多人问 GPU 租用、多卡调度、GPU 分区、多显卡怎么用。我的建议是先分清单卡、多卡和集群三个层级。单卡能跑通的任务直接上多卡不一定更快因为还要考虑数据并行、模型并行、通信开销和负载均衡。GPU 分区和多显卡共享需要考虑资源隔离避免一个任务吃光显存影响其他任务。容器场景里GPU 直通要按容器运行时要求配置。云上 GPU 和本地 GPU 在选型逻辑上一致看显存容量、带宽、精度支持、单位成本和租用时长。性能测试要按真实负载跑不能只看实例规格。多卡场景最容易忽略的是通信带宽。数据并行时每轮梯度同步都要在卡之间传数据。如果是普通 PCIe 连接通信开销可能很大如果用 NVLink 或类似的专用互联训练效率会明显提升。所以多卡不是“加的卡越多越好”还要看卡间互联和调度策略。7. 实战排查清单启动失败、速度慢、显存不足、卡死7.1 出现问题时先看现象再按链路查我排查 AI 硬件问题时从不直接改参数。第一步先确定现象属于哪类启动崩溃、任务卡住、输出为空、速度变慢、显存溢出还是温度过高。每种现象对应的排查链路不同。启动崩溃先看依赖版本和驱动任务卡住先看资源占用和输出日志输出为空先看输入格式和预处理速度变慢要结合批大小、并发数和温度看显存溢出则优先降 batch size、检查是否有显存泄漏。很多人喜欢在报错出来之前就开始调参数这容易浪费时间。先看现象再看日志最后才动手改配置。日志里通常会直接告诉我们问题出在哪个算子、哪个路径、哪个系统调用。把这些信息读完整比盲目换版本有用得多。7.2 显存不足和推理速度慢最该调的不是模型很多人一遇到显存不足就换大显存卡其实很多时候问题出在设置上。可以先把 batch size 降下来再开启梯度检查点再尝试低精度推理。推理速度慢则可能是并发设置太高导致资源争抢或者是输入序列太长导致 attention 计算量激增。我一般会先用小 batch 跑一次基线记录耗时和显存峰值再做调整。这样能区分是硬件瓶颈还是参数问题。另外日志里出现算子回退到 CPU 的情况时要去查算子兼容性这不是单纯调参能解决的。还有一个常见卡死原因输出目录和日志目录没有提前建好或者磁盘写满。任务看起来像在计算实际是卡在写日志或写检查点上。遇到任务长时间不结束先去看磁盘空间、输出目录权限和日志文件大小不要一直盯着 GPU 利用率。7.3 驱动、容器、WSL 环境里最容易出问题的三个位置第一NVIDIA 驱动和 CUDA 版本不匹配。第二WSL 里图形和计算两个子系统状态不一致。第三容器没有做 GPU 设备暴露。这三个位置解决掉能避免大部分环境问题。安装顺序我建议是先装宿主机驱动再装 CUDA toolkit再装框架最后才测试样例。不要反过来。因为框架安装包在编译时就绑定了 CUDA 版本环境错位会导致非常隐晦的报错。注意不要一上来就开最大并发。先用一条样例确认输入、输出和日志都正常再逐渐加并发。很多卡死问题是因为并发直接把显存或内存打爆日志还没来得及写出来。再提醒一点如果日志显示算子没有落到硬件加速而是退回 CPU不要先怀疑硬件坏了先看算子的精度要求和框架版本。7.4 判断环境是否正常的快速自检方法在本地 Linux 或 WSL 环境里我一般会依次跑三条自检命令。第一条看驱动和卡的状态第二条看 CUDA 能否访问第三条看框架能否调用 GPU。这里给的是通用命令具体以你的环境为准nvidia-smiimport torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))ollama --version如果这三步都能得到正常结果基本可以排除环境问题再往模型和参数方向排查。如果第一步正常第二步异常优先查 CUDA toolkit 和 PyTorch 版本匹配。如果第一步就异常问题在驱动和系统权限先修宿主机侧。这套自检方法对大多数 GPU 环境都适用尤其适合刚配好机器、第一次跑模型的情况。8. 后续演进领域专用架构会怎么发展值得提前准备什么8.1 不会只剩一条路线但工具链会决定迁移成本从 GPU 到 TPU再到 LPU这条演进路线说明一个趋势AI 硬件会越来越针对具体任务做优化。训练、微调、推理的硬件可能会进一步分化。对开发者来说最大的风险不是硬件性能不够而是工具链迁移成本过高。熟悉 CUDA 生态的人很多但 TPU 和 LPU 各自的编译器、算子库、调试工具都不一样。换个平台往往要重写部分代码重新验证精度和性能。很多人觉得换硬件就是换一张卡实际是换一套工具链。CUDA 生态里能直接用的算子到了其他平台可能要先移植。这个成本比买卡的钱更难预测。所以我会在项目早期就评估团队有没有精力维护非 CUDA 平台有没有能力排查专用编译器和运行时问题。如果答案都是否那即便新硬件性能更有优势短期内也不要激进切换。8.2 给自己的项目留一个“架构切换缓冲”我不建议把项目代码写死在某一种硬件上。可以在框架层面做一点抽象比如统一使用 vLLM、PyTorch 或其他屏蔽底层差异的运行时把模型格式和推理接口固定下来。这样即使未来需要换 GPU、TPU 或 LPU迁移的代价会更小。实际做法是先保证同一个推理服务在 CPU 上能用再在 GPU 上加速最后再评估专用架构。多一层抽象会有一点性能损失但能换来灵活性。对生产系统来说这个取舍通常值得。尤其是语言模型推理输入输出格式、tokenizer、采样参数、监控日志这些都应该和具体硬件解耦。换硬件时尽量只换底层的执行后端上层 API 保持稳定。这样团队里其他人也不会因为换硬件而需要重新学一整套接口。8.3 落到具体选择时我最后的建议如果只是学习先把手上的 GPU 用好把驱动、框架、模型加载跑通再了解 TPU 和 LPU 的设计思路。如果需要生产落地先做小规模验证再评估专用架构。不同架构的对比最终要算总账硬件成本、研发时间、运维负担、推理延迟、吞吐量。任何一个单项很漂亮都不够只有和你自己的业务需求匹配才是最合适的架构。判断新硬件适不适合自己可以做一张五列小表任务类型、输入规模、延迟要求、吞吐要求、团队能力。逐项打分能明显看出该不该换。踩过几次坑之后你会发现很多问题不是芯片不够强而是前置环境、输入格式和任务类型没有想清楚。先把这些边界理清楚再谈算力、带宽和生态才不会在选型上反复折腾。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价