自然语言处理深度学习GPU平台使用心得

kongfangyi

    深度学习任务中 GPU的性能决定了实验的可行性。随着预训练模型的不断推出bert模型及其变种成为自然语言处理深度学习模型的首选训练模型。然而,bert模型庞大的参数,需要的计算量远超出常规CPU顺序计算的能力,GPU成为自然语言处理深度学习训练模型的必备工具。由于深度学习训练过程整涉及的超参数过多,要想训练出最理想的模型,就要不断地尝试各种参数,这一过程通常称之为“炼丹”。在时间紧,训练任务重的情况下仅仅依靠实验室或自己的计算资源通常难以满足实验需求。租用GPU成为自然语言处理科研工作者的刚需,下面我从自己的经验,介绍下GPU 选择,平台选择的经验:

1、 GPU类型的选择

下面给出一组数据直接展示三个 bert模型串联后再不同GPU上的训练一轮的时间: 以上列表涵盖了我能租借及使用的GPU类型。由于30系列显卡CUDA版本仅支持cuda11,因此仅能使用tensorflow2.4局限性太强对于自然语言深度学习模型现阶段帮助不大,因此不予测试。

    通过比较可以看出,不是所有的 GPU卡在训练bert模型时都可以产生很与之价格匹配的速度,选择最合适的才是最好的。现阶段2080ti是个不错的选择。本次测试基于矩池云和Featurize提供的GPU,测试结果仅反映我现阶段的模型,且经过多次测试,但通用性未知,请谨慎参考。

类型

显存

算力

运行时间

价格

K80

16G

3.7

4500

1

1060(移动版)

6G

6.1

3600

nan

2080 super

8G

7.5

1953

nan

1080ti

11G

6.1

1321

1.2

2080ti

11G

7.5

975

2

RTX5000

16G

7.5

12 96

4.5

P100

16G

7.0

1213

4

T4

15G

7.5

2160

5.5

V100

16G

7.0

960

6

以上价格均采用平台比较后的最低价。

2、 租用平台的选择

    通常大厂的平台相对比较稳定,但价格往往非常高。我比较了大厂的百度云、阿里云、天翼云腾讯云和小厂的矩池云、 Featurize。发现价格差异巨大。具体列表如下(大厂的都差不多,仅举例一家腾讯云价格居中):

类型

每小时价格(元)

 

腾讯云

矩池云

Featurize

K80

nan

1

nan

1080ti

nan

Nan

1.2

2080ti

nan

3

2

RTX5000

nan

4.5

Nan

P100

nan

4

nan

T4

7.8元

5.5

Nan

V100

nan

6

nan

    通常大厂的价格高于小厂,但长期稳定性上大厂由于小厂,易用性上大厂提供的工具更多。但对于每次跑一个模型,跑完就溜的同学选择小厂也是个不错的选择,东西都是一样的只是梯子要自己造。

    我个人使用矩池云觉得更好一点,但是价格贵了一点,矩池云的环境创建之后会一致保存,甚至连库需要的下载的模型参数只要一次下载以后都不用再安装(应该是由缓存,且不清空)。而 Featurize便宜,且支持虚拟环境的创建和保存,但会清空运行时的缓存我每次下载模型参数都要20分钟,如果每次跑3小时以上Featurize还是值得选择的。

    访问地址:

    矩池云:

https://www.matpool.com/m/act/invite?fu=199****1771&ic=YzLop9yUDiMEoNO

    Featurize

https://featurize.cn?s=4b7e05f13aea4b5b99631f7d23df1d6d

    这两个 GPU云平台都有活动,大厂云平台用不起。暂时推荐这两个,以后发掘出其他平台再更新。

3、 一点建议

    由于深度学习非常依赖于各种初始化(包括超参数和权重),同时权重的初始化往往采用随机初始化。因此,如果不设定随机因子,模型在每次训练时会以一种不可预期的方式初始化。这在模型训练过程中不能说是坏事,因为自己设定的随机因子也不一定会产生最好的结果。所以需不需要设定随机因子就自己看了,但是 early stoping一定要设置好,对于训练成本大的深度学习模型我建议earlystoping一开始不要设置太大,5就差不多。

    但由于租借平台每次训练都要数个小时,甚至数天。因此,自己写论文的话模型训练时学习率一开始最好设置的大一下,尽量减少学习轮数,降低成本。只有在模型比较后确定选择哪种模型作为最优模型后再去调参,才能最大限度的减少成本。