15B模型單項(xiàng)能力錘得過GPT3.5,開源SQLCoder已上崗
Coder 家族再添新成員,并且已經(jīng)開源!
你知道的有關(guān)于代碼編輯的大模型工具有哪些呢?
推特用戶 @lvwerra 制作了下面這張圖,為大家梳理代碼大家庭的大部分成員。
就在他發(fā)布了這張圖后的兩周內(nèi),又有三位新成員加入了這個(gè)大家庭,它們分別是 DeciCoder、OctoCoder 以及最新的成員 SQLCoder。
其中,這個(gè)最新成員 SQLCoder 不僅性能出色,并且已經(jīng)開源了!
SQLCoder
作為一個(gè) SOTA 大型語言模型, SQLCoder 將自然語言問題轉(zhuǎn)換為 SQL 查詢。在開發(fā)者的開源評(píng)估框架 SQLEval 中,SQLCoder 的性能明顯優(yōu)于所有主要的開源模型,并且優(yōu)于 OpenAI 的 GPT-3.5。
SQLCoder 是一個(gè) 15B 參數(shù)的 LLM,也是 StarCoder 的微調(diào)實(shí)現(xiàn)。SQLCoder 在手工制作的 SQL 查詢上進(jìn)行了微調(diào),難度依次遞增。在針對(duì)單個(gè)數(shù)據(jù)庫模式進(jìn)行微調(diào)時(shí),它的性能可與 GPT-4 媲美,甚至更勝一籌。
項(xiàng)目地址:https://github.com/defog-ai/sqlcoder
演示地址:https://defog.ai/sqlcoder-demo/
模型權(quán)重:https://huggingface.co/defog/sqlcoder
在過去的三個(gè)月里,SQLCoder 已經(jīng)部署在了醫(yī)療、金融等企業(yè)中。這些企業(yè)通常擁有敏感數(shù)據(jù),他們不希望這些數(shù)據(jù)從自有服務(wù)器中流出,因此利用自托管模型是他們使用 LLM 的唯一途徑。
方法
創(chuàng)建數(shù)據(jù)集
作者創(chuàng)建了一個(gè)手工編輯的 prompt - 補(bǔ)全對(duì)數(shù)據(jù)集,重點(diǎn)是文本到 SQL 任務(wù)。該數(shù)據(jù)集由 10 個(gè)不同的模式創(chuàng)建,問題難度各不相同。此外,他們還從 7 個(gè)新模式中創(chuàng)建了一個(gè)包含 175 個(gè)問題的評(píng)估數(shù)據(jù)集。
他們確保在訓(xùn)練數(shù)據(jù)集和評(píng)估數(shù)據(jù)集中都選擇了有 4-20 張表的復(fù)雜模式,這是因?yàn)橹挥?1 或 2 個(gè)表的模式由于關(guān)系有限,往往只能進(jìn)行簡(jiǎn)單直接的查詢。
問題分類
數(shù)據(jù)集創(chuàng)建后,作者將數(shù)據(jù)集中的每個(gè)問題分為易、中、難、特難四類。這種分類通過調(diào)整 Spider 數(shù)據(jù)集使用的標(biāo)準(zhǔn)來完成,以衡量 SQL 難度。最后,他們將數(shù)據(jù)集分為兩個(gè)不同的子部分,分別是簡(jiǎn)單問題和中等問題,以及難題和超難題。
微調(diào)
作者分以下兩個(gè)階段對(duì)模型進(jìn)行了微調(diào)。
首先,僅在簡(jiǎn)單和中等難度的問題上對(duì) StarCoder 基礎(chǔ)模型進(jìn)行了微調(diào)。
其次,在難題和超難題上對(duì)得到的模型(代碼為 defog-easy)進(jìn)行微調(diào),從而得到 SQLcoder。
評(píng)估
作者在自己創(chuàng)建的自定義數(shù)據(jù)集上對(duì)模型進(jìn)行了評(píng)估。評(píng)估 SQL 查詢的正確性非常困難,他們?cè)紤]使用 GPT-4 作為 評(píng)估標(biāo)準(zhǔn),但遇到了很多問題。過程中他們還意識(shí)到,兩個(gè)不同的 SQL 查詢可能都正確。
對(duì)于 「誰是最近 10 個(gè)來自多倫多的用戶 」這個(gè)問題,以下兩種查詢方式都是正確的。
鑒于此,作者建立了一個(gè)自定義框架來評(píng)估查詢的正確性。他們不僅開源了模型權(quán)重,同樣開源了評(píng)估框架與評(píng)估數(shù)據(jù)集。
發(fā)布數(shù)據(jù)集的目的是豐富可用基準(zhǔn),幫助研究人員和工程師更好地了解文本到 SQL 生成模型的性能,特別是該模型對(duì)返回結(jié)果中的無害變化(如列重命名、附加列和重新排序)的穩(wěn)健性。
更多關(guān)于評(píng)估的細(xì)節(jié)請(qǐng)參見博客內(nèi)容:https://defog.ai/blog/open-sourcing-sqleval/
性能
在評(píng)估框架中,Defog SQLCoder 的表現(xiàn)優(yōu)于除 GPT-4 之外的所有主要模型。特別地,它的性能超過了 gpt-3.5-turbo 和 text-davinci-003,而這兩個(gè)模型的大小是它的 10 倍以上。
這些結(jié)果針對(duì)的是通用 SQL 數(shù)據(jù)庫,并不反映 SQLCoder 在單個(gè)數(shù)據(jù)庫模式上的性能。在對(duì)單個(gè)數(shù)據(jù)庫模式進(jìn)行微調(diào)時(shí),SQLCoder 的性能與 OpenAI 的 GPT-4 相同或更好,延遲更低(在 A100 80GB 上)。
將每個(gè)生成的問題分為 5 類,按類別顯示了每個(gè)模型正確回答問題的百分比。
SQLCoder 的硬件要求
SQLCoder 已在帶權(quán)重的 A100 40GB GPU 上進(jìn)行了測(cè)試。你還可以在 20GB 或更大內(nèi)存的消費(fèi)級(jí) GPU(如 RTX 4090、RTX 3090 以及 20GB 或更大內(nèi)存的蘋果 M2 Pro、M2 Max 或 M2 Ultra 芯片)上加載該模型的 8 位和 4 位量化版本。
接下來的工作
未來幾周,作者將對(duì) SQLCoder 進(jìn)行以下更新:
利用更多人工收集的數(shù)據(jù)和更廣泛的問題對(duì)模型進(jìn)行訓(xùn)練;
利用獎(jiǎng)勵(lì)建模和 RLHF 進(jìn)一步調(diào)整模型;
從頭開始預(yù)訓(xùn)練一個(gè)專門從事數(shù)據(jù)分析的模型(SQL + Python)。
如果你對(duì) SQLCoder 感興趣,快點(diǎn)擊演示地址進(jìn)行探索吧!
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。