推荐系统线上能跑多大的模型
2025-11-21
| 2025-12-17
Words 2027Read Time 6 min
type
status
date
slug
summary
tags
category
icon
password
priority
本文不是从系统优化角度谈复杂的模型的部署和优化问题,而是从行业成本角度,看线上推理多复杂的模型是可以满足成本及ROI要求的。
做一个假设:
  • 电商推荐行业,主要是更熟悉成本核算
  • 部署标准的Transformer作为排序模型,参考OneTrans结构
  • 参数规模对齐qwen2的系列模型,更直观看看能跑哪个尺寸
 
我们得思路是,先算清楚每一个请求可用的GPU TFlops,然后讲清楚怎么用Transformer做排序,对比qwen2各个尺寸的每请求的TFlops,就可以知道大概能跑什么样的模型了。

成本约束计算

思路:我们计算清楚每一个请求的预期GMV,然后GMV的一部分可以用于支付推荐系统的机器成本,其中一部分用于GPU在线推理,考虑推理的MFU和GPU使用成本,计算出能买多少次浮点运算。
核心公式:
变量解释:
  • Expected GMV:预期GMV,可以用曝光数*CTR*CVR*avgPrice计算得到
  • Tech Ratio:有多少比例能用于推荐机器成本。
  • Online Ratio:推荐机器成本有多少用于线上。
  • GPU Ratio:线上的服务中GPU占了多少成本。
  • GPU Peak TFLops:GPU的峰值TFlops,取决于GPU型号。
  • MFU:实际的GPU利用率。
 
这些参数我让大模型给出P20、P80和均值,用于估计平均和范围,它给出的结果如下:
参数
含义
P20 (保守)
Mean (中位)
P80 (乐观)
调整逻辑
Exposure
有效曝光数
6
10
14
排除无效刷新和极深浏览
CTR
点击率
1.5%
2.5%
3.5%
排除冷启动和作弊流量
CVR
转化率
1.0%
2.0%
3.0%
排除误点和超高转化大促品
AvgPrice
客单价 (CNY)
¥40
¥80
¥120
聚焦腰部商品,剔除9.9包邮和奢品
Tech Ratio
算力成本占比
0.15%
0.25%
0.35%
行业成熟期通常在0.2%-0.3%
参数
含义
P20 (保守)
Mean (中位)
P80 (乐观)
调整逻辑
Online Ratio
在线算力占比
35%
40%
45%
在线/离线比例相对稳定
GPU Ratio
在线中GPU占比
30%
50%
70%
随着深度模型应用,GPU占比提升
Price
单卡时价 (CNY)
¥4.5
¥3.0
¥2.0
P20对应按需实例,P80对应Spot/自建
Buying Power
1元能买的TFLOPS*
160,000
240,000
430,000
基于L20 (239T) 和 A30 (165T) 换算
MFU
推理有效利用率
25%
35%
45%
推理场景MFU很难超过50%
代入上面的公式,得到:
场景
场景描述
有效算力约束 (Effective TFLOPs)
P20 (保守)
普通用户/长尾品类/低转化时段
0.023 TFLOPs
Mean (预期)
日常标准流量
16.8 TFLOPs
P80 (乐观)
大促/高净值用户/核心场景
375.4 TFLOPs
我们先拿到第一个数值,电商行业的平均水平可以跑每Request 16.8TFlops的模型
 

模型TFlops计算

 
我们假设使用Transformer(LLM)用于推荐最复杂的排序模型,使用的方式参考OneTrans:
 
再简述下OneTrans如何使用Transformer处理精排推理的,它先在用户序列(长度L)上做一次计算,然后把序列的KV Cache准备好,然后再计算用户、物品和上下文特征,以token输入,N个候选,每个候选K个特征token。
它非常类似大模型的Prefill和Decoder,只不过Decoder了N次,每次K个token。它是非常标准的LLM计算模式,所以后面对比qwen不同尺寸模型,处理计算复杂度是容易且一致的。
计算模型的TFlops有两种方式:
  • 精细计算:知道Transformer的参数,如隐藏层维度,FFN的intermediate维度,层数等信息,然后按prefill和Decoder各自计算,计算Attention和FFN部分,相加得到结果。
  • 简便计算:只需要知道模型的Dense参数,每token前向的Flops为参数量*2,然后乘以L+N*K(用户长的tokens+N个候选的NK个tokens)。这种计算方式忽略了Attention里的QK^T计算,这是由于在不考虑长上下文情况下,LLM的主要算力是QKV和FFN计算贡献的,模型的size越大Attention的算力越不需要计算。
我们优先采用第二种,先做粗略估计。如果不计算Attention部分,模型就已经不满足成本约束了,那它铁定做线上推理。
我们假设一个例子:
  • 用户序列1K
  • 候选300个物品
  • 每个物品16个特征token
然后只需要用Dense的参数*2*(1000+300*16)就能得到模型单Request的TFlops需求。
 
直接列出计算结果:
模型尺寸 (Size)
总参数量 (Total)
Dense 参数 (推理核心)
隐藏层 (Hidden)
FFN 维度 (Inter.)
层数 (Layers)
预估TFlops
0.5B
0.49 B
0.36 B
896
4,864
24
4.18 T
1.5B
1.54 B
1.31 B
1,536
8,960
28
15.3 T
3B
3.09 B
2.77 B
2,048
11,008
36
32.1 T
7B
7.61 B
6.53 B
3,584
18,944
28
75.7 T
14B
14.7 B
13.1 B
5,120
13,824
48
152 T
32B
32.5 B
31.0 B
5,120
27,648
64
360 T
72B
72.7 B
70.2 B (约)
8,192
29,568
80
814 T
可以初步看出,0.5B和1.5B尺寸的Transformer用户排序模型,在相对标准的成本约束(16.8 TFLOPs)下是不存在成本瓶颈的。当然,继续拉高用户序列从1k到8k,扩充候选打分条数,增加特征tokens数,都使得1.5B尺寸模型不满足成本约束,需要在效率、资源分配和利用以及模型结构优化做一些调整。
 
大家可能会担心简易计算忽略了Attention的Flops,会不会偏差较大,我们使用qwen2-0.5B做一次精算。Dense参数本身会发生一次矩阵乘加 2 Flops运算外,Attention忽略了QK^T和Softmax @ V的计算。
prefill 阶段: 的flops都是 ,考虑层数一共是,具体计算是约0.086TFlops。
decoder 阶段:生成的decoder_len个tokens每个都和前面产生计算,所有token看到的KV总数是从prefill_len累计到prefill_len+decoder_len-1, ,flops是 ,代入是0.416 TFlops。
精确估计是4.652TFlops,和快速估算的4.18T差异不大,且参数量越大差异的百分比越小。
 

一些思考

对于判别式模型,由于存在候选数量和特征tokens的乘积,这里占据了300*16=4800个token,且无法优化,用户序列1k可以通过KV Cache预先计算、金字塔逐层缩减优化。这部分候选的target aware特征输入即是优势,又是模型规模的限制。
而生成式可以在线直接产生一条推理结果,我们把之前的计算改成候选数为1,作为生成式TFlops。
模型尺寸 (Size)
总参数量 (Total)
Dense 参数 (推理核心)
判别式TFlops
生成式TFlops
0.5B
0.49 B
0.36 B
4.18 T
0.72T
1.5B
1.54 B
1.31 B
15.3 T
2.62T
3B
3.09 B
2.77 B
32.1 T
5.54T
7B
7.61 B
6.53 B
75.7 T
13.06T
14B
14.7 B
13.1 B
152 T
26.2T
32B
32.5 B
31.0 B
360 T
62T
72B
72.7 B
70.2 B (约)
814 T
140.4T
从这个表格来看,如果我们能支付地起1.5B的判别式模型,那么生成式就可以上一个7B的模型。同样成本下,是小模型+target aware交叉有优势,还是大模型生成式有优势,正式未来需要探索的。
 
  • 思考
  • 排序模型
  • 推荐算法日报 - 2025-12-15Talent Dilution Roofline:你的算法团队可能不需要再招人了?
    Loading...