GithubHelp home page GithubHelp logo

Comments (35)

LightWind1 avatar LightWind1 commented on July 23, 2024 2

我测试过不使用natsql的,mt5-base,classifier 用xlm-roberta-base,bs = 6,其他没改
{
"ckpt": "./models/text2sql-mt5-base/checkpoint-23324",
"EM": 0.6692456479690522,
"EXEC": 0.7195357833655706
}

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024 1

@LmrZER0 我这边观察到的结果一样,我使用的是xlm-roberta-large+mT5。base规模的mT5并没有跑出 @LightWind1 这么好的效果。
在我们的实验中,mT5-3B+NatSQL才能在development set上取得不错的性能:

Best EM+EXEC ckpt: {
'ckpt': './models/text2natsql-mt5-xl-cspider/checkpoint-167433', 
'EM': 0.6634429400386848, 
'EXEC': 0.811411992263056
}

一个有趣的发现是,在CSpider上,xlm-roberta-large在跨语言上的schema items classification表现很好,但是mT5的跨语言生成能力似乎没有想象中的那么好。

BTW,我们会在下周更新代码和训练好的模型。😉

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024 1

@fz5400 感谢感谢,我这边也刚训练完base和large规模的mT5,代码和模型参数会在这两天更新的😊

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

您好,
我们团队目前没有在Cspider上进行过测试(未来会做这件事),您可以先尝试使用多语言RoBERTa和T5重新训练一个支持中文的RESDSQL。我们在之前issues中也进行过相关讨论,请参考 #7#11 。此外,由于Text2SQL部分使用的是seq2seq(T5)模型,因此它支持多表查询。

from resdsql.

lmolhw5252 avatar lmolhw5252 commented on July 23, 2024

好的谢谢

from resdsql.

694344851 avatar 694344851 commented on July 23, 2024

您好, 我们团队目前没有在Cspider上进行过测试(未来会做这件事),您可以先尝试使用多语言RoBERTa和T5重新训练一个支持中文的RESDSQL。我们在之前issues中也进行过相关讨论,请参考 #7#11 。此外,由于Text2SQL部分使用的是seq2seq(T5)模型,因此它支持多表查询。

替换为对应的mt5,进行微调所需要的算力大概是多少

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@694344851 以我的经验,在默认float32精度下微调参数,T5-Base和T5-Large可以在一张24G的GPU(如3090)上进行训练,T5-3B则需要一张至少40G的GPU(如A6000)。当然,您可以尝试使用Deepspeed等工具包来节省训练时显存占用。

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@LightWind1 十分感谢您在CSpider上的测试!!您让我们团队看到RESDSQL在中文上表现出较好的跨语言能力 (Cross-lingual ability),同时展示出RESDSQL还有进一步挖掘的潜力,特别是对比了官方的leaderboard (https://taolusi.github.io/CSpider-explorer) 之后。从我们的论文中可以看到,增大模型(Base->Large->3B)参数规模可以进一步带来性能提升。因此,请问您后续打算在更大的mT5上训练吗,比如Large?3B?除此之外,Spider的natsql是否能和Cspider对应上呢?如果能,也许您可以尝试训练natsql版本的RESDSQL。

最后,再次感谢您对RESDSQL中文迁移能力的测试!

from resdsql.

LightWind1 avatar LightWind1 commented on July 23, 2024

@lihaoyang-ruc
您客气。虽然我没尝试过mt5-Large,但是测试过mt5-small,base对比small是能够观察到性能提升的。这部分数据我没留存,我记得small的EM不到60。
目前正在尝试训练natsql版本,后续计划尝试利用DeepSpeed测试mt5-Large,我这里的算力资源比较有限,3B这个尺寸的模型就完全没办法尝试了。

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@LightWind1 好的,明白。
算力的确是训练3B模型的一大阻碍,鉴于此,经过讨论,我们计划在后续推出CSpider上微调好的3B模型供大家使用。

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

我测试过不使用natsql的,mt5-base,classifier 用xlm-roberta-base,bs = 6,其他没改 { "ckpt": "./models/text2sql-mt5-base/checkpoint-23324", "EM": 0.6692456479690522, "EXEC": 0.7195357833655706 }

@LightWind1 大佬,直接跑preprocessing.py不报错吗?
另外能不能问下训练了多久

from resdsql.

liaoxingjian avatar liaoxingjian commented on July 23, 2024

@LightWind1 好的,明白。
算力的确是训练3B模型的一大阻碍,鉴于此,经过讨论,我们计划在后续推出CSpider上微调好的3B模型供大家使用。

谢谢!那真的是太好了!请问大概什么时候发布

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@liaoxingjian 计划在半个月内(5月15号之前)完成 ; )

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

跑了一下mt5+natsql,跑了十几个epoch内存炸了,但EXEC也有74,为什么在CSpider上也能得到这么高的EXEC呢,value在问题中都没有提到应该预测不出来吧

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@xwt0016 你好,NatSQL提供的标注数据目前仅和Spider对齐,NatSQL在某些cases下并没有和CSpider进行对齐(大概有300多个),而且我发现大多数没有对齐的部分来自SQL中的values。我不建议在CSpider上直接使用我们的代码训练NatSQL版本。

这里是一些未对齐的例子:

NatSQL: select ref_feature_types.feature_type_name from other_available_features  where  other_available_features.feature_name = "AirCon" 
Spider: SELECT T2.feature_type_name FROM Other_Available_Features AS T1 JOIN Ref_Feature_Types AS T2 ON T1.feature_type_code  =  T2.feature_type_code WHERE T1.feature_name  =  "AirCon"
CSpider: SELECT T2.feature_type_name FROM Other_Available_Features AS T1 JOIN Ref_Feature_Types AS T2 ON T1.feature_type_code  =  T2.feature_type_code WHERE T1.feature_name  =  "春秋航空公司"
----------------------------------------------------
NatSQL: select max ( performance.Share )  , min ( performance.Share )  from performance  where  performance.Type != "Live final" 
Spider: SELECT max(SHARE) ,  min(SHARE) FROM performance WHERE TYPE != "Live final"
CSpider: SELECT max(SHARE) ,  min(SHARE) FROM performance WHERE TYPE != "决赛直播"

想在CSpider上训练RESDSQL的NatSQL版本,我们需要先针对CSpider修复未对齐的cases(因为我目前还没找到和CSpider对齐后的NatSQL数据集)。

除此之外,对于你的问题(EXEC为什么这么高?),我认为原因有很多。首先,在CSpider的大部分数据中,value会出现在问题中,mT5只需要从输入复制过来即可。另一个原因是EXEC这个指标可能出现false positives的情况,会导致EXEC偏高,详情可参考这篇文章:https://arxiv.org/pdf/2010.02840.pdf

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

@lihaoyang-ruc 感谢解答,我会再尝试一下sql版本的。但CSpider没有翻译数据库文件,数据库中的值还是英文的,从中文问题中复制得到值是不能得到正确的执行结果的,并且我查看了预测得到的pred.sql文件,其中的value确实是英文的,如:
select avg(singer.age) , min(singer.age) , max(singer.age) from singer where singer.country = "France"
select student.fname from Has_Pet join Student on Has_Pet.StuID = Student.StuID join Pets on Has_Pet.PetID = Pets.PetID where pets.pettype = "Cat"
我不知道模型是如何生成这些值的,France,Cat这些词应该没有在问题中出现过。

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@xwt0016 这是因为NatSQL的value是英文的,因此模型学到生成value需要是英文的,模型可能在这个过程中隐式地做了“翻译”任务(中翻英)。

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

了解,
还想问一下如果要做和CSpider对齐的NatSQL数据集,是否将train_spider-natsql.jsondev-natsql.json中的NatSQL项中的value值替换为CSpider中的值就行了?

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@xwt0016 是的,但在实际做的时候肯定会遇到一些“坑”,比如:

  • train_spider-natsql.json只提供了Spider中标注的7000条数据的natsql,并没有包含其他single-domain数据集(比如Restaurants, GeoQuery, Scholar等)提供的1659条数据,而CSpider的训练集(也就是CSpider的train.json)包含了完整的7000+1659=8659条数据。因此想获得CSpider对齐的NatSQL,需要把CSpider多余的1659条数据丢掉。
  • 从CSpider官方网站下载的文件中,dev_gold.sqltrain_gold.sql依然是Spider中标注的英文SQL,因此不能直接用他们做模型评估。

这两个问题也只是我目前遇到的,总之,将本项目迁移到CSpider上请务必注意各种细节。

最后,我们训练好3B模型(包括SQL和NatSQL两个版本)后会第一时间更新数据集,代码和模型 :)

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

我知道为啥CSpider上EXEC这么高了,因为只要值有中文,查询返回值就是空,评估的时候这部分应该都算作正确了

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@xwt0016 是的,这就是EXEC指标中经常出现的false positives问题,但EM同样存在false negatives问题。关于Text2SQL评价指标的讨论和分析,可以参考Semantic Evaluation for Text-to-SQL with Distilled Test Suites。

from resdsql.

LmrZER0 avatar LmrZER0 commented on July 23, 2024

3

请问你是用的哪个模型啊,我这里用的hfl/chinese-roberta-wwm-ext-large + google/mt5-base 跑出来的效果没有这么好呀

from resdsql.

LmrZER0 avatar LmrZER0 commented on July 23, 2024

@LmrZER0 我这边观察到的结果一样,我使用的是xlm-roberta-large+mT5。base规模的mT5并没有跑出 @LightWind1 这么好的效果。 在我们的实验中,mT5-3B+NatSQL才能在development set上取得不错的性能:

Best EM+EXEC ckpt: {
'ckpt': './models/text2natsql-mt5-xl-cspider/checkpoint-167433', 
'EM': 0.6634429400386848, 
'EXEC': 0.811411992263056
}

一个有趣的发现是,在CSpider上,xlm-roberta-large在跨语言上的schema items classification表现很好,但是mT5的跨语言生成能力似乎没有想象中的那么好。

BTW,我们会在下周更新代码和训练好的模型。😉

期待你的更新,想问一下你那边知道SQL转NatSQL吗?

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@LmrZER0 这个问题我在一开始了解NatSQL的时候就有关注,但是目前还没有找到。NatSQL似乎没有公开SQL->NatSQL代码,只公开了NatSQL->SQL代码。

相似的问题也在这里被讨论过:ygan/NatSQL#2

from resdsql.

PoseidomWong avatar PoseidomWong commented on July 23, 2024

@LmrZER0 我这边观察到的结果一样,我使用的是xlm-roberta-large+mT5。base规模的mT5并没有跑出 @LightWind1 这么好的效果。 在我们的实验中,mT5-3B+NatSQL才能在development set上取得不错的性能:

Best EM+EXEC ckpt: {
'ckpt': './models/text2natsql-mt5-xl-cspider/checkpoint-167433', 
'EM': 0.6634429400386848, 
'EXEC': 0.811411992263056
}

一个有趣的发现是,在CSpider上,xlm-roberta-large在跨语言上的schema items classification表现很好,但是mT5的跨语言生成能力似乎没有想象中的那么好。

BTW,我们会在下周更新代码和训练好的模型。😉

非常期待新代码和训练好的模型了🤗🤗🤗

from resdsql.

LightWind1 avatar LightWind1 commented on July 23, 2024

@@我后来做了一些与模型架构无关的调整,用mt5-large跑出来了这个数据。但是第一遍mt5-base的数据我自己也复现不出来了,现在这个能复现。我需要详细确认一下我都改了些啥,然后再与各位讨论。也许我的评估准确率有问题
{
"ckpt": "./models/text2sql-mt5-large/checkpoint-249975",
"EM": 0.7485493230174082,
"EXEC": 0.7678916827852998
}
{
"ckpt": "./models/text2sql-mt5-large/checkpoint-669933",
"EM": 0.7243713733075435,
"EXEC": 0.7524177949709865
}
image

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@LightWind1 你好,你能上传一下你那边mt5-large在CSpider上预测出的SQL吗(文本文件),我这边也跑一下评估脚本,看是否是评估准确率的问题。

from resdsql.

LightWind1 avatar LightWind1 commented on July 23, 2024

@LightWind1 你好,你能上传一下你那边mt5-large在CSpider上预测出的SQL吗(文本文件),我这边也跑一下评估脚本,看是否是评估准确率的问题。

https://drive.google.com/file/d/1ERJLnTqLOOCT2BuKorsUXDCNfSR7Z08B/view?usp=share_link

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

@LightWind1 感谢配合。
我观察到生成SQL的WHERE语句的值很多都还是英文,但是CSpider把它们都翻译成中文了吧?
这是CSpider dev set的gold SQL文件:https://drive.google.com/file/d/1viyGC8f3HUWGizMrbkqUw-m_WVYOJwb2/view?usp=sharing
是不是在数据准备时出现了一些问题?因为CSpider确实有一些需要独特注意的地方。比如上面讨论过的这些:

@xwt0016 是的,但在实际做的时候肯定会遇到一些“坑”,比如:

  • train_spider-natsql.json只提供了Spider中标注的7000条数据的natsql,并没有包含其他single-domain数据集(比如Restaurants, GeoQuery, Scholar等)提供的1659条数据,而CSpider的训练集(也就是CSpider的train.json)包含了完整的7000+1659=8659条数据。因此想获得CSpider对齐的NatSQL,需要把CSpider多余的1659条数据丢掉。
  • 从CSpider官方网站下载的文件中,dev_gold.sqltrain_gold.sql依然是Spider中标注的英文SQL,因此不能直接用他们做模型评估。

这两个问题也只是我目前遇到的,总之,将本项目迁移到CSpider上请务必注意各种细节。

最后,我们训练好3B模型(包括SQL和NatSQL两个版本)后会第一时间更新数据集,代码和模型 :)

from resdsql.

xwt0016 avatar xwt0016 commented on July 23, 2024

@@我后来做了一些与模型架构无关的调整,用mt5-large跑出来了这个数据。但是第一遍mt5-base的数据我自己也复现不出来了,现在这个能复现。我需要详细确认一下我都改了些啥,然后再与各位讨论。也许我的评估准确率有问题 { "ckpt": "./models/text2sql-mt5-large/checkpoint-249975", "EM": 0.7485493230174082, "EXEC": 0.7678916827852998 } { "ckpt": "./models/text2sql-mt5-large/checkpoint-669933", "EM": 0.7243713733075435, "EXEC": 0.7524177949709865 } image

这也太高了,看着像英文数据集上的结果
我跑mt5-large+natsql的结果:
{
"ckpt": "./models/text2natsql-t5-large/checkpoint-27489",
"EM": 0.6508704061895552,
"EXEC": 0.8075435203094777
}

from resdsql.

LightWind1 avatar LightWind1 commented on July 23, 2024

@LightWind1 感谢配合。 我观察到生成SQL的WHERE语句的值很多都还是英文,但是CSpider把它们都翻译成中文了吧? 这是CSpider dev set的gold SQL文件:https://drive.google.com/file/d/1viyGC8f3HUWGizMrbkqUw-m_WVYOJwb2/view?usp=sharing 是不是在数据准备时出现了一些问题?因为CSpider确实有一些需要独特注意的地方。比如上面讨论过的这些:

@xwt0016 是的,但在实际做的时候肯定会遇到一些“坑”,比如:

  • train_spider-natsql.json只提供了Spider中标注的7000条数据的natsql,并没有包含其他single-domain数据集(比如Restaurants, GeoQuery, Scholar等)提供的1659条数据,而CSpider的训练集(也就是CSpider的train.json)包含了完整的7000+1659=8659条数据。因此想获得CSpider对齐的NatSQL,需要把CSpider多余的1659条数据丢掉。
  • 从CSpider官方网站下载的文件中,dev_gold.sqltrain_gold.sql依然是Spider中标注的英文SQL,因此不能直接用他们做模型评估。

这两个问题也只是我目前遇到的,总之,将本项目迁移到CSpider上请务必注意各种细节。
最后,我们训练好3B模型(包括SQL和NatSQL两个版本)后会第一时间更新数据集,代码和模型 :)

确实是这个地方有问题,非常感谢您帮我指出问题。

from resdsql.

lihaoyang-ruc avatar lihaoyang-ruc commented on July 23, 2024

代码和模型检查点已经更新,有任何问题欢迎在issue提出。

from resdsql.

fz5400 avatar fz5400 commented on July 23, 2024

截屏2023-05-26 09 45 20
因为显卡的限制,作者提供的3B模型我无法直接使用,但是我用作者提供的xlm_roberta模型处理数据后然后用mt5-base模型训练出来的结果,感觉也还蛮不错的诶!(由于显存的限制,在训练模型的时候我的bs是3。)训练好的模型分享如下,希望可以给大家节省训练的时间。
链接: https://pan.baidu.com/s/1_e1vqlS2YuuZet8yS-flDA?pwd=fjr8 提取码: fjr8

from resdsql.

tmhm avatar tmhm commented on July 23, 2024

@@我后来做了一些与模型架构无关的调整,用mt5-large跑出来了这个数据。但是第一遍mt5-base的数据我自己也复现不出来了,现在这个能复现。我需要详细确认一下我都改了些啥,然后再与各位讨论。也许我的评估准确率有问题 { "ckpt": "./models/text2sql-mt5-large/checkpoint-249975", "EM": 0.7485493230174082, "EXEC": 0.7678916827852998 } { "ckpt": "./models/text2sql-mt5-large/checkpoint-669933", "EM": 0.7243713733075435, "EXEC": 0.7524177949709865 } image

我跑了一下,xlm-roberta-large + google/mt5-base , batch_size=4, 比你这个低不少,

{'ckpt': './models/text2sql-mt5-base-cspider/checkpoint-40196',
 'EM': 0.5125725338491296, 'EXEC': 0.6992263056092843}

from resdsql.

CyanMystery avatar CyanMystery commented on July 23, 2024

@lihaoyang-ruc 您客气。虽然我没尝试过mt5-Large,但是测试过mt5-small,base对比small是能够观察到性能提升的。这部分数据我没留存,我记得small的EM不到60。 目前正在尝试训练natsql版本,后续计划尝试利用DeepSpeed测试mt5-Large,我这里的算力资源比较有限,3B这个尺寸的模型就完全没办法尝试了。

请问您现在跑这个模型算力资源是咋样的

from resdsql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.