Closed gly99999 closed 2 years ago
这块我没研究过,如果amp的输入需要self.model都在gpu上的话,建议在代码把所有句子的embedding encode好之后,直接把self.model.embeddings给删掉,然后再输入到amp里面。embedding_storage_mode最好不要改成gpu,这样子每句话预存的embedding都会以gpu形式存在数据里,gpu很容易不够。
不过如果删掉embedding的话,可能会导致验证和测试有问题,这个可能得你自己操作一下,比如说把self.model.embedding在删备份一下
你好,不好意思又要麻烦你看个问题,我把模型开启这个混合精度,我在![image](https://user-images.githubusercontent.com/43676768/163825406-0b157475-6dc9-49f3-b458-6e711600ee27.png)
train.py
添加了use_amp
和amp_opt_level
这两个参数,然后执行有下面这个问题,看错误应该是要把embeddings加载到gpu里吧,我后来把ReinforcementTrainer
中的train函数中的参数embeddings_storage_mode
改成了gpu
,看了代码之后感觉不是这里的问题,而且改成这个后,我这里的gpu也没那么大的内存。 然后我也调试看了,下面这个图片中的model,发现里面有的embeddings
是不在gpu里的,现在不知道是不是这个原因,如果要把embeddings全部加载到gpu,感觉内存也会不够的,再次麻烦你看一下了。