自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件 原創(chuàng)

發(fā)布于 2024-11-28 16:53
瀏覽
0收藏

text2sql任務(wù)是將自然語(yǔ)言問(wèn)題轉(zhuǎn)換為SQL查詢。使用大模型來(lái)進(jìn)行 sql 生成的方式也越來(lái)越常見(jiàn)。根據(jù)大模型用于文本到SQL生成的方式,text2sql可以分為兩種場(chǎng)景:零樣本/少樣本提示和微調(diào)。

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

盡管少樣本提示的大模型取得了顯著進(jìn)展,但僅依靠其參數(shù)知識(shí)和提示來(lái)準(zhǔn)確處理高度復(fù)雜的SQL查詢對(duì)于預(yù)訓(xùn)練的大型語(yǔ)言模型來(lái)說(shuō)仍然是一個(gè)巨大的挑戰(zhàn)。DB-GPT-Hub側(cè)重于微調(diào)更大的大型語(yǔ)言模型。

框架設(shè)計(jì)

DB-GPT 框架下提出了一個(gè)端到端大模型 Text2SQL 微調(diào)子框架 DB-GPT-Hub。在 DB-GPT 框架下,構(gòu)架了 Text2SQL 領(lǐng)域下的數(shù)據(jù)預(yù)處理 - 模型微調(diào) - 模型預(yù)測(cè) - 模型驗(yàn)證 - 模型評(píng)估的全鏈路工作流程,如下圖所示:

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

DB-GPT-Hub 的架構(gòu)流程圖

代碼庫(kù)設(shè)計(jì)

  • 數(shù)據(jù)集構(gòu)建:將原始文本到SQL數(shù)據(jù)加工成適合微調(diào)LLM的格式(例如,列表1中顯示的TRF),這包括將模式和數(shù)據(jù)庫(kù)描述整合到提示中作為指令,以及在訓(xùn)練和評(píng)估期間增強(qiáng)性能的各種問(wèn)題表示。此外,我們還將選擇不同的少樣本策略,例如示例選擇和組織,來(lái)構(gòu)建評(píng)估數(shù)據(jù)集(Gao等人,2023)。
  • 訓(xùn)練:支持使用PEFT策略對(duì)開(kāi)源LLM進(jìn)行微調(diào)。我們支持從小到大的模型規(guī)模的大多數(shù)公共架構(gòu),例如Qwen、Llama、Baichuan和ChatGLM。
  • 預(yù)測(cè):支持對(duì)開(kāi)源LLM的微調(diào)版本以及閉源LLM進(jìn)行SQL查詢推理。我們支持少樣本和零樣本方法,以生成特定場(chǎng)景下的SQL。
  • 評(píng)估:包含不同的指標(biāo)(EX、EM、有效效率得分(VES)),以從不同角度評(píng)估生成的SQL的性能。

數(shù)據(jù)集

Spider是一個(gè)大規(guī)??缬驍?shù)據(jù)集,包含10,181個(gè)自然語(yǔ)言查詢,5,693個(gè)獨(dú)特的復(fù)雜SQL查詢,涵蓋200個(gè)數(shù)據(jù)庫(kù),覆蓋138個(gè)領(lǐng)域。該數(shù)據(jù)集的標(biāo)準(zhǔn)協(xié)議將其分為8,659個(gè)訓(xùn)練樣本和2,147個(gè)測(cè)試樣本,分布在34個(gè)數(shù)據(jù)庫(kù)中。SQL查詢分為四個(gè)難度級(jí)別,即簡(jiǎn)單、中等、困難和超難。如下:

簡(jiǎn)單:
      Question: What is the number of cars with more than 4 cylinders?
      SQL:SELECT COUNT (*)FROM cars_dataWHERE cylinders > 4

中等:
      Question: For each stadium, how many concerts are there?
      SQL:SELECT T2.name, COUNT (*) FROM concert AS T1 JOIN stadium AS T2ON T1.stadium_id = T2.stadium_idGROUP BY T1.stadium_id

較難:
      Question: Which countries in Europe have at least 3 car manufacturers?
      SQL:SELECT T1.country name FROM countries AS T1 JOIN continents AS T2 ON T1.continent T2.cont_id JOIN car makers AS T3 O N T1.country_id = T3.country WHERE T2.continent = 'Europe' GROUPBY T1.country_name HAVINGCOUNT (*) >= 3

極難:
      Question: What is the average life expectancy in the countries where English is not the official language?
      SQL:SELECT AVG(life_expectancy) FROM country WHERE name NOT IN ( SELECT T1.name FROM country AS T1 JOIN country_language AS T2 ON T1.code = T2.country_code WHERE T2.language = "English" AND T2.is_official = "T")

其他數(shù)據(jù)集:

  • WikiSQL: 一個(gè)大型的語(yǔ)義解析數(shù)據(jù)集,由80,654個(gè)自然語(yǔ)句表述和24,241張表格的sql標(biāo)注構(gòu)成。WikiSQL中每一個(gè)問(wèn)句的查詢范圍僅限于同一張表,不包含排序、分組、子查詢等復(fù)雜操作。
  • CHASE: 一個(gè)跨領(lǐng)域多輪交互text2sql中文數(shù)據(jù)集,包含5459個(gè)多輪問(wèn)題組成的列表,一共17940個(gè)<query, SQL>二元組,涉及280個(gè)不同領(lǐng)域的數(shù)據(jù)庫(kù)。
  • BIRD-SQL:數(shù)據(jù)集是一個(gè)英文的大規(guī)??珙I(lǐng)域文本到SQL基準(zhǔn)測(cè)試,特別關(guān)注大型數(shù)據(jù)庫(kù)內(nèi)容。該數(shù)據(jù)集包含12,751對(duì)文本到SQL數(shù)據(jù)對(duì)和95個(gè)數(shù)據(jù)庫(kù),總大小為33.4GB,跨越37個(gè)職業(yè)領(lǐng)域。BIRD-SQL數(shù)據(jù)集通過(guò)探索三個(gè)額外的挑戰(zhàn),即處理大規(guī)模和混亂的數(shù)據(jù)庫(kù)值、外部知識(shí)推理和優(yōu)化SQL執(zhí)行效率,縮小了文本到SQL研究與實(shí)際應(yīng)用之間的差距。
  • CoSQL:是一個(gè)用于構(gòu)建跨域?qū)υ捨谋镜絪ql系統(tǒng)的語(yǔ)料庫(kù)。它是Spider和SParC任務(wù)的對(duì)話版本。CoSQL由30k+回合和10k+帶注釋的SQL查詢組成,這些查詢來(lái)自Wizard-of-Oz的3k個(gè)對(duì)話集合,查詢了跨越138個(gè)領(lǐng)域的200個(gè)復(fù)雜數(shù)據(jù)庫(kù)。每個(gè)對(duì)話都模擬了一個(gè)真實(shí)的DB查詢場(chǎng)景,其中一個(gè)工作人員作為用戶探索數(shù)據(jù)庫(kù),一個(gè)SQL專家使用SQL檢索答案,澄清模棱兩可的問(wèn)題,或者以其他方式通知。

按照NSQL的處理模板,對(duì)數(shù)據(jù)集做簡(jiǎn)單處理,共得到約20w條訓(xùn)練數(shù)據(jù)

為了充分利用數(shù)據(jù)庫(kù)中的表和字段等相關(guān)信息,對(duì) Spider 中的原始數(shù)據(jù)進(jìn)行處理,用自然語(yǔ)言表示數(shù)據(jù)庫(kù)包含的表結(jié)構(gòu)以及表結(jié)構(gòu)包含的字段以及相應(yīng)的主鍵和外鍵等,經(jīng)過(guò)數(shù)據(jù)預(yù)處理后,可以得到如下的數(shù)據(jù)格式:

{
    "instruction": "concert_singer(數(shù)據(jù)庫(kù)名) contains tables(表) such as stadium, singer, concert, singer_in_concert. Table stadium has columns(列) such as stadium_id, location, name, capacity, highest, lowest, average. stadium_id is the primary key(主鍵). Table singer has columns such as singer_id, name, country, song_name, song_release_year, age, is_male. singer_id is the primary key. Table concert has columns such as concert_id, concert_name, theme, stadium_id, year. concert_id is the primary key. Table singer_in_concert has columns such as concert_id, singer_id. concert_id is the primary key. The year of concert is the foreign key(外鍵)of location of stadium. The stadium_id of singer_in_concert is the foreign key of name of singer. The singer_id of singer_in_concert is the foreign key of concert_name of concert.",
    "input": "How many singers do we have?",
    "response": "select count(*) from singer"
}

{
    "instruction": "concert_singer(數(shù)據(jù)庫(kù)名)包含表(表),例如stadium, singer, concert, singer_in_concert。表體育場(chǎng)有列(列),如stadium_id、位置、名稱、容量、最高、最低、平均。Stadium_id是主鍵(主鍵)。表singer有這樣的列:singer_id、name、country、song_name、song_release_year、age、is_male。Singer_id為主鍵。表concert有如下列:concert_id、concert_name、theme、stadium_id、year。Concert_id是主鍵。表singer_in_concert有如下列:concert_id, singer_id。Concert_id是主鍵。演唱會(huì)年份是場(chǎng)館位置的外鍵(外鍵)。singer_in_concert的stadium_id是歌手名的外鍵。singer_in_concert的singer_id是concert的concert_name的外鍵。",
    "input": "我們有多少歌手?",
    "response": "select count(*) from singer"
}

為了更好的利用大語(yǔ)言模型的理解能力,使用了 prompt dict 以優(yōu)化輸入,如下所示:

SQL_PROMPT_DICT = {
    "prompt_input": (
        "I want you to act as a SQL terminal in front of an example database. "
        "Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\n"
        "###Instruction:\n{instruction}\n\n###Input:\n{input}\n\n###Response: "
    ),
    "prompt_no_input": (
        "I want you to act as a SQL terminal in front of an example database. "
        "Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\n"
        "###Instruction:\n{instruction}\n\n### Response: "
    ),
}

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

Spider數(shù)據(jù)集上TRP格式的查詢-響應(yīng)對(duì)

指標(biāo):

使用兩個(gè)常用的指標(biāo),精確集匹配準(zhǔn)確率(EM)和執(zhí)行準(zhǔn)確率(EX),來(lái)評(píng)估所有模型的性能。EM衡量預(yù)測(cè)SQL查詢與其對(duì)應(yīng)真實(shí)值之間的匹配SQL關(guān)鍵字,而EX比較預(yù)測(cè)SQL查詢的執(zhí)行輸出與某些數(shù)據(jù)庫(kù)實(shí)例上真實(shí)SQL查詢的執(zhí)行輸出。由于對(duì)于給定問(wèn)題可能存在多個(gè)有效的SQL查詢,EX提供了對(duì)模型性能更精確的估計(jì)。在這兩種指標(biāo)中,較高的值被認(rèn)為更好。主要使用EX來(lái)評(píng)估論文中SQL的準(zhǔn)確性。

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

LLM

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

支持基座模型

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

微調(diào)資源

為了確保公平比較,對(duì)所有LLM使用相同的最大上下文長(zhǎng)度2048。在評(píng)估期間,留下512個(gè)token用于響應(yīng)生成。將參數(shù)溫度設(shè)置為0,以消除隨機(jī)性的影響。

實(shí)驗(yàn)

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

DB-GPT-Hub:text2sql的微調(diào)框架及基準(zhǔn)測(cè)試套件-AI.x社區(qū)

參考文獻(xiàn)

  • paper:DB-GPT-Hub: Towards Open Benchmarking Text-to-SQL Empowered by Large Language Models,https://arxiv.org/abs/2406.11434
  • code:https://github.com/eosphoros-ai/DB-GPT-Hub
  • text2sql benchmark:https://github.com/eosphoros-ai/Awesome-Text2SQL


本文轉(zhuǎn)載自公眾號(hào)大模型自然語(yǔ)言處理  作者:余俊暉

原文鏈接:??https://mp.weixin.qq.com/s/Llyb77BSTnyzfOIrBMIPFw??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2024-11-28 18:46:09修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦