RUCKBReasoning / codes

The source code of CodeS (SIGMOD 2024).
https://arxiv.org/abs/2402.16347
Apache License 2.0
140 stars 21 forks source link

请问这里使用simCSE的目的是什么呢 #1

Closed steph730 closed 1 year ago

lihaoyang-ruc commented 1 year ago

SimCSE用在few-shot in-context learning中,用于根据当前样例从训练集中选出相关的若干样例作为demonstrations放在输入序列的上下文。

steph730 commented 1 year ago

SimCSE用在few-shot in-context learning中,用于根据当前样例从训练集中选出相关的若干样例作为demonstr

好的谢谢。我使用其他框架将codes封装为openai接口进行调用,使用bird的代码调用,在bird数据集上生成sql,准确率只有0.14,请问这是为什么呢,使用原生代码提升会这么高嘛

lihaoyang-ruc commented 1 year ago

嗯嗯,是这样的,我们必须承认的是,codes并不能作为一个开箱即用的SQL生成模型,它对标模型其实是StarCoder,Code LLaMA等等仅通过了预训练的语言模型。这些模型都没有在下游数据上做过微调,因此直接zero-shot使用他们,大概率不能得到满意的结果。

想要更好的使用codes,正如README所说,要么考虑few-shot上下文学习;要么先在具体的数据集上进行微调,然后才能以zero-shot来生成SQL。我们放出的原生代码同时包括了few-shot版本和微调版本。

除此之外,性能的提升也可能来自于我们对输入的设计。我们在模型输入中额外考虑了列的comments,类型,可能有用的数据库内容,以及数据库的主外键关系等等。

这些细节都会在我们将要到来的论文中详细描述,请耐心等待一段时间!感谢理解。

目前,你可以使用我们在Bird上微调好的模型进行推理。举个例子,你可以使用这条cmd运行在Bird上微调好的codes-1b模型:

CUDA_VISIBLE_DEVICES=0 python -u text2sql_zero_shot.py --model_path seeklhy/codes-1b-bird-with-evidence --dataset_path ./data/sft_eval_bird_with_evidence_text2sql.json --sic_path ./sic_ckpts/sic_bird_with_evidence
steph730 commented 1 year ago

嗯嗯,是这样的,我们必须承认的是,codes并不能作为一个开箱即用的SQL生成模型,它对标模型其实是StarCoder,Code LLaMA等等仅通过了预训练的语言模型。这些模型都没有在下游数据上做过微调,因此直接zero-shot使用他们,大概率不能得到满意的结果。

想要更好的使用codes,正如README所说,要么考虑few-shot上下文学习;要么先在具体的数据集上进行微调,然后才能以zero-shot来生成SQL。我们放出的原生代码同时包括了few-shot版本和微调版本。

除此之外,性能的提升也可能来自于我们对输入的设计。我们在模型输入中额外考虑了列的comments,类型,可能有用的数据库内容,以及数据库的主外键关系等等。

这些细节都会在我们将要到来的论文中详细描述,请耐心等待一段时间!感谢理解。

目前,你可以使用我们在Bird上微调好的模型进行推理。举个例子,你可以使用这条cmd运行在Bird上微调好的codes-1b模型:

CUDA_VISIBLE_DEVICES=0 python -u text2sql_zero_shot.py --model_path seeklhy/codes-1b-bird-with-evidence --dataset_path ./data/sft_eval_bird_with_evidence_text2sql.json --sic_path ./sic_ckpts/sic_bird_with_evidence

好的明白了,十分感谢