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

关注下 #1

Open
danger-dream opened this issue Apr 27, 2023 · 9 comments
Open

关注下 #1

danger-dream opened this issue Apr 27, 2023 · 9 comments

Comments

@danger-dream
Copy link

之前有用NL2SQL、DuSQL数据集Ptuning过ChatGLM,泛化效果并不好。后来我也自己建模板生成领域内训练集测试,也不行。

几个原因

1是通常我们建表都会做拆分,比如净收益率、损失率、进球次数这类值基本都是多表实时计算来的,像数据集那样统计类型的表很少

2是比如你代码中prompt.py#L44的这个例子
用户在问"问题"时通常不会知道表里都有哪些表和字段。比如"矿泉水是从那进的货",了解sql的话应该都知道是查cargo、supply_company,但llm没法把矿泉水和cargo_name关联(训练集足够的话可以,但如果在换成“干脆面”就又不行了),也没法把"从那进"和supply_company关联

@liaoxingjian
Copy link

liaoxingjian commented Apr 28, 2023

in-context的例子似乎是针对特定数据库的,如果用户处理自己的数据库怎么办

@yysirs
Copy link
Member

yysirs commented Apr 28, 2023

之前有用NL2SQL、DuSQL数据集Ptuning过ChatGLM,泛化效果并不好。后来我也自己建模板生成领域内训练集测试,也不行。

几个原因

1是通常我们建表都会做拆分,比如净收益率、损失率、进球次数这类值基本都是多表实时计算来的,像数据集那样统计类型的表很少

2是比如你代码中prompt.py#L44的这个例子 用户在问"问题"时通常不会知道表里都有哪些表和字段。比如"矿泉水是从那进的货",了解sql的话应该都知道是查cargo、supply_company,但llm没法把矿泉水和cargo_name关联(训练集足够的话可以,但如果在换成“干脆面”就又不行了),也没法把"从那进"和supply_company关联

对的,我感觉这个问题可能需要使用 问句改写的方法 去解决

@yysirs
Copy link
Member

yysirs commented Apr 28, 2023

in-context的例子似乎是针对特定数据库的,如果用户处理自己的数据库怎么办

这个倒是提醒我了,我后续研究一下动态的in-context 的prompt

@danger-dream
Copy link
Author

之前有用NL2SQL、DuSQL数据集Ptuning过ChatGLM,泛化效果并不好。后来我也自己建模板生成领域内训练集测试,也不行。
几个原因
1是通常我们建表都会做拆分,比如净收益率、损失率、进球次数这类值基本都是多表实时计算来的,像数据集那样统计类型的表很少
2是比如你代码中prompt.py#L44的这个例子 用户在问"问题"时通常不会知道表里都有哪些表和字段。比如"矿泉水是从那进的货",了解sql的话应该都知道是查cargo、supply_company,但llm没法把矿泉水和cargo_name关联(训练集足够的话可以,但如果在换成“干脆面”就又不行了),也没法把"从那进"和supply_company关联

对的,我感觉这个问题可能需要使用 问句改写的方法 去解决

我试过做prompt的数据增强,一开始用paddlenlp,增强后我都看不懂。然后用chatgpt-3.5来生成,ptuning了几次,效果都不算好,也是泛化能力问题以及语义跟表、字段、字典间关联的问题。

训练集大概3千多条,做完增强在4万条左右,加上表名、字段名、字典的问答,4.4万。

chatglm-6b做这个看不到希望了,抽空试试moss,用插件的思路来做,只是没想好咋构建数据集

@yysirs
Copy link
Member

yysirs commented Apr 28, 2023

in-context的例子似乎是针对特定数据库的,如果用户处理自己的数据库怎么办

这个也可以配置成yaml文件,外挂出来,我后续也搞一下

@yysirs
Copy link
Member

yysirs commented Apr 28, 2023

之前有用NL2SQL、DuSQL数据集Ptuning过ChatGLM,泛化效果并不好。后来我也自己建模板生成领域内训练集测试,也不行。
几个原因
1是通常我们建表都会做拆分,比如净收益率、损失率、进球次数这类值基本都是多表实时计算来的,像数据集那样统计类型的表很少
2是比如你代码中prompt.py#L44的这个例子 用户在问"问题"时通常不会知道表里都有哪些表和字段。比如"矿泉水是从那进的货",了解sql的话应该都知道是查cargo、supply_company,但llm没法把矿泉水和cargo_name关联(训练集足够的话可以,但如果在换成“干脆面”就又不行了),也没法把"从那进"和supply_company关联

对的,我感觉这个问题可能需要使用 问句改写的方法 去解决

我试过做prompt的数据增强,一开始用paddlenlp,增强后我都看不懂。然后用chatgpt-3.5来生成,ptuning了几次,效果都不算好,也是泛化能力问题以及语义跟表、字段、字典间关联的问题。

训练集大概3千多条,做完增强在4万条左右,加上表名、字段名、字典的问答,4.4万。

chatglm-6b做这个看不到希望了,抽空试试moss,用插件的思路来做,只是没想好咋构建数据集

可以滴,我后续也打算加入MOSS,毕竟MOSS是16B,生成能力可能更强点。针对SQL领域内的Fine-tuning,如:LORA,这些,后续我也会尝试去做,到时候可以一起交流讨论。

@highroom
Copy link

关注下,大佬些有好的方法了也分享一下

@highroom
Copy link

highroom commented Jun 6, 2023

推荐可以看看 https://github.com/csunny/DB-GPT/tree/main

@yysirs
Copy link
Member

yysirs commented Jun 6, 2023

推荐可以看看 https://github.com/csunny/DB-GPT/tree/main

这个也有看到,学习一波👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants