LLM - 训练与推理过程中的 GPU 算力评估

这篇具有很好参考价值的文章主要介绍了LLM - 训练与推理过程中的 GPU 算力评估。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LLM - 训练与推理过程中的 GPU 算力评估,LLM,人工智能,GPU,算力

目录

一.引言

二.FLOPs 和 TFLOPs

◆ FLOPs [Floating point Opearation Per Second]

◆ TFLOPs [Tera Floating point Opearation Per Second]

三.训练阶段的 GPU 消耗

◆ 影响训练的因素

◆ GPT-3 训练统计

◆ 自定义训练 GPU 评估

四.推理阶段的 GPU 消耗

◆ 影响推理的因素

◆ 自定义推理 GPU 评估

◆ 计算差异

五.基于 Token 的计算方式

六.总结


一.引言

LLM 大模型时代,GPU 显卡的算力至关重要,无论是训练还是推理都离不开大规模 GPU 的支持。由于工作需要,需要评估 LLM 任务所需显卡算力,搜了一下发现网上关于 GPU 评估计算的文章并不多,特此记录,有不妥的地方欢迎大家评论区多多交流。

二.FLOPs 和 TFLOPs

介绍 GPU 算力评估之前,首先我们需要了解下 GPU 计算能力的常见评估指标。

 FLOPs [Floating point Opearation Per Second]

        表示设备每秒所执行的浮点运算数量。

 TFLOPs [Tera Floating point Opearation Per Second]

        表示设备每秒执行一万亿次浮点运算的数量,即 10^12 次方。

其中浮点运算是指涉及小数点的计算,例如加减乘除。TFLOPs 比 FLOPs 单位更大,其用于衡量计算机或处理器的更高性能。以 L40S 为例,在精度为 FP32 的情况下,其算力可达 91.6 TFLOPs,而 A800 则只有 19.5 TFLOPs,RTX 3060 大约是 12.5 TFLOPS。如果是超级计算机其 TFLOPS 性能指标可达 1000 万亿次每秒。

LLM - 训练与推理过程中的 GPU 算力评估,LLM,人工智能,GPU,算力

三.训练阶段的 GPU 消耗

影响训练的因素

计算前先看下训练阶段有哪些因素会影响训练的进程。

- 训练数据大小

- 模型参数规模

- 训练 Epoch 次数

- 显卡算力

GPT-3 训练统计

LLM - 训练与推理过程中的 GPU 算力评估,LLM,人工智能,GPU,算力

上面我们介绍了 FLOPs 和 TFLOPs,这里 ZettaFLOPs 代表每秒十万京 (10^21) 次的浮点运算,不同指标之间主要是单位的差异。以 GPT-3 为参照,其为 1750 亿参数的模型,45 TB 训练数据,训练一次大约需要 175 ZettaFLOPs 即 1.75 x 10^23 次浮点数运算。由于这里我们没有获取到 175 ZFLOPs 是一个 Epoch 还是完整训练,所以后续的计算我们先统一按完整训练所需为参照。

自定义训练 GPU 评估

这里假定我们训练的模型是 LLaMA-33B,参数量为 330 以,训练数据量为 50G,GPU 算力以 A800 下 FP32 计算即 19.5 TFLOPs,则训练该模型需要 GPU 算力为:

LLM - 训练与推理过程中的 GPU 算力评估,LLM,人工智能,GPU,算力

NeedFLOPs = (330 / 1750) * (0.048828125 / 45) * 1.75 * 10^23 FLOPs

我们使用设备为 A800,则其可提供的算力为:

CalcByA800 = 19.5 * 10^12 FLOPs

最后结合我们需要的天数,例如训练 5 天结束,则 5 天的 s 数为:

TrainTime = 86400 * 5

最终所需 GPU 数量为:

GPUCount = NeedFLOPs / (CalcByA800 * TrainTime)

为了方便计算我们直接改写为 Python 代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
    Returns the estimated number of GPUs

    Parameters
    ----------
    args_num : 当前模型参数数量,单位为 亿
    data_size : 当前训练数据大小,单位为 GB

    Returns
    -------
    count : 所需 GPU 数量, 未向上取整
"""


def calc_gpu_num(_args_num, _data_size, _train_days):
    need_flops = (_args_num / 1750) * (_data_size / 45) * 1.75 * 10 ** 23
    calc_by_a800 = 19.5 * 10 ** 12
    train_time = 86400 * _train_days
    gpu_count = need_flops / (calc_by_a800 * train_time)
    return gpu_count


if __name__ == '__main__':
    args_num = 330 # LLaMA-33B
    data_size = 0.048828125 # 50G
    train_days = 5 # 训练5天
    count = calc_gpu_num(args_num, data_size, train_days)
    print(count)

计算得到 count = 4.250628165558721,我们向上取整可得 5 天训练 50G 数据的 LLaMA-33B 模型需要 5 张 A800,不过这里并未考虑显存或者性能损耗等问题,只是粗略估算。

四.推理阶段的 GPU 消耗

影响推理的因素

- 输入输出数据

- 模型参数规模

- 显卡算力

推理阶段需要计算输入与输出的文本之和,实际计算中,需要将文本 tokenizer 到 token_ids 以便 transformers 计算,中文字符与 token 比例大概为 1:2 即 1 个中文字符对应 2 个 token_ids。GPU 推理计算时,其与输入输出文本和 L、模型维度 D 和模型层数 N 成正比。

自定义推理 GPU 评估

假设输入的 query 文本数为 100,输出的文本书为 1000,则 L = (100 + 1000) * 2 = 2200,按模型维度 D = 1280,层数 N = 96,则计算所需算力:

​NeedFLOPs ≈ L * D * N ≈ 270336000 = 2.7 * 10^8

假设我们使用 A800 用 1s 时间完成本次推理请求:

CalcByA800 = 19.5 * 10^12 FLOPs

则需要 GPU 数量:

count = 270336000 / (19.5 * 10**12) = 1.3863384615384615e-05

反过来 CalcByA800 / NeedFLOPs 可以计算一张 A800 可以满足约 7.2 w 用户 1s 内获取回复,不过这只是理想情况:

people = (19.5 * 10**12) / 270336000 = 72132.45738636363

◆ 计算差异

推理时涉及到文字和计算,例如生成连贯的剧情、生成数学逻辑的推理。这些处理对算力的消耗几乎相同,这是 LLM 的本质是语言模型,只要在输入输出相同的情况下,其处理的都是 token_ids,推理得到的也都是 next_token 的分布,还是 token_ids,所以与具体的表现形式无关,即不同类型的任务,只要输入输出相近,则其对算力的消耗也相近。

五.基于 Token 的计算方式

上面的方式都是基于 FLOPs 为基准计算的,但是由于实际场景下很多信息我们获取的并不完整。例如 GPT-3 的训练 FLOPs 是否准确,训练的 FLOPs 是一个 epoch 还是一整个训练流程,因此实际场景下还可以采用另一种方式,即基于 Token 处理效率的计算,但是这种计算方式有一个前提,就是需要你事先测算出对应 GPU 设备每秒处理的 token 数量,即 Process Tokens / s。

以博主实际测算为例,P40 即 4090 的 token 处理能力约为 25 Token / s,假设我们一天需要请求 1000 次,每次输入输出共 1000 个汉字,共花费 10 h 处理完成,则需要 P40 的数量可通过下述公式计算:

def calc_gpu_num_by_token(post_token_num, post_time_all, token_process):
    return post_token_num / (post_time_all * token_process)


if __name__ == '__main__':
    token_num = 1000 * 1000 * 2  # 1000 次请求、1000 个汉字对应 2000 个 token
    time_cost = 10 * 3600  # 总处理时间
    token_process_num = 25  # 每s可处理 token 数目
    print(calc_gpu_num_by_token(token_num, time_cost, token_process_num))

算下来 10h 处理完这些需求需要 2.223 台 P40,则向上取整得到需要 3 台 P40。

六.总结

这里分享了几种 GPU 算力计算的方法,上面的计算都是基于理想状态,实际情况下还需要考虑多机多卡的 IO 延迟,机器的网络延迟,以及模型大小与 GPU 显存的供需关系等等。更多的数据还是需要自己实践出真知,有问题欢迎大家在评论区一直讨论,因为现在网上这方面的信息还是相对较少,可以一起分享一起进步!文章来源地址https://www.toymoban.com/news/detail-734888.html

到了这里,关于LLM - 训练与推理过程中的 GPU 算力评估的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch多GPU训练模型——使用单GPU或CPU进行推理的方法

    PyTorch提供了非常便捷的多GPU网络训练方法: DataParallel 和 DistributedDataParallel 。在涉及到一些复杂模型时,基本都是采用多个GPU并行训练并保存模型。但在推理阶段往往只采用单个GPU或者CPU运行。这时怎么将多GPU环境下保存的模型权重加载到单GPU/CPU运行环境下的模型上成了一

    2024年02月09日
    浏览(50)
  • [NLP]LLM 训练时GPU显存耗用量估计

    全精度llama2 7B最低显存要求:28GB 全精度llama2 13B最低显存要求:52GB 全精度llama2 70B最低显存要求:280GB 16精度llama2 7B预测最低显存要求:14GB 16精度llama2 13B预测最低显存要求:26GB 16精度llama2 70B预测最低显存要求:140GB 8精度llama2 7B预测最低显存要求:7GB 8精度llama2 13B预测最低显

    2024年02月12日
    浏览(42)
  • LLM实践-在Colab上使用免费T4 GPU进行Chinese-Llama-2-7b-4bit推理

    一、配置环境 1、打开colab,创建一个空白notebook,在[修改运行时环境]中选择15GB显存的T4 GPU. 2、pip安装依赖python包 注意此时,安装完accelerate后需要重启notebook,不然报如下错误: ImportError: Using low_cpu_mem_usage=True or a device_map requires Accelerate: pip install accelerate 注:参考文章内容

    2024年02月04日
    浏览(52)
  • 云边协同与人工智能AI的深度融合(云端训练、边端推理)

    在面向物联网、大流量等场景下,为了满足更广连接、更低时延、更好控制等需求,云计算在向一种更加全局化的分布式节点组合形态进阶,边缘计算是其向边缘侧分布式拓展的新触角。 以物联网场景举例,设备产生大量数据,上传到云端进行处理,会对云端造成巨大压力,

    2024年02月02日
    浏览(57)
  • LLM-chatgpt训练过程

    主要包含模型预训练和指令微调两个阶段 模型预训练:搜集海量的文本数据,无监督的训练自回归decoder; O T = P ( O t T ) O_T=P(O_{tT}) O T ​ = P ( O t T ​ ) ,损失函数CE loss 指令微调:在输入文本中加入任务提示, 输入 “翻译文本为英文:无监督训练。译文:”,让模型输出 “

    2024年02月11日
    浏览(44)
  • CPU和GPU的区别是什么?为什么训练人工智能用GPU而不是CPU?

     CPU(Central Processing Unit,中央处理器)是计算机的大脑,负责执行计算机程序中的指令。它从内存中读取指令和数据,并执行各种计算和逻辑运算。CPU的性能决定了计算机的运算速度。 CPU由控制单元、算术逻辑单元和寄存器等部件组成。控制单元负责从内存中读取指令并解

    2024年02月12日
    浏览(55)
  • 【人工智能概论】 使用kaggle提供的GPU训练神经网络

    注册账号的时候可能会遇到无法进行人际验证的问题,因此可能需要科学上网一下。具体步骤略。 kaggle的GPU资源需要绑定手机号才能使用 点击右上角的头像。 点击Account 找到手机验证界面Phone Verification,会看到下图,根据1处的提示知,这种情况下手机是收不到验证码的,因

    2024年02月04日
    浏览(54)
  • 人工智能在司法推理中的应用

    作者:禅与计算机程序设计艺术 随着人工智能技术的不断发展,其在司法领域中的应用也越来越受到人们的关注。司法推理是司法活动中非常重要的一环,而人工智能可以帮助司法机关更高效、准确地进行推理。本文将介绍人工智能在司法推理中的应用,以及实现步骤、优化与改

    2024年02月05日
    浏览(51)
  • 人工智能思维:大脑中的分析与推理

    人工智能(AI)是一种计算机科学的分支,旨在模仿人类的智能行为。人工智能思维是一种通过分析和推理来解决问题和做出决策的方法。这种思维方式在大脑中是由神经元和神经网络实现的。在这篇文章中,我们将探讨人工智能思维的背景、核心概念、算法原理、代码实例以及

    2024年02月22日
    浏览(46)
  • [超级详细]如何在深度学习训练模型过程中使用GPU加速

    前言 在深度学习当中,我们训练模型通常要对模型进行反复的优化训练,仅用CPU来进行训练的话需要花费很长时间,但是我们可以使用GPU来加速训练模型,这样就可以大大减少我们训练模型花费的时间。下图是我在训练模型过程中使用GPU加速和未使用GPU加速花费时间的对比:

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包