在GPT 2模型的再训练期间,“资源耗尽:分配张量时,OOM”:

时间:2019-05-25 18:31:15

标签: python tensorflow memory-management gpu tensor

我正在将“朋友对话”用作数据集,以使用GPT-2进行对话AI进行训练,但是这表明我内存不足。我知道这个问题在stackoverflow上已经解决,但是我不知道针对NLP任务进行优化。

我尝试将批量大小设置为50(我的数据集大约有60k行)。我一直遵循此tutorial在自定义数据集上对GPT-2进行再培训。

我的系统规格是: 作业系统:Windows 10 内存:16 GB CPU:i7 8th Gen GPU:4GB Nvidia GTX 1050Ti

这是整个错误消息

import av

input_container = av.open(
    'http://184.72.239.149/vod/smil:BigBuckBunny.smil/playlist.m3u8')
input_stream = input_container.streams.get(audio=0)[0]

output_container = av.open('live_stream.mp3', 'w')
output_stream = output_container.add_stream('mp3')

for frame in input_container.decode(input_stream):
    frame.pts = None
    for packet in output_stream.encode(frame):
        output_container.mux(packet)

for packet in output_stream.encode(None):
    output_container.mux(packet)

output_container.close()

2 个答案:

答案 0 :(得分:1)

我猜总是有同样的意思,尝试将批处理大小设置为1,看看是否可行,然后增加批处理大小以查找gpu可以处理的数量。如果它无法处理1的批量大小,则该模型可能对您的GPU太大。如果您没有立即得到此错误,请检查代码是否正常,也许其中有一些错误。哦,也许您应该检查gpu还在使用什么,只是为了确保没有不必要的占用资源。

答案 1 :(得分:0)

我遵循了the same tutorial,并遇到了相同的OOM(内存不足)问题。使用CPU进行训练时,虽然一切正常,但是速度很慢。因此,Python中的代码和设置可以正常运行,只是图形卡上的VRAM太小。

如果您在使用GPU进行训练时遇到问题,并且想测试一下它在CPU上的工作方式,可以通过更改 train.py 中的以下代码行来禁用对GPU的张量流访问>来自:

config = tf.ConfigProto()

...至:

config = tf.ConfigProto(device_count = {'GPU': 0})

如果要升级语法以避免控制台中出现讨厌的警告,则可以使用新语法:

config = tf.compat.v1.ConfigProto(device_count = {'GPU': 0})

这将阻止张量流使用GPU,而是改为在CPU上进行所有训练。如果您计算机中的RAM比图形卡中的VRAM多,这可能会解决OOM问题。

我有一个具有11 Gb VRAM的GTX 1080ti,这对于Pascal一代grapihcs卡来说是很多。但是我已经从项目的原始小型原始模型(117M)切换到中型模型(355M)。这将影响运行训练所需的内存量。我将批处理大小设置为1没关系-这对于我的GPU来说仍然太大了。