fastnlp / fastNLP

fastNLP: A Modularized and Extensible NLP Framework. Currently still in incubation.
https://gitee.com/fastnlp/fastNLP
Apache License 2.0
3.07k stars 448 forks source link

请教使用StaticEmbedding时,遇到的一个问题 #358

Open mahatmaWM opened 3 years ago

mahatmaWM commented 3 years ago

在使用StaticEmbedding时,为了兼顾最终模型能够被导出成TorchScript供线上CPP服务使用的时候,遇到一个问题,主要是在创建字典vocab vocab.from_dataset的时候,如果使用了官方推荐的no_create_entry_dataset参数,后续在导出向量weight的时候,其大小会比vocab尺寸更小,使得我在模型中将weight权重赋值给torch原生的nn.Embedding对象后,对某一些越界的token的index就无法解析了,看了一下源码,创建StaticEmbedding传入的vocab对象没有办法被更新(如果这里能够被更新,使得其大小与weight矩阵的大小一致,那么后续对token做index的时候,使用这个更小的vacab,也可以避免这个问题)。

由于显示问题,我把测试样例代码放附件了,更为细节的问题描述也放在了文件中 test.txt

yhcc commented 3 years ago

非常抱歉,这个问题目前解决起来比较麻烦。目前可能最好的办法就是不要使用no_create_entry_dataset, 对于上线的模型来说,这个参数实际上没有什么意义。