自然语言转SQL,一个微调ChatGPT3.5的实例(下)--模型微调及模型性能

提交训练集进行微调

一旦我们创建了JSONL文件(可以在这里或ipfs_here找到一个小样本),下一步是使用以下命令将创建的文件上传到OpenAI:

openai.api_key = os.getenv("OPENAI_API_KEY")
print(openai.File.create(file=open("spider-finetuning.jsonl", "rb"),purpose='fine-tune'))

上传文件后,可以使用以下命令检查上传的状态:


print(openai.File.retrieve(id="file-id"))
# 或者
print(openai.File.list())

结果应该类似于:

{
"object": "file",
"id": "file-id",
"purpose": "fine-tune",
"filename": "file",
"bytes": 71699079,
"created_at": 1693343752,
"status": "uploaded",
"status_details": null
}

当状态变为已处理时(类似于下面的示例),您可以将文件用于微调:

{
"object": "file",
"id": "file-id",
"purpose": "fine-tune",
"filename": "file",
"bytes": 71699079,
"created_at": 1693343752,
"status": "processed",
"status_details": null
}

现在,我们准备开始微调作业。可以使用以下python代码创建一个微调作业:


print(openai.FineTuningJob.create(
training_file="file-id",
model="gpt-3.5-turbo",
suffix = "spider",
hyperparameters = {
"n_epochs": #number_of_epochs,
})
)

微调过程的持续时间将根据微调数据集的大小而有所不同。微调有一个最大令牌限制,设置为50000000个令牌。因此,在使用Spider数据集时,我们将样本数量从7000个减少到5750个,并进行总共2个时期的微调。

您可以使用以下命令检查微调作业的状态:

print(openai.FineTuningJob.retrieve(id="ftjob-id"))

结果应类似于:

{
"object": "fine_tuning.job",
"id": "ftjob-id",
"model": "gpt-3.5-turbo-0613",
"created_at": 1693346245,
"finished_at": 1693353313,
"fine_tuned_model": "ft:gpt-3.5-turbo-0613:dataherald:spider:id",
"organization_id": "org-id",
"result_files": [
"file-id"
],
"status": "succeeded",
"validation_file": null,
"training_file": "file-id",
"hyperparameters": {
"n_epochs": 2
},
"trained_tokens": 44722020
}

模型性能

DIN-SQL是一种用于自然语言到SQL转换的模型,它在处理Spider数据集上取得了最新的研究成果。DIN-SQL代表"Denoising-inductive SQL generation",该模型结合了去噪自编码器和归纳式学习的方法,使用GPT-4作为生成器模型来生成SQL查询语句。DIN-SQL使用了各种高级提示技术,包括少量示例提示、思路链提示和分解提示,以提高其性能和准确度。该模型具有较高的准确性和效率,但在成本和处理时间方面可能较高。

我们将微调模型的性能与未经微调的GPT3.5-Turbo和DIN-SQL + GPT-4(Spider的当前最先进方法)进行了基准测试,以获得零-shot性能。

微调的G-3.5-Turbo的性能与之前的方法相比进的提示技术,包括少量提示、思维链提示和分解提示)保持一致,这是当前最先进的方法。

关键是,与DIN-SQL + GPT-4方法相比,微调模型显著降低了成本和处理时间。下表提供了每个来自Spider基准的问题的不同模型之间的大致成本和速度。

同模型每个问题的成本和速度(来自Spider基准)

如上所示,与DIN-SQL与GPT-4相比,微调的GPT-3.5-Turbo模型的成本降低了30倍,速度提高了12倍

结论

通过投入时间和金钱来构建训练数据集,可以在准确性上与最先进的方法相匹配,同时速度提高12倍,成本降低30倍。如果,针对具体的业务做针对性的微调准确性应该可以进一步提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【水浸传感器】软硬件一体水浸监测整套方案远程监测解决各种环境漏水问题

一、痛点分析 在工业生产中,水浸传感器可以安装在数据中心、半导体厂房、输油管道、车间仓库、变电室等易发生水浸的区域。一旦检测到漏水情况,立即发出信号反馈。然而,水浸传感器分散在各个地点,导致管理不集中、不便捷&#xf…

Fiber Golang 中的路由和中间件

掌握 GoLang Fiber 中的路由和中间件艺术,以进行高效的 Web 开发 在网络开发领域中,创建一个有效地路由和管理各种任务的 Web 应用程序至关重要。路由决定了如何处理传入的请求,而中间件在执行任务,如身份验证、日志记录和请求解…

基于SpringBoot的企业资产管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的企业资产管理系统,java…

设计一个基于MapReduce的算法,求出数据集中的最小值。假设Reducer任务数量大于1,请简要描述该算法(可使用分区. 合并过程)

设计一个基于MapReduce的算法,求出数据集中的最小值。假设Reducer任务数量大于1,请简要描述该算法(可使用分区. 合并过程) 设计一个基于MapReduce的算法来求数据集中的最小值需要考虑如何在多个Reducer任务中分配和合并工作。这里是算法的简要描述&…

力扣刷题-二叉树-最大二叉树

654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大…

数据挖掘 模糊聚类

格式化之前的代码: import matplotlib.pyplot as plt#绘图 import pandas as pd#读取数据集 from sklearn.preprocessing import scale from sklearn.cluster import DBSCAN#聚类 from sklearn import preprocessing#数据预处理的功能,包括缩放、标准化…

Dockerfile语法和简单镜像构建

Dockerfile是一个用于定义Docker镜像的文本文件,包含了一系列的指令和参数,用于指示Docker在构建镜像时应该执行哪些操作,例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等。 Dockerfile文件的内容主要有几个部分组成&#xff0c…

Unity3D入门基础知识汇总

1、参考链接 01.游戏引擎是啥玩意?_哔哩哔哩_bilibili 2、unity概念 它是一套具有完善体系与编辑器的跨平台游戏开发工具,也称之为游戏引擎。游戏引擎是指一些编写好的可重复利用的代码与开发游戏所用的各功能编辑器。 3、unity界面 右上边可以切换布局…

Python 快速合并PDF表格转换输出CSV文件

单位的刷脸考勤机后台系统做得比较差,只能导出每个部门的出勤统计表pdf,格式如下: 近期领导要看所有部门的考勤数据,于是动手快速写了个合并pdf并输出csv文件的脚本。 安装模块 pypdf2,pdfplumber,前者用…

python包chromadb安装失败总结

1,背景: 最近在学习langchain的课程,里面创建自己的知识库的Retrieval模块中,需要用到向量数据库。 所以按照官方的教程(vectorstores),准备使用chroma的向量数据库。图片来源 2,问…

有没有可以多渠道报修的维修管理系统?

以前我们买电视、空调这些电器,如果出了故障,一般都是打电话给门店,然后门店就会派人来修理。有的人则会自己找维修工人来维修,一般也是通过电话报修。不过现在是互联网时代,电话报修效率低下、信息传递不畅、实时跟踪…

英语学习: think well of think highy of

“think well of”和“think highly of”在英语中都有“高度评价、赞赏”的意思,但在使用上存在一些细微的差别。 词义上:“think well of”的含义为“对某人持有良好的看法”,强调对某人的评价是正面的。而“think highly of”则更加强调对…

mysql死锁排查

查看正在进行中的事务 SELECT * FROM information_schema.INNODB_TRX;字段解释trx_id唯一事务id号,只读事务和非锁事务是不会创建id的trx_state事务的执行状态,值一般分为:RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.trx_started事务…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --合并生成后的代码【鱼皮】

一、模块页面功能 1.1 domain 【实体对象】 1.2 mapper 【操作数据库的对象】--> UserMapper 1)UserMapper 其实就是我们用来操作数据库的一个对象 2) 继承了mybatis- plus,它会自动帮我们去定义一些增删改查的方法。 继承可以看下图&#xf…

ROS 系列学习教程(总目录)

ROSLearning 一、ROS概览 1.1 ROS简介 To be continued… 1.2 ROS安装 Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例) 1.3 ROS Hello World ROS创建工作空间添加包并编译 ROS Hello World 1.4 ROS架构 ROS架构:文件系统 …

[数据库] MySQL之MHA高可用

一、MHA相关知识 1.1 什么是mha MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障…

代码随想录27期|Python|Day32|122.买卖股票的最佳时机II|55. 跳跃游戏|45.跳跃游戏II

122. 买卖股票的最佳时机 II 本题的思路和昨天的最大子序列和是一致的。都是只考虑正数对于总和的增益,遇到负数选择跳过。 在这里有一个计算股价利润的方式:一段时间的总利润 这期间每两天之差的和。 也就是nums[i j] nums[i] nums[i-1] ... n…

Apache配置与应用

Apache配置与应用 1.Apache连接保持 HTTP 是属于应用层的面向对象协议, 基于 TCP 协议之上的可靠传输。 每次在进行HTTP 连接之前, 需要先进行 TCP 连接, 在 HTTP 连接结束后要对 TCP 连接进行终止, 每个 TCP 连接都需要进行三次…

fabric学习

1.通过connection连接远程主机,并执行命令 from fabric import connectioncon1 connection.Connection(host10.10.102.198, userroot, port22, connect_kwargs{"password":"HCCloud2022CN"}) con1.run(free -h) 2.上传压缩文件到主机指定目录…

深入理解CRON表达式:时间调度的艺术

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…