NL2SQL(自然语言生成SQL)技术旨在将自然语言转换为数据库查询语句,使得即使不熟悉SQL的用户也能轻松地从数据库中提取数据进行分析,从而提高决策效率并深入挖掘数据背后的商业洞察(NL2BI)。
通过将NL2SQL与当前先进的大型语言模型相结合,可以显著增强语义理解能力,并支持更复杂的SQL语法生成,实现更精准的SQL查询和更流畅的数据提取分析体验。
基于LLM的NL2BI全链路解决方案的使用流程如下:
在开始执行操作前,请确认您已完成以下准备工作:
仅支持在华北6(乌兰察布)地域,使用以下灵骏智算资源,基于PAI-DLC和Qwen2-72B大模型进行批量数据生成:
支持使用以下两种方式准备训练数据,本方案以方式二为例,为您介绍如何准备训练数据:
示例数据如下:
具体示例如下所示:
准备3-5个示例问题,列名个数从易到难在1-3个之间,示例问题文件示例内容如下所示:
[{"table":"orders","type":"date_column","column":"OrderDate"},{"table":"orders","type":"date_column","column":"ShipDate"},{"table":"orders","type":"enum_column","column":"ShipMode"},{"table":"orders","type":"enum_column","column":"Segment"},{"table":"orders","type":"enum_column","column":"Region"},{"table":"orders","type":"enum_column","column":"Country"},{"table":"orders","type":"enum_column","column":"Sub-Category"},{"table":"orders","type":"enum_column","column":"Category"},{"table":"orders","type":"skip_column","column":"RowID"}]启动命令
在代码编辑框中配置如下启动命令:
资源信息
资源类型
选择灵骏智算。
选择竞价资源。
任务资源
专有网络配置
专有网络配置(ID)
交换机
安全组
选择安全组。
启动参数说明
参数
描述
generate_number
生成的问题和SQL对条数。
processes_number
同时进行数据生成进程数。
fewshot_query_filepath
示例问题文件挂载到容器中的路径。例如:/mnt/data/simplebi/few_shot_example.json。
evidence_filepath
证据文件挂载到容器中的路径。例如:/mnt/data/simplebi/evidence_example.json
output_filepath
生成数据文件路径,同时会生成_llamafactory后缀的JSON文件,该文件可直接用于后续训练。
host
port
user
database
RDS数据库的连接数据库名称。
passwd
tensor_parallel_size
模型张量并行大小。
query_temperature
生成问题时使用的采样温度。
sql_temperature
生成SQL时使用的采样温度。
max_tokens
最大生成长度。
快速开始汇集了优秀的国内外AI开源社区预训练模型。您可以在快速开始>ModelGallery中,实现从训练到部署再至推理的完整流程,无需编写代码,极大简化了模型的开发过程。
本方案以CodeQwen1.5-7b-NL2SQL模型为例,为您介绍如何使用已准备好的训练数据,在快速开始中进行模型训练。具体操作步骤如下:
数据集配置
训练数据集
参照以下操作步骤,选择已准备好的训练数据集。
训练输出配置
模型名称
注册到AI资产管理>模型中的模型名称。按照控制台界面提示自定义配置。
模型输出路径
选择OSS目录,用来存放训练输出的配置文件。
计算资源配置
资源组类型
选择公共资源组(按量付费)。
系统已默认配置了资源规格,您也可以根据需要进行修改:
超参数配置
表1.全量超参数说明
超参数
类型
是否必选
含义
默认值
learning_rate
FLOAT
是
学习率,用于控制模型权重调整幅度。
3e-4
num_train_epochs
INT
训练数据集被重复使用的次数。
1
per_device_train_batch_size
每个GPU在一次训练迭代中处理的样本数量。较大的批次大小可以提高效率,也会增加显存的需求。
seq_length
序列长度,指模型在一次训练中处理的输入数据的长度。
1024
lora_dim
否
LoRA维度,当lora_dim>0时,使用LoRA或QLoRA轻量化训练。
64
lora_alpha
LoRA权重,当lora_dim>0时,使用LoRA或QLoRA轻量化训练,该参数生效。
32
load_in_4bit
BOOL
模型是否以4bit加载。
当lora_dim>0、load_in_4bit为true且load_in_8bit为false时,使用4bitQLoRA轻量化训练。
true
load_in_8bit
模型是否以8比特加载。
当lora_dim>0、load_in_4bit为false且load_in_8bit为true时,使用8bitQLoRA轻量化训练。
false
gradient_accumulation_steps
梯度累积步骤数。
8
template
STRING
模型使用的prompt拼接模板,该示例使用qwen模板。
qwen
表2.超参数推荐配置
全参数微调
LoRA/QLoRA
5e-6、5e-5
全局批次大小
128
2、3
0
32、64
False
True/False
模型训练成功后,即可部署模型服务。PAI预置了模型的部署配置信息,您仅需提供推理服务的名称以及部署配置使用的资源信息,即可将训练获得的模型部署到模型在线服务(EAS)平台。具体操作步骤如下:
当模型服务部署成功后,您可以按照以下操作步骤调用模型服务: