先说结果,大模型部署预算主要影响因素:1.模型大小 2.每秒平均需要输出的token数
ps : 先叠个甲,计算公式是由外网或是其他博客查找获得,在文章书写过程中,会尽量将数据或公式来源以链接形式呈现。书写日期:2023.9.26。
1.确定需求:
这里以:峰值10W人,平均每秒输出token以10W用户在12H内每人输出5000token计算,分别估算7B,13B,70B的部署成本(7,13,70是训练数据的样本量,单位是10亿)
2.成本估算
2.1 云服务器租用成本
2.1.1 服务器供应商选择:
常见的服务器供应商有:AWS(亚马逊),阿里云,腾讯云,华为云等,部署价格基本在同一级别上,这里我选择以个人使用比较多的腾讯云为例,实例部署价格各自官网都能找到,所以这里就单提供腾讯云链接以作参考:腾讯云GPU实例部署定价
大模型部署基本都有GPU的部署需求,腾讯云实例中,使用的GPU适用于推理阶段的主要是英伟达Tesla T4以及英伟达A100,当然如果有特定需求,也可以选取V100等型号。
这里贴上T4,A100的具体参数以作参考:
T4:单精度算力:8.1TFLOPS * 16G
A100-40G:单精度算力:19.5TFLOPS * 40G
2.1.2 算力需求:
参考依据:算一笔细账,ChatGPT、文心一言这类大模型到底要消耗多少GPU?
目前基本所有的模型都支持单精度,所以这里以单精度算力为例。
单一用户单次交互算例消耗 L*D*N = 9 * 1000 * 120 * 96 = 103,680,000 = 103百万FLOPs
L:用户问题的输入长度于模型回答的输出长度之和(以输入50token,输出950token为基准,测试时10汉字换算17token,在中文环境下,一个token约等于9bit)
D:模型维度 = 120(GPT模型参数)
N:模型层数 = 96(GPT模型参数)
这里以GPT的模型维于模型层数来估算llama2的算力需求。(数据肯定与实际有出入,但由后续计算可以看出,这对于成本的影响微乎其微,所以便以gpt来估算llama2,好吧我承认我没找到更具体的数据)
假设需要在0.5s内完成响应,算力需求 = 206 百万FLOPs/s
一张T4可以同时支持 = 8.1*10^12 / 206*10^6 4W 人
一张A100可以同时支持 = 19.5*10^12 / 206*10^6 9.5W 人
2.1.3 显存需求:
参考依据:LLM 训练时GPU显存耗用量估计
一般我们都使用单精度也就是float32,每10亿个参数,占用约4G显存(实际时10^9 * 4 /1024/1024/1024 = 3.725G,为了方便计算,同时便于提供更优性能,取4G),其他精度见下表:
dtype | 每10亿参数需占用内存 |
float32(单精度) | 4G |
float16(半精度) | 2G |
int8 | 1G |
int4 | 0.5G |
根据上述内容,可以大致估算出7,13,70三个模型的显存要求:(单精度)
model | 显存需求(单精度) | GPU配置(T4-16G,A100-40G) |
7B | 28G | T4*2 / A100*1 |
13B | 52G | T4*4 / A100*2 |
70B | 280G | A100*7 |
ps:A 100是有80G显存版本的,但腾讯云上用的时40G的那款
2.1.4 cpu 需求
ps:这段内容仅供参考,当时没有考虑到利用gpu进行模型推理,后面有时间我重新捋一下
这里以DDR4-2133 为例,该cpu数据传输速度为21.3GB/s
我们输入1token到模型输出需要经历1.加载模型 2.推理(处理)
以:峰值10W人,平均每秒输出token以10W用户在12H内对每人输入5000token计算,平均每秒输出约1.2Wtoken
基本计算公式:
模型大小/(单个cpu传输速度*挂载cpu数量)*token数量 + 处理时间*token数量 = 1s
反解出挂载cpu数量
以7B模型为例。模型大小约28G,取T4(T4实例最多一张GPU挂载45核cpu)
28G/(21.3GB/s*45x)*12000 + 206*10^6*12000/(8.1*10^12*x) = 1,求得 x = 350张T4
2.1.5 费用计算:
综上:单一GPU挂载CPU数量是影响最后价格的最大因素,A100相较T4价格更贵,这里取T4挂载45核cpu的实例为服务器选择对象
7B部署总月租 = 350 * 4500 = 157(百万/月)
13B,70B更换模型大小套用公式即可
2.2 公网宽带费用
参考依据:腾讯云公网网络费用
以全程峰值(10W人),每个用户平均约 10token/s基准计算
带宽 = 9*10b/s*100,000=9,000,000=9Mb/s=1.125MB/s
然后套用公网网络费用计算得(稳定情况下包月合算):
广州、上海、南京、北京、香港、新加坡 | 475元/月 | ||
成都、重庆 | 422元/月 | ||
雅加达、东京 | 445元/月 | ||
多伦多、硅谷、弗吉尼亚、曼谷、孟买、圣保罗 | 550元/月 |
如有错误,烦请指针,欢迎留言讨论。