做环评需要关注哪些网站,wordpress 极简 模板,WordPress搭建交互式网站,鞍山钟点工招聘信息1. MindSQL(库)
MindSQL 是一个 Python RAG#xff08;检索增强生成#xff09;库#xff0c;旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成#xff0c;还通过扩展核心类#xff0c;将其功能扩展到 Sn…1. MindSQL(库)
MindSQL 是一个 Python RAG检索增强生成库旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成还通过扩展核心类将其功能扩展到 Snowflake、BigQuery 等主流数据库。 该库利用 GPT-4、Llama 2、Google Gemini 等大型语言模型 (LLM)并支持 ChromaDB 和 Fais 等知识库。
官方链接https://pypi.org/project/mindsql/
https://github.com/Mindinventory/MindSQL 使用案例
代码语言javascript
复制
#!pip install mindsqlfrom mindsql.core import MindSQLCore
from mindsql.databases import Sqlite
from mindsql.llms import GoogleGenAi
from mindsql.vectorstores import ChromaDB#Add Your Configurations
config {api_key: YOUR-API-KEY}#Choose the Vector Store. LLM and DB You Want to Work With And
#Create MindSQLCore Instance With Configured Llm, Vectorstore, And Database
minds MindSQLCore(llmGoogleGenAi(configconfig),vectorstoreChromaDB(),databaseSqlite()
)#Create a Database Connection Using The Specified URL
connection minds.database.create_connection(urlYOUR_DATABASE_CONNECTION_URL)#Index All Data Definition Language (DDL) Statements in The Specified Database Into The Vectorstore
minds.index_all_ddls(connectionconnection, db_nameNAME_OF_THE_DB)#Index Question-Sql Pair in Bulk From the Specified Example Path
minds.index(bulkTrue, pathyour-qsn-sql-example.json)#Ask a Question to The Database And Visualize The Result
response minds.ask_db(questionYOUR_QUESTION,connectionconnection,visualizeTrue
)#Extract And Display The Chart From The Response
chart response[chart]
chart.show()#Close The Connection to Your DB
connection.close()2.DB-GPT-Hub:利用LLMs实现Text-to-SQL微调
DB-GPT-Hub是一个利用LLMs实现Text-to-SQL解析的实验项目主要包含数据集收集、数据预处理、模型选择与构建和微调权重等步骤通过这一系列的处理可以在提高Text-to-SQL能力的同时降低模型训练成本让更多的开发者参与到Text-to-SQL的准确度提升工作当中最终实现基于数据库的自动问答能力让用户可以通过自然语言描述完成复杂数据库的查询操作等工作。
2.1、数据集
本项目案例数据主要以Spider数据集为示例
Spider: 一个跨域的复杂text2sql数据集包含了10,181条自然语言问句、分布在200个独立数据库中的5,693条SQL内容覆盖了138个不同的领域。下载链接
其他数据集
WikiSQL: 一个大型的语义解析数据集由80,654个自然语句表述和24,241张表格的sql标注构成。WikiSQL中每一个问句的查询范围仅限于同一张表不包含排序、分组、子查询等复杂操作。CHASE: 一个跨领域多轮交互text2sql中文数据集包含5459个多轮问题组成的列表一共17940个query, SQL二元组涉及280个不同领域的数据库。BIRD-SQL数据集是一个英文的大规模跨领域文本到SQL基准测试特别关注大型数据库内容。该数据集包含12,751对文本到SQL数据对和95个数据库总大小为33.4GB跨越37个职业领域。BIRD-SQL数据集通过探索三个额外的挑战即处理大规模和混乱的数据库值、外部知识推理和优化SQL执行效率缩小了文本到SQL研究与实际应用之间的差距。CoSQL:是一个用于构建跨域对话文本到sql系统的语料库。它是Spider和SParC任务的对话版本。CoSQL由30k回合和10k带注释的SQL查询组成这些查询来自Wizard-of-Oz的3k个对话集合查询了跨越138个领域的200个复杂数据库。每个对话都模拟了一个真实的DB查询场景其中一个工作人员作为用户探索数据库一个SQL专家使用SQL检索答案澄清模棱两可的问题或者以其他方式通知。按照NSQL的处理模板对数据集做简单处理共得到约20w条训练数据
2.2、基座模型
DB-GPT-HUB目前已经支持的base模型有
CodeLlamaBaichuan2LLaMa/LLaMa2FalconQwenXVERSEChatGLM2ChatGLM3internlmFalconsqlcoder-7b(mistral)sqlcoder2-15b(starcoder)
模型可以基于quantization_bit为4的量化微调(QLoRA)所需的最低硬件资源,可以参考如下
模型参数GPU RAMCPU RAMDISK7b6GB3.6GB36.4GB13b13.4GB5.9GB60.2GB
其中相关参数均设置的为最小batch_size为1max_length为512。根据经验如果计算资源足够为了效果更好建议相关长度值设置为1024或者2048。
2.3 快速使用
环境安装
代码语言javascript
复制
git clone https://github.com/eosphoros-ai/DB-GPT-Hub.git
cd DB-GPT-Hub
conda create -n dbgpt_hub python3.10
conda activate dbgpt_hub
pip install poetry
poetry install2.3.1 数据预处理
DB-GPT-Hub使用的是信息匹配生成法进行数据准备即结合表信息的 SQL Repository 生成方式这种方式结合了数据表信息能够更好地理解数据表的结构和关系适用于生成符合需求的 SQL 语句。
从spider数据集链接 下载spider数据集默认将数据下载解压后放在目录dbgpt_hub/data下面即路径为dbgpt_hub/data/spider。
数据预处理部分只需运行如下脚本即可
代码语言javascript
复制
##生成train数据 和dev(eval)数据,
poetry run sh dbgpt_hub/scripts/gen_train_eval_data.sh在dbgpt_hub/data/目录你会得到新生成的训练文件example_text2sql_train.json 和测试文件example_text2sql_dev.json 数据量分别为8659和1034条。 对于后面微调时的数据使用在dbgpt_hub/data/dataset_info.json中将参数file_name值给为训练集的文件名如example_text2sql_train.json。
生成的json中的数据形如
代码语言javascript
复制 {db_id: department_management,instruction: I want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\\n##Instruction:\ndepartment_management contains tables such as department, head, management. Table department has columns such as Department_ID, Name, Creation, Ranking, Budget_in_Billions, Num_Employees. Department_ID is the primary key.\nTable head has columns such as head_ID, name, born_state, age. head_ID is the primary key.\nTable management has columns such as department_ID, head_ID, temporary_acting. department_ID is the primary key.\nThe head_ID of management is the foreign key of head_ID of head.\nThe department_ID of management is the foreign key of Department_ID of department.\n\n,input: ###Input:\nHow many heads of the departments are older than 56 ?\n\n###Response:,output: SELECT count(*) FROM head WHERE age 56,history: []}, 项目的数据处理代码中已经嵌套了chase 、cosql、sparc的数据处理可以根据上面链接将数据集下载到data路径后在dbgpt_hub/configs/config.py中将 SQL_DATA_INFO中对应的代码注释松开即可。
2.3.2 快速开始
首先用如下命令安装dbgpt-hub
pip install dbgpt-hub然后指定参数并用几行代码完成整个Text2SQL fine-tune流程
代码语言javascript
复制
from dbgpt_hub.data_process import preprocess_sft_data
from dbgpt_hub.train import start_sft
from dbgpt_hub.predict import start_predict
from dbgpt_hub.eval import start_evaluate#配置训练和验证集路径和参数
data_folder dbgpt_hub/data
data_info [{data_source: spider,train_file: [train_spider.json, train_others.json],dev_file: [dev.json],tables_file: tables.json,db_id_name: db_id,is_multiple_turn: False,train_output: spider_train.json,dev_output: spider_dev.json,}
]#配置fine-tune参数
train_args {model_name_or_path: codellama/CodeLlama-13b-Instruct-hf,do_train: True,dataset: example_text2sql_train,max_source_length: 2048,max_target_length: 512,finetuning_type: lora,lora_target: q_proj,v_proj,template: llama2,lora_rank: 64,lora_alpha: 32,output_dir: dbgpt_hub/output/adapter/CodeLlama-13b-sql-lora,overwrite_cache: True,overwrite_output_dir: True,per_device_train_batch_size: 1,gradient_accumulation_steps: 16,lr_scheduler_type: cosine_with_restarts,logging_steps: 50,save_steps: 2000,learning_rate: 2e-4,num_train_epochs: 8,plot_loss: True,bf16: True,
}#配置预测参数
predict_args {model_name_or_path: codellama/CodeLlama-13b-Instruct-hf,template: llama2,finetuning_type: lora,checkpoint_dir: dbgpt_hub/output/adapter/CodeLlama-13b-sql-lora,predict_file_path: dbgpt_hub/data/eval_data/dev_sql.json,predict_out_dir: dbgpt_hub/output/,predicted_out_filename: pred_sql.sql,
}#配置评估参数
evaluate_args {input: ./dbgpt_hub/output/pred/pred_sql_dev_skeleton.sql,gold: ./dbgpt_hub/data/eval_data/gold.txt,gold_natsql: ./dbgpt_hub/data/eval_data/gold_natsql2sql.txt,db: ./dbgpt_hub/data/spider/database,table: ./dbgpt_hub/data/eval_data/tables.json,table_natsql: ./dbgpt_hub/data/eval_data/tables_for_natsql2sql.json,etype: exec,plug_value: True,keep_distict: False,progress_bar_for_each_datapoint: False,natsql: False,
}#执行整个Fine-tune流程
preprocess_sft_data(data_folder data_folder,data_info data_info
)start_sft(train_args)
start_predict(predict_args)
start_evaluate(evaluate_args)2.3.3、模型微调
本项目微调不仅能支持QLoRA和LoRA法还支持deepseed。 可以运行以下命令来微调模型默认带着参数--quantization_bit 为QLoRA的微调方式如果想要转换为lora的微调只需在脚本中去掉quantization_bit参数即可。
默认QLoRA微调运行命令
代码语言javascript
复制
poetry run sh dbgpt_hub/scripts/train_sft.sh微调后的模型权重会默认保存到adapter文件夹下面即dbgpt_hub/output/adapter目录中。
如果使用多卡训练想要用deepseed 则将train_sft.sh中默认的内容进行更改
调整为
代码语言javascript
复制
CUDA_VISIBLE_DEVICES0 python dbgpt_hub/train/sft_train.py \--quantization_bit 4 \...更改为
代码语言javascript
复制
deepspeed --num_gpus 2 dbgpt_hub/train/sft_train.py \--deepspeed dbgpt_hub/configs/ds_config.json \--quantization_bit 4 \...如果需要指定对应的显卡id而不是默认的前两个如3,4可以如下
代码语言javascript
复制
deepspeed --include localhost:3,4 dbgpt_hub/train/sft_train.py \--deepspeed dbgpt_hub/configs/ds_config.json \--quantization_bit 4 \...其他省略(…)的部分均保持一致即可。 如果想要更改默认的deepseed配置进入 dbgpt_hub/configs 目录在ds_config.json 更改即可默认为stage2的策略。
脚本中微调时不同模型对应的关键参数lora_target 和 template如下表
模型名lora_targettemplateLLaMA-2q_proj,v_projllama2CodeLlama-2q_proj,v_projllama2Baichuan2W_packbaichuan2Qwenc_attnchatmlsqlcoder-7bq_proj,v_projmistralsqlcoder2-15bc_attndefaultInternLMq_proj,v_projinternXVERSEq_proj,v_projxverseChatGLM2query_key_valuechatglm2LLaMAq_proj,v_proj-BLOOMquery_key_value-BLOOMZquery_key_value-BaichuanW_packbaichuanFalconquery_key_value-
train_sft.sh中其他关键参数含义 quantization_bit是否量化取值为4或者8 model_name_or_path LLM模型的路径 dataset 取值为训练数据集的配置名字对应在dbgpt_hub/data/dataset_info.json 中外层key值如example_text2sql。 max_source_length 输入模型的文本长度如果计算资源支持可以尽能设大如1024或者2048。 max_target_length 输出模型的sql内容长度设置为512一般足够。 output_dir SFT微调时Peft模块输出的路径默认设置在dbgpt_hub/output/adapter/路径下 。 per_device_train_batch_size batch的大小如果计算资源支持可以设置为更大默认为1。 gradient_accumulation_steps 梯度更新的累计steps值 save_steps 模型保存的ckpt的steps大小值默认可以设置为100。 num_train_epochs 训练数据的epoch数 2.3.4、模型预测
项目目录下./dbgpt_hub/下的output/pred/此文件路径为关于模型预测结果默认输出的位置(如果没有则建上)。
预测运行命令
代码语言javascript
复制
poetry run sh ./dbgpt_hub/scripts/predict_sft.sh脚本中默认带着参数--quantization_bit 为QLoRA的预测去掉即为LoRA的预测方式。
其中参数predicted_input_filename 为要预测的数据集文件 --predicted_out_filename 的值为模型预测的结果文件名。默认结果保存在dbgpt_hub/output/pred目录。
2.3.5、模型权重
可以从Huggingface查看社区上传的第二版Peft模块权重huggingface地址 (202310) ,在spider评估集上的执行准确率达到0.789。
模型和微调权重合并 如果你需要将训练的基础模型和微调的Peft模块的权重合并导出一个完整的模型。则运行如下模型导出脚本
代码语言javascript
复制
poetry run sh ./dbgpt_hub/scripts/export_merge.sh注意将脚本中的相关参数路径值替换为你项目所对应的路径。
2.3.6、模型评估
对于模型在数据集上的效果评估,默认为在spider数据集上。
运行以下命令来
代码语言javascript
复制
poetry run python dbgpt_hub/eval/evaluation.py --plug_value --input Your_model_pred_file你可以在这里找到最新的评估和实验结果。
注意 默认的代码中指向的数据库为从Spider官方网站下载的大小为95M的database如果你需要使用基于Spider的test-suite中的数据库(大小1.27G)请先下载链接中的数据库到自定义目录并在上述评估命令中增加参数和值形如--db Your_download_db_path。
2.4 小结
整个过程会分为三个阶段
阶段一:
代码语言txt
复制
- 搭建基本框架基于数个大模型打通从数据处理、模型SFT训练、预测输出和评估的整个流程 现在支持- CodeLlama- Baichuan2- LLaMa/LLaMa2- Falcon- Qwen- XVERSE- ChatGLM2- ChatGLM3- internlm- sqlcoder-7b(mistral)- sqlcoder2-15b(starcoder)阶段二:代码语言txt
复制
- 优化模型效果支持更多不同模型进行不同方式的微调。
- 对prompt优化
- 放出评估效果和优化后的还不错的模型并且给出复现教程(见微信公众号EosphorosAI)阶段三代码语言txt
复制
- 推理速度优化提升
- 业务场景和中文效果针对性优化提升3.sqlcoder
官方链接https://github.com/defog-ai/sqlcoder
Defog组织提出的先进的Text-to-SQL的大模型表现亮眼效果优于GPT3.5、wizardcoder和starcoder等仅次于GPT4。 将每个生成的问题分为6类。该表显示了每个模型正确回答问题的百分比并按类别进行了细分。 4.modal_finetune_sql
项目基于LLaMa 2 7b模型进行Text-to-SQL微调有完整的训练、微调、评估流程。
链接https://github.com/run-llama/modal_finetune_sql
5.LLaMA-Efficient-Tuning
这是一个易于使用的LLM微调框架支持LLaMA-2、BLOOM、Falcon、Baichuan、Qwen、ChatGLM2等。
链接https://github.com/hiyouga/LLaMA-Factory/tree/main
多种模型LLaMA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。集成方法增量预训练、指令监督微调、奖励模型训练、PPO 训练、DPO 训练和 ORPO 训练。多种精度32 比特全参数微调、16 比特冻结微调、16 比特 LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8 的 2/4/8 比特 QLoRA 微调。先进算法GaLore、DoRA、LongLoRA、LLaMA Pro、LoRA、LoftQ 和 Agent 微调。实用技巧FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。实验监控LlamaBoard、TensorBoard、Wandb、MLflow 等等。极速推理基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。训练方法
方法全参数训练部分参数训练LoRAQLoRA预训练✔✔✔✔指令监督微调✔✔✔✔奖励模型训练✔✔✔✔PPO 训练✔✔✔✔DPO 训练✔✔✔✔ORPO 训练✔✔✔✔
可视化使用教学 文章转载自: http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.kklwz.cn.gov.cn.kklwz.cn http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.mwmxs.cn.gov.cn.mwmxs.cn http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn http://www.morning.llgpk.cn.gov.cn.llgpk.cn http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.rbtny.cn.gov.cn.rbtny.cn http://www.morning.oioini.com.gov.cn.oioini.com http://www.morning.znsyn.cn.gov.cn.znsyn.cn http://www.morning.nqcts.cn.gov.cn.nqcts.cn http://www.morning.fykrm.cn.gov.cn.fykrm.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn http://www.morning.ndrzq.cn.gov.cn.ndrzq.cn http://www.morning.wfykn.cn.gov.cn.wfykn.cn http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn http://www.morning.nlnmy.cn.gov.cn.nlnmy.cn http://www.morning.ckhry.cn.gov.cn.ckhry.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.fjscr.cn.gov.cn.fjscr.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.bkqw.cn.gov.cn.bkqw.cn http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.wbqk.cn.gov.cn.wbqk.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.rqjfm.cn.gov.cn.rqjfm.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn http://www.morning.bpmth.cn.gov.cn.bpmth.cn http://www.morning.frxsl.cn.gov.cn.frxsl.cn http://www.morning.nsjpz.cn.gov.cn.nsjpz.cn http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn http://www.morning.sftrt.cn.gov.cn.sftrt.cn http://www.morning.hgkbj.cn.gov.cn.hgkbj.cn http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.ghpld.cn.gov.cn.ghpld.cn http://www.morning.lthgy.cn.gov.cn.lthgy.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn http://www.morning.qbfs.cn.gov.cn.qbfs.cn http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn http://www.morning.klcdt.cn.gov.cn.klcdt.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.qynpw.cn.gov.cn.qynpw.cn http://www.morning.wrlxy.cn.gov.cn.wrlxy.cn http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.hypng.cn.gov.cn.hypng.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.tfpmf.cn.gov.cn.tfpmf.cn http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn http://www.morning.dppfh.cn.gov.cn.dppfh.cn http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.twdkt.cn.gov.cn.twdkt.cn http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.mggwr.cn.gov.cn.mggwr.cn http://www.morning.xxwhz.cn.gov.cn.xxwhz.cn