先说明一件事:这三个缩写放在一起,本身就是在讲"算力到底从哪来"的问题。无论你是刚装完PyTorch发现安装包还分CPU版和GPU版的新手,还是被老板一句"租个带GPU的服务器"搞得一头雾水的实习生,又或者只是好奇为什么老听人说TPU能跑大模型,这篇文章都能给你一个相对完整的答案。我尽量用干活的思路来讲,而不是从计算机组成原理教科书开始抄。
这些年我经手过不少算力相关的项目,早期折腾深度学习时也在CPU上硬跑过模型,后来逐步接触到GPU集群,再后来因为比赛和微调任务白嫖过Google的TPU,算是把这三类芯片都踩过一遍。说实话,CPU、GPU、TPU之间的区别,并不在于谁比谁更强,而在于它们各自被设计出来解决什么问题。搞清楚这一点,很多选型上的纠结会立刻消失。
1. 三种芯片先认识一下
很多时候我们把芯片当成一个黑盒子,觉得"CPU是电脑的大脑","GPU是打游戏用的","TPU是训练AI专用的",这样理解没错,但太粗糙了。为了让后面的实操不悬空,我们先把这三兄弟的本质分工聊透。
1.1 CPU:什么都能干的总指挥
CPU的核心思路是"通用"。它要面对的操作极其复杂,从操作系统调度、内存管理,到数据库查询、压缩解压,几乎什么活都得干。为了做到"什么都能干",CPU里塞了大量控制单元,负责指令译码、分支预测、乱序执行,还有复杂的分级缓存体系。所以CPU的逻辑控制能力非常强,能把乱成一团的任务拆解成一条条有序的指令序列,并且每一步都能根据上一步的结果动态决定下一步做什么。
你可以把CPU想成一个脑子转得极快、但只有一个人手的总指挥。它手里拿着复杂地图,每走一步都能思考下一步怎么走最优,问题的关键是一个时间点基本只能处理一条指令流(现在消费级CPU也就8个、16个物理核心,再算上超线程,能同时跑的任务数量依然很有限)。对于"顺序性强、逻辑复杂、每步都依赖前一步结果"的任务,CPU是毫无疑问的王者。
日常生活中的绝大多数场景,比如开浏览器、写文档、跑Node服务、操作数据库,都属于这类逻辑密集型的串行任务,所以CPU至今仍是电脑里最核心的计算单元,这也是"CPU是整个PC的大脑"这个说法成立的原因。
1.2 GPU:跑并行计算的劳模
GPU的思路和CPU完全不同。它生来就是为了处理大量可以被并行拆分的运算,最典型的就是图形渲染:屏幕上有几百万个像素点,每个像素的颜色计算相互独立,这简直是为并行计算量身定做的场景。为了同时处理海量像素,GPU把大量计算单元(在NVIDIA体系里叫CUDA核心,在AMD体系里叫流处理器)堆在一起,靠数量取胜,动不动就是几千个核心。
一个很形象的比喻:GPU像一个拥有几千号人的流水线工人团队。每个工人的数学计算能力其实不算特别强,单个处理速度可能还没有CPU快,但架不住人多,而且做的是同一种重复劳动,几千个人同时开工,吞吐量直接爆表。
现代GPU除了做图像渲染,也被大量应用于矩阵运算、科学计算、机器学习训练等任务。神经网络训练的本质就是大量矩阵乘法和卷积运算,这些运算天然可以被拆成非常细的并行子任务,GPU正好能满足这种需求。所以GPU从游戏显卡,逐渐变成了AI计算的中坚力量。
1.3 TPU:只认矩阵的专用打工人
TPU是Google为了解决自家深度学习推理和训练需求,专门设计出来的定制化专用芯片。它的名字Tensor Processing Unit(张量处理单元)已经说明了一切:它的核心任务就是张量运算,而这几乎完全围绕矩阵乘法和累加展开。
你可以把TPU理解成一条为了做同一道菜而专门改造的流水线。CPU能做的菜很多,GPU能做蒸煮炒炸一大类,而TPU几乎只会做你给它设定的那一道菜——矩阵运算。但因为这道菜在所有大模型训练里占据了绝对主导的计算量,所以TPU可以通过极端的专门化设计,在功耗和面积预算内堆出惊人的算力。
一个典型的例子是Google TPU v3。单颗芯片的BF16算力高达420 TFLOPS,这在同时期的GPU上是难以想象的指标。它能在深度学习任务中表现出色,主要归功于两个设计:第一,脉动阵列(Systolic Array)结构,让数据在计算单元阵列里像流水一样有序流动,大幅减少反复搬运数据的开销;第二,支持低精度计算,比如BF16格式,既保证了训练精度,又大幅提升吞吐量。
当然,有得必有失。TPU只能在神经网络训练和推理这类任务上发挥巨大威力,一旦让它去跑数据库查询,或者处理复杂的逻辑分支,性能和通用性会非常惨。它是一把专为某个钉子准备的锤子,打其他东西基本都不顺手。
| 维度 | CPU | GPU | TPU |
|---|---|---|---|
| 核心设计目标 | 通用逻辑处理 | 并行浮点计算 | 矩阵/张量专用运算 |
| 核心数量 | 4-64个 | 上千至数万个 | 脉动阵列海量单元 |
| 单任务处理速度 | 极快,主频高 | 单单元一般,胜在并行 | 单任务范围极窄,算力极高 |
| 最适合的任务 | 系统调度、逻辑分支、串行计算 | 图形渲染、AI训练、科学计算 | 大规模深度学习训练/推理 |
| 采购成本模式 | 已包含在电脑里 | 独显几万到几十万 | 基本不零售,云上按小时计费 |
| 典型代表 | Intel酷睿/至强、AMD锐龙/EPYC | NVIDIA RTX/A100/H100 | Google TPU v5e/v4 |
2. 为什么AI大潮把GPU和TPU推上了台面
如果你只看规格书,可能会觉得GPU核心数多,但单个核心能力弱,凭什么AI训练就得靠它?其实原因可以归结为一句简单的话:AI训练里绝大多数时间都花在矩阵乘法上,而矩阵乘法是天然可以大规模并行的任务。但要让这种并行真正发挥效率,还牵扯到硬件架构、软件生态、内存带宽等多个层面。
2.1 从渲染、挖矿到大模型:GPU的逆袭路径
GPU最早只是为图形而生的,但在发展过程中,硬件厂商发现图形渲染需要的矩阵运算、SIMT并行模型,和通用科学计算中的需求高度重合。于是NVIDIA在2007年推出了CUDA,直接打开了一个新世界的大门。从那时起,GPU不再是单纯的显卡,而成了通用计算卡。
后来的剧情大家都很熟悉:比特币挖矿潮让GPU全网一卡难求,深度学习热潮更是让GPU成为训练AI模型的标配。每次大模型发布,背后都是几千张A100/H100在跑。为什么会这样?因为Transformer架构的无论是自注意力机制还是MLP层,本质上都是在做大规模的矩阵乘法和通道之间的张量变换。GPU强大的并行吞吐能力,恰好能把训练时间从几年压到几周。
GPU也不只解决了算力问题,还解决了"谁来写代码"的问题。CUDA生态的成熟度是其他任何计算平台都难以企及的,从PyTorch、TensorFlow到各类推理引擎,几乎都有一个默认的CUDA后端。开发者写一套代码,只要机器上有NVIDIA显卡,就可以无缝跑起来,这种生态优势非常重要。很多人觉得GPU只是"硬件比较强",实际上它真正的护城河在于CUDA软件生态。
2.2 TPU的登场:它不是在跟GPU比,而是在跟矩阵运算比
Google在2016年发布第一代TPU的时候,目标很明确:降低运行自己服务所需的算力成本。当时的阶段,TPU主要是用来做推理,2017年之后推出的TPU v2、v3,则进一步支持训练,并且做成Pod形式,可以让多个TPU卡通过高速互联组成大规模集群。
有一个很有意思的细节:TPU并不直接支持所有神经网络算子,它将整个算子图编译成可以在脉动阵列上运行的矩阵乘法序列。所以当你用PyTorch或JAX写一个模型时,需要专门针对TPU做一些适配,比如避免某些GPU上常见的动态形状算子、自定义kernel等。很多人第一次在Kaggle上免费使用TPU跑模型失败,就是因为代码里混入了GPU特有的逻辑。
为什么Google愿意花大钱做TPU?因为在大规模神经网络训练中,矩阵乘法占的比例实在太高了。用TPU这种专用芯片,在相同功耗和成本的条件下,能获得远超通用GPU的算力,这对Google这种超大规模AI业务的成本控制至关重要。TPU的成功也带动了一批NPU、AI ASIC加速卡的繁荣,本质逻辑都一样:放弃通用性,追求单一目标的最大化性能。
2.3 三者怎么分工:预算有限时怎么选
很多人在买电脑、租服务器时都会纠结:到底该把钱花在CPU上还是GPU上?我的建议是不要只看单一维度,而是看你日常运行的负载是什么类型。
- 只是想跑轻量级推理、处理数据、做代码开发:普通CPU完全够用,GPU更多是锦上添花。
- 要训练中小型模型,或者做科学计算、渲染:GPU才是核心算力来源,CPU只需要保证数据喂得够快、不会拖后腿就行。
- 考虑在云端大规模训练大模型:这时候CPU往往也要跟着升级,因为数据预处理、分布式数据加载都依赖CPU。
需要特别提醒一点:不要为了省预算买很老的服务器CPU配一张很新的高端GPU。因为CPU性能太弱处理不了数据加载,GPU会在每个step之间长时间空转。很多人说"GPU占用率上不去",排查半天,发现瓶颈在CPU数据加载上,这种案例太常见了。
如果要租用或选购GPU服务器,别只盯着显存大小,还要关注显存带宽、GPU架构代数、卡间互联(比如NVLink)、内存通道数。比如同样是24GB显存的卡,专业计算卡和游戏卡在训练上的表现差距极大,因为专业计算卡在ECC内存、显存带宽、低精度算力上往往有硬优势。天梯图可以当参考,但最好还是拿你真实要跑的模型去实测一下。
3. 从PyTorch到深度学习:一套代码怎么在三种芯片上跑起来
理论聊再多,不如实际跑一次。这章我带大家从深度学习最常用的框架PyTorch出发,看看同一份代码切换CPU、GPU、TPU的完整过程和踩坑点。
3.1 装PyTorch时CPU版和GPU版到底差在哪
如果你上PyTorch官网安装页面,会看到安装命令里有一行--index-url https://download.pytorch.org/whl/cu118之类的参数,也有纯CPU版命令。很多新手不理解:我机器上没NVIDIA显卡,但为什么官方默认命令下载的安装包会那么大?因为默认安装包从头到尾都是为CUDA环境准备的,它打包了和CUDA运行时相关的各种库,即使你机器上只有一个CPU,安装后也会提示"CUDA不可用",但整个包会白白占用大量磁盘空间。
如果你确定自己一辈子用不上CUDA,只想在CPU上跑PyTorch,建议直接装CPU版本,体积小,启动加载也更快。不过要说明的是,CPU版和GPU版的代码是同源的,API接口完全一致,只是后端是否有CUDA算子的区别。如果你不确定以后会不会换GPU机器,装默认的CUDA版也没有问题,只要检测到GPU就能自动切换。
再说一个特别常见的追问:在GPU上训练的代码和CPU上训练的代码有没有区别?答案是没有本质区别。PyTorch已经封装好了设备转换:
import torch if torch.cuda.is_available(): device = torch.device("cuda") else: device = torch.device("cpu") model = MyModel().to(device) data = data.to(device)只要保证模型、输入数据都切换到同一个device上,逻辑完全一样。很多新手报错"CUDA error: device-side assert triggered",往往就是因为数据没挪到GPU上,或者前向传播输出的张量仍在CPU,而在GPU上计算梯度时两个设备对不上。
3.2 在Kaggle上白嫖TPU跑一次微调
Kaggle上每个账户每周都有几十小时的GPU和TPU免费额度,其中TPU是很多打比赛的人最喜欢薅的羊毛。TPU在Kaggle上通常是TPU v3-8,也就是8张TPU v3芯片共享同一个主机内存系统,算力非常可观,远高于免费的GPU。但问题在于:TPU并不默认被PyTorch支持,需要额外安装PyTorch/XLA这个中间层。
装好后,代码逻辑就变成了这样:
import torch import torch_xla import torch_xla.core.xla_model as xm if xm.is_master_ordinal(): print("TPU is available") device = xm.xla_device() model = MyModel().to(device) # 训练循环里,除了常规的loss.backward(),还需要增加一步: xm.optimizer_step(optimizer)如果你直接在TPU上跑GPU写好的训练循环,会遇到一个很尴尬的现象:每个step似乎能跑起来,但速度极慢,或者直接OOM。深层原因是XLA编译器在编译阶段就要把模型计算图完整整定为能在TPU上运行的指令序列,如果图中间混入了一些不支持的算子(比如动态shape操作、某些非矩阵化的自定义函数),就会触发fallback到CPU逻辑,导致整体速度大幅下降。
我在一次Kaggle比赛里用TPU微调一个小型Transformer,第一版代码几乎和GPU版本一模一样,结果发现loss下降极慢。后来逐个排查,发现有一个torch.topk算子触发了XLA fallback。把它替换成argmax之后,速度立刻恢复了。所以如果你想用TPU跑模型,建议把关注点放在算子图是否"TPU友好"上,而不是模型的浮点计算量。
3.3 数据加载与设备切换的实战代码
一套靠谱的训练脚本,应该把设备检测、数据搬移、模型初始化都拆成独立模块,方便切换硬件时有清晰的处理位置。分享一个我常用的模板思路:
import torch from torch.utils.data import DataLoader def get_device(): if torch.cuda.is_available(): return torch.device("cuda") try: import torch_xla return torch_xla.core.xla_model.xla_device() except Exception: return torch.device("cpu") device = get_device() def collate_fn(batch): # 在整理batch时就提前把设备切换好,减少后续搬运开销 xs = torch.stack([x for x, y in batch]).to(device) ys = torch.tensor([y for x, y in batch]).to(device) return xs, ys loader = DataLoader(dataset, batch_size=32, collate_fn=collate_fn, num_workers=4)这里num_workers=4特别值得说。在GPU或TPU训练时,数据加载器的多进程可以并行做图片解码、增强、格式化等预处理。否则GPU算完一个batch后要空等CPU把下一个batch准备好,这会导致GPU利用率出现明显周期性下降。很多人观察"GPU占用率不高但训练很慢",问题往往就出在数据加载端。
4. 常见的"以为坏了其实是正常"的排查实录
每天都会有人对着任务管理器里的CPU占用率、GPU显存占用数据抓狂,也会有人跑着收集任务时看到一堆看起来像报错的信息不知所措。这部分我挑几个搜得最多的实际问题展开讲一下。
4.1 CPU占用高:dcom、wmic、AVX错误这几个坑
先说"服务主机DCOM占用CPU高怎么解决"。Windows服务主机(svchost.exe)里的DCOM(分布式组件对象模型)是一个历史遗留组件,负责在不同进程间分发调用。占CPU高通常有几个原因:某个废弃的COM组件反复尝试启动,权限配置错误导致系统每几秒就要重新校验授权,或者某个第三方例程在后台疯狂注册COM对象。
排查思路其实不复杂。打开事件查看器,在Windows日志-系统里筛选来源为DistributedCOM的记录,找到报错消息里的CLSID和APPID,然后在注册表HKEY_CLASSES_ROOT\CLSID\{你的CLSID}里看这个组件属于哪个程序,把来源程序卸载或修复掉就可以解决。别一上来就关闭DCOM服务,那样系统会不稳定。
再说一个很多人踩过的新坑:Windows 11或部分较新版本的Windows Server里,执行wmic cpu get processorid会直接报一个Cannot run program "wmic"之类的错误。这不是系统坏了,而是新版Windows默认不再自带WMIC命令行工具,改用PowerShell路径了。替代命令是:
Get-CimInstance Win32_Processor | Select-Object ProcessorId顺便说一句,如果你在用某个自动化脚本直接调wmic,在Java里最容易遇到问题。ProcessBuilder虽然接受字符串数组作为命令参数,但你传"wmic cpu get processorid /value"整个字符串进去是没法执行的,得拆成new String[]{"wmic", "cpu", "get", "processorid", "/value"},或者干脆换成兼容性更好的PowerShell命令。
还有一个高频报错是"Cell Ranger error: this CPU does not support AVX, which is required"。这跟芯片本身完全没关系,是软件编译时假定CPU支持AVX指令集,而老CPU不支持。检查一下自己的CPU型号,如果实在没有AVX,就只能换机器,或者找软件作者要旧版编译包。
4.2 GPU和CPU内存占用都不高,但训练就是卡
这是我在很多训练任务里遇到过的经典场景:用nvidia-smi看显存没满,CPU占用也只有20%,但训练loss跑得像乌龟爬。这个现象的核心原因是:计算瓶颈根本不在这两块可见的资源上。
最常见的隐藏瓶颈是"数据加载开销过大"。有些模型每个样本需要做大量图像解码、归一化、增强,虽然CPU整体占用不高,但主线程里单个step的耗时极长。此时哪怕GPU很快,也只能干等着。解决办法:一是增加num_workers,让数据预处理并行化;二是检查CPU缓存命中率,如果内存只有8GB而数据加载需要大量随机读,可能频繁缺页。
第二个隐藏瓶颈是"GPU kernel启动开销"。如果你的模型很小,batch size也很小,GPU每次执行一个kernel都需要提交、启动,这种调度开销可能比kernel本身执行时间还长,结果就是GPU几乎都在等调度。解决办法是增大batch size,或者用CUDA Graph把多个kernel合并成一个图,减少启动次数。
第三个容易被忽略的是PCIe带宽。尤其你用外接显卡或者在虚拟机里直通GPU时,PCIe通道数不足会导致CPU往GPU搬运参数的延迟大幅升高。可以跑一个小测试,把同一份网络在PCIe x1和x16上对比下训练step时间,差距会很明显。
4.3 看天梯图、跑压力测试:如何科学评估算力
经常有人拿服务器CPU天梯图来比较不同类型的处理器,比如看Intel至强和AMD EPYC怎么选。说实话,天梯图只是一个模糊的分数参考,它无法反映真实负载下的表现。比较靠谱的做法是直接跑你做实际业务的负载测试。比如你搞编译,那就编译同一个项目看时间;搞数据库,那就跑基准测试;搞AI,那就用你真实的模型和batch size跑几个epoch看耗时。
如果你拿到一台GPU服务器,想快速确认GPU是不是正常、散热和频率有没有问题,可以跑一下gpu-burn压力测试工具。使用方法很简单:
git clone https://github.com/wilicc/gpu-burn cd gpu-burn make ./gpu_burn 60这个工具会跑一个持续一分钟的高负载计算,把GPU的算力顶满。你能在nvidia-smi里看到显卡温度、功耗、风扇转速迅速拉升。如果跑到中途出现死机、报错、温度过高等,说明这块卡或者散热系统有问题。
我还常用几个实用命令来快速定位用到了哪块GPU:
# 列出所有GPU基本信息 nvidia-smi -L # 查看每张GPU的型号、显存、进程占用 nvidia-smi # 更精细地查看占用进程PID nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv很多人在多卡机器上跑模型,发现某张卡占满了,另一张卡闲置,想确认自己用的是哪张卡,可以看环境变量CUDA_VISIBLE_DEVICES。在代码里你也可以随时打印:
import torch print(torch.cuda.current_device()) print(torch.cuda.get_device_name(torch.cuda.current_device()))4.4 手机CPU虚焊会自愈吗?这个问题真的别再信了
有一个搜索热词让我有点哭笑不得:手机CPU虚焊会自愈吗。虚焊的本质是焊点出现物理断裂,芯片和主板之间接触不良。有些场景下温度升高,焊点热胀冷缩可能偶尔恢复接触,所以机器会表现成"有时能开机有时不能开机",好像自己好了。但虚焊不会真的"自愈",它只会随着使用和温度变化反复复发,最后彻底断掉。
正确的处理方式是补焊,专业点叫"重植锡球"或"BGA返修",需要加热台、植锡网、锡膏等工具,不建议普通人自己动手。如果你手机还在质保期,直接送修最好。这个话题虽然不算CPU/GPU/TPU的技术主流,但它确实属于"芯片硬件故障排查"的范畴,很多人搜到它才来了解芯片知识,所以顺便讲清楚。
5. 实际选型与资源规划:别再盲目堆配置了
聊完硬件原理和排查方法,最后说说选型这件事。不管是个人装电脑,还是公司采购服务器,很多人都会犯"参数焦虑"的毛病:觉得核心数越多越好,显存越大越好。但实际干起活来,不一定匹配你的任务形态。
5.1 个人开发与学习场景的配置建议
如果你是学生或者独立开发者,主要跑一些中小规模的模型训练与推理,我的建议是别一上来就考虑买顶配卡。先把自己的任务需求量化:模型参数量、训练数据量、batch size要求。比如你只是想微调一个7B的LoRA模型,那么24GB左右的显存已经完全够用,再往上追大显存,边际收益远低于钱包消耗。
CPU方面,与其追求顶级核数,不如关注单核性能和内存带宽。很多AI场景,CPU部分主要在跑数据加载和预处理,这类任务对单核性能相对敏感。我自己的经验是:一套稳定的AMD锐龙平台,配64GB内存,再加一张24GB显存的卡,能覆盖绝大部分中小型深度学习任务。
租用服务器也是同样的逻辑。现在云服务商提供各种GPU云服务器,比如租一台带A10或A100的实例来做微调,关键要搞清楚它到底允许多大batch size、能否满足分布式训练需求、存储IO是否跟得上。不要只看"多少张卡",要问清楚"卡间互联带宽是多少",因为很多微调任务都要频繁同步梯度。
5.2 集群规模的规划思路
如果你负责的是好几台GPU服务器的集群运维,这时候重点就不只是单卡性能了,还包括调度、网络、存储这些外围设施。我见过太多团队在买了高配GPU后,因为网络带宽不够,导致分布式训练效率极低,甚至比不上单卡训练。分布式通信每轮同步梯度,如果卡间走的是低带宽的普通以太网,那你模型同步时间会比计算时间还长。
这种场景下要不要加CPU核数?要,但主要是为了跑数据预处理和分布式调度,不是为了参与训练计算。所以集群架构上,一般会把存储节点、管理节点、计算节点分开,管理节点用中高配CPU加大内存,计算节点则尽可能堆GPU和GPU互联带宽。
有一个常见的误解是:因为“TPU算力比GPU强”,所以只要能用Google TPU就比GPU好。但TPU在云上的使用模式非常独特,租用价格虽然按小时计费,但每个轮次是按TPU Pod为单位租赁的,不是一张卡能随便租着玩。Kaggle那种免费TPU更适合固定时长的小规模微调。如果你只是做一次简单的GPU推理服务,老老实实租GPU服务器反而是最高效的方案。
5.3 重点关注:软件栈的适配程度
我最后想强调的其实是软件栈的问题。选芯片,不只是选硬件,更是选生态。CPU的生态自不必说,任何操作系统和语言都支持。GPU领域,NVIDIA的CUDA生态异常成熟,几乎所有AI框架默认支持。TPU、昇腾这些专用加速卡,计算能力虽然强大,但很多开源软件的支持并不如CUDA那么顺滑。
比如华为昇腾芯片,它本质上是一款面向AI计算的专用加速芯片,和TPU的设计思路有相似之处。虽然现在有一些适配框架,但如果你要在上面跑Stable Diffusion或者其他PyTorch生态的模型,很可能需要专门写适配代码,甚至要等上游框架贡献者慢慢提供官方支持。所以做技术选型时,我会优先问一句话:我想跑的代码,在这个硬件上有没有现成的、稳定的运行路径?
我自己在本地折腾过一个旧项目,代码完全依赖CUDA的某个扩展库,换到某NPU加速卡上就完全跑不了。后来只能把这块NPU当作纯推理设备,训练还是在GPU上做,推理才在NPU上跑。这个折中方案能跑,但开发效率和团队协作复杂度高了不少。如果你想省心,选NVIDIA是最稳妥的默认选项,除非你有明确的特定场景和对应的软件适配能力。
6. 写在最后:算力选择的本质是匹配问题
我常对刚入门的朋友说:CPU、GPU、TPU到底哪个更好,真的不存在一个通用答案。它们对应的是不同的计算模式、不同的软件生态、不同的成本结构。CPU像一位全能管家,什么杂事都能处理好;GPU像一个庞大的工人编队,特别适合重复性的并行劳动;TPU则是一条需要专门设计的、只加工特定半成品的流水线。搞清楚你手头的任务属于哪一类,你就知道该向谁求助了。
我个人在实际项目中的体会是,很多时候项目的瓶颈不在单卡算力,而在于数据、网络、软件适配这些"看不见的旁边"。所以做技术选型时,一定把自己真实要跑的负载原封不动地搬上去试一遍,别只被参数表和天梯图忽悠。最后再分享一个非常实用的小技巧:当你听到别人说"这卡能跑多少TFLOPS"的时候,先问一句"这个算力是在什么精度下测的、有没有算稀疏加速"。因为不同精度下的算力数字天差地别,没有这些前提的算力对比本质上是无效对比。想清楚这一点,你在选型时就能少踩不少坑。