一直在研究grover model of rowanz。我能够在4个批处理量上训练grover的大型模型,但是在微调大型模型时遇到内存分配错误,然后将批处理量减小到1,并且训练正在进行。我还尝试将max_seq_length减小为512并将batch_size设置为4,并且可以正常工作。
我的问题是,什么参数对减少批量大小或减小max_seq_length的性能会有更多影响?
我还可以设置max_seq_length的值,而不是2的幂,例如512和1024之间的某个值吗?
答案 0 :(得分:1)
我的问题是什么参数会对性能产生更大影响 减小批次大小或减小max_seq_length?
关于性能:可能是基于语言的模型(例如Grover)的性能的最重要指标。其背后的原因是人类手写文本的困惑度低于随机采样的文本,并且这种差距随着序列长度的增加而增加。通常,序列长度越长,语言模型就越容易在输出的整个过程中保持一致。是的,它确实有助于模型性能。但是,您可能需要查看特定模型的文档,以了解序列长度的“金锁区”,以及是否比2的幂更有序。
关于效率:更大的序列大小当然需要更多的处理能力和计算内存,因此,序列长度越长,您将需要的功率就越大。
我还能设置除2的幂以外的max_seq_length的值 例如512到1024之间的某个值?
是的,为什么不呢?没有模型设计为使用一组固定的值。折磨不同的序列长度,然后看哪个最适合您。由于其简单的二进制表示形式,将某些参数以2的幂进行调整已成为一种经典做法,因为它具有简单的二进制表示形式,但在计算上却有一点优势,但是对于今天的大型模型而言,可以忽略不计。