家家都有DeepSeek服务,如何谎称速度快?

B站影视 韩国电影 2025-03-09 20:56 3

摘要:因为H200单卡有140GB显存,可用单节点(8卡)方案部署。

不是人人都有“钞能力”,我们的故事,

从用单节点方案部署DeepSeek-R1开始。

为什么是单节点呢?

因为H200单卡有140GB显存,可用单节点(8卡)方案部署。

而H800和HI00显存80GB,需要双节点方案。

有卡了,就可以来玩DeepSeek。

世界是场游戏,是游戏就有作弊的玩家。

怎么作弊呢?等下说,

先看看芯片厂商AMD的官网技术博客。

网址在此:https://rocm.blogs.amd.com/artificial-intelligence/DeepSeekR1_Perf/README.html

时间是25年2月21日。

我相信哪怕是这几天的时间,AMD的性能指标也还在增长。

没办法,AI就是这么卷。

换个角度,这篇可以说是,

从AMD官网博客中学习大模型推理性能知识点

下图是两种芯片,英伟达H200和AMD MI300X,

用一个节点(8卡)跑出来的性能。

为什么要学这些知识点呢?

答案很简单,以防被忽悠。

话说,性能指标是一个非常关键的数值,

背后都是技术实力,

甚至可以说性能是技术实力的终极体现。

是骡子是马,你拉出来溜溜。

不过,现在是技术向上震荡期,

很多人对大模型性能指标不熟悉,

会有人借机在这个指标上面作弊。

别着急知道作弊手法,

在看懂作弊之前我们先了解如何公平,

对,公平比较两种芯片性能

我们先看懂图上的“已知条件”

图上都有什么信息呢?

我们都知道,

大模型推理分为两个关键任务,

有各自的生成时间:

一个是输入(Prefill任务)所用时间,

另一个是输出(decode任务)所用时间。

其实所有的性能几乎都可以分这两个阶段来观察。

大模型推理中有两个关键指标,

两个关键指标是:

吞吐量(Throughput)和延迟(Latency)

吞吐量通常指每秒生成的token数量,

而延迟是从输入到输出的时间。

时间非常关键,

每秒吞吐量越高,意味着计算机系统能在单位时间内处理更多的请求。

就是单位时间干的活越多越好。

当然,牛马也一样。

这张图告诉我们:

图中有两种芯片,

英伟达H200型号和AMD的MI300X型号,

为了公平比较两种芯片的性能,要统一测试,

为什么要统一测试?

这样才能看出处理相同工作量时,

哪个芯片速度更快、效果更好。

我们要用相同的“题目量”和“回答量”来进行测试,

也就是,统一处理4000个token(题目和回答加在一起)。

图中原话是:输入3200个token和输出800个token。

这样,两个系统都各自处理4000个token的信息量,

而且图中已知,每个推理请求中,平均向系统问出500个问题。

这样,测试“系统处理token数量”统一了。

这张图还想告诉我们几个技术概念,

吞吐量(单位:token/秒)

延迟(单位:毫秒)

下面,我们会把毫秒换算成秒。

而最大并发数(Max Concurrency)是什么呢?

就是衡量系统在同一时刻能同时服务多少个请求,

能让我们了解AI 系统在真实环境下对大量请求的抗压能力,

就像考场里同一时间安排多少考生一起考试的道理一样。

最大并发数,用Batch Size表示:

我们要根据不同的请求数量,观察系统性能分别是多少。

因为是测试,所以非常细致,

能让我们了解 AI 系统在真实环境下对大量请求的适应能力,

当推理请求数量(Batch Size),

分别是是1,2,4……128,

Batch Size1是只有1个请求,

Batch Size2,同时处理2个请求,

Batch Size4,同时处理4个请求,

以此类推,直到Batch Size128,

就是同时处理128个请求。

打个比方,当我们说Batch Size1,

代表只有1个人在考试,1个人用考试系统;

Batch Size2,代表有2个人一起考试;

以此类推,Batch Size128 ,

就意味着128个人同时在考试。

如果只有1 个人在考试(Batch Size1),

系统专心为一个考生服务,一般来说,速度慢不了;

如果有128 个考生一起考试(Batch Size128),

系统就要同时对128 个人的题目进行阅读、思考、回答,负担变大,

可能会增加等待时间。

我们再来看图,

在图上左下方读到的第一个数字是170,

单位tokens/s。

意味着:

已知总共4000个token的信息量,

当BatchSize1的时候,每秒处理170个token,

以这种速度来处理,

那需要的时间就是4000除以170等于23.5秒。

就是用23.5秒就能把这4000个token算完。

23.5秒在时间轴横轴上处于2万毫秒右边一点的位置。

没有明确写出来,但我们读图能读出来。

图片试图说明AMD芯片性能很好,

然而,我对AMD的这种广告没有什么兴趣。

我感兴趣的是:AMD这个厂商很良心,

他们的性能数据很清楚地告诉我们,

输入和输出的字数是多少(输入3200个token和输出800个token),

3200+800就是系统总处理的token数,

4000除以170等于23.5秒,

也就是说,decode任务时间是23秒,

也是恒定的塞进去的信息量就这么多。

好比,东西放进大模型里面多长时间能“出锅”,

需要测量一个客观的时间,

也就是,系统跑出来是几秒就是几秒。

生成速度,也就是多少秒生成多少token是一个硬指标,

是用总吞吐量除以测量出得时间得出来的。

这里要稍微计算一下了:

用图上的已知信息倒着推理两个信息。

当我们跑8张卡的H200的系统(单节点),

在Batch Size1的时候,情况如下:

情况一:输入3200,输出800,4000=3200+800

4000tokens除以170tokens/s等于23.53秒

估计decode时间大约为23秒,

再看decode的信息处理量是800token,

decode800tokens除以23秒等于35tokens/s。

看好了,这时候我要来“作弊”了,把输入和输出的数据互换一下。

情况二:输入800,输出3200,4000=800+3200

3200tokens除以34.78tokens/s,

就是每秒跑出来34.78个token,

虽然同样还是处理总共4000个token,

但是,用3200除以35okens/s等于91秒,

decode时间就会变得很长,91秒。

都是处理同样的信息量,调整输入和输出,

decode的时间从23秒变成了91秒。

这个技术细节非常重要。

有时候,厂商提供的测试数据是prefill和decode加在一起的,

当然,也可以说混在一起。

既然“混了”,“摸鱼”的机会就来了,

好比两个长跑运动员,

一个叫prefill,一个叫decode,

prefill跑得快,decode跑得慢,

至于为什么decode慢,

这个你的去问“注意力机制”这个家伙了,

都是它干的好事,这里不展开。

同样的一段长跑运动,

prefill和decode的速度应该分别记录,

假如想作弊,就把尽量长的路程给prefill跑,

它速度快,时间肯定就缩短了。

要是不懂,猛一看性能,觉得还挺快嘞。

还是那句话,性能是和采购决策相关的关键指标。

厂商AMD很客观,告诉你比例了(输入3200,输出800),

因为decode跑得慢,让decode少跑,也就是少干点活。

请注意,有些性能指标旁边标着“仅输出”(decode only)

这不是不可以,而是,拿“仅输出”的指标和整个推理的吞吐指标对比,

不讲武德。

总结一下:写性能,请把prefill和decode处理的工作量标清楚,谢谢。

最后预告下,过几天发的文章,

我会把图上所有的指标都算出来,会有新结论。

上一篇回顾:

《DeepSeek:为了这口醋,包了这顿饺子,为了数据,我造了模型》

来源:亲爱的数据

相关推荐