embedder 引入了 新的参数 model_class,但没有正确的在Finetuner中传递。
FFengIll opened this issue · comments
🐛 bug 说明
embedder 引入了 新的参数 model_class,但没有正确的在Finetuner中传递。
Python Version
None
是的,这个是我在设计的时候刻意这么做的。我当时的决策是这样的:
model_class
参数的引入,是为了兼容没有办法通过AutoModel.from_pretrianed
来加载的模型,通过这个参数就可以显式的指定模型类别。Finetuner
主要的场景是微调m3e-base
和m3e-small
,这两个模型都是可以通过AutoModel.from_pretrianed
来加载的,为了减少用户的认知负担,所以没有进行传递。
请问,您是在使用的时候需要传递这个参数吗?我在做以上决策的时候是非常武断的,如果您有需求,我可以支持传递这个参数。
我从uniem发布开始,大致细看过3个版本,前后分别是加入了一段T5的判断
,和修改成model_class
。
我之前很多代码是在 Sentence Transformers 上的,uniem比较吸引我的是包装了数据处理等流程。
如果说Finetuner着重于m3e,那我表示理解。
但如果uniem希望建立一套sentence transformers之上的工具,或许可以考虑更开放的模型支持(因为从实现上,这里的微调和从头训练已经很接近了)。
我尝试在decoder-only上做一些embedding的工作,所以做了些改动,更新时看到了model_class参数,故而提了这个issue。
以上可供您参考。
明白您的需求了,目前 uniem 的训练脚本 其实是可以直接训练 SGPT 的,只需要设置 model_class 和 bitfit 的参数。所以对于 uniem 现在的设计来讲,想要兼容 decoder-only 或者更多的模型,其实是没有什么大的困难。
您的建议非常好,我会尽快把这个参数加到 FineTuner
中。另外,我接下来也会优化这部分的设计,尽量让 uniem 在保持在低学习成本的约束下,兼容更多模型。
哈哈,主要 uniem 欠了好多债,SGPT 没测完,ReRaking 的模型没训练完,详细文档没有写。听说你有兴趣使用 uniem 来做你的工作,那太好了! 有啥问题和进展,直接和我说就好~
我写了一个最初版的实现在 finetuner-model-class 分支上,但是想要真正支持 sentence_transformers ,还是需要进一步开发~
我从uniem发布开始,大致细看过3个版本,前后分别是
加入了一段T5的判断
,和修改成model_class
。 我之前很多代码是在 Sentence Transformers 上的,uniem比较吸引我的是包装了数据处理等流程。如果说Finetuner着重于m3e,那我表示理解。
但如果uniem希望建立一套sentence transformers之上的工具,或许可以考虑更开放的模型支持(因为从实现上,这里的微调和从头训练已经很接近了)。
我尝试在decoder-only上做一些embedding的工作,所以做了些改动,更新时看到了model_class参数,故而提了这个issue。
以上可供您参考。
uniem 0.3.0 已经支持 sentence-transformers 了,整体代码的灵活性有了提升~ 如有问题,可以进一步沟通