你好
我正在使用Llama Tokenizer(meta-llama/Llama-2-7b-hf)对一个中等大小的语料库(Fineweb-10BT样本:1500万个文档,平均长度为2300个字符)进行训练。在“预处理序列”的第一步之后,“分词”步骤需要1小时以上的时间,我的RAM(780GB)用完了。我清楚地记得几天前,当我训练类似大小(但不同的)语料库时,这个步骤只需要大约1分钟。
在互联网上找到的所有帮助here 、 here 和 here 之后,并多次更改服务器(升级RAM),都没有解决问题。最后我发现,在之前的运行中,我使用了不同版本的旧分词器“meta-llama/Meta-Llama-3-8B”。更换后,一切恢复正常,处理时间保持在约1分钟,没有内存占用问题。
虽然不太确定这到底是怎么回事,但还是把它放在这里,希望有经验的人能进一步研究,并希望能帮助到其他人。
7条答案
按热度按时间30byixjq1#
感谢!
可能是因为新的分词器没有使用规范化器/只使用了预分词器?不是特别确定,但感谢分享!🤗
w3nuxt5m2#
你好,我也在使用Refined Web Dataset训练一个分词器时遇到了类似的问题。与issue类似,我使用了train_from_iterator()函数来训练一个SentencePieceBPETokenizer(),在预处理序列的过程中,我耗尽了内存。我不认为切换到另一个分词器能满足我的需求,如果可以的话,您能给我一些关于如何在大型数据集上进行训练的见解吗?
7nbnzgx93#
你能提供一个简短的脚本来重现这个问题吗?
eit6fx6z4#
当然,下面的代码会抛出一个内存不足的错误,process_files是从RefinedWeb数据集中下载的Arrow文件的路径列表:
gg58donl5#
我刚刚运行了脚本,没有观察到任何OOM。
我使用了30 vCPU/240 GB的AMD-Epyc服务器。在count_pairs阶段,内存消耗呈线性增长,最大值约为60%。
注意事项:我使用了FineWeb-Edu-10BT样本,将其保存为parquet文件而不是arrow。
希望这有所帮助。
zi8p0yeb6#
有一个关于箭头支持的持续性PR,如果这有帮助的话,我们应该合并它!
b1payxdu7#
这个问题已经过期,因为它已经打开了30天,没有活动。请移除过期标签或评论,否则将在5天内关闭。