TEXT2SQL_BASE / README.md
timbossm's picture
Update README.md
9216f56 verified
metadata
license: apache-2.0
datasets:
  - PipableAI/pip-txt-to-sql-spider-bird-dataset
language:
  - en
metrics:
  - accuracy
tags:
  - sql
  - code
  - text2sql
  - instruction_tuned
  - basemodel
  - jax
  - pytorch
  - text-generation-inference
library_name: transformers
pipeline_tag: text-generation
widget:
  - text: >-
      <schema>CREATE TABLE system(JobID: String,GID: String, UID: String,
      Start:Time(yyyy/mm/dd), End: Time,ElapsedRaw: Time, CPUTimeRAW:
      Time,NCPUS: Number,NNodes: Number, NodeList: List,  State:String,
      Timelimit: Time);</schema><question>Get UID and job id for Jobs that
      started on Jan 20 , 2023 ended on feb 14 2023 and has job id
      20</question><sql>
    example_title: example

pipSQL-1.3b

pipableAi

colab_notebook

Основная информация

Основа для файнтюна (FT).

Основные характеристики модели

  • Размер: 1.3 миллиарда параметров
  • Специализация: ETL (Extract, Transform, Load) и SQL-операции
  • Доступность: открытый доступ через Hugging Face
  • Превосходит ChatGPT в SQL-ориентированных бенчмарках

Преимущества для бизнес-информатики МГПУ

1. Техническая оптимальность

  • Оптимальный размер для файнтюнинга (1.3B параметров)
  • Возможность запуска на доступном оборудовании
  • Эффективное использование вычислительных ресурсов

2. Образовательные преимущества

  • Специализация на SQL подходит для курсов по базам данных
  • Поддержка ETL-процессов актуальна для бизнес-аналитики
  • Возможность интеграции в учебные проекты

3. Направления файнтюнинга для МГПУ

  • Адаптация под специфику учебных задач
  • Настройка на корпоративные кейсы
  • Интеграция российских бизнес-практик

Рекомендации по файнтюнингу

1. Приоритетные области настройки

  • Работа с российскими СУБД
  • Интеграция отраслевой специфики
  • Адаптация под образовательные задачи

2. Технические аспекты

  • Использование LoRA для эффективной настройки
  • Подготовка специализированных датасетов
  • Валидация на реальных бизнес-кейсах

3. Образовательные компоненты

  • Создание учебных примеров
  • Разработка практических заданий
  • Интеграция в существующие курсы

Потенциальные применения

  1. Учебный процесс:

    • Автоматическая проверка SQL-запросов студентов
    • Генерация учебных примеров
    • Поддержка практических занятий
  2. Исследовательская работа:

    • Анализ больших наборов данных
    • Поддержка научных исследований
    • Обработка результатов экспериментов
  3. Практические проекты:

    • Работа с реальными бизнес-задачами
    • Создание прототипов решений
    • Анализ бизнес-процессов

Эта модель представляет особую ценность для направления бизнес-информатики благодаря своей специализации на SQL и ETL-процессах.

Процесс обучения модели

Реализован через комбинированную функцию потерь, включающую:

  1. Softmax cross entropy (перекрёстная энтропия с софтмакс нормализацией) для оптимизации вероятностного распределения предсказаний

  2. Модифицированный вариант policy gradient для оптимизации стратегии принятия решений

  3. Q-loss для оценки качества действий

Оптимизация производилась в рамках EM-фреймворка (Expectation-Maximization), что обеспечивает итеративное улучшение параметров модели через чередование шагов оценки ожидания и максимизации вероятности.

Такая архитектура потерь позволяет эффективно оптимизировать как точность генерации SQL-запросов, так и стратегическое качество принимаемых моделью решений.

Бенчмаркинг :

Оценка производительности модели выполнена на основе Semantic Evaluation for Text-to-SQL with Distilled Test Suites - официального фреймворка оценки, разработанного исследовательской группой Yale и Berkeley для бенчмарков Spider, SParC и CoSQL.

Тестовый набор данных включает 2200 примеров, что обеспечивает статистически значимую оценку качества генерации SQL-запросов и семантической точности модели.

Тест на defog eval. Он содержит 200 точек тестовых данных, отобранных вручную командой defog. Вот ссылка на него:

Usage

Test Suite SQL Eval

model easy medium hard extra
sqlcoder-7b-2 72.0 58.0 40.6 37.3
pipSQL-1.3b 78.5 57.5 42.1 28.3
pipSQL-7b 63.0 40.0 30.2 25.0
sqlcoder-7b 60.6 48.2 28.3 20.4
gpt-3.5 58.8 44.7 31.0 28.4

Defog SQL-Eval Вот результаты -

image/png

License

Модель имеет открытый исходный код под лицензией Apache 2.0.

Installation

pip install transformers

Prompt

prompt = f"""<schema>{schema}</schema>
<question>{question}</question>
<sql>"""

PyTorch

from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b")
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")

inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('<sql>')[1].split('</sql>')[0])

Flax

from transformers import FlaxAutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = FlaxAutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b",from_pt=True)
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")

inputs = tokenizer(text, return_tensors="jax")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('<sql>')[1].split('</sql>')[0])

Examples

Schema

CREATE TABLE Products (
  product_id number,
  parent_product_id number,
  product_name text,
  product_price number,
  product_color text,
  product_size text,
  product_description text);

CREATE TABLE Customers (
  customer_id number,
  gender_code text,
  customer_first_name text,
  customer_middle_initial text,
  customer_last_name text,
  email_address text,
  login_name text,
  login_password text,
  phone_number text,
  address_line_1 text,
  town_city text,
  county text,
  country text);

CREATE TABLE Customer_Payment_Methods (
  customer_id number,
  payment_method_code text);

CREATE TABLE Invoices (
  invoice_number number,
  invoice_status_code text,
  invoice_date time);

CREATE TABLE Orders (
  order_id number,
  customer_id number,
  order_status_code text,
  date_order_placed time);

CREATE TABLE Order_Items (
  order_item_id number,
  product_id number,
  order_id number,
  order_item_status_code text);

CREATE TABLE Shipments (
  shipment_id number,
  order_id number,
  invoice_number number,
  shipment_tracking_number text,
  shipment_date time);

CREATE TABLE Shipment_Items (
  shipment_id number,
  order_item_id number);

Questions

What are the email address, town and county of the customers who are of the least common gender?

SELECT email_address ,  town_city ,  county FROM customers GROUP BY gender_code ORDER BY count(*) ASC LIMIT 1

What are the product price and the product size of the products whose price is above average?

SELECT product_price ,  product_size FROM products WHERE product_price  > (SELECT avg(product_price) FROM products)

Which customers did not make any orders? List the first name, middle initial and last name.

SELECT T1.customer_first_name ,  T1.customer_middle_initial ,  T1.customer_last_name FROM Customers AS T1 WHERE T1.customer_id NOT IN (SELECT T2.customer_id FROM Orders AS T2)