Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >初创公司如何训练大型深度学习模型

初创公司如何训练大型深度学习模型

作者头像
深度学习与Python
发布于 2021-12-13 11:46:20
发布于 2021-12-13 11:46:20
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

引 言

OpenAI 的 GPT-3 是一个令人印象深刻的深度学习模型,但是它有 1750 亿个参数,相当占用资源。尽管有不同的估计,但是这种规模的模型在一个 GPU 上的训练需要数百年。

幸好 OpenAI 有一个由微软提供的 NVIDIA V100 GPU 的高带宽集群,这让 OpenAI 可以在几个星期而不是几年内就能训练 GPT-3。这个集群到底有多大?根据本文所述,在 1024 个 NVIDIA A100 GPU 上训练 GPT-3 大约需要 34 天。

这个 GPU 的数量真是令人难以置信。每张 A100 GPU 的售价为 9900 美元,而我们讨论的是构建这样一个庞大的集群需要花费将近 1000 万美元。我们甚至还没有考虑到电力成本,或者你实际上必须安装 GPU 的服务器机架,或者维护这种类型的硬件的人力成本,以及其他成本。

如今,你可以从谷歌云这样的公有云提供商那里租用 A100 GPU,但按每小时 2.933908 美元计算,运行 1024 张 A100 GPU 34 天,加起来需要 2451526.58 美元。请记住,这个价格是针对单一的训练运行的价格。

我可以继续说下去,但问题是,训练大型模型既昂贵又缓慢。在 AssemblyAI,我们没有训练 1750 亿个参数范围内的模型(谢天谢地),但是我们的语音识别模型是非常庞大的 Transformer,正在快速接近 10 亿个参数。作为一家初创公司,速度和成本是我们必须不断优化的两件事。

这个问题的主要解决方法是在更多的 GPU 上训练模型,但是这需要很高的成本,往往是初创公司无法承受的。近几年来,我们学到了一些关于大型模型训练的经验,希望与大家分享。

模型尺寸和训练时间

在 AssemblyAI,我们构建了大型、准确的自动语音识别(Automatic Speech Recognition,ASR)模型,并通过简单的 语音到文本的 API 进行公开。开发人员使用我们的 API 来开发应用,来实现转录电话、Zoom 视频会议、播客、视频以及其他类型的媒体内容。

我们性能最好的自动语音识别模型是大型 Transformer,在 48 张 V100 GPU 上需要大约 3 周的时间来训练。

32 个 NVIDIA V100s 训练一个模型

为什么我们这个模型的训练需要如此长的时间和如此多的 GPU?主要原因有三个:

1. 自动语音识别模型的输入特征是高维、长序列

计算出每隔 10 毫秒左右的一个音频文件的声谱图,并将其作为神经网络的输入特征。声谱图的形状 / 尺寸取决于音频数据的采样率,但是如果采样率是 8000 赫兹,那么声谱图中的特征数将是 81。如果是一个 16 秒的音频样本,它的形状会是 [1600, 81],这是一个相当大的特征输入!

下面是声谱图作为矩阵的一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[[-5.7940, -5.7940, -4.1437,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9598, -5.9598, -4.2630,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9575, -5.9575, -4.2736,  ...,  0.0000,  0.0000,  0.0000],
          ...,
          [-4.6040, -4.6040, -3.5919,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4804, -4.4804, -3.5587,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4797, -4.4797, -3.6041,  ...,  0.0000,  0.0000,  0.0000]]],

        [[[-5.7940, -5.7940, -5.7940,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9598, -5.9598, -5.9598,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9575, -5.9575, -5.9575,  ...,  0.0000,  0.0000,  0.0000],
          ...,
          [-4.6040, -4.6040, -4.6040,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4804, -4.4804, -4.4804,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4797, -4.4797, -4.4797,  ...,  0.0000,  0.0000,  0.0000]]],

        [[[-5.7940, -5.7940, -5.7940,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9598, -5.9598, -5.9598,  ...,  0.0000,  0.0000,  0.0000],
          [-5.9575, -5.9575, -5.9575,  ...,  0.0000,  0.0000,  0.0000],
          ...,
          [-4.6040, -4.6040, -4.6040,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4804, -4.4804, -4.4804,  ...,  0.0000,  0.0000,  0.0000],
          [-4.4797, -4.4797, -4.4797,  ...,  0.0000,  0.0000,  0.0000]]]

2. 模型包含大量参数

对于基于 Transformer 的神经网络,更大的网络通常会更好。很多论文都支持这一观点,其中 GPT-3 是最流行的例子。无论是在研究社区,还是在我们自己的内部研究中,我们都发现这种趋势同样适用于自动语音识别模型。

我们性能最好的模型是一个大型 Transformer,它包含近 5 亿个参数。随着参数的增加,在反向传播过程中,梯度更新所需要的计算能力就越大。神经网络的训练基本上可归结为进行一堆矩阵运算。模型中的参数越多,矩阵就越大。大型矩阵需要更多的计算和 GPU 内存资源。

3. 对大量数据进行训练

大型模型具有更强的建模能力,这要归功于其参数数量的增加,为了充分利用这种建模能力,我们在近 10 万小时的已标记的语音数据上对模型进行。举例来说,GPT-3 是在 45TB 的文本数据上训练的,它也可以视为 1099511626800 字左右的文本。

训练神经网络时,需要对数据集进行多次迭代(每次迭代都被称为“轮数”)。数据集越大,每次迭代或“轮数”的时间就越长。即使提前停止,在一个大的数据集上训练一个大的模型,进行 20~50 次的迭代,也会花费很多时间。

如何提高迭代速度

初创公司面临着一项艰巨的任务:在短期内取得重大进展。被誉为“突围型”的初创公司通常都会在最短的时间内取得最大进步。

对于一家刚起步的深度学习公司来说,这是一个艰难的挑战。如果你的模型需要 3~4 个星期进行训练,你是如何快速迭代的?

使用更多 GPU 训练

减少训练时间的最简单方法是在更多的 GPU 上训练模型。更多的 GPU 意味着可以使用更多的 GPU 内存来训练运行。例如,假设你可以在一个 GPU 上安装大小为 8 的 mini-batch。如果数据集中有 1000 个样本需要迭代,这意味着需要迭代 125 个 mini-batch(每个大小为 8)。如果每次迭代需要 1 秒,那么就需要 125 秒来迭代所有 125 个 mini-batch。

如果你有 4 个 GPU,你可以一次并行地迭代 4 个 mini-batch,而不是 1 个 mini-batch。这就是说,要完成所有 125 个 Mini-batch,只需要 32 次迭代。假定每一次迭代在 4 个 GPU 上花费 1.5 秒,这是因为 4 个 GPU 有额外的通信开销——然而,你仍然能够在 48 秒内迭代完整个数据集(32*1.5)。这个速度几乎是单个 GPU 的 3 倍。

不过,值得注意的是,更大的批量(batch)并不总是等同于更快的训练时间。如果你的有效批量大小过大,你的模型的总体收敛性将开始受到影响。选择适当的批量大小来训练是你必须试验的一项超参数,目前正针对不同的优化器(例如 LAMB 和 LARS)进行研究,这些优化器有助于缓解过大的批量大小损害收敛性的问题。

GPU 性能并非线性增长

训练的 GPU 越多,通信的开销就越大。因此,在 8 个 GPU 上训练的速度并不会比在单个 GPU 上训练快 8 倍。在 AssemblyAI,我们使用 Horovod 来管理跨多个 GPU 上的分布式训练运行。Horovod 是一个很棒的库,当你在训练集群中增加更多的 GPU 时,它可以帮助你获得更高的效率。

用 Horovod 的训练时间

在测试中,我们发现 Horovod 速度大大快于 DistributedTensorFlow 和 PyTorch DistributedDataParallel。尽管如此,PyTorch 还是在积极地开发,并在快速改进。在我们的测试中,我们发现 PyTorch DistributedDataParallel 在单台服务器上与 Horovod 相当,但是当扩展训练运行到多个服务器时(例如,4 个服务器,每个有 8 个 GPU),Horovod 的性能更好。

低精度训练

大多数模型默认是使用 FP32(浮点值 32,也称为单精度)进行训练。使用半精度(FP16)或混合精度进行训练,也可以加快训练时间。

FP16 张量是 16 位,或 2 个字节,其中每个位是 0 或 1,如 010101 10101010。FP32 张量是 32 位,或 4 字节,如 11110000 00001111 11001100 00110011。

训练期间更低的精度意味着更少的字节,这意味着在训练期间中需要的 GPU 内存更少,需要的带宽也更少,而且实际硬件级操作在较新 GPU 上运行得更快,所有这些都加快了训练速度。

使用 PyTorch,下降到 FP16 是比较容易做到的,例如 x = x.half 将一个 FP32 张量下降到 FP16。不过,要记住的是,在实践中训练的精确度较低,而且并不总是像在公园里散步那么简单。某些操作或自定义损失函数可能不支持较低的精度,可能需要大量的超参数调整,以使你的模型在 FP16 下收敛,而且较低的精度也可能会影响模型的总体精度。

如何降低训练成本

这很简单:不要使用像 AWS 或谷歌云那样的公有云。这样做似乎是最简单的开始方法,但是成本会迅速增加,尤其是与下面的选择相比。

自购硬件

如果你对管理自己的硬件感到满意(我们不推荐这么做),那么购买诸如 NVIDIA TITAN X 之类的消费级 GPU 是一个比较便宜的选择。举例来说,每张 TITAN X 的价格大约为 3000 美元,作为消费级 GPU,其性能出乎意料的好。如果你有能力建造自己的设备,走这条路只需支付一次硬件费用,但同时也要承担托管和维护训练设备的麻烦。

一些公司如 Lambda 等,可以为你提供相对廉价的定制训练设备。例如,一台配有 4 个 NVIDIA RTX A5000 和 NVLink 的机器大约需要 16500 美元。这包括内存、处理器、外壳等。你所要做的就是找个地方插上电源,然后支付你的电费。

专用云服务

在 AssemblyAI,我们从 Cirrascale 租用专用服务器。像 Cirrascale 这样的提供商有很多,但支付专用服务器的费用要比像 AWS 或谷歌云这样的大型公有云好得多。这个选择还使你能够自定义你所需的内存和处理器规格来定制你的机器,并为你选择 GPU 提供更大的灵活性。

比如,AWS 仅提供以下 GPU:

  • NVIDIA Tesla M60 GPUs
  • NVIDIA A100
  • NVIDIA Tesla V100
  • NVIDIA K80 (these are horrible) 而 Cirrascale 公司提供的 GPU 种类繁多,比如 P100s、V100s、A100s、RTX 8000s 等。

很多时候,你并不需要最昂贵的 GPU 卡(现在的 A100)来在合理的时间内训练你的模型。而且,最新、最好的 GPU 通常不会立刻被 PyTorch 和 TensorFlow 等流行框架所支持。举例来说,NVIDIA A100s 在得到 PyTorch 的支持前就等了一段时间。

相对于大型公有云,如 AWS 或谷歌云,能够根据你的训练需求和预算定制一台机器,对于与小型托管服务提供商合作是一个巨大的优势。另外,由于你租用的是一台完整的物理机器,而非 AWS/ 谷歌云平台那样的虚拟化机器,因此实际的机器整体性能要好得多。

结 语

总之,训练大型深度学习模型是许多初创公司都必需要面对的挑战。成本可能很高,迭代时间也可能很慢,而且如果你不小心,它们会严重影响你的创业进程。

原文链接:

https://www.assemblyai.com/blog/how-to-train-large-deep-learning-models-as-a-startup/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习框架哪家强?国产框架OneFlow做了一份测评报告
数据显示,OneFlow 在 4 机 32 卡下的 ResNet50-v1.5 和 BERT-base 两个模型中,无论是 Float32 类型还是自动混合精度,在同样的算法和硬件条件下,吞吐率及加速比均优于其他深度学习框架。
代码医生工作室
2021/01/14
1.6K0
深度学习框架哪家强?国产框架OneFlow做了一份测评报告
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
近期,AIGC领域呈现出一片繁荣景象,其背后离不开强大算力的支持。以ChatGPT为例,其高效的运行依赖于一台由微软投资建造的超级计算机。这台超级计算机配备了数万个NVIDIA A100 GPU,并利用60多个数据中心的数十万个GPU辅助,为ChatGPT提供了强大的算力支持。这种规模的算力部署不仅体现了AIGC技术的先进性,也预示着人工智能技术未来的发展趋势。这种集成了高性能计算、大数据处理和人工智能算法的超级计算机,将成为推动科技进步的重要引擎。
汀丶人工智能
2024/01/29
8.3K0
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
谈谈分布式训练框架DeepSpeed与Megatron
随着深度学习技术的不断发展,大规模模型的训练需求日益增长。为了应对这种需求,分布式训练框架应运而生,其中DeepSpeed和Megatron是两个备受瞩目的框架。本文将深入探讨这两个框架的背景、业务场景、优缺点、主要功能及底层实现逻辑,并提供一个基于Java语言的简单demo例子,帮助读者更好地理解这些技术。
小马哥学JAVA
2024/11/03
2.2K0
揭秘A100、A800、H800、V100在高性能计算与大模型训练中的地位
AGI | NLP | A100 | H100 | Nvidia | Aurora
液冷服务器
2023/06/29
4K0
揭秘A100、A800、H800、V100在高性能计算与大模型训练中的地位
RTX 40时代,给深度学习买的显卡居然能保值9年?仔细一算绷不住了
选自timdettmers.com 作者:Tim Dettmers 机器之心编译 编辑:泽南 FP8 训练带来的速度提升可能要一统 AI 领域,但这是我要考虑的问题吗? 深度学习对于算力的要求很高,对于个人来说,GPU 的选择很大程度上决定了你的工作、学习体验。显卡既贵又复杂,如果想购买新的 GPU,哪些功能最重要?内存、核心、Tensor Core 还是缓存?如何做出性价比高的选择?每出一代新 GPU 这些问题就要重新审视一番。 近日,华盛顿大学在读博士 Tim Dettmers 通过一篇长文在 RTX
机器之心
2023/03/29
1.5K0
RTX 40时代,给深度学习买的显卡居然能保值9年?仔细一算绷不住了
英伟达 H100 vs. 苹果M2,大模型训练,哪款性价比更高?
关键词:M2芯片;Ultra;M1芯片;UltraFusion;ULTRAMAN;RTX4090、A800;A100;H100;LLAMA、LM、AIGC、CHATGLM、LLVM、LLM、LLMs、GLM、NLP、ChatGPT、AGI、HPC、GPU、CPU、CPU+GPU、英伟达、Nvidia、英特尔、AMD、高性能计算、高性能服务器、蓝海大脑、多元异构算力、高性能计算、大模型训练、大型语言模型、通用人工智能、GPU服务器、GPU集群、大模型训练GPU集群、大语言模型
液冷服务器
2023/07/28
2.3K0
英伟达 H100 vs. 苹果M2,大模型训练,哪款性价比更高?
深度学习最佳 GPU,知多少?
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景中一个至关重要的解决方案:如何选型高效、灵活的 GPU 方案。
Luga Lee
2025/01/07
7980
深度学习最佳 GPU,知多少?
技术干货 | 腾讯云NLP大模型预训练最佳实践
腾讯云自然语言处理(Natural Language Process,NLP)深度整合了腾讯内部顶级的 NLP 技术,依托千亿级中文语料累积,提供16项智能文本处理能力,包括智能分词、实体识别、文本纠错、情感分析、文本分类、词向量、关键词提取、自动摘要、智能闲聊、百科知识图谱查询等。
腾讯云TI平台
2021/10/08
1.8K0
GPU实战:低成本运行多模态大模型
随着多模态大模型(如视觉-语言模型、文本-音频生成模型等)的快速发展,企业对高效、低成本的算力需求日益迫切。 无服务器 GPU 服务结合其弹性扩展和按需付费的特性,为开发者提供了部署多模态大模型的理想平台。本文将从实战角度,探讨如何基于 无服务器 GPU 基础设施,低成本运行多模态大模型。
Michel_Rolle
2025/01/16
2.3K0
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。
罗西的思考
2021/06/10
2.2K0
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
“炼大模型”已成为人工智能领域的主流研发趋势。从GPT-3的1750亿,到如今悟道2.0的1.75万亿,超大语言模型在 NLP 基准任务中不断刷新SOTA。
AI科技评论
2021/10/11
1.5K0
北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
英伟达的这款GPU太强了!
今年 3 月 21 日 - 24 日举办的 NVIDIA GTC 2022 大会可谓是亮点十足。NVIDIA 不仅一口气更新了 60 多个 SDK 应用程序,继续加大在 Omniverse、机器人平台、自动驾驶和量子计算等领域中的布局 ,还重磅发布了基于全新 Hopper 架构的 H100 GPU!
Amusi
2022/06/13
1.6K0
英伟达的这款GPU太强了!
深度 | 英伟达深度学习Tensor Core全面解析
AI 科技评论消息,不久前,NVIDIA在SIGGRAPH 2018上正式发布了新一代GPU架构——Turing(图灵),黄仁勋称Turing架构是自2006年CUDA GPU发明以来最大的飞跃。Turing架构的两大重要特性便是集成了用于光线追踪的RT Core以及用于AI计算的Tensor Core,使其成为了全球首款支持实时光线追踪的GPU。
AI科技评论
2018/09/21
4.2K0
深度 | 英伟达深度学习Tensor Core全面解析
ChatGPT 背后的经济账
ChatGPT能否取代Google、百度这样的传统搜索引擎?为什么中国不能很快做出ChatGPT?当前,对这些问题的探讨大多囿于大型语言模型(LLM)的技术可行性,忽略或者非常粗糙地估计了实现这些目标背后的经济成本,从而造成对LLM的开发和应用偏离实际的误判。 本文作者从经济学切入,详细推导了类ChatGPT模型搜索的成本、训练GPT-3以及绘制LLM成本轨迹的通用框架,为探讨LLM成本结构和其未来发展提供了可贵的参考视角。 来源 | OneFlow、作者|Sunyan、翻译|杨婷、徐佳渝、贾川 重点概览:
程序猿DD
2023/02/24
4850
ChatGPT 背后的经济账
224秒训练ImageNet!这次创纪录的是索尼大法
随着用于深度学习的数据集和深度神经网络模型的规模增大,训练模型所需的时间也在增加具有数据并行性的大规模分布式深度学习可以有效缩短训练时间。
新智元
2018/12/13
8970
224秒训练ImageNet!这次创纪录的是索尼大法
使用FP8加速PyTorch训练
现代的人工智能硬件架构(例如,Nvidia Hopper, Nvidia Ada Lovelace和Habana Gaudi2)中,FP8张量内核能够显著提高每秒浮点运算(FLOPS),以及为人工智能训练和推理工作负载提供内存优化和节能的机会。
deephub
2023/11/20
6880
使用FP8加速PyTorch训练
深度学习训练高效落地指南
摘要:本文针对深度学习训练中的计算瓶颈、资源管理复杂性和分布式协调三大挑战,解析腾讯云GPU服务器(GN7系列)在性能优化、成本控制及工程化落地的全链路方案。据IDC 2024报告,采用腾讯云方案可将训练效率提升3倍以上,推理成本降低60%。
用户11288883
2025/06/19
1150
DeepSpeed分布式训练框架深度学习指南
随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。分布式训练作为一种有效的解决方案,通过将模型和数据分布到多个计算节点上,实现了并行计算,从而显著提高了训练速度。DeepSpeed是由微软开源的深度学习训练优化库,专为分布式训练场景设计,旨在提高大规模模型训练的效率和可扩展性。本文将深入探讨DeepSpeed的背景知识、业务场景、功能点、解决的技术难点,并通过分布式Python示例展示其实际应用。
小马哥学JAVA
2024/11/07
1.3K0
腾讯云NLP大模型预训练最佳实践
根据当前人工智能的趋势,越大的自然语言模型可以提供越好的准确性,目前GPT-3的模型参数达到175B。但是由于成本、时间和代码集成的障碍,较大的模型难以训练。
TI MAKER
2021/08/30
2.8K0
为了加速在GPU上进行深度学习训练,NVIDIA原来还做了这么多事情,你都知道么?
不同行业采用人工智能的速度取决于最大化数据科学家的生产力。NVIDIA每个月都会发布优化的NGC容器,为深度学习框架和库提供更好的性能,帮助科学家最大限度地发挥他们的潜力。英伟达持续投资于完整的数据科学栈,包括GPU架构、系统和软件栈。这种整体的方法为深度学习模型培训提供了最好的性能,NVIDIA赢得了提交给MLPerf的所有六个基准测试,这是第一个全行业的AI基准测试。NVIDIA在最近几年引入了几代新的GPU架构,最终在Volta和图灵GPU上实现了张量核心架构,其中包括对混合精度计算的本机支持。NVIDIA在MXNet和PyTorch框架上完成了这些记录,展示了NVIDIA 平台的多功能性。
GPUS Lady
2019/04/29
2.4K0
为了加速在GPU上进行深度学习训练,NVIDIA原来还做了这么多事情,你都知道么?
推荐阅读
相关推荐
深度学习框架哪家强?国产框架OneFlow做了一份测评报告
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验