Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

embedder 引入了 新的参数 model_class,但没有正确的在Finetuner中传递。 #36

Closed
FFengIll opened this issue Jul 6, 2023 · 5 comments
Assignees
Labels
bug Something isn't working

Comments

@FFengIll
Copy link

FFengIll commented Jul 6, 2023

🐛 bug 说明

embedder 引入了 新的参数 model_class,但没有正确的在Finetuner中传递。

Python Version

None

@FFengIll FFengIll added the bug Something isn't working label Jul 6, 2023
@wangyuxinwhy
Copy link
Owner

是的,这个是我在设计的时候刻意这么做的。我当时的决策是这样的:

  1. model_class 参数的引入,是为了兼容没有办法通过 AutoModel.from_pretrianed 来加载的模型,通过这个参数就可以显式的指定模型类别。
  2. Finetuner 主要的场景是微调 m3e-basem3e-small ,这两个模型都是可以通过 AutoModel.from_pretrianed 来加载的,为了减少用户的认知负担,所以没有进行传递。

请问,您是在使用的时候需要传递这个参数吗?我在做以上决策的时候是非常武断的,如果您有需求,我可以支持传递这个参数。

@FFengIll
Copy link
Author

FFengIll commented Jul 6, 2023

我从uniem发布开始,大致细看过3个版本,前后分别是加入了一段T5的判断,和修改成model_class
我之前很多代码是在 Sentence Transformers 上的,uniem比较吸引我的是包装了数据处理等流程。

如果说Finetuner着重于m3e,那我表示理解。

但如果uniem希望建立一套sentence transformers之上的工具,或许可以考虑更开放的模型支持(因为从实现上,这里的微调和从头训练已经很接近了)。

我尝试在decoder-only上做一些embedding的工作,所以做了些改动,更新时看到了model_class参数,故而提了这个issue。

以上可供您参考。

@wangyuxinwhy
Copy link
Owner

明白您的需求了,目前 uniem 的训练脚本 其实是可以直接训练 SGPT 的,只需要设置 model_class 和 bitfit 的参数。所以对于 uniem 现在的设计来讲,想要兼容 decoder-only 或者更多的模型,其实是没有什么大的困难。

您的建议非常好,我会尽快把这个参数加到 FineTuner 中。另外,我接下来也会优化这部分的设计,尽量让 uniem 在保持在低学习成本的约束下,兼容更多模型。

哈哈,主要 uniem 欠了好多债,SGPT 没测完,ReRaking 的模型没训练完,详细文档没有写。听说你有兴趣使用 uniem 来做你的工作,那太好了! 有啥问题和进展,直接和我说就好~

@wangyuxinwhy
Copy link
Owner

我写了一个最初版的实现在 finetuner-model-class 分支上,但是想要真正支持 sentence_transformers ,还是需要进一步开发~

@wangyuxinwhy
Copy link
Owner

wangyuxinwhy commented Jul 11, 2023

我从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 了,整体代码的灵活性有了提升~ 如有问题,可以进一步沟通

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants