jonathanjordan21's picture
Update README.md
2037cbf
|
raw
history blame
2.7 kB
metadata
library_name: peft
base_model: declare-lab/flan-alpaca-base
license: mit
language:
  - en
pipeline_tag: text2text-generation
tags:
  - sql
  - query
  - database
datasets:
  - wikisql

Model Details

Model Description

This model is based on the declare-lab/flan-alpaca-base model finetuned with wikisql dataset.

  • Developed by: Jonathan Jordan
  • Model type: FLAN Alpaca
  • Language(s) (NLP): English
  • License: [More Information Needed]
  • Finetuned from model: declare-lab/flan-alpaca-base

Uses

The model generates a string of SQL query based on a question and table columns. The generated query always uses "table" as the table name. Feel free to change the table name in the generated query to match your actual SQL table. The generated SQL query can be run perfectly on the python SQL connection (e.g. psycopg2, mysql_connector, etc).

Limitations

  1. The question MUST be in english
  2. Keep in mind about the difference in data type naming between MySQL and the other SQL databases
  3. Simple SQL Aggregation functions (SUM, AVG, COUNT, MIN, MAX) are supported
  4. Advanced SQL Aggregation which involves GROUP BY, ORDER BY, HAVING, etc are highly not recommended
  5. Table JOIN is not supported

Input Example

"""Question: what is What was the result of the election in the Florida 18 district?\nTable: table_1341598_10 (result VARCHAR, district VARCHAR)\nSQL: """

Output Example

"""SELECT * FROM table WHERE district = "Florida 18""""

How to use

Load model

from peft import get_peft_config, get_peft_model, TaskType
from peft import PeftConfig, PeftModel
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_id = "jonathanjordan21/flan-alpaca-base-finetuned-lora-wikisql"
config = PeftConfig.from_pretrained(model_id)
model_ = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path, return_dict=True)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)

model = PeftModel.from_pretrained(model_, model_id)

Model inference

question = "server of user id 11 with status active and server id 10"
table = "table_name_77 ( user id INTEGER, status VARCHAR, server id INTEGER )"

test = f"""Question: {question}\nTable: {table}\nSQL: """

p = tokenizer(test, return_tensors='pt')

device = "cuda" if torch.cuda.is_available() else "cpu"
out = model.to(device).generate(**p.to(device),max_new_tokens=50)

print("SQL Query :", tokenizer.batch_decode(out,skip_special_tokens=True)[0])

Performance

Speed Performance

The model inference takes about 2-3 seconds to run in Google Colab Free Tier CPU

Framework versions

  • PEFT 0.6.2