面向NL2BI的大模型微调最佳实践人工智能平台PAI(PAI)

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)平台。具体操作步骤如下:

当模型服务部署成功后,您可以按照以下操作步骤调用模型服务:

THE END
1.TensorFlow实现随机训练和批量训练的方法python本篇文章主要介绍了TensorFlow实现随机训练和批量训练的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 TensorFlow更新模型变量。它能一次操作一个数据点,也可以一次操作大量数据。一个训练例子上的操作可能导致比较“古怪”的学习过程,但使用大批量的训练会造成计算成本昂贵。到底选用https://www.jb51.net/article/139083.htm
2.[PyTorch]批量训练数据的一个流程使用的时候,因为是批量的数据,所以要有一个pack进行压包操作,做完了还要有一个pad解包操作。解包操作pad的第一个第一个返回值ouput就是gru每一步的输出维度是maxLen * batchSize * hiddenSize,第二个返回值就是这个batch里面每个句子的单词数目是一个一维tensor,和传入到Pack的第二个参数感觉一毛一样,如tensorhttps://www.jianshu.com/p/a06a6042d680
3.(83)批量训练和随机训练batchtraining批量训练(Batch Training)和随机训练(Stochastic Training)是深度学习中两种不同的训练策略。 8.3.1 批量训练的概念 1.批量训练(Batch Training) 批量训练是指在每一次参数更新时,将整个训练数据集分成多个批次(小部分数据),然后使用每个批次的数据来计算梯度并更新模型参数。批量训练可以更好地利用硬件加速,如GPU,因为https://blog.csdn.net/asd343442/article/details/135639960
4.神经网络为什么每次训练小批量数据神经网络批量训练原理为什么要使用批量归一化? 使用浅层模型时,随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。对深层神经网络来说,随着网络训练的进行,前一层参数的调整使得后一层输入数据的分布发生变化,各层在训练的过程中就需要不断的改变以适应学习这种新的数据分布。所以即使输入数据已做标准化,训练中https://blog.51cto.com/u_12995/9856087
5.GPU捉襟见肘还想训练大批量模型?谁说不可以机器之心深度学习模型和数据集的规模增长速度已经让 GPU 算力也开始捉襟见肘,如果你的 GPU 连一个样本都容不下,你要如何训练大批量模型?通过本文介绍的方法,我们可以在训练批量甚至单个训练样本大于 GPU 内存时,在单个或多个 GPU 服务器上训练模型。 深度学习模型和数据集的规模增长速度已经让 GPU 算力也开始捉襟见肘https://www.jiqizhixin.com/articles/2018-10-17-11
6.LLaMAFactory全面指南:从训练到部署训练配置:在这里,你可以设置训练参数,如学习率、批量大小、训练轮数等。 微调配置:如果你正在进行微调,可以在这里设置微调的特定参数,如LoRA的秩、学习率等。 推理配置:在进行推理时,你可以设置生成文本的长度、温度、top-p等参数。 日志和监控:训练和微调过程中的日志信息会实时显示在这里,帮助你监控训练进度和性https://www.skycaiji.com/aigc/ai21379.html
7.四分钟内就能训练目标检测器,商汤基模型团队是怎么做到的?来自商汤的基模型团队和香港大学等机构的研究人员提出了一种大批量训练算法 AGVM,该研究已被NeurIPS 2022接收。 本文提出了一种大批量训练算法 AGVM (Adaptive Gradient Variance Modulator),不仅可以适配于目标检测任务,同时也可以适配各类分割任务。AGVM 可以把目标检测的训练批量大小扩大到 1536,帮助研究人员四分钟训https://m.thepaper.cn/newsDetail_forward_20728146
8.2024年人工智能(AI)训练师职业技能鉴定考试题库(浓缩500题).docxPAGE PAGE 12024年人工智能AI训练师职业技能鉴定考试题库浓缩500题一单选题1.在机器学习领域,监督学习常用于训练哪种类型的机器人A自适应机器人B自主机器人C有教师指导的机器人D强化学习机器人答案:C2.哪个指标用于衡量分类模https://www.renrendoc.com/paper/343440631.html
9.基于点云卷积神经网络的蛋白质柔性预测与Qi等的模型不同的是,不同的蛋白质结构所含有的原子数量不均一、数据尺寸不规则,为了实现网络的小批量训练方法,提出了一种新的批量化策略,使用大小不等的蛋白质小批量输入对网络进行迭代训练,并采用Pearson相关系数作为模型训练的评价指标。同时,在网络的池化层和空间变换网络部分,采用了最大池化、平均池化串联的https://www.pibb.ac.cn/pibbcn/article/html/20200383?st=article_issue
10.机器学习学习笔记(21)深度学习中的正则化腾讯云开发者社区对于每个单元,掩码采样是独立采样的。掩码值为1的采样概率(导致包含一个单元)是训练开始前一个固定的超参数。它不是模型当前参数值或输入样本的函数,通常在每一个小批量训练的神经网络中。一个输入单元被包括的概率的0.8,一个隐藏单元被包括的概率为0.5。更正式的说,假设一个掩码向量https://cloud.tencent.com/developer/article/1327181
11.TF2.0深度学习实战(一):分类问题之手写数字识别train_dataset=train_dataset.batch(32).repeat(10)# 设置批量训练的batch为32,要将训练集重复训练10遍 3.2 网络结构搭建 由于MNIST数据集里的图像特征较为简单,所以本次以搭建一个3层的全连接网络为例,来实现MNIST数据集10分类任务。其中,每个全连接层的节点数分别为:256,128和10。 https://www.flyai.com/article/629
12.上海交大樊昕昱何祖源课题组在计算重构光谱测量技术取得重要上海交通大学智能光子学研究中心樊昕昱教授、何祖源教授团队针对这一问题提出了联合物理模型与数据驱动的光谱重建神经网络,仅需10μs时间下获得的小批量训练数据集即可完成具有2300个频谱输出通道的光谱重构神经网络的训练,且实现了3.2fm的分辨率。 联合物理模型与数据驱动的神经网络结构及训练数据:(a) 系统传输矩阵,(bhttps://news.sjtu.edu.cn/jdzh/20230805/186848.html