我们不断为我们的工作培训语言模型。我们的团队使用数十种不同的视频卡来执行不同的任务:在某个地方我们需要强大的 DGX 站,在某个地方像 RTX 2080Ti 这样的旧游戏卡就足够了。选择最佳的 GPU 进行模型训练可以显着影响过程的速度和成本效益。
有趣的是,互联网上有很多文章对机器学习进行了 GPU 比较,但很少有人关注语言模型训练的速度。大多数情况下只能找到推理检验。H100新芯片发布时,英伟达的报告称,它在训练中比A100快了高达9倍,但对于我们的任务来说,新卡只比旧卡快了90%。 相比之下,我们的云提供商在这些 GPU 之间有 2 倍的价格差异,因此没有必要为了省钱而改用新的 H100。
除此之外,我们还测试了一个DGX站,该站由8张A100 80GB显卡组成,每月费用为1万美元。测试结束后,我们发现这个电台的性价比根本不适合我们,为了这笔钱,我们可以选择 66 x RTX 3090,总共会更有用。
我们的翻译语言模型有多达 5 亿个参数(平均 1 亿至 3 亿个)。如果我们大幅增加参数数量,DGX的性价比可能会更好。目前,我们不训练大型语言模型,这些模型可以同时在所有语言之间以所有变体进行翻译,而是为每个语言对使用单独的语言模型,例如。英语-德语。每个此类型号的功率为 120 至 300 Mb。
值得注意的是,不同的语言在互联网上拥有不同数量的数据。例如,对于西班牙语,您可以找到 5 亿个带有翻译的句子,但当训练藏语等稀有语言的模型时,您需要根据可用数据选择特定的 GPU 来执行机器学习任务。要创建从英语到西班牙语的翻译模型,我们使用具有 4 x RTX 4500 和 256GB RAM 的服务器。同时,藏语可以在16GB RAM的RTX 2080 Ti上训练,因为增加神经网络的复杂性并因此采用更强大的服务器和少量数据是没有意义的。

选择图形处理器和理论数据
使用 OpenNMT-tf 框架在我们的内部 Data Studio 平台上进行了语言模型培训。该阶段包括数据准备、模型训练以及模型与参考翻译的比较。在培训期间使用 FP16 而不是 FP32 使我们能够在不降低翻译质量的情况下显着减少语言模型的培训时间,但并非所有 GPU 都支持这一点。
选择图形处理器时,标准考虑处理能力(TFLOPS)、视频内存(VRAM)、GPU 基准结果、库和框架支持、预算和其他因素(显卡尺寸和外形尺寸、功率要求)等指标、冷却以及与系统的兼容性)。在训练文本生成模型时,您还应该记住,不同的语言会消耗不同的资源量。例如,1 个字节用于对拉丁语言的一个字符进行编码,2 个字节用于西里尔语言,3 个字节用于包含象形文字的语言。了解您的显卡将具有哪些特性会对学习过程的速度产生重大影响。
在根据所使用的 GPU 训练模型时,显卡根据使用时期分为两组:早期显卡用于首次测量学习速度,以及当前使用的显卡。这些显卡的主要特征分别见表1和表2。
表 1 - 以前使用的图形处理器及其技术参数
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
注释
1。CUDA大于7。0的情况下,使用FP16将提高训练速度,具体取决于CUDA版本和显卡本身的特性。
2锛姣涓涓。FP16与FP32性能比大于1比1的显卡规格,那么使用混合精度将保证提高规格规定的训练速度。例如,对于 Quadro RTX 6000,FP16 TFLOPS 值为 32。62 (2:1) 将使锻炼速度至少加快两倍(实践中为 2。4 倍)
表 2 - 目前使用的 GPU 模型及其主要特征
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - FP16、TFLOPS 和 FP32、TFLOPS 的值取自每个 GPU 的规格
GPU 培训和测试过程
使用一组 18 个 GPU 训练模型。在神经网络训练的过程中,我们使用了大量的语言对(一百多种语言)。GPU 测试有助于确定哪些硬件在特定任务中表现最佳。在我们的语言对训练过程中,以以下神经网络参数为基础:
- 词汇量 = 30 000
- 数字= 768
- 层= 6
- 头= 16
- 内部尺寸 = 4 096
首先,让我们根据表 1 来表征属于第一组的 GPU。1000步的近似速度和100000个单位的批量倍数训练模型所花费的时间(以分钟和秒为单位)作为比较指标的基础。
我们强调,对于第一组,速度测量是使用 的 对齐 机制和仅使用 FP32。如果不使用这种机制,某些服务器上的学习速度可能会快得多。
对齐机制允许匹配底座和翻译文本中的子字符串。当句子中的子字符串可能以不同的字体突出显示并且应该与突出显示一起翻译时,需要翻译格式化的文本,例如网页。
考虑到神经网络的上述参数,GPU Nvidia H100 以 22 分钟的学习时间显示了第一个表的最佳时间。, 中间时间由同一品牌geforce RTX 4060 Ti的GPU显示,学习时间为72分钟,最后一名由GPU Tesla V100-SXM 2显示,学习时间为140分钟。
GPU测试中还有8张学习曲线为20分28秒的英伟达A10卡,两张时间为56分钟的英伟达A40卡,以及两张计时86分钟的特斯拉V100-SXM卡。同时应用同一系列GPU的多张卡可以加快模型的训练过程,并与具有更高容量的GPU几乎同时显示,但这种技术在财务和程序上可能不够合理。学习速度测量的结果可以在表 3 中观察到。
表 3 - 先前使用的图形地图上的训练时间测量
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
接下来,我们对当前使用的图形油门踏板进行比较分析(表2)。对于这组图形处理器,使用速度测量进行 对齐 机制,以及使用 FP16 和 FP32。包括该机构和混合精度的速度测量将分别列于下表 4 和表 5 中。
因此,从该表中测量了GPU的速度后,我们可以说第一名是RTX A4500系列GPU,训练时间为31分钟,但需要强调的是,这样的训练模型速度是通过增加所用GPU的单位数量最多为4个。不管这个事实,上述GPU的训练速度会高得多,这将使其在决赛桌中排名倒数第二。
47分钟学习时间的Quadro RTX 6000系列GPU位居第二。应当注意的是,这样的训练速度由所使用的处理器的单元数量相反地调节,该处理器等于四个。仅使用一个这样的 GPU 会导致速度损失约 3。2 倍,因此约为 153 分钟,并将其放在最后位置。
第三行由TITAN RTX系列GPU以75分85秒的成绩拍摄。这种学习速度得分是由于使用了 2 个处理器,减少了模型的训练时间。
1台数量上训练速度上无可置疑的领先者,肯定会是时间78分26秒的GeForce RTX 3090系列GPU。GPU的单位数量增加,会加速模型训练速度,这显然会超越上述所有GPU模型。模型训练时间测量的数据见表4。
表 4 - 先前使用的 GPU 语言模型训练速度的比较分析
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
使用 FP16 进行以下训练速度测量。FP32相比,半精度允许减少模型训练期间消耗的内存量,并加速GPU上的计算。表示的准确性将低于使用 FP32。
使用上表中的 FP32 测量模型的训练时间,我们可以说神经网络的训练时间减少了近两倍。根据性能测量结果,我们可以从表4中的机器学习GPU基准中观察到GPU的位置基本保持不变。Quadro RTX 6000 系列卡从第五位上升到第六位,以 96 秒的优势击败了 GeForce RTX 3090 GPU。最终数字如表 5 所示。
表 5 - 先前使用的 GPU 语言模型训练速度的比较分析
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |